|
|

图 1 ECOS操作系统结构图
硬件抽象层HAL对处理器结构和系统硬件平台进行抽象,当要在一个新的目标平台上运行ECOS时,只需要对底层的硬件抽象层进行修改,便可迅速地将整个ECOS系统移植到新的平台上。硬件抽象层主要包括三大模块——体系结构抽象层(Architecture HAL)、变体抽象层(Variant HAL)和平台抽象层(Platform HAL)。体系结构抽象层主要是指ECOS所支持的具有不同体系结构的处理器系列,如ARM系列、PowerPC系列、MIPS系列等等。变体抽象层指的是处理器系列中某款处理器在Cache、MMU和FPU等方面所具有的特殊性。如S3C2510属于ARM系列中的ARM940T,在变体抽象层中就会具体地针对ARM940T的Cache等方面作出定义。平台抽象层则是对当前系统硬件平台的抽象,包括了平台的启动、芯片选择与配置、定时设备、I/O寄存器访问以及中断寄存器等等。平台抽象层代码的编写是ECOS移植工作的重点。
HAL移植的主要步骤
建立适当的文件目录
ECOS本身有一个完整的文件目录,只有把新建的底层文件放在适当的文件目录下面,才能确保配置和编译工作的成功,也有助于利用ECOS本身已有的源代码,如结构体系层和变体层中的许多成熟可用的代码。由于本系统中S3C2510处理器的内核是ARM940T,因而可以把S3C2510的目录建立在ECOS库路径packages/hal/arm/arm9/下。 建立S3C2510的cdl
文件cdl文件使用cdl脚本语言描述该硬件设备(包或平台)的特性和常用指标。cdl文件实现系统在源码级的功能和指标配置,犹如一个项目管理高层对其仓库中组件特性的登记,只有登记后的包、组件和选项才能被操作系统配置工具识别和配置。以下是S3C2510的cdl文件中的几段重要描述。
* cdl_package CYGPKG_ HAL_ARM_ ARM9_S3C2510 这是S3C2510在ECOSdb中所登记的包的名字,它下面包含了该板的一些基本设置和组件,如母体体系结构(parent)、包含的头文件、编译的C文件等。
&n
|
|
bsp; * cdl_component CYG_HAL _STARTUP 系统启动方式,有3种选择:ram启动、rom启动、romram启动。
* cdl_component CYGNUM_ HAL_CPUCLOCK平台的系统时钟设置,以便于ECOS其他组件以此时钟为标准。该平台系统时钟的默认值设为133MHz。
* cdl_option CYGNUM_HAL_ RTC_PERIODECOS内核的运行时钟单位。ECOS内核以一个tick为时钟单位,而一个tick的长度就等于该选项的设定值。
ecos.db中登记S3C2510硬件包
ecos.db是关于ECOS系统的一个数据库文件(在packages目录下),它包含了硬件包管理工具和一些在组件配置库中的包。与cdl文件相比,ecos.db登记了仓库中的物品,而cdl文件则登记每种物品的特性。只有在ecos.db中登记了的包,才能被ECOS的库编译工具(configtool)选中和使用。如果要在配置工具的模板选项中(template)增加可供选择的硬件目标板,那么,需要先在ecos.db中登记其包描述,再增加其目标板描述。一般的辅助硬件(如网卡、串口等)只需要步的登记。因此,在ecos.db中登记S3C2510平台硬件包的基本步骤就是登记硬件平台的包描述(package CYGPKG_HAL_ARM_ ARM9_ S3C2510)和目标描述(target S3C2510)。需要注意的是,target S3C2510中所包含的3个硬件描述包CYGPKG_HAL_ARM、CYGPKG_HAL_ARM_ARM9和CYGPKG_HAL_ARM_ARM9_ S3C2510是不能缺少的,因为它们是标板的——主体系结构包、子体系结构包和主芯片包。另外,还可以可选地添加其他辅助硬件包(如网卡、串口等)。
编写平台抽象层的有关代码
硬件平台层所需编写的代码文件的一般功能如下所示。
* include /plf_cache.h —— 平台专用cache处理 (可选)。在本系统中不需要编写,可直接调用ARM9变体层的hal_cache.h。
* include / hal_platform_ints.h —— 平台专用中断处理,定义平台中断向量号。
* include / plf_io.h —— I/O 定义和系统寄存器的宏定义。
* include ¬/ hal_platform_setup.h —— 平台启动代码。本文件主要用ARM汇编指令编写,实现平台上电后程序的启动和执行。* src/s3c2510_misc.c —— HAL的底层标准函数,包括时钟平台初始化、时钟延时函数、中断使能、中断屏蔽、中断响应等。
* src/ hal_diag.c —— 硬件抽象层诊断输出函数,包含ECOS系统中printf打印的硬件设备驱动程序。
* misc/ redboot_primary_ ram.ecm —— 基于RAM启动方式的redboot配置文件。
* misc/redboot_primary_ rom.ecm —— 基于ROM启动方式的redboot配置文件。
硬件启动过程
编写硬件启动的初始化过程是HAL移植的一个难点。当硬件重新上电后,系统的程序指针会自动指向地址0(通常地址0存放着bootloade
|
|
|
|
[1]. S3C2510 datasheet https://www.dzsc.com/datasheet/S3C2510_1097662.html.
[2]. ARM940T datasheet https://www.dzsc.com/datasheet/ARM940T_1336037.html.
[3]. rom datasheet https://www.dzsc.com/datasheet/rom_1188413.html.
[4]. MEMORY datasheet https://www.dzsc.com/datasheet/MEMORY_1082507.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。