黄 鑫, 吴跃前, 王德明
(1. 华南师范大学物理与电信工程学院, 广州 510006; 2. 广东省工业和信息化厅, 广州 510030)
嵌入式系统具有功耗低、集成度高的特点,随着工业4.0、物联网和智能制造等快速的发展和推进,其结构越来越复杂、功能越来越强大,在生产和生活中具有广阔的应用前景[1]. 预计到2025年,投入使用的嵌入式设备将会有1~3万亿台[2].
固件(包括操作系统、应用程序、驱动程序、中间件、用户接口资源文件和配置文件等)是嵌入式系统中基础、底层的工作软件. 嵌入式系统在开发过程中需要频繁更新固件来进行调试,在使用过程中也需要偶尔更新固件来进行功能升级[3]. 根据运算和内存资源的大小,将嵌入式系统分为资源丰富型嵌入式系统(Resource-rich Embedded System,RRES)[4-5]和资源紧缺型嵌入式系统(Resource-scarce Embedded System,RSES)[6]. 其中,RRES的内存在MB级以上,其操作系统已集成了调试子系统,可以采用高效的基于GDBServer的固件局部更新方法(GDBServer-based Local Firmware Update,GDBL-FU)[7];RSES的内存在MB级以下,不足以支撑GDB调试机制,一般采用低效、耗时的固件整体更新方法. 然而,RSES因为其成本低的优势,在消费类电子产品中广泛应用.
在使用过程中,嵌入式系统普遍采用在线升级的固件整体更新方法[8]:在不断电或保持系统正常运行的情况下,通过JTAG(Joint Test Action Group)接口[9-10]、串口[11]、无线网络[12]或有线网络[13]实现对固件的整体更新. 目前,这方面的研究比较成熟,如:李苑等[11]提出了一种兼容串口纠错协议和远程文件传输协议的固件升级方法;许金宇等[14]提出了一种基于S3C2440A芯片的嵌入式设备在线系统升级的方法;……