- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Ucosii移植到LPC2138、2148
此文章已于 20:06:52 2011/4/18 发布到 晓彻
Ucos ii 移植到LPC2148
类别 [选择一个类别或键入一个新类别]
所谓“移植”,就是使一个实时内核能在其它的微处理器或微控制器上运行。尽管大部分μC/OS-II的代码是用C语言编写的,但是在编写与处理器硬件相关的代码时还是不得不使用汇编语言。移植的主要工作就是编写这些与处理器硬件相关的代码。
Ucos软件体系结构如下所示:
根据μC/OS-II的要求,移植μC/OS-II到一个新的体系结构上需要提供2个或3个文件:
OS_CPU.H(C语言头文件)
OS_CPU_C.C(C程序源文件)
OS_CPU_A.ASM(汇编程序源文件)
其中OS_CPU_A.ASM在某些情况下不需要,但极其罕见。不需要OS_CPU_A.ASM的必须满足以下苛刻条件,而同时满足这些条件的微控制器几乎没有:
1.可以直接使用C语言开关中断;
2.可以直接使用C语言编写中断服务程序;
3.可以直接使用C语言操作堆栈指针;
4.可以直接使用C语言保存CPU的所有寄存器。
Include.h和config.h
μC/OS-II要求所有.C文件的都要包含头文件includes.h,这样使得用户项目中的每个.C文件不用分别去考虑它实际上需要哪些头文件。使用INCLUDES.H的缺点是它可能会包含一些实际不相关的头文件,这意味着每个文件的编译时间可能会增加,但却增强了代码的可移植性。
在本移植中另外增加了一个头文件config.h,我们要求所有用户程序必须包含config.h,在config.h中包含includes.h和特定的头文件和配置项。而μC/OS-II的系统文件依然只是包含includes.h,即μC/OS-II的系统文件完全不必改动。所有的配置改变包括头文件的增减均在config.h中进行,而includes.h定下来后不必改动(μC/OS-II的系统文件需要包含的东西是固定的)。这样,μC/OS-II的系统文件需要编译的次数大大减少,编译时间随之减少。
OS_CPU.H
(1)可移植性类型定义
μCOS-II不使用C语言中的short、int、long等数据类型的定义,因为它们与处理器类型有关,隐含着不可移植性。代之以移植性强的整数数据类型,这样,既直观又可移植,不过这就成了必须移植的代码。
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 INT32U OS_STK;
(2)软中断底层接口
为了使底层接口函数与处理器状态无关,同时在任务调用相应的函数不需要知道函数位置,本移植使用软中断指令SWI作为底层接口,使用不同的功能号区分不同的函数。软中断功能号分配如下表所示,未列出的为保留功能。
用软中断作为操作系统的底层接口就需要在C语言中使用SWI指令。在IAR中,有一个关键字__swi,用它声明一个不存在的函数,则调用这个函数就在调用这个函数的地方插入一条SWI指令,并且可以指定功能号。同时,这个函数也可以有参数和返回值,其传递规则与一般函数一样。
(3)堆栈生长方式
μCOS-II使用结构常量OS_STK_GROWTH中指定堆栈的生长方式:
置OS_STK_GROWTH为0表示堆栈从下往上长。
置OS_STK_GROWTH为1表示堆栈从上往下长。
虽然ARM处理器核对于两种方式均支持,但IAR的C语言编译器仅支持一种方式,即从上往下长,并且必须是满递减堆栈,所以OS_STK_GROWTH的值为1。
#define OS_STK_GROWTH 1
Os_cpu_c.c
OSTaskStkInit( ) 接口
该函数用于初始化任务堆栈,使任务的堆栈看起来就像刚发生中断一样。即任务被执行时,就像从中断返回一样。在编写此函数之前,必须先确定任务的堆栈结构。而任务的堆栈结构是与CPU的体系结构、编译器有密切的关联。本移植的堆栈结构如下图所示。
软件中断异常服务程序
操作系统与硬件相关的底层函数使用软件中断作为接口,如下表所示。移植代码中一个重要的工作就是为这些软件中断
您可能关注的文档
- 第二章线性表-1.ppt
- 浙江省高中信息技术flash知识点总结(会考).ppt
- 第三章AVR单片机程序开发工具.ppt
- 新托福阅读加试.doc
- 定置管理方法在工程施工中的运用.doc
- 第十一、十二章测试题.doc
- 多媒体计算机技术——信息学部学生大作业报告格式.doc
- 《有效教学设计》的反思观后感.doc
- 人行复习题目及其答案.doc
- 2011-2期中七年级数学试卷.doc
- 人教版(2019)必修第二册Unit 1 Cultural Heritage Listening .pptx
- 人教版(2019)必修第一册Unit 3 Sports and Fitness Reading fo.pptx
- 人教版(2019) 必修第一册 Unit 1 Teenage Life Reading and.pptx
- 人教版(2019)选择性必修第一册Unit 5 Working the Land Reading a.pptx
- 期末综合测试题 2024-2025学年下期初中英语人教版八年级下册.docx
- 期末综合测试题 2024-2025学年下期初中道德与法治统编版八年级下册.docx
- 初中英语人教版七年级上经典必备作文10篇.docx
- 第17课 明朝的灭亡和清朝的建立 巩固练习 2024-2025学年下期初中历史统编版七年级下.docx
- 人教版(2019)必修三 Unit 1 Festivals and Celebrations Lis.pptx
- 人教版(2019)必修三 Unit 3 Diverse Cultures Reading for W.pptx
文档评论(0)