- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
μC/OS-Ⅱ实时操作系统的移植方法探讨
摘要:μC/OS-Ⅱ由于其源代码开放、稳定、可靠的特点,在嵌入式开发中得到了广泛应用。该文针对其移植开发,探讨了这一过程中所采用的步骤、一般方法和技巧。
关键词:μC/OS-Ⅱ;嵌入式系统;移植
中图分类号:TP316文献标识码:A文章编号:1009-3044(2008)29-0493-02
Methods on Transplantation of μC/OS-II
XU Jing-feng
(Base Course Department,Nanjing Institute of Politics,Nanjing 210003,China)
Abstract: μC/OS-II has been widely used in the embedded system development for its feature of stability, reliability and open source. This paper focuses on the developing steps and general methods in the transplantation of the real time operating system.
Key words: μC/OS-II; embedded system; transplantation
μC/OS-Ⅱ是一个抢占式的实时多任务操作系统,具有高稳定性和高可靠性,可固化、可剪裁。此外,μC/OS-Ⅱ的一大鲜明特点就是源代码公开,便于移植和维护。在实际的项目开发过程中,可以针对项目所采用的芯片或开发工具,根据自己的需要进行移植。
本文将以在TMS320C6711 DSP上的移植过程为例,具体分析μC/OS-Ⅱ在嵌入式开发平台上进行移植的一般方法和技巧。
1 深入了解所采用的系统核心
在选定了系统平台和开发工具之后,进行μC/OS-Ⅱ的移植时,一定要深入了解系统的核心细节。首先要了解的是中断处理机制,如何开启、屏蔽中断,可否保存前一次中断状态等。其次,芯片是否有软中断或是陷阱指令,又是如何触发的。另外,还需关注系统对于存储器的使用机制,诸如内存的地址空间,堆栈的增长方向,有无批量压栈的指令等。在本例中,使用的是TMS320C6711 DSP。这是TI公司6000系列中的一款浮点型号,由于其时钟频率非常高,且采用了超常指令字(VLIW)结构、类RISC指令集、多级流水等技术,所以运算性能相当强大,在通信设备、图像处理、医疗仪器等方面都有着广泛的应用。
具体到C6711,其中断有3种类型,即复位、不可屏蔽中断(NMI)和可屏蔽中断(INT4-INT15)。可屏蔽中断由CSR寄存器控制全局使能,此外也可用IER寄存器分别置位使能。由于在C6711中没有软中断机制,所以μC/OS-II的任务切换需要编写一个专门的函数实现。此外,由于C6711没有专门的中断返回指令、批量压栈指令,相应的任务切换代码均需编程完成。因为采用了类RISC核心,所以C6711的内核结构中,只有A0-A15和B0-B15这两组32bit的通用寄存器。
2 分析所采用的开发工具的特点
无论使用的系统核心是什么,C语言开发工具对于μC/OS-Ⅱ是必不可少的,在本项目中,我们采用TI的C语言开发工具CCS for C6000。为此,在动手前一定要针对具体的开发工具搞清具体的技术细节,以便方便移植工作。
例如开启C编译器的“汇编代码列表(list)”功能,编译器会为每个C语言源文件生成其对应的汇编代码文件。通过比较C代码与生成的ASM代码,我们可以了解该开发工具对于寄存器、堆栈、中断向量等使用的特点,以便做到心中有数。
3 编写移植代码
在深入了解了系统核心与开发工具的基础上,真正编写移植代码的工作就相对比较简单了。μC/OS-Ⅱ自身的代码绝大部分都是用ANSI C编写的,而且代码的层次结构十分干净利落,与平台相关的移植代码都存在于OS_CPU_A.ASM、OS_CPU_C.C以及OS_CPU.H这三个文件当中。在移植的时候,结合前面两个步骤中已掌握的信息,就可以实施了。
但是,由于系统核心、开发工具的千差万别,在实际项目中,一般都会有一些处理方法上的不同,需要特别注意。以C6711的移植为例:
1) 中断的开启和屏蔽的两个宏定义为:
#define OS_ENTER_CRITICAL() Disable_int()
#define OS_EXIT_CRITICAL() Enable_int()
Disabl
文档评论(0)