嵌入式系统固件升级设计

嵌入式系统固件升级设计

ID:5233278

大小:27.00 KB

页数:5页

时间:2017-12-06

嵌入式系统固件升级设计_第1页
嵌入式系统固件升级设计_第2页
嵌入式系统固件升级设计_第3页
嵌入式系统固件升级设计_第4页
嵌入式系统固件升级设计_第5页
资源描述:

《嵌入式系统固件升级设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

2、indows操作系统打补丁一样,安装个软件就能实现升级。本文提出了一种嵌入式系统固件升级的设计,不仅可以节省人力物力,而且可以提升系统的可靠性。FLASH布局以Winbond公司的W25Q80BVFLASH为例,如图1所示,当状态寄存器第14位CMP为0的情况下,通过设置状态寄存器的第2~6位,可以把FLASH的低64K,低128K,低256K,低512K或者全部1M设置成保护状态。5系统上电,首先从FLASH地址0x00000000处开始运行,因此这个区域存放的Bootloader程序。我们把Bootloader放在0~64K地址空间,把原始程序放在

3、64~128K地址空间,然后通过设置状态寄存器把0~128K地址空间永久保护起来;把128~192K地址空间作为更新程序存放的地址,把192~256K地址空间作为引导数据存放的地址,128~256K地址空间可以通过设置状态寄存器来选择保护或者不保护,当需要通过上位机软件更新程序的时候,设置成不保护状态,程序更新完了再设置成保护状态。固件更新流程产品发布以后,如果发现有缺陷需要通过软件来修正或者需要更新软件以实现新的功能,就需要更新固件。本文设计通过上位机软件与下位机微处理器(MPU)通信来实现固件更新。通过上位机软件,把厂商发布的新版固件传送给微处理器

4、(MPU),传送方式可以是串口、以太网口,USB接口等,这取决于设备的硬件外设。5系统上电,首先从FLASH首地址0x00000000开始运行,这个区域存放的是Bootloader代码。Bootloader的作用主要是用来更新固件以及验证固件的完整性(即是否有代码被破坏)。当固件更新过程中,只有固件2区域会被重写,而Bootloader始终不变,这样可以保证固件更新功能不会损坏。首先,Bootloader会对硬件做初始化;接着计算固件2的校验码,然后和保存在FLASH引导数据区里的校验码相比较来验证固件2(通常固件2都会比固件1新)的完整性,如果验证通

5、过,Bootloader就会跳转到固件2继续执行,但如果验证失败,那么Bootloader会验证固件1,如果通过就继续执行固件1,如果仍然失败,那么说明固件1和2都损坏,程序无法执行下去,Bootloader将会等待上位机发送固件更新的命令,并且通过显示错误代码告诉用户固件损坏,请立即更新固件。如果设备有液晶屏或者数码管则可以显示文字或者数字;如果没有这类外设则可以通过LED灯的闪烁频率变化来实现。Bootloader流程图如图4所示。上位机更新软件是用来更新固件的工具。它与Bootloader里的更新程序配合工作来实现固件更新的功能。用户通过该软件的

6、图形化界面选择一个需要更新的固件文件,然后通过通信接口向下位机微处理器(MPU)发送固件更新指令,当下位机微处理器收到该指令以后,就跳转到Bootloader的固件更新程序继续进行固件更新任务,把从上位机传送过来的固件写入FLASH的132K~192K区域,直到更新完成。最后,上位机更新软件对更新完的固件进行验证,将写入的固件读回来与原始文件进行比对,如果验证通过,则计算更新文件的数据校验码,并写入FLASH引导数据区(192~256K)的指定地址。数据校验5数据校验,通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验码。接收

7、方用同样的算法计算一次校验码,如果和随数据提供的校验码一样,就说明数据是完整的。校验和是冗余校验的一种形式。它是通过错误检测方法,对经过空间(如通信)或者时间(如计算机存储)传送的数据的完整性进行检查的一种简单方法。常见的数据校验方法有:(1)累加和校验法累加和校验法是简单的将所有数据相加,计算出一个校验和。(2)异或校验法(3)循环冗余校验法(CyclicRedundancyCheck)CRC校验是一种循环冗余算法,主要用来检测或校验数据传输或者保存后可能出现的错误。该算法利用除法及余数的原理来进行错误检测的,将接收到的码组进行除法运算,如果除尽,则

8、说明数据无误;如果未除尽,则表明数据出现差错。CRC校验具还有自动纠错能力。CRC校验主要有计

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。