天行健,君子以自强不息
分类: C/C++
2010-03-22 20:29:34
|
传统的前后台方式,就是把需要处理的每一项任务顺序排列,循环执行;同时,最重要的任务由中断处理。这种方式对于简单应用,是完全可以胜任的。需要注意的就是中断处理要迅速,尽可能简单。即使需要执行较长程序,也应放在主程序循环之内,而通过中断中置标志的形式调用。前后台方式对复杂应用,就可能带来异常。比如,一个任务的处理时间非常长,并且处理时间不是恒定的;或者,一个任务进入死循环无法退出。而且,一旦程序改变,增加功能,那么之前许多正常情况都可能出现新问题。所以,前后台方式不是一种最好的机制。看到别人说的话,一旦学习掌握了实时系统嵌入,那么,就不会再回到前后台方式编程了。
实时系统,其基本理论就是将CPU运行按照时间片分配给每个任务,任务按照优先级次序排队。一个时间片到来就执行最高的、已经就绪的任务。系统的内核可以移植到不同的CPU之上,并且可以选择,也就是裁剪,只留下应用所需要的部分。这样系统占用的资源较少,运行也更稳定。
uC/OS-II的内核有2部分组成。一部分与CPU无关,一般不需要修改;一部分则完全取决于所移植的CPU或MCU或MPU或ARM,需要修改或者自己编程代码。当然这个工作并复杂,相比较,还是前一部分代码的理解更重要。
修改或者编写需要的代码,当然需要参考。就拿最老版本开始吧。附件是uCOS-II的v2.52版本,支持x86的源码。SOURCE目录是与CPU无关的内核文件;Ix86L是与CPU有关的内核文件;EX1_x86L等目录是例程。 其中,需要修改和编写的文件包括:OS_CPU.H,OS_CPU_C.C,OS_CPU_A.ASM,INCLUDES.H,OS_CFG.H,以及自己的应用程序APP.C。 OS_CPU.H:与CPU有关的头文件 OS_CPU_C.C,OS_CPU_A.ASM:与CPU有关的处理函数 OS_CFG.H:内核裁剪选择 INCLUDES.H:为了方便,将全部头文件打包了 下面开始逐个分析每个文件。 |