嵌入式系统固件升级的设计

字符大小: 【】 【(默认)】 【

引言

通常在嵌入式系统中,通过JTAG接口将固件烧写到目标板的FLASH中,若需对固件进行升级,则需重新烧写新的映像文件,直接覆盖原来的映像文件。这种更新固件的方法在产品开发阶段很常见,使用也很方便。但是当厂家生产出产品后,用户购买回去使用,如果设备出现了系统漏洞或者用户不满足现有功能而提出更多需求时,也需要对系统升级或者维护系统功能。 此时如果仍然使用JTAG接口更新固件的话,就需要开发人员到用户现场去完成升级,因为用户一般是不具有JTAG烧写设备的。因此,我们需要设计一种简单易行的方法,可以通过已有的接口让用户自行更新固件,就像Windows操作系统打补丁一样,安装个软件就能实现升级。本文提出了一种嵌入式系统固件升级的设计,不仅可以节省人力物力,而且可以提升系统的可靠性。

FLASH布局

以Winbond公司的W25Q80BV FLASH为例,如图1所示,当状态寄存器第14位CMP为0的情况下,通过设置状态寄存器的第2~6位,可以把FLASH的低64K,低128K,低256K,低512K或者全部1M设置成保护状态。
1310embededtu1.jpg
图1 FLASH存储器保护区域图

系统上电,首先从FLASH地址0x00000000处开始运行,因此这个区域存放的Bootloader程序。我们把Bootloader放在0~64K地址空间,把原始程序放在64~128K地址空间,然后通过设置状态寄存器把0~128K地址空间永久保护起来;把128~192K地址空间作为更新程序存放的地址,把192~256K地址空间作为引导数据存放的地址,128~256K地址空间可以通过设置状态寄存器来选择保护或者不保护,当需要通过上位机软件更新程序的时候,设置成不保护状态,程序更新完了再设置成保护状态。

固件更新流程

产品发布以后,如果发现有缺陷需要通过软件来修正或者需要更新软件以实现新的功能,就需要更新固件。本文设计通过上位机软件与下位机微处理器(MPU)通信来实现固件更新。通过上位机软件,把厂商发布的新版固件传送给微处理器(MPU),传送方式可以是串口、以太网口,USB接口等,这取决于设备的硬件外设。

固件更新过程也存在风险。在更新过程中发生掉电或者其他通信错误等因素,都会导致更新失败,最坏的情况是使得固件损坏而整个系统无法正常工作。而固件的更新依赖于固件本身的可靠工作,在这种固件更新失败的情况下,由于固件已经损坏,导致无法再次更新固件,从而设备将成为一堆废铁。为了避免这种情况的发生,我们可以把FLASH分成几个小块,每个小块可以放不同的内容,如图2所示:FLASH分成4块,分别存放Bootloader、固件1、固件2、数据等。固件1是出厂原始固件,固件2出厂时和固件1一样,它作为固件1的一个备份。当需要更新固件时,用新固件覆盖固件2,如图3所示。这样,万一发生更新失败这种情况,固件1仍然可以正常工作,使得系统可靠性也得到了保障。

本文更多内容,请参阅http://www.epc.com.cn/pdfdown.php?source=2013.10.pdf

技术特刊

减小隔离式同步栅极驱动器的尺寸并降低复杂性带同步整流功能的隔离式DC-DC转换器的传统设计方法是使用光耦合器或脉冲变压器进行隔离,并将其与一个栅极驱动器IC结合在一起。
选择适合医疗器械应用的磁性元件多年来,可植入医疗器械变得越来越小。更小的器械可提高患者舒适度,植入时对人体的损伤也小。同时,更小的器械可降低手术的侵入性和复杂性,既方便医生操作,也
软件模拟+硬件仿真=验证成功如果您还没有注意到现在是SoC时代(虽然并非总是如此),不妨回想一下个人计算时代,许多实例都证明这个时代已快速衰落,成为历史。曾几何时,使用计算机意味着坐

杂志/赠阅

往期查阅:

站内搜索

相关文章