μCOS移植技术探究

2011-03-18 19:33于江涛吴兆芝通化师范学院计算机科学系吉林通化3400南京晓庄学院数学与信息技术学院江苏南京7
通化师范学院学报 2011年4期
关键词:保护模式内核中断

于江涛,吴兆芝(.通化师范学院计算机科学系,吉林通化3400;.南京晓庄学院数学与信息技术学院,江苏南京7)

μCOS移植技术探究

于江涛1,吴兆芝2
(1.通化师范学院计算机科学系,吉林通化134002;2.南京晓庄学院数学与信息技术学院,江苏南京211171)

文中以X86平台及ARM平台为例,分析了μCOS嵌入式内核移植的技术要点.内容包括X86平台及ARM平台硬件环境的简述、操作系统引导及装载程序的设计、μCOS运行之前硬件环境的建立、μCOS与平台相关接口程序、设备驱动程序、实用库函数的设计等.

μCOS;嵌入式内核移植;X86平台;ARM平台;GNU工具链

μCOS是一个可以基于ROM运行的、可裁减的、抢占式实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是与很多商业操作系统性能相当的实时操作系统(RTOS).为了提供最好的移植性能,μCOS最大程度上使用ANSIC语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP).

由于μCOS结构清晰、代码简洁,便于学习、研究与开发,被众多高校作为实时操作系统平台用于嵌入式系统教学、实验与科研.μCOS被广泛移植到各种硬件平台上,如目前最为流行的X86平台及ARM平台等.本文以这两种常用移植平台为例,对μCOS的移植技术进行分析.

1 μCOS移植要点

μCOS移植的基本思想在文献[1]中有详细论述,本文以X86平台和ARM平台为例,对μCOS移植技术加以阐述.

第一步,建立运行μCOS所需的系统环境,如主机引导启动、设置中断/异常处理等,这部分内容是移植过程所需的重点工作之一.对于各种不同硬件平台,这部分的差别很大,但道理都是类似的.

第二步,设计μCOS与硬件平台相关的接口程序,主要有os_cpu.h()、os_cpu_c.c()、os_cpu_a.s ()及os_cfg.h()等.这部分内容尽管与硬件平台相关,但由于μCOS已考虑到系统的移植问题,采用中断方式切换进程,所以其C语言程序区别不大,而汇编程序则区别较大.

第三步,设计相应的设备驱动程序.μCOS内核没有自己的输入输出设备,因此需要根据不同的平台设计相应的设备驱动程序.对于X86平台而言,主要是显示器和键盘;对于ARM平台而言,可以使用串口作为主控机与运行中的ARMμCOS进行交互的渠道,μCOS运行过程中通过串口与主控机的超级终端交换信息.

第四步,设计相关的实用库函数,如memcpy()、vsprintf()、sprintf()等.作为独立的操作系统,μCOS不能直接使用开发环境的C程序库,而必须设计自己专用的必要的库函数.

此外,还要选择适当的移植工具,如开发平台、C编译器、汇编语言等.对于高校的嵌入式系统教学、实验及科研而言,笔者赞成文献[2]中的观点,认为应选用GNU工具链作为开发工具.尽管GNU工具链中汇编语言使用的AT&T语法与Windows操作系统常用的Intel语法区别较大,然而Linux操作系统从一开始就使用AT&T语法,这是高校计算机专业教学必须面对的现实.引导高校学生掌握乃至精通开源工具的使用,对于培养IT人才、增强学生的可持续发展潜力,都具有重要意义.

2 μCOS移植技术分析

2.1 X86平台及ARM平台简述

由于X86平台具有丰富的硬件资源、功能较强的输入输出设备(如键盘、显示器等),在X86平台上移植μCOS将更便于对其进行研究与实验.μCOS的设计者在文献[1]中给出了将μCOS移植到X86平台的方法.但该方法使用的是现已少见的Borland C编译环境,而且只实现μCOS在X86实模式下的移植,并没有体现X86保护模式的功能与特点.

保护模式是一种80286系列及后继X86兼容CPU的操作模式.保护模式有一些新的特色,设计用来实现多任务并增强系统稳定性,支持内存保护、分页系统以及虚拟内存.目前大部分X86操作系统都在保护模式下运行,包含Linux、FreeBSD、以及微软Windows 2.0及之后版本.因此,无论从实际应用还是从专业教学的角度,都应该研究μCOS在X86保护方式下的移植技术.

ARM(Advanced RISCMachines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字.目前,采用ARM技术知识产权(IP)核的微处理器,即通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到各个方面.目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此使ARM技术获得更多的第三方工具、制造、软件的支持,整个系统成本降低,使产品更容易进入市场被消费者所接受,具有更强竞争力.

鉴于上述原因,国内各高校都把ARM平台作为嵌入式教学与实验的首选平台.研究μCOS在ARM平台的移植技术,无疑具有重要的实用价值.

2.2 μCOS内核的引导与装载

操作系统内核的引导与装载是移植工作的第一步,是运行操作系统内核的基础.

(1)基于X86保护模式的引导与装载.在X86平台保护模式下操作系统的引导过程如下:

①BIOS加载并启动保存在硬盘MBR中的引导程序,该引导程序一般在操作系统安装时写入.②MBR引导程序扫描所有分区表,找出活动分区.③MBR引导程序加载并启动保存在活动分区PBR中的引导程序.④活动分区PBR中的引导程序加载并启动安装在其上的操作系统.显然PBR引导程序与操作系统密切相关,一般在操作系统安装时写入.

一般来说,由软盘引导操作系统主要有三种方式:

①按软盘逻辑扇网顺序存放启动模块、装载模块和内核模块,其中内核模块为无格式二进制文件.②按软盘逻辑扇网顺序存放启动模块、装载模块和内核模块,其中内核模块为ELF可执行文件格式.③用Fat文件系统软盘启动.将启动模块存放在主引导扇区,装载模块及内核模块链成一个Fat文件,拷贝到软盘上.其中内核模块为ELF文件格式.

第二种及第三种方式的内核模块由于是ELF格式,需要在引导过程中动态安装.但可以根据需要,设计不同的内核基址,使操作系统内核对内存的使用与配置更为灵活.

在X86平台引导启动后,要从实模式进入保护模式.保护模式的一项重要内容是全局描述符及局部描述符.由于μCOS在运行过程中不涉及X86的任务切换,所以只需为μCOS准备一套局部描述符即可.接下来的工作是开启A20总线、加载全局描述符及中断描述符、切换到保护模式,跳转到保护模式.

(2)基于ARM平台的引导与装载.在ARM裸机环境下,操作系统的引导与安装涉及到硬件初始化、中断初始化、MMU初始化等工作.目前国内高校采用的嵌入式ARM教学实验系统多为ARM实验箱,一般都配备了vivi作为bootloader.由于vivi程序实现了操作系统引导安装的绝大多数工作,所以在这种环境下的移植操作系统可使引导过程极大简化.然而,移植之后的系统也只能通过vivi引导,而不能在ARM裸机上脱离vivi而直接启动.文献[2]提出一种ARM主机自适应启动程序,较好地解决了这个问题.它不仅适用于μCOS的移植,同样也可作为其它ARM应用系统的启动程序,尤其适用于ARM平台的各种基础实验.

2.3 μCOS运行环境初始化

一般来说,μCOS的初始化工作要由汇编程序及C程序共同完成.

对于X86平台,主要涉及到8259A中断控制器初始化、中断向量的初始化、时钟中断初始化、键盘中断初始化等.还要设计一个中断向量设置函数os_ setvect(),供μCOS运行时调用.

对于ARM平台,主要涉及ARM硬件初始化、中断向量初始化、串口初始化、时钟初始化及LED初始化等.

ARM硬件初始化主要是SDRAM相关的寄存器设置.中断向量初始化部分,为简单起见,除复位中断(Reset)和外部请求中断(IRQ)之外,其余中断处理可简单地设置为显示中断信息后进入无限循环的方式.串口初始化是对S3C2410串口寄存器的初始化工作.时钟初始化是对时钟寄存器的初始设置.

2.4 μCOS平台相关程序

μCOS移植的另一个重点是μCOS平台相关程序的设计.

对于X86平台,文献[1]给出了在X86实模式下的设计方法.在X86保护模式下,其设计思想类似,对照文献[1]中给出的X86实模式程序,加以适当改动,不难实现X86保护模式下相应程序.

对于ARM平台,文献[3]给出了在ARM平台上移植μCOS的实现技术与设计方法.参照文献[3],加以适当改动,不难实现相应程序.

值得注意的是,文献[1]和[3]中给出的程序都不是使用GNU工具链开发的.因此,如果使用GNU工具链移植μCOS,则其汇编语言程序不仅要适应相应的硬件环境,同时还需要用AT&T汇编语法来编写.

2.5 设备驱动程序

对于X86平台,主要包括屏幕显示及键盘中断.

屏幕显示一般主要有以下功能:清屏、设置光标位置、读取光标位置、设置字符颜色、屏幕滚动、屏幕定位、显示字符及字符串等.此外,还应该有TTY方式的屏幕输出函数,负责处理常用控制字符,如:回车符' '、制表符' '、退格符''等.

由于μCOS内核本身不需键盘支持,所以键盘中断一般无需设计得过于复杂,只要能实现一些简单功能即可,如可显示字符、退格键、回车键、大小写转换等.

对于ARM平台,为简单起见,可使用串口通信程序使μCOS与主控机进行交互.

串口通信程序主要包括对串口的读写操作,主要有字符及字符串输入程序、字符及字符串输出程序和字符串格式化输出程序等.串口采用的通信方式会影响到通信效率,为此可采用FIFO方式实现串口通信.

2.6 库函数

μCOS作为一个独立的操作系统,必须有自己专用的库函数,如内存操作(memcpy()、memset()等)、字符串操作(strcmp()、strcpy()、strlen()等)、格式化输出函数(vsprintf())等.这些函数都可以用C语言实现.如考虑运行速度,也可以将内存操作函数用汇编语言实现.格式化输出函数至少要包含整数(%d)、16进制数(%x)、字符(%c)及字符串(% s)格式.

3 结束语

μCOS为教学研究提供免费版本,受到嵌入式研究领域的广泛关注.国内很多高校及嵌入式系统培训机构都用μCOS作为嵌入式系统教学及实验平台,众多实验设备厂商也推出了各种支持μCOS移植的嵌入式实验设备.用GNU工具链从事μCOS的移植与应用研究,对于高校的嵌入式系统教学与科研无疑具有重要的实用价值.

X86平台及ARM平台是最有代表性的嵌入式系统平台.在高校嵌入式系统教学及研究方面,一方面可使用X86平台,充分利用其丰富的输入输出功能以方便对嵌入式操作系统的研究;另一方面可使用ARM平台,在教学及实验过程中为学生提供真实的嵌入式系统环境.因此,在X86及ARM这两种平台上加强对μCOS移植技术的研究很有必要,也很有实际意义.

[1][美]Jean J.Labrosse嵌入式实时操作系统μC/OS-II[M].北京:北京航空航天大学出版社,2003.

[2]曲波.ARMμCOS自适应启动程序的设计与实现[J].南京晓庄学院学报,2010,3(5).

[3]Micriμm Co.,Ltd.μC/OS-IIand ARM Processors[EB/OL].http://www.Micriμm.com,2007.

(责任编辑:王前)

Abstract:Based on X86 and ARM platforms,the paper analyzes themain issues of porting embedded kernelμCOS.It consists of a brief description of the hardware environmentof X86 and ARM platforms,design of the OS booting and loading program,establishing of hardware environment before runningμCOS,the design of the platform-dependent interface ofμCOS,device drivers and utility library functions,etc.

Key words:μCOS;embedded kernel porting;X86 platform;ARM platform;GNU tool chain

Brief Analysis onμCOS Porting Technique

YU Jiang-tao1,WU Zhao-zhi2
(1.Department of Computer Science,Tonghua Normal University,Tonghua,Jilin 134002,China;
2.School of Mathematicsand Information Technology,Nanjing Xiaozhuang College,Nanjing,Jiangsu 211171,China)

TP316

A

1008-7974(2011)04-0017-03

2011-03-02

于江涛(1969-),男,吉林通化人,通化师范学院计算机科学系教授.

猜你喜欢
保护模式内核中断
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
猫科动物的保护色
Linux内核mmap保护机制研究
基于FPGA的中断控制器设计*
Linux中断线程化分析及中断延时测试
论网络游戏著作权的保护模式及其侵权判定标准
跟踪导练(二)(5)
千里移防,卫勤保障不中断