欢迎来到天天文库
浏览记录
ID:39627203
大小:227.45 KB
页数:3页
时间:2019-07-07
《基于ARM7内核的UCoS—Ⅱ移植研究》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第31卷第5期企业技术开发2012年2月Vol_31No.5TECHNOLOGICALDEVELOPMENTOFENTERPRISEFeb.2012基于ARM7内核的UCOS—II移植研究陶锐,李洋,曹海燕(呼伦贝尔学院计算机科学与技术学院,内蒙古呼伦贝尔021008)摘要:嵌入式操作系统的移植是设计开发的重要一环,文章从全局和细节上分别研究了UCOS—II移植过程中的技术要点,并着重从移植后代码的可靠性、健壮性和通用性等方面进行了研究。关键词:嵌入式;操作系统移植;UCOS中图分类号:TP316文献标识码:A文章编号:1006—8937(
2、2012)05—0068—01由于基于ARM7内核的各种芯片之间有着很大的差调用OSStartHighRdyO运行优先级最高的任务。第三,移植异,这些差异主要表现在存储系统不同、片内外设不同、OS—CPU.H。在OS—CPU—C.C文件中,需要编写以下10个中断源不同等。这就造成了嵌入式操作系统移植的不可c函数,名称分别为OSTaskStklnit0、0sTaskcreateH0ok()、避免性,而嵌入式操作系统移植效果的优劣直接影响着0STaskDe1Ho0k()、0STaskSwHook()、0STaskIdleH0ok()、目标系统的
3、整体质量。文中采用LPC2000系列ARM7微0STaskStatHook()、0STaskTickHook()、0sInitHookBegin()、控制器以及ADS编译器对UCOS—II的移植过程进行了OSInitHookEnd()、OSTCBInitHook()。任务堆栈初始化函数测试研究OSTaskStkInit的定义按照移植时规定的堆栈结构进行,其他九个函数按照设计要求编写,或者为空。1UC/OS—II的移植步骤2UCOS—II移植的技术要点UC/OS—II是一个占先式的实时多任务内核,由ANSIc语言编写,包含小部分汇编代码供不同
4、架构的处理器2.1数据类型的处理使用,能够管理64个任务,主要系统功能包括:内存块管在c语言中常用的int、short等数据类型与处理器类理、任务管理、消息队列管理、信号量、互斥信号量、事件型密切相关,这就意味着采用上述类型定义后的程序本标志组、消息邮箱等。从移植UCOS—II的过程来看,逻辑身具有不可移植性,为此在代码编写中需要采用移植性上可分作三大组成部分:与处理器无关的内核代码、与处强的数据类型进行替换,因此这些数据类型定义也便成理器有关的核心代码、与软硬件环境设置有关的配置代了代码移植工作的一部分,当然依编译器的选择不同也码。其中与
5、处理器无关的内核代码主要包括OS—CORE.会略有差异,在ADS编译器中部分相关参考代码如下:COSFLAG.C、OSMBOXCOSMEMCOSMUTEX.CtypedefunsignedcharBOOLEAN;_.—.———OStypedefunsignedcharINT8U;—Q.C、OS—SEM.C、OS_TASKCOSTIME.C、UCOs_II.C、UCOStypedefsignedcharINT8S;—II.H,它们主要实现任务管理、信号量、内存管理、消息队列、系统调度等功能;与处理器有关的核心代码主typedefunsigne
6、dshortINT16U;要包括OS—CPU.H、OS—CPU—A.ASM、OS—CPU—C.C,它们typedefsignedshortINT16S;主要与操作系统的移植相关;与软硬件环境设置有关的typedefunsignedintINT32U;配置代码主要包括OS—CFG.H、INCLUDES.H,它们主要用typedefsignedintINT32S;于剪裁和设置操作系统。以上文件名为UCOS—II的默认2.2任务与函数调用的封装设置,无须严格按照上述名称命名文件。ARM7内核具有7中工作模式,带T后缀的具有两由UCOS—II的逻辑
7、结构可以看出,其移植工作主要套指令集,在提升处理器功能和效率的同时也带来了复集中在与处理器有关的核心代码部分。实际测试中遵循杂性。在移植过程中应设法编制接口函数将底层复杂性了如下步骤。第一,对OS_CPU.H进行移植,这部分工作与操作系统层的管理和应用隔离开,为了达到这个目的主要包括:首先定义与处理器有关的数据类型,如可以采用软件终端SWI(softwareinterruption),而且在BOOLEAN、INT8U、INT8S等;其次进行与处理器有关的ADS编译器中也提供了相应的支持,即swi关键字。采宏定义主要包括OS_ENTER_CR
8、ITICAL以及用该关键字声明一个莫须有的函数,调用时则在该处插OSEXIT入SWI指令,且可以设定中断功能编号,以及完成参数传—_CRITICAL;再次编写软中断函数主要包括O
此文档下载收益归作者所有