引 言
eCos(embedded Configurable operating system)最初是由Cygnus Solutions公司为面向嵌入式领域而开发的实时操作系统,源码公开,具有很强的可移植性和可配置性,适合于嵌入式开发。现在eCos主要由 eCosCentric公司和eCos开源社区共同开发维护。eCos的特性,特别是它的可配置性,能有效缩短嵌入式产品的开发周期并降低成本。
RedBoot(Red Hat Embedded Debug and Bootstrap)是一个由Red Hat公司开发的可以在嵌入式系统上独立运行的引导程序。它是目前嵌入式领域功能最强大、可移植性最好的BootLoader之一,采用eCos环境开发,并以eCos的硬件抽象层作为基础,但完全可以脱离eCos环境运行,可以用来引导任何嵌入式操作系统,如Linux、WinCE等。
SmartARM2200开发板使用NXP公司的LPC2210微处理器。LPC2210基于ARM7TDMI-S内核,系统时钟频率达60 MHz,总线对外开放,宽度可配置为8/16/32位。同时开发板还扩展了RTL8019AS(10 Mb/s)以太网控制器。本文将介绍SmartARM2200的移植方法,给其他以ARM为内核的eCos底层移植开发提供参考。
1 硬件抽象层HAL介绍
硬件抽象层HAL对处理器结构和系统硬件平台进行抽象,当要在一个新的目标平台上运行RedBoot或eCos时,只需对硬件抽象层进行相应修改,便可迅速地将RedBoot及整个eCos系统移植到新的平台上。硬件抽象层主要包括三大模块——体系结构抽象层(Architecture HAL)、变体抽象层(VarJant HAL)和平台抽象层(Plat-form HAL)。体系结构抽象层主要是指eCos所支持的具有不同体系结构的处理器系列,如ARM系列、PowerPC系列、MIPS系列等等。变体抽象层指的是处理器系列中某款处理器在Cache、MMU和FPU等方面具有的特殊性。平台抽象层则是对当前系统硬件平台的抽象,包括了平台的启动、芯片选择与配置、定时设备、I/O寄存器访问以及中断寄存器等等。平台抽象层代码的编写是Red-Boot及eCos移植工作的重点。
2 HAL移植的主要步骤
建立适当的文件目录或从eCos的硬件配置包中选择1个与准备移植的目标平台(本文中即SmartARM2200)类似的硬件平台的HAL实现,然后根据自己目标系统的硬件特征,进行相应的修改。选择的硬件平台与目标系统硬件的相似程度决定了移植工作量的大小,相似程度越高,所需的修改也就越小。
本例拷贝了olpce2294的模板(可以在NXP网站获得相关的补丁,是eCos-1.0下的),以此为基础修改,主要区别如表1所列。
移植工作的重点也就放在表中所列的这几部分。