1 引言
固件是系统最底层的工作软件。便携式设备功能与固件密切相关。固件能够充分发挥硬件资源,弥补硬件缺陷与不足。因此。固件在便携式设备中具有极大重要性。固件升级能够进一步完善固件程序,增强便携式设备功能。
在系统开发和用户使用时.一旦系统提供设备固件更高版本。就要求设备通过固件升级程序对原有固件进行升级。因此,基于USB的即插即用、传输速率高的特点,设计一种通过USB接口升级设备固件的应用程序。该设计应用程序是基于便携式设备的USB驱动程序.包括固件文件结构定义、USB设备驱动程序与上层应用软件的I,0操作、USB Bulk0nly传输模式、USB通信命令规范、NAND Flash坏块信息表构建等问题。
2 系统结构
该系统利用PC机通过USB总线与便携式设备进行通信,并在此通信基础上完成固件升级的各种操作,其基本结构如图l所示。系统开发人员或终端用户在获取最新版本固件后,利用固件升级程序实现PC机与便携式设备的通信,并实现固件生成、读取设备信息、USB-Boot二级代码下载、固件升级等功能。
3 固件升级程序的设计
固件升级程序面向系统开发人员或终端用户。由于用户知识体系架构的差异,程序界面力求友好、简洁。功能要求:按预先定义的固件结构生成固件文件:自动检测设备是否连接,一旦设备连接,自动下载二级Boot loader并读取设备Flash信息、固件版本信息;将固件文件下载至NAND Flash,从而完成固件升级操作。
3.1 固件头的填充
固件文件的固件头具有标识,索引功能。固件头结构决定后续固件升级工具扩展的难易。该设计的固件头主要包括固件的版本、生成日期、厂商信息、模块信息和资源文件在固件中的偏移、长度等信息。这些信息采用结构体将其组织,以便读取固件文件。同时在头尾部预留若干字节的保留区,以备后续升级扩展。
固件头的填充需要严格按照结构体所定义的成员进行。函数GenerateHeader完成固件头的生成,其函数原型为:
3.2 生成固件文件
固件文件主要由固件头,启动代码,系统代码,FONTl2,FONTl6,GBK字体和字库资源文件,菜单资源文件,图片资源文件等8个模块组成。其中系统代码、菜单资源文件、图片资源文件的路径由用户指定,其余文件存储于工程目录下。图2为固件生成流程。