搭建使用 RTX51-Tiny 的 C51 Keil 项目环境
时间:11-28
来源:互联网
点击:
里面,是没有 STC 的芯片的,可以按照下面的步骤将 STC 的芯片库加入到 keil 中:
- 从宏晶官网下载 UV3.CDB
- 将UV3.CDB改名为STC.CDB,拷贝到Keil安装目录的UV4子目录下
- 修改Keil安装目录下的TOOLS.ini文件,在[C51]上方添加:CDB0=UV4STC.CDB("STC Chip")
- 建立新项目,然后就可以选择对应的芯片数据库了
(个人笔记:这部分完全可以用最新版的STC-ISP,选项卡“keil仿真设置”,点“添加STC仿真驱动 到Keil中添加型号和头文件到keil中”,就行了,简单易行)
然后,选择芯片:
问你是否需要自动包含启动代码,选“否”(除非你要改程序起始地址什么的):
改改 Target 的名字,看上去好看些,然后设置项目属性:
写好晶振频率并选择“RTX-51 Tiny”作为操作系统,这样 Keil 会自动将 lib 文件编译到输出中(Memory Model 用 Small 比较好,免得每次声明变量都写 data 修饰):
然后选择 output、listing 目录到前面建立好的目录结构:
然后,忽略调用警告信息(这个警告会提醒你哪些函数定义了但是未被调用,很讨厌!):
设置好调试选项(STC12A5C60S2 支持 ISD-51 进行在线调试,不过,实际用下来用处不大,外围硬件模块根本不会跟着断点等你,还是先用软件模拟调试好了再说):
接下来,将常用的库文件拖到 lib 目录中:
- ISD51.h,ISD51.A51 用于在线调试
和串口 0 冲突,慎用 - stc12c51a.h 单片机自带的头文件
- Conf_tny.A51
RTX-51 Tiny 的配置程序
Conf_tny.A51 还是需要做点儿修改的:
- INT_CLOCK,定义每个计时中断对应的时钟周期数,默认 10000,我改成 1000 了 ;)
这个值会影响 os_wait 第二个参数的长短。例如,ow_wait(K_TMO, 5, 0) 等待 5 个计时周期,也就是等待 5000 个时钟周期。 - TIMESHARING,每个任务分到的时钟中断数量。默认是 5。
这样,每个任务都会被分配 5000 个时钟周期的任务时间,到期以后,任务将被挂起,其它处于 READY 状态的任务会运行。
如果这个值是 0,那么,Round Robin 的任务轮询算法会停止,必须你自己手动 os_send_signal 或者 os_switch_task 来切换任务。某些时候,这样会提高实时性。 - RAMTOP。指定了可用 RAM 的顶部地址,默认是 0FFH,即 256 字节 RAM。
就 STC 这块芯片来说,这样的默认设置在任务代码非常短小时没有问题,但是,如果任务代码较长,建议还是改小点儿,比如 0CFH。原因不明,但可能是因为高 128 字节 RAM 的直接存取方式是读写的特殊寄存器,我发现会和 RTX-51 Tiny 冲突,产生error 65 access violation at 0x3480 之类的运行错误。
敲一段代码先跑跑(软件调试,Ctrl+F5):
可以看见监视窗口里面,c0, c1 乱跳:
再来一段代码,看看 Keil 的高级功能(逻辑分析):
现在可以看波形了:
环境搞定,记得提交到配置库。下面就可以开始移植代码到新的基于 RTX-51 Tiny 的项目中了。
RTX51-TinyC51Keil项目环 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)