μC/OS-Ⅱ在MC9S12A64上的移植及应用
GE_3CA000 = READ_ONLY 0x3CA000 TO 0x3CAFFF;
然后将任务的程序代码和常数代码分别放入不同的地址块,
TASK1CODESEG, TASK1STRINGSEG INTO PAGE_3C8000;
TASK2CODESEG, TASK2STRINGSEG INTO PAGE_3C9000;
TASK3CODESEG, TASK3STRINGSEG INTO PAGE_3CA000;
同时在每个任务的.C文件的开头加上
#pragma CODE_SEG TASK1(2.3)CODESEG
#pragma STRING_SEG TASK1(2.3)STRINGSEG
在末尾加上
#pragma CODE_SEG DEFAULT
#pragma STRING_SEG DEFAULT 即可实现任务的地址分配。
三个任务虽然分别用.C文件定义了,但并没有被任务程序调用过,它们的运行是靠μC/OS-II的任务调度实现的。没有被调用的函数不会自动链接到最终生成的目标代码中去,故要在链结文件中加上:
ENTRIES
Task1 Task2 Task3
END
在文件的最后,还要定义三个向量。第一个是应用程序的起始地址,第二个是软中断向量,第三个是定时中断的中断服务子程序的入口地址。
VECTOR ADDRESS 0xFFFE _Startup
VECTOR ADDRESS 0xFFF6 OSCtxSw
VECTOR ADDRESS 0xFFF0 OSTickISR
程序的定位与链接完成以后就可以编写主程序对个任务进行调度。如果运行无误,操作系统的大体框架就建立起来,用户以后可以将复杂的任务加进来,也可以添加一些功能,这些做起来就相对比较简单。
4 总结:
本文作者创新点在于从uCOS—II内核工作原理入手,以MC9S12A64为例介绍uCOS—II内核的移植过程及项目的创建。通过原理对其主要函数进行剖析,最后根据自身处理器及编译器的情况移植文件。创建项目最重要的是程序的链接与定位,这要对内核的结构、CPU的地址分配、链接文件有较深入地了解。uCOS—II实时操作系统的移入,不但可以提高系统的实时性、可靠性和稳定性,还提高了应用软件的可移植性,降低了开发人员的工作量。
参考文献
[1]邵贝贝 《单片机嵌入式的在线开发方法》 北京:清华大学出版社 2004
[2]J.Labrosse.uC/OS-II-源码公开的实时嵌人式操作系统[M],邵贝贝译.中国电力出版社.2001
[3]吴永,张旭东,赵自信.MicroC/OS-Ⅱ在80C196上的移植实现[J].微计算机信息,2006,1-2:60-62
uCOSⅡ MC9S12A64 任务调度 项目创建 相关文章:
- UC/OSⅡ基本函数(11-27)
- μC/OS-II的多任务信息流与CAN总线驱动(07-11)
- 网格协同设计环境中的任务调度机制(08-01)
- 嵌入式系统优先级反转问题的分析 (08-14)
- μC/OS的任务调度实现方法及其在PowerPC上的优化(10-29)
- 硬件实时操作系统的设计与实现(01-28)