楼主: alpha321

RTX51——Keil的专用于51单片机的嵌入式系统

[复制链接]
发表于 2010-7-8 20:48:21 | 显示全部楼层
收藏了 谢谢啊 很好
 楼主| 发表于 2010-7-28 20:05:13 | 显示全部楼层
回复20楼irzn
这的确是一个缺点,不过uc/os-II是提供源码的,可是并不太适合51。事实上,我们在做PC编程时,windows的API还是VC/VB的控件,都是不提供源码的,不过这也没影响我们的正常开发.
 楼主| 发表于 2010-7-28 20:22:50 | 显示全部楼层
RTX51中很有意义的一个特点是为系统进入待机(Idle)或掉电(Power down)状态提供了一个实现空闲任务Idle task的宏, 在系统各个任务都不执行(执行条件未满足)时, 使系统自动进入休眠状态, 为降低系统功耗提供了操作的可能. 各种51芯片的待机和掉电操作略有不同, 唤醒方式也有所差别. 应用时可视所用芯片适当选择. 文档中提供的一个例子, 是使通常的51单片机进入待机模式的宏定义:
CPU_IDLE MACRO
ORL PCON,#1 ; set 8051 CPU to IDLE
ENDM
在conf_tny.a51中, 定义CPU_IDLE_CODE为空闲任务的开关,设为1时,允许进入空闲任务.此时必须定义CPU_IDLE的宏.
另外,CPU_IDLE也可以不进入休眠状态,而是点亮一个空闲状态指示灯,或熄灭忙碌状态指示灯,或设置一个其他状态, 具体操作可根据应用而定.
 楼主| 发表于 2010-7-28 21:09:57 | 显示全部楼层
说点关于操作系统的题外话. 当前炙手可热的LINUX, 其前身实际是大名鼎鼎的UNIX, 后者在从巨型机到微型机/工作站上长期居于领导地位, 经过多年的发展, 达到了相当高的技术水准, 同时其结构也演化得相当复杂, 多数版本难以在微型机上运行, 更别说嵌入式系统了.

LINUX的作者别开生面, 将UNIX结构作了一个恰当的修改(这种修改现在被认为是独创), 得到了LINUX内核. 该内核生逢其时, 有GNU的支持, 不同的版本被大量用于服务器和嵌入式系统, 伸缩性很强的系统性能使这只小企鹅大显神威.

诸位可看看该系统的特点, 实时性能不比UCOSII, 图形性能不比WINDOWS, 难学难用更是其他系统不及的. 通用设备的驱动程序更是奇缺.

为此, 多个公司对LINUX进行了再开发, 比如著名的REDHAT, 还有国内的红旗LINUX. 然而, 这样一来, LINUX不再是自由的了, 要获得使用权得交费了. 还能称之为自由软件吗?

也许这种局面将来会有改观. 关于这个问题, 有兴趣的朋友不妨谈谈看法.
 楼主| 发表于 2010-8-5 12:45:59 | 显示全部楼层
LINUX能发展到今天而且很流行,自有它的道理,暂且不提。搞嵌入式系统,选LINUX是不错的,但不能因此一叶障目,认为除LINUX以外再无其它嵌入式系统,须知山外青山,艺无止境。
 楼主| 发表于 2010-8-5 12:54:51 | 显示全部楼层
前面提的RTX51,多指RTX51 tiny, 这是RTX51的一个片内RAM支持版本, 随KEIL编译器一块提供,占用很小的内部RAM空间,完成任务的调度. RTX51 FULL为片外RAM支持版本, 进程调度现场保存较大的在片外RAM中, 支持的系统数据交换方式也更丰富, 如数据邮箱等(RTX51 tiny 只支持信号).
发表于 2010-8-5 13:08:07 | 显示全部楼层
先看看
 楼主| 发表于 2010-8-19 20:24:51 | 显示全部楼层
RTX51 Tiny固定用定时器T0作为系统时钟发生器,一般系统中设置系统时钟周期为10ms左右.如上面例子中定时常数设为"9216".但对于时间要求很苛刻的应用,如LED数码管扫描,将其作为独立的任务来调度,10ms左右的周期太长了.在RTX51 Tiny中提供了在T0系统时钟中断例程中执行代码的方式,可用来保证满足这种实时限制,把动态LED数码显示的周期性扫描驱动独立成为一个子过程,在T0中断例程中调用即可.
发表于 2010-8-25 21:24:38 | 显示全部楼层
不错,先学好这些。
去掉51两字即可用于ARM
 楼主| 发表于 2010-9-3 12:45:11 | 显示全部楼层
感谢hotpower.
在Keil RealView中,RTX系列中间件更全面,包括RTX内核、IP协议栈、SD卡文件系统等,都是基于ARM的32位组件。关于这些组件,本人并不太了解,因此不敢在此妄加评论。但可以肯定的是,RTX应该比我前边提到的RTX51功能更强大。对此有了解的朋友,不妨介绍介绍RTX。
发表于 2010-9-6 11:46:49 | 显示全部楼层
感觉这方面的资料很少,
 楼主| 发表于 2010-9-8 18:28:58 | 显示全部楼层
回复31楼daoyuan79
不是资料少,是国内用的人少.其实在每个Keil的版本下都有RTX51的,还有详细的文档和例子.只不过这些文档是英文的,看的人不多.
发表于 2010-9-15 21:51:34 | 显示全部楼层
谢谢分享
发表于 2010-9-17 22:28:12 | 显示全部楼层
学习学习了
发表于 2010-9-19 10:34:50 | 显示全部楼层
做个记号!
 楼主| 发表于 2010-9-28 19:11:13 | 显示全部楼层
RTX51 TINY对资源的占用很少,其用户指南上边提到所需代码空间(CODE)最大为900字节,实际应用中可能比该值小.占用的内部数据空间(DATA)为7字节,另外每增加一个任务,堆栈空间会多占用3字节,但任务最多为16个.RTX51 TINY固定占用T0作为系统定时器,用寄存器组(BANK)0作为系统使用的组,但允许用户的中断例程使用其他寄存器组.
 楼主| 发表于 2010-9-30 07:58:06 | 显示全部楼层
通常在C51中,如果选择只用一个寄存器组,则在进入中断例程时,将PSW,ACC,R0-R7全部压入堆栈,即使该中断例程没有使用其中的任何寄存器.如果为中断例程分配了寄存器组,则进入中断时仅切换寄存器组,R0-R7并不压栈.
发表于 2010-9-30 12:04:01 | 显示全部楼层
资源紧张时可以选择ProtoThread,有兴趣的可以试试。
 楼主| 发表于 2010-10-8 17:26:46 | 显示全部楼层
回复38楼zengguangjun
感谢38楼!
这也是一种不错的方案,http://code.google.com/p/protothread/有这种内核的介绍.
发表于 2010-10-9 11:44:46 | 显示全部楼层
LZ不错哦。
学东西最好是从最小的东西学起,这样慢慢延伸出去,效果最好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表