当前位置:首页 > 单片机 > 单片机
[导读]   μC/OS-II操作系统是一种抢占式多任务、单内存空间、微小内核的嵌入式操作系统,具有高效紧凑的特点。它执行效率高,占用空间小,可移植性强,实时性能良好且可扩展性强。采用μC/OS-II实时操作系统

  μC/OS-II操作系统是一种抢占式多任务、单内存空间、微小内核的嵌入式操作系统,具有高效紧凑的特点。它执行效率高,占用空间小,可移植性强,实时性能良好且可扩展性强。采用μC/OS-II实时操作系统,可以有效地对任务进行调度;对各任务赋予不同的优先级可以保证任务及时响应;采用实时操作系统,降低了程序的复杂度,方便程序的开发和维护。μC/OS-11非常适合应用在一些小型的嵌入式产品应用场合,在家用电器、机器人、工业控制、航空航天、军事科技等领域有着广泛的应用。

  单片机、ARM、FPGA与μC/OS-II操作系统相结合,实现一些具体功能,是目前嵌入式应用中比较常见的。在这些应用中,基础性的工作就是操作系统的移植。本文选取使用较多的51单片机、LPC2210、NiosII三种处理器进行介绍。

  1 μC/OS-II操作系统移植条件

  μC/OS-II操作系统的大部分源代码都是用C语言书写的,但仍需使用汇编语言来完成一些和处理器相关的操作,例如读写处理器、寄存器时只能使用汇编语言来实现。因此,将μC/OS-II操作系统移植到目标处理器上,需要从硬件和软件两方面来考虑。

  硬件方面,目标处理器需满足以下条件:

  ①处理器的C编译器能产生可重入代码;

  ②用C语言可以开/关中断;

  ③处理器支持中断,并且能够产生定时中断(通常在10~1 000Hz之间);

  ④处理器能够支持容纳一定量数据的硬件堆栈;

  ⑤处理器有将堆栈指针和其他寄存器读出和存储到堆栈或内存中的指令。

  软件方面,主要关注的是一些与处理器相关的代码移植,其分布在OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM这3个不同的文件中。

  2 目标处理器硬件支持

  51单片机、LPC2210、NiosII三种处理器在硬件方面均能满足μC/OS-II操作系统的移植要求。

  51单片机:选择Keil公司的集成开发环境作为开发工具,因为该集成开发环境的C51编译器能产生可重入型代码,且用C语言就可以开/关中断。同时具有一定数量的堆栈和操作相关寄存器的指令。

  LPC2210:采用ARM7微控制器可以满足上述②、④、⑤,而ADS1.2的C编译器可以满足①、③的要求。

  NiosII处理器:Nios处理器可以配置成最多支持64个中断,包括外部硬件中断、内部中断以及TRAP(调试中断)。Nios II处理器可以配置使用32位内部定时器,通过用软件控制写入几个控制寄存器的内容来获得定时工作,与一般的定时器工作原理相同,可以产生定时中断。Nios处理器可以外接存储器。以使用的DE2开发板为例,外接512 KB SRAM资源,可提供足够的数据硬件堆栈。NioslI 8.0 IDE采用GNU编译器,支持C/C++的编译、链接产生重入代码,允许在C语言中嵌入汇编语言。

3 软件移植过程


  3.1 OS_CPU.H的实现

  OS_CPU.H文件包括了用#define语言定义的与处理器相关的常数、宏以及数据类型。

  在上述三种处理器采用的不同编译器中,数据类型的定义是相同的,在此不做具体介绍。

  在OS_CPU.H中定义与处理器相关的宏,主要是进入临界区的OS_ENTER_CRITICAL()和退出临界区的OS_EXIT_CRITICAL()。


  在Keil编译器中,EA是总中断。

  #define OS_ENTER_CRITICAL() EA="0";//关中断

  #define OS_EXIT_CRITICAL() EA="1";//开中断

  在ADS编译器中定义为软件中断函数,并编写软件中断处理代码实现开/关中断。

  _swi(0x00)viod OS_TASK_SW(viod);//任务级任务切换函数

  _swi(0x00)viod OS_ENTER_CRITICAL(viod);//关中断

  _swi(0x00)viod OS_EXIT_CRITICAL(viod); //开中断

  在NiosII 8.0 IDE编译器中:

  #define OS_ENTER_CRITICAL() asm(“PFX 8n WRCTL%g0;”) //关中断

  #define OS_EXIT_CRITICAL() asm(“PFX 9n WRC TL%g 0;”) //开中断

  堆栈的增长方向通过设置OS_STK_GROWTH为0或者1来确定。51单片机中只能设置为0,表示堆栈是从下往上增长的。LPC2210中则可以设置成0或者1。NiosII中则只能设置成1,表示堆栈是从上往下增长的。

  3.2 OS_CPU_C.C的实现

  OS_CPU_C.C中,主要应改写堆栈初始化函数OS-TaskStkIint()。必须根据移植时统一定义的任务堆栈结构进行初始化,其他9个钩子函数只需说明即可。也可根据移植时用户自己的需要,编写相应的操作代码。

  以LPC2210为例,堆栈空间从高到低依次存放着PC,LR,R12,R11,…,R1,R0,CPSR,OsEnterSum。每个任务都有独立的OsEnterSum,在任务切换时保存和恢复各自的OsEnterSum值。各个任务开/关中断的状态可以不同,这样实现了开/关中断的嵌套。

  

  关于51单片机和NiosII处理器的这部分移植,请参看参考文献。

  3.3 OS-CPU-A.S的实现

  这部分需要对处理器的寄存器进行操作,所以必须用汇编语言编写。μC/OS-II移植要求用户编写4个简单的汇编语言函数:OSStartHighRdy()、OSCtxSw()、OS-INTCtxSw()、OSTickISR()。

  OSStartHighRdy()的任务是进行任务调度和切换;OSCtxSw()的任务是强制CPU进行寄存器和程序计数器的切换;OSIntCtxSw()的任务是在中断返回时进行任务切换;OSTickISR()是时钟节拍中断服务程序,用来实现时间的延迟和超时功能。

  以OSStartHighRdy()任务调度和切换函数为例,介绍3种处理器移植代码。

1)51单片机


  OSStartHighRdy:

  

  结 语

  51单片机、LPC2210,NiosII三种处理器在目前的嵌入式应用方面有着广阔的市场前景。将μC/OSs-II操作系统移植到这三种以及其他处理器上,能够更好地保证系统运行时的稳定性和实时性,而且该操作系统代码少,易于掌握和移植。

  本文所介绍的μC/OS-II操作系统在3种处理器上的移植是笔者在实际学习过程中,进行的梳理和小结,对初学者有一定的参考价值。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在六个服务领域表现出显著提升;从2021年的第7位跃居第2位 印度班加罗尔2022年4月11日 /美通社/ -- 下一代数字服务和咨询领域的全球领军者Infosys(印度国家证券交易所、孟买证券交易所和纽约证券交易所代...

关键字: Group os

(全球TMT2022年4月11日讯)下一代数字服务和咨询领域的全球领军者Infosys近期宣布,在Everest Group PEAK Matrix®2022年度 IT服务提供商奖中排名第二。在第六届PEAK Matr...

关键字: Group os

香港2022年3月29日 /美通社/ -- 在传统与创新的十字路口,一些人不仅记录了历史,而且潜心打造未来。回顾Toshiba TV第一次屏幕闪烁的那一刻,创新便已深植于公司的“血液”,致力于真实...

关键字: os

北京2022年3月21日 /美通社/ -- 微美全息软件有限公司(纳斯达克: WIMI)(以下简称为“微美全息”或“公司”),一家全球领先的增强现实(“AR”)服务提供商,今天宣布宣布被纳入Proshares Metav...

关键字: os

Infosys 元宇宙工坊(Infosys metaverse foundry)是 Infosys Living Labs 不可或缺的一部分,它正在推动企业的数字创新议程,以适应新兴的优先事项和市场趋势。 Infosys...

关键字: os

Chronos芯片将搭载于Ouster面向量产车推出的DF系列固态数字激光雷达上,提高其性能与功效...

关键字: 芯片 激光雷达 os

(全球TMT2022年3月11日讯)2022年3月11日,高分辨率数字激光雷达供应商Ouster发布最新Chronos 芯片,这是一款车规级、完全定制化的数字激光雷达接收芯片,将搭载于其DF系列固态激光雷达上。Chro...

关键字: 芯片 激光雷达 os

上海2022年3月10日 /美通社/ -- 中国上海,2022年3月,柏中(Bossard)宣布推出Smart Vending Cloud帮助客户解决MRO耗材管理问题,进一步升级“智能工厂物流”服务。此举也意味着柏中在...

关键字: 全自动 os

(全球TMT2022年2月22日讯)孚昇电子(Fusion Worldwide)收购了位于新加坡的大型电子元件测试公司Prosemi Mfg Pte Ltd。由于供应链经历了历史性的限制,导致周转时间过长,此次收购将进...

关键字: os se 电子元件

苏黎世2022年2月14日 /美通社/ -- 通过向HeiQ AeoniQ LLC进行500万美元的投资股权,并根据业绩里程碑计划额外投资400万美元,HUGO B...

关键字: os ni
关闭
关闭