基于eCos的FLASH驱动的分析与移植
3 基于方舟开发板的Inter FLASH驱动程序分析与移植
3.1 Inter公司的TE28F320的FLASH芯片驱动程序分柢
Inter FLASH驱动程序FLASH_28fxxx.inl文件定义了FLASH设备低层的管理设备I/O函数,FLASH_28fxxx_parts.inl文件定义了FLASH设备逻辑信息。eCos系统I/O包使用DEVTAB_ENTRY()和DEVIO_TABLE()定义的_priv指针对FLASH设备低层I/O函数进行调用。具体定义如下:
3.2 系统地址空间的分配方案。
当MMU内存管理单元的控制寄存器MCR.ATE为0时,地址映射方式变为直接映射物理方式,如图4所示。
直接映射方式的映射关系是:在使用高速缓存方式时将虚拟地址A1区域(0x80000000~0xA0000000)映射到实际物理地址0x00000000~0x20000000的区域;根据目标开发板的设计规范,系统的FLASH的物理地址从0x00000000开始,系统设计编写程序时使用相应的虚拟地址空间为0x80000000~0x80FFFFFF。SRAM的物理地址从0x04000000开始,使用相应的虚拟地址空间为0x84000000~0x84200000。
3.3 修改eCos硬件抽象层中FLASH和SRAM的配置信息以及FLASH设备驱动程序
不同的两块开发板所采用的芯片,特别是FLASH芯片有可能是不一样的。由于为无人机专门设计开发的目标板使用的是Inter公司的TE28F320的FLASH芯片,与Arca公司使用的FLASH驱动程序不一样,必须修改FLASH驱动及FLASH和SRAM的配置信息。
(1)SRAM布局文件修改如下:
(3)FLASH驱动程序FLASH_28fxxx.inl文件中的数据定义修改如下:

(4)修改平台抽象层文件plf_hci.h文件
由于目标开发板上没有采用EEPROM和HCI(硬件配置接口)的方式存储系统硬件信息,而是采用在eCos平台抽象层中把开发板上的硬件信息静态存储在文件中。在平台抽象层文件plf_hci.h中修改如下:
4 驱动测试
4.1 Redboot简介
Redboot是一个标准的嵌入式系统引导和Debug环境,是基于eCos的一个应用程序,使用eCos的硬件抽象层作为它的基础。内含GDBstub,允许从应用程序调试的GDB宿主机链接目标平台,通过串口或网口进行调试。既可以用在产品的开发阶段(调试功能),也可以用在最终的产品上。
4.2 系统测试结果
使用eCos图形配置工具对修改好的eCos硬件抽象象层和FLASH设备驱动程序进行裁剪,并用串口进行系统测试,通过minicom显示Redboot运行的FLASH和SRAM地址结果如图5所示。
5 结语
本文通过裁剪和移植FLASH驱动程序到目标开发板上,展示上具体的修改硬件抽象层和设备驱动程序代码方法。通过实际裁剪,配置一个具有实际应用价值的Redboot,对于嵌入式技术的学习和应用具有现实的意义。本文的难点在于eCos硬件抽象层和设备驱动程序源代码的理解和修改。
- SST25VF016B串行flash驱动程序基于STM32F10x(11-26)
- Redboot修改实例(07-25)
- 嵌入式操作系统uClinux和eCos的比较(03-01)
- eCos嵌入式操作系统构建(05-10)
