论文部分内容阅读
摘 要:本文讨论了将一个具有高可靠性的可剥夺型多任务实时内核uC/OS-II在Freescale单片机MC9S12DG128B上移植的原理和方法。给出了一个以Freescale Code Warrior 为编译器,MC9S12DG128B为处理器的对uC/OS-II系统进行移植的具体实例。
关键词:uC/OS-II;MC9S12DG128B;移植
嵌入式操作系统近年来备受人们关注,其开发出来的产品已经应用到生活的各个角落。uC/OS-II系统作为嵌入式操作系统的一种,具有高可靠性、稳定性和实时性。MC9S12DG128B是16位单片机,具有资源丰富、功能强大、运行稳定且价格低廉的特点。本文将介绍uC/OS-II实时内核在MC9S12DG128B上的移植过程。
1 移植前的准备工作
1.1 uC/OS-II系统特点
uC/OS-II实时操作系统使用可剥离型内核,CPU总是运行多个任务中优先级最高的任务。它具有很强的可移植性、内核可裁减性、可确定性的特点,并提供很多系统服务。
1.2 MC9S12DG128B硬件资源
MC9S12DG128B是16位单片机,DG128CPU具有6个寄存器,13种寻址方式和400多条指令,同时,DG128具有丰富的I/O接口,MC9S12DG128B典型的内部时钟频率为16MHZ,支持定时中断,具有128k的Flash,8k字节的RAM和2k字的EEPROM。
1.3 移植过程编译器
开发编译工具:CodeWarrior For HCS12X_v4.7。
1.4 uC/OS-II模块
uC/OS-II的软硬件体系结构如图1所示。应用程序处于系统的顶层,无限循环设计,每个任务独占CPU。
2 具体移植步骤
以下是具体的移植步骤,与硬件相关的各个文件需修改。
2.1 文件OS_CPU.H
包含与处理器相关的、#define语句定义的常数、宏以及数据类型。
2.2 数据类型定义
不同编译器会使用不同的字节长度来表示同一数据类型。uC/OS-II的移植包含一系列的数据类型定义。
2.3 堆栈单位
OS_STK的数据类型必与须处理器的寄存器长度一致。
2.4 堆栈方向
需预先设定堆栈的增长方向,因为不同处理器,数据入堆栈时堆栈指针的增长方向不一样。
2.5 临界区
需定义两个保护临界区的宏。
2.6 设置OS_TASK_SW()
#define OS_TASK_SW() asm(swi)
2.7 文件OS_CPU_A.ASM
uC/OS-II移植要求编写四个汇编函数,分别是OSTickISR()、OSStartHighRdy()、OSCtxSw()和OSIntCtxSw(),移植过程将对相应函数进行修改。
3 实验及其结果分析
为验证移植的正确性,本文将通过应用任务实验来实施验证。实验必须在确保C编译器,汇编编译器及链接器正常工作的情况下进行,测试修改过的移植函数在9S12环境下运行是否正常。
根据实验结果可以看出,任务TestTask1和TestTask2创建成功,证明OSTaskStkInit()、OSStartHighRdy()工作正常;TestTask1和TestTask2实现了任务切换,以及发生了时间中断(任务TestTask1运行两次后任务TestTask2运行一次),因此其它函数也正常运行,实验成功。由此可以得出结论,uC/OS-II在MC9S12DG128B上移植成功。
4 結语
本文介绍了uC/OS-II移植到MC9S12DG128B上的全过程,对从事嵌入式系统移植工作的开发人员有一定的参考价值。
参考文献:
[1] Jean J Labrosse.嵌入式操作系统uC/OS-II [M].第2版,北京:北京航空航天大学出版社,2005:283-316.
[2] 黄涛,徐宏吉.嵌入式实时操作系统移植技术的分析和应用[J].计算机应用,2003,(9):88-90.
[3] 邵贝贝.在MC68HC908GP32上移植uC/OS-II.单片机与嵌入式系統应用[J].单片机与嵌入式系统应用,2001,(11):69-75.
[4] 王宜怀,刘晓升,等.嵌入式系统-使用HCS12微控制器的设计与应用[M].北京:北京航空航天大学出版社,2003,1.
关键词:uC/OS-II;MC9S12DG128B;移植
嵌入式操作系统近年来备受人们关注,其开发出来的产品已经应用到生活的各个角落。uC/OS-II系统作为嵌入式操作系统的一种,具有高可靠性、稳定性和实时性。MC9S12DG128B是16位单片机,具有资源丰富、功能强大、运行稳定且价格低廉的特点。本文将介绍uC/OS-II实时内核在MC9S12DG128B上的移植过程。
1 移植前的准备工作
1.1 uC/OS-II系统特点
uC/OS-II实时操作系统使用可剥离型内核,CPU总是运行多个任务中优先级最高的任务。它具有很强的可移植性、内核可裁减性、可确定性的特点,并提供很多系统服务。
1.2 MC9S12DG128B硬件资源
MC9S12DG128B是16位单片机,DG128CPU具有6个寄存器,13种寻址方式和400多条指令,同时,DG128具有丰富的I/O接口,MC9S12DG128B典型的内部时钟频率为16MHZ,支持定时中断,具有128k的Flash,8k字节的RAM和2k字的EEPROM。
1.3 移植过程编译器
开发编译工具:CodeWarrior For HCS12X_v4.7。
1.4 uC/OS-II模块
uC/OS-II的软硬件体系结构如图1所示。应用程序处于系统的顶层,无限循环设计,每个任务独占CPU。
2 具体移植步骤
以下是具体的移植步骤,与硬件相关的各个文件需修改。
2.1 文件OS_CPU.H
包含与处理器相关的、#define语句定义的常数、宏以及数据类型。
2.2 数据类型定义
不同编译器会使用不同的字节长度来表示同一数据类型。uC/OS-II的移植包含一系列的数据类型定义。
2.3 堆栈单位
OS_STK的数据类型必与须处理器的寄存器长度一致。
2.4 堆栈方向
需预先设定堆栈的增长方向,因为不同处理器,数据入堆栈时堆栈指针的增长方向不一样。
2.5 临界区
需定义两个保护临界区的宏。
2.6 设置OS_TASK_SW()
#define OS_TASK_SW() asm(swi)
2.7 文件OS_CPU_A.ASM
uC/OS-II移植要求编写四个汇编函数,分别是OSTickISR()、OSStartHighRdy()、OSCtxSw()和OSIntCtxSw(),移植过程将对相应函数进行修改。
3 实验及其结果分析
为验证移植的正确性,本文将通过应用任务实验来实施验证。实验必须在确保C编译器,汇编编译器及链接器正常工作的情况下进行,测试修改过的移植函数在9S12环境下运行是否正常。
根据实验结果可以看出,任务TestTask1和TestTask2创建成功,证明OSTaskStkInit()、OSStartHighRdy()工作正常;TestTask1和TestTask2实现了任务切换,以及发生了时间中断(任务TestTask1运行两次后任务TestTask2运行一次),因此其它函数也正常运行,实验成功。由此可以得出结论,uC/OS-II在MC9S12DG128B上移植成功。
4 結语
本文介绍了uC/OS-II移植到MC9S12DG128B上的全过程,对从事嵌入式系统移植工作的开发人员有一定的参考价值。
参考文献:
[1] Jean J Labrosse.嵌入式操作系统uC/OS-II [M].第2版,北京:北京航空航天大学出版社,2005:283-316.
[2] 黄涛,徐宏吉.嵌入式实时操作系统移植技术的分析和应用[J].计算机应用,2003,(9):88-90.
[3] 邵贝贝.在MC68HC908GP32上移植uC/OS-II.单片机与嵌入式系統应用[J].单片机与嵌入式系统应用,2001,(11):69-75.
[4] 王宜怀,刘晓升,等.嵌入式系统-使用HCS12微控制器的设计与应用[M].北京:北京航空航天大学出版社,2003,1.