首页 » 解决方案 » μC/OS2Ⅱ在军用FM80386EX处理器上的移植应用

μC/OS2Ⅱ在军用FM80386EX处理器上的移植应用

作者:  时间:2009-02-13 06:45  来源:

μC/OS-Ⅱ是实时操作系统(RTOS),已经通过了非常严格的测试,得到了美国航空管理局(FederalAviationAdministration)的认证.μC/OS-Ⅱ功能强大,支持56个用户任务,其内核为占先式,支持信号量、邮箱、消息队列等多种常用的进程通信机制,现已成功应用到众多商业嵌入式系统中,是1种成熟稳定的实时内核.与大多商用RTOS不同的是,μC/OS-Ⅱ公开所有的源代码,90%的代码使用标准的ANSIC语言书写,程序可读性强,移植性好.同时,它可以免费获得,即使商业应用也只收取少量的许可费用.因此,对μC/OS-Ⅱ实时操作系统的学习研究、开发、应用具有重要的意义.

  军用FM80386EX嵌入式处理器是1种高度集成,32位总线结构,专为恶劣环境下的嵌入式控制应用优化设计的全静态CPU.它采用16位外部数据总线,26位地址总线及Intel系统管理模式(SMM),能在廉价的16位硬件系统中运行32位程序,可将基于Intel386架构的大量软件应用于嵌入式系统.为了有效地管理多任务,以及满足系统的实时性要求,常常需要使用实时嵌入式操作系统.

  要移植μC/OS-Ⅱ,处理器必须满足以下要求:处理器的C编译器能产生可重入代码;用C语言可以打开和关闭中断;处理器支持中断,并且能产生定时中断;处理器能容纳一定数量的硬件堆栈;处理器有将堆栈指针和其他CPU寄存器读出、存储到堆栈或内存中的指令.FM80386EX满足以上条件,可以进行μC/OS-Ⅱ的移植.

  μC/OS-Ⅱ实时操作系统结构

  应用程序处于整个系统的顶层,每个任务都可以认为自己独占了CPU,因此任务被设计成了1个无限循环.而μC/OS-Ⅱ与处理器无关的代码提供了该实时系统的系统服务,应用程序利用这些API函数进行内存管理,任务间的通信以及创建、删除任务等.μC/OS-Ⅱ的代码大部分是使用ANSIC书写,与微处理器硬件相关的部分使用汇编语言编写,并且汇编语言编写的部分已经压倒最低限度,因此μC/OS-Ⅱ的可移植性好.而处理器80386具有堆栈指针、CPU内部寄存器入栈、出栈指令.所使用的C编译器BorlandC3.1支持内嵌汇编,使得关中断和开中断能在C语言程序中实现.

  实时内核μC/OS-Ⅱ在FM80386EX上的移植

  我们使用BorlandC3.1编译器移植μC/OS-Ⅱ主要包括以下几个步骤:

  编写OS-CPU.A.ASM

  这里要实现4个汇编函数改写:多任务启动函数中调用OSOSTartHighRdy(),任务切换函数OSCtxSw(),中断任务切换函数OSIntCtrSw(),时钟节拍服务函数OSTickISR().

  1) OSStartHighRdy()函数.该函数被OSStart()函数调用,功能是运行优先级最高的就绪任务,其主要代码如下:

程序

  2) OSCtxSW()函数.该函数被OS-Sched()函数调用,通常是用汇编语言编写的,因为C编译器不能从C语言中直接处理CPU寄存器.OSCtxSW()的功能是在任务级实现任务切换,任务切换是模拟软中断来实现的,其主要代码如下:

程序

任务级任务切换时的堆栈结构

图1任务级任务切换时的堆栈结构

  3) OSIntCtxSw( )函数.该函数只能在中断子程序里被OSIntExit()函数调用.由于中断的产生可能引起任务切换,在中断服务程序的最后会调用OSIntExit()函数来检查任务就绪状态,如果满足任务切换条件,则OSIntExit()调用此函数实现任务切换,除了不应调用任务切换函数OS-TASK-SW()外,其余代码与-OSCtxSw相同.

  4) OSTickISR( )函数.发生中断时,CPU的中断向量会指向该ISR.其主要代码如下:

程序

  一般情况下,产生调用OSTickISR()函数时,时钟节拍的设备应设置成每隔10~100ms产生1次中断.必须在多任务系统启动以后,也就是在调用OSStart()之后,再开启时钟节拍器.

  用C语言编写6个操作系统相关的函数

程序

  后5个函数是钩子函数,可以不加代码:

程序

  设置OS-CPU.H中与处理器和编译器相关的代码

  80386处理器的堆栈从内存高地址向低地址递减,所以把OS-STK-GROWTH置1.

程序

  完成上述工作后,μC/OS-Ⅱ就可以运行在80386处理器上了.另外根据用户需求按需配置OS-CFG.H,裁减μC/OS-Ⅱ,使之占用尽量少的内存.

相关推荐

高通首款64位处理器或改变手机市场格局

高通  处理器  2013-12-17

高通将推出骁龙410处理器参考设计版本

高通  处理器  2013-12-12

三星仍是苹果A系列处理器唯一代工厂

三星  处理器  2013-11-14

ARM第三财季净利润7830万美元 同比涨17%

ARM  处理器  2013-10-23

14纳米64位Exynos 6处理器 三星欲超苹果?

三星  处理器  2013-10-18

英特尔Q3业绩不及预期 新处理器或库存失衡

英特尔  处理器  2013-10-17
在线研讨会
焦点