首页 » 解决方案 » μC/OS2Ⅱ在军用FM80386EX处理器上的移植应用

μC/OS2Ⅱ在军用FM80386EX处理器上的移植应用

作者:  时间:2009-02-13 06:45  来源:
 测试

  为了验证μC/OS-Ⅱ内核运行的正确性,编写了以下测试程序:系统时钟周期设为20ms,设置4个任务,Task1.Task4,任务的优先级分别为4,5,6,7,每个任务都有1个变量TasknData;任务1和任务2延时50个系统周期,任务3和任务4延时100个系统周期,每执行1次任务循环,将该任务的变量加1,如下:

 

程序

  每次运行10s,观察OSTime变量与TasknData的值.其中OSTime记录了系统时钟数.初值均为0,10s后,得到如下的值:

OSTime变量与TasknData的

  结果分析:10s系统时钟应该是10×50=500≈510;任务1和任务2每个循环延时50个系统周期,也就是1s,所以10s内应该运行10次;任务3与任务4在10s内应该运行5次;上面的结果可以证明内核已经正常运行,并实现基本任务调度;为了便于分析程序运行的先后顺序,在每个任务中加入myprintf语句,把任务4改为打印任务,为最低.在任务1中加入1个发送邮箱,任务2中加入接受邮箱.

程序

  运行10s后,PC串口接受到如下数据(省略“Iamthetask”前缀):2a1a2b2a1b31a2b2a1b2b1b31a2b2a1b1a2b1b3.....从该次试验结果分析可看出,内核的通讯功能运行正常.

  移植分析

  1) 在中断子程序里启动任务的方法.使用μC/OS-Ⅱ嵌入式操作系统后,为了缩短中断处理时间,常常需要将某些比较费时的程序作为任务从中断子程序里独立出来,同时,这个任务又需要由中断来激活.我们可以通过信号量、邮箱、消息队列来实现这个目的.以邮箱为例,在C程序中,需要先创建邮箱MyMbox,在调用OSMboxPend()函数等待消息,在中断子程序里发送就可以了.

  2) μC/OS-Ⅱ内存管理不够完善.在μC/OS-Ⅱ的应用实例中我们发现,在不知道系统初始化后给用户留下了多少自由内存空间的情况下,很难定义内存分区所使用数组的大小.定义大了,造成内存的浪费;定义小了,系统会崩溃.我们通过把连续的大块内存按分区管理来解决上述问题.

  3) 对代码临界区的改进.对于内核程序,在较长的临界段代码中插入可重入点;对于可供用户调用的函数用信号量机制改写1遍,主要是改写有关信号量的函数.

  4) 系统时钟中断的改进.μC/OS-Ⅱ中,系统时钟中断的核心函数是OSTimeTick,该函数查找每1个延时的任务是否到期,如果到期则将其放入就绪列表,也就是内核只提供延时OSTimeDly()函数.但在许多情况下需要延时一定时间以触发某1个事件的发生,或者需要1个定时器.这里借鉴了Linux内核原理,引入了32个静态定时器.

  运行时需要注意的问题

  由于DOS下的C编译器提供的运行库没有考虑多线程应用的问题,运行库中的全局变量和部分函数只适用于单线程.这些函数包括errno,-doserrno,strtok,sterror,tmpnam,tmpfile,asctime,gmtime,ecvt,fcvt等.在μC/OS-Ⅱ中使用这些函数时应注意,要避免2个任务同时调用这些函数,我们可以使用信号量同步对这些函数进行调用.DOS是不能重入的,在调用DOS服务期间,是不能再次调用DOS的,否则会引起系统的崩溃.所以在μC/OS-Ⅱ中,可以调用BIOS或直接操纵硬件,但应尽量减少DOS重入.

  结语

  μC/OS-Ⅱ和其他一些著名的嵌入式操作系统不同,它的启动过程比较简单.μC/OS-Ⅱ的内核是和应用程序放在一起编译成1个文件,使用者只需要把这个文件转换格式写入ROM中就可以运行了.上电后,它会和普通程序一样运行.通过详细研究μC/OS-Ⅱ的特点和内核结构,完成了μC/OS-Ⅱ在军用FM80386EX上的移植并对相关代码并详尽的对内核进行测试、分析,对内存管理、代码临界区、信号量机制提出改进方法,使之更加有效的在处理器上运行.移植成功后,μC/OS-Ⅱ可实时的完成各个任务的调度,并且通过嵌入式操作系统μC/OS-Ⅱ在各个任务间实现通信.μC/OS-Ⅱ具有良好的实时性和很小的代码量,随着各种智能嵌入式系统的复杂化和系统实时性需求的提高,功能强大的实时操作系统μC/OS-Ⅱ将会有更大的发展空间.

相关推荐

高通首款64位处理器或改变手机市场格局

高通  处理器  2013-12-17

高通将推出骁龙410处理器参考设计版本

高通  处理器  2013-12-12

三星仍是苹果A系列处理器唯一代工厂

三星  处理器  2013-11-14

ARM第三财季净利润7830万美元 同比涨17%

ARM  处理器  2013-10-23

14纳米64位Exynos 6处理器 三星欲超苹果?

三星  处理器  2013-10-18

英特尔Q3业绩不及预期 新处理器或库存失衡

英特尔  处理器  2013-10-17
在线研讨会
焦点