新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 搭建使用 RTX51-Tiny 的 C51 Keil 项目环境

搭建使用 RTX51-Tiny 的 C51 Keil 项目环境

作者:时间:2016-11-28来源:网络收藏
个人记录:
没想到stc单片机除了裸板还能跑系统,有些小惊讶。
记得接触rtx51还是原来玩pSoC3(51内核)的时候,后来改成PSoC5换了arm的内核就把这部分放下了,今天偶然看到了,居然可以用stc单片机来跑,比较有意思。
mark一记。
有时间了可以对照着看看。
万方也搜了两篇文章,有空可以看看别人的设计:
基于RTX51嵌入式操作系统的智能卡电能表的设计
基于RTX51 Tiny操作系统的双人游戏设计
试了一下还挺方便和简单的。
系统的初始化可以用main函数这样(不太提倡)
voidmain(void)
{init_system();//系统初始化
os_start_system(0);//启动RTX51
}

也可以在task0里面写(最后删掉task0)
voidstartup_task(void)_task_0
{
init_system();//系统初始化
os_create_task(1);
os_create_task(2);
os_delete_task(0);
}
以下是转载的正文:

最近 1 个月一直在利用业余时间研究 STC12A5C60S2 单片机及其应用,用于放松每天搞 SharePoint 后的紧张心情和头脑。(事实证明,能放松那才怪!)

本文引用地址:http://www.eepw.com.cn/article/201611/322748.htm

在折腾完了 LCD 1602、LCD 12864(并、串)、PCF 8563(时钟芯片)、nRF24L01(无线通信)、矩阵键盘、LN 298(H 桥电机驱动)、光耦计数器、HC-SR 04(超声波测距)之后,决定放弃“白痴”一样基于中断、定时器循环的“多任务”程序,上操作系统。否则,后面我想写略微复杂的应用是几乎不可能的。

下面这个就是我使用的 STC12A5C60S2 单片机最小系统,自带 U 转串芯片,所有 IO 口引出,烧片调试很方便:

这种小板要说缺点,也是有的,就是没有安装孔,整个板只能“飘”着,靠杜邦线的张力来固定(呃,也就是没有固定:),所以后来用到小车上面时,只能像这样在底部焊“支架”再安装到洞洞板上:

操作系统的选择

最开始考虑的是 uc/OS-II。因为名气大(经常看到),功能强(听上去),而且我买的书里面也是介绍这个操作系统。

us/OS-II 的任务调度是完全基于任务优先级的抢占式调度方式,正在执行的低优先级任务可以被处于“READY”状态的高优先级任务打断。这点在 STC12A5C60S2 里面通过设置硬件中断优先级也可以实现,但我不可能任何任务都是中断吧。所以还是得用操作系统。

结果网上翻了翻资料,傻眼了。us/OS-II 太xx复杂了,没有一个网页能够清楚的用几段话说清楚应该怎么用。而且,us/OC-II 到 STC12A5C60S2 需要移植(就是你得改他的源码,从而适应硬件的特殊情况)。呃 … …

然后,开始考虑 RTX-51。因为 C51 开发工具 Keil 里面自带 RTX-51 操作系统,且直接支持在 Keil 中编译调试,颇有吸引力 :)

RTX-51 有 2 个版本:Full 和 Tiny。

Full 需要的资源较多,但支持抢占式任务调度和中断任务,以及任务间互发消息;Tiny 不支持抢占式调度,任务间也不能互发消息,但消耗资源少。

Full 版本虽然功能强大,但是占 8K ROM 也就算了,还需要至少 450 字节的 xData!STC12A5C60S2 总共才 1024 字节的片上 xData RAM,而且我还要 xData 当作液晶屏显存用呢。想了想,果断选择 RTX-51 Tiny。

Tiny 版本不占用 xData,RAM 占用也很少(7+3×任务数),比较合适。至于缺点,只能用了才知道。Tiny 版是开源的,源码是汇编。国内有人对照着写自己写了个操作系统,叫做Small RTOS51。

Small RTOS 51 的作者陈明计,当年是因为找不到合适的单片机操作系统,“一怒之下”自己动手写了这个既有 Tiny 版本资源占用少的优点,又能支持抢占式任务调度的操作系统。(自己不爽,就创造一个,这似乎是很多牛人和新技术出现的根本动力啊!所以说,没有好轮子用的时候,就要自己发明新的轮子。)

RTX-51 Tiny 使用还是很简便的,网上随便翻翻,马上就找到了可用的指南(基于RTX51的单片机软件设计),作者写得很好,10 分钟就看懂了,然后开始动手。

搭建环境

项目名字叫做 Wave。

首先,建立好项目目录结构。每个子目录放对应的内容,要不然,所有文件都堆在项目文件夹下面,你很快就晕了:

上面图中,

  • code 放自己的代码
  • lib 放外部程序库的代码
  • listing 放 Keil 生成的中间文件(方法、变量的内存地址映射什么的)
  • output 放 Keil 生成的 HEX 文件
  • document 放文档

这个目录结构和 Keil IDE 里面的“目录”结构是不一样的(也不需要一样)。

然后,开 Keil IDE 新建一个项目,放在刚刚的目录下面:

Keil IDE 有试用版的。试用版有全部功能,唯一的限制是只能编译 2K 以内的目标代码。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭