[信息与通信]UCOS的移植教程.pdf

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[信息与通信]UCOS的移植教程

移植UCOS-II  移植的概念  移植的条件  移植需要修改的文件 所谓移植:就是使一个实时内核能在某个微处 理器或微控制器上运行。 为了方便移植,大部分的µC/OS- Ⅱ代码是用C 语言写的;但仍需要用C和汇编语言写一些与 处理器相关的代码,这是因为µC/OS- Ⅱ在读 写处理器寄存器时只能通过汇编语言来实现。 由于µC/OS- Ⅱ在设计时就已经充分考虑了可 移植性,所以µC/OS- Ⅱ的移植相对来说是比 较容易的。 移植的一般性问题 (条件) 1. 处理器的C编译器能产生可重入代码。 2. 用C语言就可以打开和关闭中断。 3. 处理器支持中断,并且能产生定时中断 (通常在10至100Hz之间)。 4. 处理器支持能够容纳一定量数据(可能是 几千字节)的硬件堆栈。 5. 处理器有将堆栈指针和其它CPU寄存器读 出和存储到堆栈或内存中的指令。 什么是可重入代码  可重入的代码指的是一段代码 (比如: 一个函数)可以被多个任务同时调用, 而不必担心会破坏数据。  也就是说,可重入型函数在任何时候都 可以被中断执行,过一段时间以后又可 以继续运行,而不会因为在函数中断的 时候被其他的任务重新调用,影响函数 中的数据。 可重入代码举例 程序1:可重入型函数 void swap(int *x, int *y) { int temp; temp=*x; *x=*y; *y=temp; } 非可重入代码举例 程序2:非可重入型函数 int temp; void swap(int *x, int *y) { temp=*x; *x=*y; *y=temp; 返回 } 打开/关闭中断 在COS-II中,可以通过: OS_ENTER_CRITICAL() OS_EXIT_CRITICAL() 宏来控制系统关闭或者打开中断。这需 要处理器的支持。 在ARM7TDMI的处理器上,可以设置相应 的寄存器来关闭或者打开系统的所有中断。 处理器支持中断并且能产生定 时中断  COS-II是通过处理器产生的定时器的 中断来实现多任务之间的调度的。  ARM920T的处理器上可以产生定时器中 断。 处理器支持硬件堆栈  COS-II进行任务调度的时候,会把当前 任务的CPU寄存器存放到此任务的堆栈中, 然后,再从另一个任务的堆栈中恢复原来 的工作寄存器,继续运行另一个任务。所 以,寄存器的入栈和出栈是COS-II多任 务调度的基础。  ARM9处理器中有专门的指令处理堆栈,可 以灵活的使用堆栈。 移植对开发工具的要求  移植COS-II需要一个标准的C交叉编译器。  由于移植时需要对CPU的寄存器进行操作, 所以需要C交叉编译器能够支持汇编语言程 序。  嵌入式C编译器一般都包括汇编器、链接器 和定位器。链接器是用来将不同的模块 (编译或汇编过的文件)链接成目标文件; 定位器则允许将代码和数据放置在目标处 理器的指定内存空间中。 需要做的工作  用#define设置一个常量的值(OS_CPU.H)  声明10个数据类型(OS_CPU.H)  用#define声明三个宏(OS_CPU.H) 

文档评论(0)

jiupshaieuk12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档