《ucos-stm32移植》.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
移植详解1和2中主要讲了移植需要用到的基础知识,本文则对具体的移植过程进行介绍。 ??? 首先从micrium网站上下载官方移植版本(编译器使用ARM/Keil的,V2.86版本,V2.85有问题)。 ??? 下载地址:/page/downloads/ports/st/stm32 ??? 解压缩后得到如下文件夹和文件: ??? Micrium\ ?????? AppNotes ?????? Licensing ?????? Software ?????? ReadMe.pdf ??? AppNotes包含 osii移植说明文件。这两个文件中我们仅需关心Micrium\AppNotes\AN1xxx-RTOS\AN1018- OS-II-Cortex-M3\AN-1018.pdf。因为这个文件对 osii在CM3内核移植过程中需要修改的代码进行了说明。 ?? Licensing包含 osii使用许可证。 ?? Software下有好几个文件夹,在本文的移植中仅需关心 OS-II即可。 ?????? CPU: stm32标准外设库 ?????? EvalBoards: micrium官方评估板相关代码 ?????? -CPU: 基于micrium官方评估板的 osii移植代码 ?????? -LCD:micrium官方评估板LCD驱动代码 ?????? -LIB: micrium官方的一个库代码 ?????? OS-II: osii源代码 ?????? -Probe: 和 -Probe相关代码 ?? ReadMe.pdf就不说了。 ??? 好了,官方的东西介绍完了,该我们自己建立工程着手移植了。关于建立工程,并使用stm32标准外设库在我之前的文章《stm32标准外设库使用详解》已有介绍,这里请大家下载其中模板代码(/source/3448543),本文的移植是基于这个工程的。 ??? 建立文件夹template\src\ osii, template\src\ osii\src, template\src\ osii\port; ??? 把Micrium\Software\ OS-II\Source下的文件拷贝至template\src\ osii\src; ??? 把Micrium\Software\ OS-II\Ports\ARM-Cortex-M3\Generic\RealView下的文件拷贝至 template\src\ osii\port; ?? osii\src下的代码是 osii中无需修改部分, osii\port下的代码是移植时需要修改的。为防止对源码的误改动造成移植失败,可以把 osii\src下的代码文件设为只读。 ?? 这里根据AN-1018.pdf和移植详解1、2中介绍的移植基础知识,对 osii\port下的代码解释一下。 os_cpu.h #ifdef?? OS_CPU_GLOBALS #define? OS_CPU_EXT #else #define? OS_CPU_EXT? extern #endif typedef unsigned char BOOLEAN; typedef unsigned char INT8U; typedef signed char INT8S; typedef unsigned short INT16U; typedef signed short INT16S; typedef unsigned int INT32U; typedef signed int INT32S; typedef float FP32; typedef double FP64; 就不解释了。 typedef unsigned int OS_STK;? typedef unsigned int OS_CPU_SR; ?? 因为CM3是32位宽的,所以OS_STK(堆栈的数据类型)被类型重定义为unsigned int。 ?? 因为CM3的状态寄存器(xPSR)是32位宽的,因此OS_CPU_SR被类型重定义为unsigned int。OS_CPU_SR是在OS_CRITICAL_METHOD方法3中保存cpu状态寄存器用的。在CM3中,移植OS_ENTER_CRITICAL(),OS_EXIT_CRITICAL()选方法3是最合适的。 #define? OS_CRITICAL_METHOD?? 3 #if OS_CRITICAL_METHOD == 3 #define? OS_ENTER_CRITICAL()? {cpu_sr = OS_CPU_SR_Save();} #define? OS_EXIT_CRITICAL()?? {OS_CPU_SR_Restore(cpu_sr);} #endif

文档评论(0)

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

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

1亿VIP精品文档

相关文档