UCOS-II移植ARM的读书笔记(12.11).doc

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

真是很郁闷,昨天晚上边看移植代码边记下来的笔记不知道怎么回事在保存的时候竟然不见了。。。5555。。。一个晚上工作的结果啊,关键是我是第一次也是正式开始移植的学习之路啊。。。真是够倒霉的。。。。今天在工作之前先把昨天的笔记重新回顾一下,其实后来想想也许是件好事,可以让我今天在不借助其他的帮助的情况下自己看代码自己跟自己讲一遍,其实很多看起来是倒霉看起来是灰心的事情把我们的观点换一下那么就是一件好事。。这样的情况发生在我的身上已经挺多次了。。。。好啦,废话不说,开始补昨天的日记 UCOS-II的移植需要提供2,3个文件分别介绍如下: 一:OS_CPU.H 1 与编译器有关的数据类型 ?? 只是按照不同的编译器编写对应的数据类型的typedef ?? 对应于ARM7的数据类型的编写如下 typedef unsigned char? BOOLEAN;???????????????? /* 布尔变量???????????????????????????????? */ typedef unsigned char? INT8U;?????????????????? /* 无符号8位整型变量??????????????????????? */ typedef signed?? char? INT8S;?????????????????? /* 有符号8位整型变量??????????????????????? */ typedef unsigned short INT16U;????????????????? /* 无符号16位整型变量?????????????????????? */ typedef signed?? short INT16S;????????????????? /* 有符号16位整型变量?????????????????????? */ typedef unsigned int?? INT32U;????????????????? /* 无符号32位整型变量?????????????????????? */ typedef signed?? int?? INT32S;????????????????? /* 有符号32位整型变量?????????????????????? */ typedef float????????? FP32;??????????????????? /* 单精度浮点数(32位长度)???????????????? */ typedef double???????? FP64;??????????????????? /* 双精度浮点数(64位长度)???????????????? */ ? ?? 在上面定义的各种数据类型中按照ARM7的堆栈宽度选择INT32U typedef INT32U???????? OS_STK;????????????????? /* 堆栈是32位宽度?????????????????????????? */ ? ?? 接下来一部分是为了兼容低版本UCOS的数据类型所编写的代码,在UCOS-II中暂不考虑 ? 2 与处理器相关的代码 ??? 先定义中断的实现方式,预先设定的中断方式有三种,在ARM7中设置为方式2 #define???? OS_CRITICAL_METHOD???? 2??????????? /* 选择开、关中断的方式 */ ? ??? 接下来的一段是我暂时还没有完全搞懂的一部分,只知道是设定了12个软件中断的函数,当调用这些函数之前都会执行对应中断号的事情。。具体的看到后面应该能完全搞懂软件中断的实现方式,该段代码在后面的文件中会有具体的解释,这里暂时不看 ??? 定义堆栈的生长方式,ARM7内核支持两种生长方式,但是ADS的C语言编译器只支持从上往下的生长方式,因此: #define OS_STK_GROWTH??? 1????????????????????? /*? 堆栈是从上往下长的,0-从下往上的生长方式???????? */ ? ??? 最后几行分别定义了用户模式01和系统模式1f以及IRQ中断禁止的指令80三个立即数,方便调用。 ??? 还有两个预定义往后看应该知道作用,暂不考虑,不是很重要。 ? ? 二:OS_CPU_C.C ??? 个文件中要求用户编写10个简单的C函数,但是只有1个函数是必要的,其余的函数必须声明,但不一定要包含任何代码,大致看了一下作用好像是用来调试之类的。唯一要编写的是OSTaskStkInit() ??? OSTaskStkInit()函数的功能是初始化任务的栈结构,任务的堆栈结构与CPU的体系结构、编译器有密切的关联。从ARM的结构可以写出如下的栈结构:程序计数器PC,程序链接器LR,R12-R1,R0用于传递第

文档评论(0)

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

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

1亿VIP精品文档

相关文档