1 硬件平台
本次改进测试的硬件平台是由英蓓特公司开发的基于LPC2294 ARM控制器的LPC22EB06一I实验平台。其上的主要功能模块有:
①2 MB的Flash、1 MB的SRAM(可扩展到4 MB)、256B具有I2C接口的E2PROM等存储器;
②2个RS232(其中一路可接Modem)、RS485、CAN等通信总线接口;
③2个调试接口:LPT和JTAG调试接口;
④支持CF卡、SD/MMC等移动存储介质;
⑤支持128×128真彩显示。
图1是其硬件功能框图。
2 BOOtLoader的改进设计
2.1 原有BootLoader功能
原来的:BootLoader具有如下功能:
①串口下载功能,通过串口下载内核到指定RAM区;
②Flash烧写功能,从RAM区烧写数据到Flash中;
③数据区内块搬移功能;
④其他功能。其指令封装结构如下:
2.2 BootLoader改进实验
此次改进就是在原有BootLoader的基础上,增加对移动存储介质SD卡以FAT格式进行读取数据的指令来实现的。命令封装如下:
其功能是,在SD卡中把指定目录下的内核文件提取到SDRAM区域中,从而完成内核的加载。
另增加3条辅助指令,一条完成SD卡的格式化,另一条完成对系统内核的保存,最后一条完成对系统内核的启动加载。命令封装如下:
其中,CMD_TBL_SD_FORMAT的功能是完成对SD卡的格式化,CMD_TBL_SD_STORE的功能是把SDRAM区域中的内核代码备份到SD卡的固定存储区,CMD_TBL_SD_LDAD的功能是把SD卡的固定存储区中的内核代码加载到指定的SDRAM区域中。
下面分析一下其基于FAT文件系统的具体读取和备份方法。首先看一下FAT文件系统的基本结构。FAT文件系统的整体结构大体由4大部分组成:MBR区(主引导记录区)、DBR区(DOS引导记录区)、FAT区(文件分配表区,FATl为主文件分配表区,FAT2为备份文件分配表区)和DATA区(数据区,包含FDT区——文件目录表区)。FAT文件系统结构如下:
其各个区域基扇区地址(把MBR区的基扇区地址作为O)计算如下:
DBR区的基扇区地址=MBR基扇区地址+63
FAT表的基扇区地址=DBR的基扇区地址+保留扇区数
FDT区基扇区地址=每FAT表扇区数×FAT表个数+(FDT区的开始簇号一2)×每簇扇区数+FAT表基扇区地址。(簇是系统进行文件管理的单位,FAT表中的每一项对应一个簇,文件的存取按簇进行,一簇包含若干个扇区。)
从FAT文件系统的组织结构可以看出,从SD卡中读取系统内核代码数据到指定的RAM区比较容易,就是根据系统内核文件名在文件系统中进行查找定位,随后完成读取。对于内核代码的备份和加载,需要在深入分析FAT文件系统的组织结构的基础上对SD卡格式化作一些处理。在格式化时,通过设置MBR区和DBR区的数据实现不对SD卡存储区的最末8MB区域(根据实际需要可增减)作格式化处理的目的,即把它置为RAW区。所以系统内核备份的实现,就是把系统内核代码通过SD卡的写入指令填充到RAW区。系统内核的加载是从RAW区直接读取备份的内核代码。
3 总 结
本文所述的内核加载启动引导方式已经过实践验证。它实现了目标板与宿主机间硬件线路连接的完全脱离.为系统调试者提供了便利,有效地提高了系统调试的效率;与此同时,它还能方便地实现系统的在线更新。可以说要进行系统启动引导设计,此方法是一个不错的选择。最后说明一点,本文介绍的BootLoader改进方法是在LCP2294芯片开发的LPC22EB06一I实验平台上完成的。由于BootLoader与处理器的体系结构和具体嵌入式板级设备的配置密切相关,若要在其他的处理器芯片或平台上采用上述方法,还需对BootLoader中与处理器体系结构相关的代码作适当的修改。这部分不是本文探讨的主要内容,所以在此不再详述,若有读者还想详细了解相关内容,请查阅相关论文或书籍。