关闭
关闭
首页 > 嵌入式软件 > Uc/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 000 Hz之间);

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

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

软件方面,主要关注的是一些与处理器相关的代码移植,其分布在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 8\n WRCTL%g0;”) //关中断

#define OS_EXIT_CRITICAL() asm(“PFX 9\n 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值。各个任务开/关中断的状态可以不同,这样实现了开/关中断的嵌套。

 

1.jpg

 

关于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:

 

2.jpg

 

 

3.jpg

 

 

4.jpg

 

结 语

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

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

换一批

延伸阅读

[新鲜事] 高通切入PC处理器市场,直捣英特尔大本营?

高通切入PC处理器市场,直捣英特尔大本营?

市场传出,全球手机芯片龙头高通(Qualcomm)已打造个人电脑(PC)用处理器骁龙(Snapdragon)845,首款终端产品将是广达为惠普(HP)代工的机种,将开始踩英特尔(Intel)和超微(AMD)的地盘。正当市场仍在为三星代工的首......

关键字:高通 处理器 英特尔 PC

[新鲜事] ARM处理器攻下微软Azure服务器 英特尔遭遇双重打击

ARM处理器攻下微软Azure服务器 英特尔遭遇双重打击

据报道,微软将在其Azure云服务服务器上使用ARM芯片,这可能威胁英特尔在数据中心处理器市场的长期主导地位。......

关键字:ARM处理器 Azure服务器

[新鲜事] Intel手机处理器强势回归 x86手机重生

Intel手机处理器强势回归 x86手机重生

据外媒报道,尽管英特尔已停止为智能手机制造Atom芯片,但其合作伙伴仍在努力奋进。......

关键字:Intel 手机处理器 x86手机

[新鲜事] 三星为何限制自家处理器外卖?是高通太霸道了

三星为何限制自家处理器外卖?是高通太霸道了

三星对外供应Exynos处理器之路并不顺畅,这事还得怨高通太霸道了。......

关键字:三星 处理器 高通

[新鲜事] 华为麒麟野心勃勃:正式杀向美国!

华为麒麟野心勃勃:正式杀向美国!

目前,华为已经有多款产品登陆美国市场,而来自外媒的最新消息显示,华为正在与AT&T接洽,希望美国第二大运营商批准华为麒麟芯片入网。......

关键字:华为 麒麟处理器 美国

[新鲜事] AMD彻底翻身!Ryzen处理器全面缺货

AMD彻底翻身!Ryzen处理器全面缺货

外媒报道,从上周五开始,顶级Ryzen 7处理器在亚马逊、Fry以及Newegg就已经显示为售罄状态。另外,在日本多家DIY商店门口也出现了多年不遇的连夜排队购买盛况。......

关键字:AMD Ryzen处理器

[新鲜事] 电子涨价潮仍将延续 Intel处理器提价火上加油

电子涨价潮仍将延续 Intel处理器提价火上加油

今年电子产品涨价是主旋律,手机厂商已经普遍行动,面对面板、DRAM内存、固态硬盘、锂电池等零部件成本的上涨,PC厂商也坐不住。......

关键字:电子 涨价 Intel 处理器

[新鲜事] 首款DDR4国产处理器流片成功:性能追齐Intel

首款DDR4国产处理器流片成功:性能追齐Intel

在本月17日召开的上海SEMICON China 2017大会上,上海兆芯正式宣布型号为ZX-D的国产处理器流片成功。......

关键字:国产处理器 DDR4

[新鲜事] 骁龙处理器改名为“骁龙移动平台” 高通表示你们都不懂我

骁龙处理器改名为“骁龙移动平台” 高通表示你们都不懂我

高通表示,它为智能手机提供的产品在过去几年中被外界误读。高通公司产品营销副总裁Don McGuire表示:骁龙不仅仅是一个单独的组件,不是一颗单独的CPU,它是一块芯片,但也是多种技术集成,包括硬件,软件和服务,这些都不是简单的“处理器”这......

关键字:骁龙处理器 高通 骁龙移动平台

[新鲜事] AMD称Ryzen处理器全是GF 14nm制造,TSMC/三星暂无缘

AMD称Ryzen处理器全是GF 14nm制造,TSMC/三星暂无缘

AMD日前对外确认称Ryzen处理器100%都是GF公司Fab 8晶圆厂代工的,终结了“还可能交给三星/TSMC代工”的网友热议。......

关键字:AMD Ryzen处理器 GF 14nm
条评论

我 要 评 论

网友评论

大家都爱看

  • 华为的优势,就是自家的各种自研芯片

    CPU即中央处理器,是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。它的功能主要是解释计算机指令以及处理计算机软件中的数据。

    2017-08-16
  • 你不知道Ryzen芯片有多火?来看看AMD的股票吧

    据外媒报道,美银美林认为,AMD最新的Ryzen芯片可能会引发一波销售浪潮,进而推动该股继续上涨。它认为AMD股票还有40%以上的上涨空间。

    2017-08-16
  • 国产芯片:厚积薄发,强势崛起

    关于国产芯片,是近几年才有崛起的势头,可是在几年之前,国产芯片还处于“沉睡”的状态,尤其是手机芯片,几乎大部分都依赖进口,而且国外的市场几乎被高通和联发科所垄断,也就展讯还在市场边…

    2017-08-16
  • 为了数据安全 大疆无人机增加隐私飞行功能

    大疆周一表示,在美国陆军因为“网络缺陷”而要求其成员停用大疆无人机后,这家中国无人机制造商将加强无人机的数据安全性。 大疆政策和法务副总裁布伦丹&middot…

    2017-08-15
  • Intel代工 展讯发布14nm SC9853I手机SoC

    SC9853I采用的Intel的14nm FinFET制程,架构为8核64位Airmont架构,主频1.8GHz,GPU为Mali-T820 MP2,号称面向799~1299元档次的手机。…

    2017-08-15