- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实时操作系统μCOS—Ⅱ在ARM处理器LPC2104上移植
实时操作系统μCOS—Ⅱ在ARM处理器LPC2104上移植
摘要:实时操作系统μC/OS-Ⅱ在ARM处理器LPC2104上的移植是易于实现的。本文分析了μC/OS-Ⅱ所具备的移植条件,并探讨了如何实现这个移值过程。
关键词:实时操作系统 ARM处理器 LPC2104上的移植
中图分类号:TP316 文献标识码:A 文章编号:1007-9416(2013)05-0143-01
μC/OS-Ⅱ是实时操作系统中应用最为广泛的系统之一,它作为免费的、原代码公开的操作系统,易于被用来被移植,只有满足一定的移植条件,选择适当的编译器,将软硬件之上的内容进行修改,就可完成移植过程。
1 移植分析
1.1 移植条件
μC/OS-Ⅱ由于其实现原理相对来说,较为简单,它只是一个小的实时内核,因此,其移植会比其他内核容易实现。将μC/OS-Ⅱ内核移植到一个嵌入式系统中去,这个系统要满足以下几个条件
(1)编译器-处理器的C编译器能产生可重入代码。重入代码就是可以被多个任务同时调用的一个函数或是一段代码,在调用的过程中,数据不会被破坏。可重入代码最大的特点在于它可以被执行的过程中断,当恢复执行后,继续执行,数据不会由于执行的中断而被破坏,这种数据保护性是执行多任务操作的基础。
(2)处理器支持中断,可以产生定时中断。多任务的协调切换是通过处理品中断完成的,这是多任务操作系统实现的基本条件。ARMT7DMI-S处理器上可以产生定时器中断,处理器产生的定时中断,使μC/OS-Ⅱ系统灵活的实现多任务之间的切换。
(3)C语言开关控制处理器中断。程序中的打开或关闭中断是用来完成中断处理器中对应的寄存器的关闭与打开功能的。μC/OS-Ⅱ控制系统的中断关闭或打开是通过宏调用实现的。以ARM7TDMI-S为核心的LPC21O4处理器,可以通过相应寄存器的设置来完成。
(4)处理器支持堆栈操作。处理器的一个重要功能就是实现堆栈指针和CPU寄存器可内容的读出、并存储到内存中,实现系统的实时调度。μC/OS-Ⅱn系统会在任务调度时,保存当前任务现场,将正在进行的任务的CPU寄存器存放在任务的堆栈中,完成任务后,再将原来任务的现场进行恢复,从另一任务的堆栈中将原来的工作寄存器恢复完成??现场保护与恢复必须同出入堆栈来实现,ARM7系列的TDMILPC2104嵌入式处理器具有上述功能,因此,μC/OS-Ⅱ系统可以被移植到这个处理器上。
1.2 编译器的选择
当前,ARM处理器核的C语言编译器有很多,其中以SDT和ADS为典型代表,其中,后者是前才的升级版。GCC也是C语言编译器,主要用于Linux操作系统,也是使用比较广泛的一种,但是与ADS相比,其编译效率相对较低,与ADS相差2-3倍,这种低性能不利于芯片功能的实现。因此,适合选择ADS编译程序作为调试。
1.3 任务模式的取舍
ARM7TDMI-S处理器核具有七种模式,分别是用户模式、系统模式、管理模式、中止模式、未定义模式、中断模式和快速中断模式。其中用户模式不是特权模式,没有与相应的异常相联系,因此,是工作模式的首选。而系统模式属于特权模式中的一种,但是它也不与相应异常相联系,但是会出现任务代码多而对整个程序产生影响,因此,可以作为备用任务模式。用户可以根据自身情况通过系统提供的接口进行两种模式的切换。
2 系统μC/OS-Ⅱ的移植
μC/OS-Ⅱ移植主要涉及的函数的调用与文件编写。通过对μC/OS-Ⅱ软件/硬件结构图进行分析,探知移植μC/OS-Ⅱ到LPC2104需要分为6步骤实现:
(1???在OS_CPU.H中设置不依赖于编译器的数据类型。C/OS-Ⅱ的移植首先要定义其适合其特点的数据类型,那么就要对数据类型进行重新定义,保证移植的成功。对于与编译器有亲的short,int和long数据类型,是不可进行移植的。
(2)在OS_CPU.H中使用软中断SWI声明底层接口。在ADS中关键字SWl声明一个不存在的函数,那么调用该函数就在调用这个函数的地方插入一条swl指令,并且可以制定功能号。使用不同的的功能号区分不同的函数,实现的主要函数的功能。
底层函数将堆栈的增长方向进行了定义,并利用软中断的方式定义了开关中断和运行最高任务函数。只有使用函数正常调用执行软中断,并且向中断向量定义软中断函数,才能完成开关中断和运行最高任务函数。
(3)OSIntCtxSw()。OSIntExit()执行切换功能是通过调用OSIntCtxSw()来实现的。因为OSIntCtxSw()是在ISR中被调用的,因此,被中断的任务处理器寄存器都会被保存到堆栈之中,而采用软中断方式的任务切换函数OSIntCtxSw
文档评论(0)