现在,嵌入式体系在工业操控、家用电器、移动通讯、PDA等各种范畴得到了越来越广泛的运用。因为用户对嵌入式产品的功用要求越来越高,程序规划也变得越来越杂乱,这就需求一个通用的嵌入式实时操作体系来对其进行办理和操控。对移植了操作体系的嵌入式体系进行规划和开发,能够大大减小程序员的担负,关于不同的运用能够依照相同的进程来完结体系的规划。
μC/OS-Ⅱ是一种简略高效、源代码揭露的嵌入式实时操作体系,具有杰出的可扩展性和可移植性,被广泛的运用到各种嵌人式处理器上。μCOS-Ⅱ操作体系具有可固化,可裁剪,可掠夺性的实时内核,可一起办理64个体系使命。运用移植μCOS-Ⅱ操作体系的嵌入式微处理器来规划和开发产品,关于进步产品的功用,削减产品的开发周期和下降开发本钱有着重要的含义。在此较详细地剖析和介绍了嵌入式实时操作体系μCOS-Ⅱ在ARM系列单片机S3C44B0x上的移植进程。
1 μCOS-Ⅱ概述
μCOS-Ⅱ是一种源代码揭露、结构细巧、具有可掠夺性实时内核的嵌入式实时操作体系。μCOS-Ⅱ是用ANSI的C言语编写的,包含一小部分汇编言语代码,使之可供不同架构的微处理器运用,至今,从8位到64位,μCOS-Ⅱ已在超越40种不同架构的微处理器上运转。μCOS-Ⅱ是专门为嵌入式运用而规划的,它包含了使命调度,使命办理,时间办理,内存办理和使命问的通讯和同步等基本功用。μCOS-Ⅱ具有一个可移植、可固化、可裁剪的实时内核,它具有履行效率高,占用空间小,实时功用优秀和可扩展性强等特色,被广泛地移植运用到各种嵌入式微处理器中。
2 S3C44B0处理器概述
S3C44B0x微处理器选用高功用、低功耗的32位RISC内核ARM7TDMI。 一起,S3C44B0x在ARM7TDMI核的基础上,扩展了一系列的外围器材,使体系本钱及外围器材数目下降至最低,这些功用部件分为CPU单元,体系时钟办理单元,存储单元和体系功用接口单元,片上集成的首要功用如下:
在ARM7TDMI基础上增加了8 KB的CACHE;外部扩大存储器操控器;LCD操控器,并带有1个LCD专用DMA通道;2个通用DMA通道,2个带外部恳求引脚的DMA;2个带有握手协议的UART,1个SIO;1个I2C总线操控器;5个PWM守时器及1个内部守时器;1个看门狗守时器;71个通用可编程I/O口,8个外部中止源;功耗操控形式:正常、低、休眠和中止;8路10位ADC;具有日历功用的RTC;PLL时钟发生器等。
3 嵌入式操作体系μCOS-Ⅱ的移植
3.1 移植μCOS-Ⅱ的条件
所谓移植,便是使一个实时内核能在其他的微处理器或微操控器上运转。为便利移植,大部分μCOS-Ⅱ的代码都是用C言语编写的,可是仍需求用C言语和汇编言语编写与处理器硬件相关的代码,这是因为μCOS-Ⅱ在读/写处理器的寄存器时,只能经过汇编言语来完结,要使μCOS-Ⅱ正常运转,处理器有必要满意以下要求:
(1)处理器的C编译器能发生可重人型代码;
(2)处理器支撑中止,并且能发生守时中止(一般为10~100 Hz);
(3)用C言语就能够开/关中止;
(4)处理器能支撑必定数量的数据存储硬件仓库;
(5)处理器有将仓库指针以及其他CPU寄存器的内容读出、并存储到仓库或内存中去的指令。
ARM系列单片机S3C44B0x满意以上的条件。所以能够将μCOS-Ⅱ移植运用到S3C44B0x。
3.2 树立移植环境
本次移植在如下的环境中完结:
(1)编译东西选用ARM公司的ADS 1.2。ADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发东西。现在ADS的最新版本是1.2,它替代了前期的ADS 1.0和ADS 1.1。ADS 1.2由命令行开发东西,ARM实时库,GUI开发环境,实用程序和支撑软件组成。有了这些部件,用户就能够十分便利地为ARM系列的处理器编写和调试自己的运用程序了。
(2)方针板选用杭州立宇泰公司出产的S3C44B0x开发板,主机经过JTAG衔接方针板以树立穿插开发调试环境。
3.3 μCOS-Ⅱ的移植
μCOS-Ⅱ的硬件/软件体系结构如图1所示,对μCOS-Ⅱ的移植其实便是对与处理器有关的代码进行从头编写或修正。
由图1可知,移植μCOS-Ⅱ实际上便是分别对OSCPU.H,OS_CPU_A.ASM和OS_CPU_C.C这三个文件进行从头编写或修正。因为在本次移植中是将μCOS-Ⅱ移植到ARM系列单片机S3CA4B0x中,接下来将结合S3CA4B0x微处理器的特性来详细介绍本次移植进程中所做的首要作业。
(1)移植OS_CPU.H文件
OS CPU.H文件中包含了用#define界说的与处理器相关的常量和类型的界说,与μCOS-Ⅱ所界说的变量类型相一致;界说开/关中止的宏OS_ENTER_CRITICAL()和OS_EXIT_CRIT%&&&&&%AL()来维护临界段代码免受多使命或中止服务例程的搅扰;界说栈的增加方向,在本次移植中栈的增加方向被界说为从上往下增加,OS_STK_GROWTH的值界说为1。在移植该文件时,需求编写和修正的部分代码如下所示:
①设置与编译器相关的数据类型
③设置仓库的增加方向
绝大多数的微处理器和操控器的仓库是从上往下增加的,可是也有一些处理器和操控器的仓库增加方向是从下往上增加的μCOS-Ⅱ被规划成这两种状况都能够处理,只要在结构常量OS_STK_GROWTH中指定仓库的增加方法即可。在本次移植中仓库的增加方向被设置成从上往下增加。