基于LPC1343UCOS-II移植.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于LPC1343UCOS-II移植

基于LPC1343UCOS-II移植   【摘要】本文首先介绍了LPC1343的硬件架构和UCOS-II实时操作系统的特点,最后介绍了UCOS-II在LPC1343上移植的方法和注意事项。   【关键词】LPC1343UCOS-II实时操作系统   [Abstract]The document introduced the hardware structure of LPC1343 and character of real-time Operating system、UCOS-II,then discussed the measures and matters needing attention to transplanting ucos-II.   [Key word]LPC1343, UCOS-II, real-time OS   本文以实时多任务操作系统UCOS-II为例,介绍了UCOS-II在LPC1343上的移植和应用,本文首先介绍了LPC1343的体系机构,然后对UCOS-II的架构进行了简单的描述,最后介绍了UCOS-II在LPC1343上的移植和使用方法。   一、系统的硬件架构   LPC1343是飞利浦公司生产的基于第二代ARM Cortex-M3内核的微控制器。最高运行频率达到72M. LPC1343配置有32KB的Flash存储器、8KB的数据存储器、集成了USB设备、1个快速模式I2 C接口、1个UART、4个通用定时器。   内嵌NVIC控制器,该中断控制器可对低优先级中断进行延时,对外部中断进行有效控制。中断向量表可重定位,具有软中断向量,适合于在使用操作系统时进行模式切换。   System Tick定时器,可产生固定的10ms中断,适合于作为操作系统的时钟信号。   二、UCOS-II简介   UCOS-II是一个可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器。UCOS-II绝大多数代码使用ANSI C语言进行开发。仅与CPU硬件相关部分是用汇编语言编写的,总量约200行,目的是便于移植到任何一种CPU上。UCOS-II仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。不提供输入输出管理,文件系统,网络等额外的服务。用可户根据需要自行实现。   UCOS-II的架构可以分为三层,底层为物理层,主要是嵌入式系统硬件的驱动包括系统的时钟信号。中间层为系统层,用于对任务的管理,它提供了邮箱,信号量,消息队列同步信号。可以根据需要通过配置os_cfg_r.h里定义的宏对UCOS-II进行裁剪。最高层为应用层,使用者可根据系统提供的API函数创建任务完成应用工作。   三、移植的主要工作   移植UCOS-II时主要解决以下几个问题:第一.系统时钟信号怎么产生;第二.初始的任务堆栈是什么结构,任务堆栈是递增堆栈还是递减堆栈;第三.哪些变量需要保存到堆栈;第四.怎么处理临界段代码;第五.任务之间如何切换。   我们使用System Tick定时器作为系统的时钟,时钟频率为100Hz,当系统的任务已知时,可以对该值进行调节使系统的负荷和响应速度达到一个平衡。发生中断时,系统对当前的任务状态进行裁决,以决定是否要进行任务切换。时钟的初始化代码可用C语言编写。   任务堆栈有两种结构,递减堆栈和递增堆栈,递减堆栈就是堆栈从高地址向低地址方向增长,递增堆栈就是堆栈从低地址向高地址方向增长。LPC1343的堆栈为递减堆栈。   LPC1343在发生中断时,需要保存的寄存器依次有堆栈指针,xPSR状态寄存器,链接寄存器R14,R12,R3-R0, R11-R4。当然这些寄存器是否保存到堆栈里在实际中与中断程序的内容有关,但我们在移植UCOS时。必须假设新的任务将会使用到这些寄存器,因为操作系统要处理的任务对于我们来说是未知的。这个将在OSTaskStkInit函数中用到。   UCOS-II的任务有5种状态,分别为睡眠态,挂起态,就绪态,运行态,中断态。任务一旦创建即进入就绪态,如果处于就绪态的任务优先级比正在运行的任务优先级高,则发生中断,优先级高的任务得以运行,而被中断的任务则处于中断态,当该高优先级的任务执行完毕且就绪任务的优先级没有中断态任务的优先级高时,中断态的任务重新进入运行态。当运行态的任务等待某事件发生时则进入挂起态。处于挂起态的任务当某事件发生时进入就绪态。当任务被删除时,进入休眠态。处于中断态的任务不能被删除,否则将引起系统崩溃。   任务的切换有两种情况,第一种是高优先级的任务因等待某事件的发生而请求挂起,使低优先级的任务得以运行,这种情况下通过调用OSCtxSw函数进行任务切换。这种任务称为

文档评论(0)

erterye + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档