APP下载

基于S3C44B0X平台的μC/OS-II的移植

2009-04-26胡永祥

魅力中国 2009年35期
关键词:嵌入式系统

胡永祥

中图分类号:TP31文献标识码:A文章编号:1673-0992(2009)12-077-01

摘要:针对高等职业技术学院嵌入式系统实验和专业建设的实际需要而进行的。论文对μC/OS-II的内核数据结构、运行机制以及μC/OS-II操作系统在S3C44B0X上的移植过程进行了详细的讨论。

关键词:嵌入式系统;ARM;μC/OS-II操作系统;S3C44B0X

一、嵌入式系统介绍

1.概念 嵌入式系统,通常是指操作系统和功能软件集成于计算机硬件的应用系统,是将系统的软件与硬件一体化。从技术方面来看,嵌入式系统是以应用为中心,以计算机技术为基础的,并且软、硬件可裁减的,能满足应用系统对功能、可靠性、成本、体积、功耗等指标严格要求的专用计算机系统。它可以实现对设备的控制、监视或管理等功能。从系统方面来看,嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。

2.组成

嵌入式系统通常由嵌入式系统硬件和嵌入式系统软件两大部分组成,其中嵌入式系统硬件包括:嵌入式处理器、嵌入式外围设备、大容量存储器等;嵌入式系统软件包括嵌入式操作系统和嵌入式应用软件等几部分组成。

二、实验系统硬件结构

图1实验系统硬件结构图

Figure 1 Figure of experiment system hardware

三、交叉开发环境

(一)交叉开发环境介绍

嵌入式系统交叉开发环境是指编译、链接、调试嵌入式应用软件的环境,一般包括交叉编译器、交叉调试器和系统仿真器。其中交叉编译器用于在宿主机上生成能在目标机上运行的代码,交叉调试器和系统仿真器用于在宿主机与目标机间完成嵌入式软件的调试。

采用宿主机/目标机模式开发嵌入式应用软件时,首先架构一台服务器,每个开发者从客户端使用Telnet登陆到这台服务器,目标机系统也连到同一局域网内。在服务器上交叉编译生成目标文件,通过FTP传到开发者的PC机,然后通过串口或网络下载到目标机的特定位置上,在操作系统的支持下利用交叉调试器进行分析调试,最后目标机脱离宿主机单独运行。

(二)创建交叉编译环境

常用的交叉开发工具是GNU工具链,目前能够支持X86、ARM、MIPS和PowerPC等多种处理器。GCC交叉开发环境中,arm-linux-gcc是交叉编译器,arm-linux-ld是交叉链接器。以linux-2.4.21和arm-linux-gcc-3.3为例:

1.解压Linux内核linux-2.4.21.tar.gz,放在//usr/local/arm中

2.解压gc。编译器arm-linux-gcc-3 .3.tar.bz2,放在/usr/local/arm中

3.安装arm-elf-binutils-2.11-S.i386.rmp, arm-elf-gcc-3.3-2.i386.rpm

4.设置环境变量,存在//etc/profile文件中,以保证每次进入模拟Linux环境时,这些变量都生效。

三、μC/OS-II 在ARM-S3C44B0X 上的移植

(一)什么是移植

所谓移植,指的是一个操作系统可以在某个微处理器或者微控制器上运行。虽然μC/OS-II的大部分源代码是用C语言写成的,仍需要用C语言和汇编语言完成一些与处理器相关的代码。比如:μC/OS-II在读写处理器、寄存器时只能通过汇编语言来实现。μC/OS-II在设计的时候就已经充分考虑了可移植性,因此移植还是比较容易的。

μC/OS-II进行任务调度的时候,会把当前任务的CPU寄存器存放到此任务的堆栈中,再从另一个任务的堆栈中恢复原来的工作寄存器,运行另一个任务。所以,寄存器的入栈和出栈是μC/OS-II多任务调度的基础。下面介绍如何把μC/OS-II移植到S3C44B0X芯片上。

(二)μC/OS-II在ARM上的移植实现

实际上,μC/OS-II可以简单地看作是一个多任务调度器,在这个任务调度器上添加了与多任务操作系统相关的一些系统服务,如信号量、邮箱等。其90%的代码是用C语言写的,可以直接移植到有C语言编译器的处理器上。移植工作主要都集中在多任务切换的实现上,因为这部分代码用来保存和恢复CPU现场,部分不能用C语言写的代码就用汇编语言完成。

μC/OS-II的全部源代码量大约是6000-7000行,共15个文件。将μC/OS-II移植到ARM处理器上,需要修改三个与ARM体系结构相关的文件,代码量大约是500 行。我们使用ARMSDT作为编译器,移植μC/OS-II主要包括以下几项内容:

(三)设置 OS_CPU.H中与处理器和编译器相关的代码

1.与编译器相关的数据类型

我们的处理器上的堆栈成员是16位的,所以将OS_TSK 声明为无符号整形数据类型。所有的任务堆栈都必须用 OS_TSK 声明数据类型。

2.OS_ENTER_CRITICAL()和 OS_EXIT_CRITICAL()

μC/OS-II定义了两个宏:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()来禁止和允许中断,需要先禁止中断访问代码的临界区,访问完毕后重新允许中断。

3.OS_STK_GROWTH

绝大多数的微处理器和微控制器的堆栈是从上往下长的。但是某些处理器是用另外一种方式工作的。μC/OS-II被设计成两种情况都可以处理,在结构常量OS_STK_GROW中指定堆栈的生长方式就可以了,OS_STK_GROWTH为0表示堆栈从下往上长,为1表示堆栈从上往下长。

4.编写 10 个操作系统相关的函数(OS_CPU_C.C)

(1)OSTaskStkInit( )

(2)OSTaskCreateHook( )

(3)OSTaskDelHook( )

(4)OSTaskSwHook( )

(5)OSTaskStatHook( )

(6)OSTimeTickHook( )

(7)OSTaskIdleHook( )

(8)OSTCBInitHook( )

(9)OSInitHookBegin( )

5.用汇编语言编写 4 个与处理器相关的函数(OS_CPU_A.S)

μC/OS-II的移植还要求编写4个简单的汇编语言函数:

(1)OSStartHighRdy( ):运行优先级最高的就绪任务,函数首先必须调用OSTaskSwHook( ),并且设置 OSRunning为TRUE,然后切换到优先最高的任务。

(2)OSCtxSw( ):任务级的任务切换函数,任务级的切换是通过发软中断命令或依靠处理器执行陷阱指令来完成的,中断服务程序,或异常处理例程的向量地址必须指向OSCtxSw( )。 (3) OSIntCtxSw( ):中断级的任务切换函数,这个函数在 ISR 中用来执行任务切换功能的。

(4)UCOS_IRQHandler( ):中断服务程序,这个函数主要处理 IRQ 中断。

完成了上述工作以后,μC/OS-II就可以正常运行在ARM处理器上了。

四、结论

嵌入式实验/开发系统使用的硬件平台,包括处理器、存储器、串行通信接口、以太网接口,平台的硬件核心为SAMSUNG公司的S3C44B0X芯片,平台的软件核心为μC/OS-II,μC/OS-II是一个实时操作系统内核,它包含了任务调度、任务管理、事件管理、内存管理和任务间的通信和同步等基本功能,是一个基于优先级调度的抢占式实时内核,并在这个内核上提供最基本的系统服务,例如信号量、邮箱、消息队列、内存管理、中断管理等。虽然μC/OS-II并不是一个商业的实时操作系统,但μC/OS-II的稳定性和实用性却被数百个商业级的应用所验证,其应用领域包括便携式电话、运动控制卡、自动支付终端、交换机等。

ARM平台是目前使用广泛的主流的嵌入式处理器体系结构。本论文主要是针对高等职业技术学院的嵌入式系统实验和专业建设的需要进行的。通过努力,现在实验系统的嵌入式系统实验已经展开,系统可以稳定的工作。

参考文献

[1]周立功.ARM嵌入式系统基础教程[M] .北京:北京航空航天大学出版社,2005,1

[2] 田泽.ARM嵌入式系统基础教程[M]. 北京:北京航空航天大学出版社,2005

[3]Steve Furber. ARM SoC体系结构[M]. 北京:北京航空航天大学出版社,2002

[4]Jean J.Labrosse著.邵贝贝等译.μC/OS-II-源码公开的实时嵌入式操作系统 [M].北京:北京航空航天大学出版社,2003.3

[5]周立功.ARM微控制器基础与实践[M].北京:北京航空航天大学出版社,2003.11

[6]Suwartadi,Eka;Gunawan,Candra;Setijadi P,Ary;Machbub,Carmadi. First step toward internetbased embedded control system. 2004 5th Asian Control Conference

[7]Correa,C.R.Awad, S.Embedded controller software and algorithm development tool. 18thIEEE Instrumentation and Measurement Technology Conference. May 21-23 2001

[8]ARM Limited. ARM 7TDMI Technical Reference Manual(Rev4). 2001,ARM 公司

[9]罗致,王仲东.ARM Linux在AT91 RM9200平台上的移植[J].兵工自动化.2006

猜你喜欢

嵌入式系统
办公自动化系统的设计
基于物联网项目驱动的嵌入式系统教学改革的研究与实践
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究