碧波液压网 欢迎你,游客。 登录 注册

一种实时操作系统μC/OS-II在LPC2114上移植的实现

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  传统的嵌入式系统设计大多采用单任务顺序机制,应用程序是一个无限的大循环,所有的事件都按顺序执行,与时间相关性较强的事件靠定时中断来保证,由此带来系统的稳定性、实时性较差;尤其当系统功能较复杂,且对实时性要求较严格时,这种单任务机制的弱点暴露无遗。本文引入的嵌入式操作系统μC/OS-II是一个多任务的实时内核,主要提供任务管理功能。在实时系统中的多个任务,必须决定这些任务的优先级顺序,任务调度算法需要动态为就绪任务的优先级排序。为了满足对实时性要求越来越高的需要,同时避免频繁改变就绪任务的优先级,在分析μC/OS-II源代码的基础上,对其调度算法进行改进。

  LPC2114是Philips公司开发的一款支持实时仿真和跟踪的ARM7TDMI-S CPU,并嵌入了128KB的高速Flash存储器。其内部集成了与片内存储器控制器接口的ARM7局部总线、与中断控制器接口的AMBA高性能总线(AHB)和连接片内外设功能的VLSI外设总线(VPB,ARM AMBA总线的兼容超集)。LPC2114将ARM7TDMI-S配置为小端(little-endian)字节顺序。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟频率下运行。

  将μC/OS-II移植在LPC2119上不仅有益于ARM和μC/OS-II在车用控制器上的应用,其成果还可以用于其他嵌入式工业控制领域。本次移植中,使用CodeWarrior For ARM Developer Suite v1.2编译调试环境。

  1 μC/OS-II系统结构

  μC/OS-II是一个完整的,可移植、可固化、可裁剪的占先式实时多任务内核;支持56个用户任务,支持信号量、邮箱、消息队列等常用的进程间通信机制;适用于各种微控制器和微处理器;所有代码用ANSI C语言编写,程序的可读性强,具有良好的可移植性,已被移植到多种处理器架构中,在某些实时性要求严格的领域中得到广泛应用。

  图1为μC/OS-II的软硬件体系结构。应用程序处于整个系统的顶层,每个任务都可以认为自己独占了CPU,因而可以设计成为一个无限循环。μC/OS-II处理器无关的代码提供了μC/OS-II的系统服务,应用程序可以使用这些API函数进行内存管理、任务间通信以及创建、删除任务等。

  大部分μC/OS-II代码是使用ANSI C语言编写的,因此μC/OS-II的可移植性较好。尽管如此,仍然需要使用C和汇编语言写一些处理器相关的代码。μC/OS-II的移植需要满足下列要求:(1)处理器的C编译器可以产生可重入代码。(2)可以使用C调用进入和退出Critical Code(临界区代码)。(3)处理器必须支持硬件中断,并且需要一个定时中断源。(4)处理器需要能够容纳一定数据的硬件堆栈。(5)处理器需要有能够在CPU寄存器与内存和堆栈交换数据的指令。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论