SmartARM2200开发板的RedBoot的移植
引 言
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所列。
移植工作的重点也就放在表中所列的这几部分。
eCos本身有一个完整的文件目录,只有把新建的底层文件放在适当的文件目录下面,才能确保配置和编译工作的成功,也有助于利用eCos本身已有的源代码,如结构体系层和变体层中的许多成熟可用的代码。由于本系统中SmartARM2200处理器的内核是ARM7,因而可以把SmartARM2200的目录建立在eCos库路径paekages/hal/arm/lpc2 XXX/下。
(1)修改SmartARM2200的cdl文件
根据SmartARM2200开发板的硬件特征对复制的HAL实现文件作相应修改,涉及的修改主要是对各配置包内文件名的修改和对配置包内.cdl文件修改。cdl文件是用组件描述语言(Component Description Language,CDL)编写的脚本文件,eCos的每一个配置包中,都至少存在一个CDL脚本文件来对该配置包进行描述,配置工具也是通过该文件与配置包联系起来。因此,对cdl文件的修改也主要是对配置包的名称和文件名进行修改,使之与目标系统硬件相联系。
以下是SmartARM2200的cdl文件中关键的修改:
(2)在eCos数据库中添加SmartARM2200目标平台
需要在/opt/ecos/ecos_2.0/packages目录的数据库文件ecos.db中添加SmartARM2200目标平台,Smart- ARM2200平台才能被添加到配置工具中,并进行配置和编译处理。数据库文件ecos.db也是使用CDL语言编写的,在ecos.db中需要添加两部分内容,可以根据相似硬件平台在ecos.db的内容进行修改。
在ecos.db添加基于SmartARM2200硬件平台的示例代码见本刊网站。
(3)修改平台抽象层的有关代码
硬件平台层所需编写的代码文件的一般功能如下:include/plf_io.h,I/O定义和系统寄存器的宏定义。include/hal_platform_setup.h,平台启动代码。本文件主要用ARM汇编指令编写,实现平台上电后程序的启动和执行。
src/smartarm2200_misc.C,HAL的底层扩展函数,包括LCD的相关函数及控制台初始化函数。
var/v2_0/include/包括hal_cache.h、hal_diag.h、hal_var_ints.h、lpc2xxx_misc.h、 plf_stub.h、var_arch.h、var_io.h等头文件,定义了标准函数接口及通用I/O和寄存器。
var/v2_0/src/lpc2xxx_misc.C,HAL的底层标准函数,包括时钟平台初始化、时钟延时函数、中断使能、中断屏蔽、中断响应等。
var/v2_O/src/hal_diag.c,硬件抽象层诊断输出函数,包含eCos系统中printf打印的硬件设备驱动程序。
misc/redboot_RAM.ecru,基于RAM启动方式的RedBoot最小配置文件。
misc/redboot_ROM.ecm,基于ROM启动方式的RedBoot最小配置文件。
移植 RedBoot 开发 SmartARM2200 相关文章:
- 多模手机最恰当的发射架构(03-11)
- 揭秘华为的硬件开发:不以规矩不成方圆(01-19)
- 测量中的共地干扰问题(06-01)
- 一位老工程师总结:多简单的事情都要一一测试!(09-21)
- 使用NI PXI的高速记录功能 开发以软件为架构的GNSS接收器(02-18)
- CAN总线接口扩展设计与驱动开发(10-23)