专利名称:嵌入式微处理器系统及其固件更新方法
技术领域:
本发明涉及嵌入式系统,特别涉及嵌入式微处理器系统及其固件更新方法。
背景技术:
嵌入式设备中的计算机系统称为嵌入式微处理器系统,嵌入式微处理器系统的硬件主要包括嵌入式微处理器、存储器和接口电路等组成。存放在嵌入式微处理器系统存储器中的程序代码称为固件(Firmware)。随着软件版本的不断升级,或者不同的应用需求,固件内容需要及时更新。当前运行的固件通常保存在程序存储器里。嵌入式微处理器系统中的程序存储器大都采用N0RFLASH存储器。嵌入式微处理器系统固件的更新方法有现场更新和远程更新两种。嵌入式系统固件的现场更新技术已经非常成熟,嵌入式处理器厂家或第三方开发商提供了多种方式支持固件现场更新。使用编程器将固件直接写入FLASH存储器,或通过 RS-232、USB、JTAG 口将固件传送到FLASH存储器,但这些更新方法都不适合于远程更新。嵌入式微处理器系统往往应用于远程控制设备和移动信息设备,这些设备远离用户或用户不容易接近,如电力变压器参数采集系统。这些嵌入式设备中的嵌入式微处理器系统无法采用现场更新方法,固件必须采用远程更新方式。嵌入式处理器系统固件的远程更新目前采用基于Bootloader的更新方法。该方法在FLASH存储器的Bootloader存储区后面设计了 3个镜像文件存储区,分别是当前区、 前版本区和初版本区。初版本区存储最初版本的镜像文件,前版本区存储上一个版本的镜像文件,当前区存储当前要启动的最新镜像文件。在更新过程中,系统每次启动后,更新进程首先会向后台控制模块报告当前软件的版本号,随后检查FLASH存储器中的更新位,然后进入阻塞状态;当系统收到控制模块发来的更新指令后,释放阻塞的信号量,进行更新。 更新进程采用TCP协议接收控制模块发来的新版本镜像文件。当新镜像文件下载完成后, 更新进程先判断前版本区在FLASH上的位置,然后将新镜像文件写入前版本存储区中。更新后,Bootloader通过读取参数存储区的启动点参数来引导3个程序存储区的某个镜像文件,从而启动嵌入式系统。这种更新方法提高了更新程序在传输过程中的可靠性,并且提高了嵌入式系统更新后重新启动的稳定性和可靠性。但是它也存在着不利之处(1)同时保存3个镜像文件,占用了更多的FLASH存储资源,增加了嵌入式系统的硬件成本;(2)需要操作系统、网络协议、文件系统的支持,这些部分的软件代码无法更新,无法做到固件整体更新,这种方法不适合于资源配置较少的嵌入式微处理器系统,如含ARM7内核的一部分嵌入式微处理器系统,系统程序和用户程序一齐编译生成一个固件,无法使用这种方式更新; (3)关键存储器区(如启动区的Bootloader)数据无保护,一旦损毁,系统将无法启动,更新无从谈起;(4)如果3个镜像文件存储区的数据一旦全部损毁,系统也将无法正常使用。申请号为CN200810146863. 4的专利申请文件描述了一种可自动更新软件的嵌入式系统及其软件更新方法,是在嵌入式系统中储存一份操作系统映像文件、一份开机程序代码以及一份验证基准值,由开机模块中的开机程序代码来判断操作系统映像文件待验值与验证基准值是否相符,当不相符时,生成请求,并传送该请求至计算机主机,计算机主机依据该请求回传软件更新文件,依据该软件更新文件更新该操作系统映像文件,重复以上步骤,直到操作系统映像文件待验值与验证基准值一致,完成更新过程。然后执行新的操作系统映像文件作业代码。该方法解决了现有技术中使用者无法自行更新嵌入式系统的软件的问题,进而达成降低现有嵌入式系统更新软件时所需耗费的人力与成本。缺点是软件更新与回传软件更新文件交替进行,一旦更新过程中出错可能系统无法启动。申请号为CN201010148119. 5的专利申请文件描述了一种嵌入式设备、嵌入式设备中固件在线升级的系统及方法,嵌入式设备包括存储模块、下载模块、引导加载模块; 存储模块包括当前运行固件存储区和固件映像文件存储区;下载模块,用于下载版本高于当前运行固件的固件映像文件,并将其存储至固件映像文件存储区;引导加载模块,用于加载调用固件映像文件。本发明的嵌入式设备、嵌入式设备中固件在线升级的系统及方法, 其方法通过网络从服务器下载固件映像文件,并将其存储至相应的存储区;系统重启后,引导加载固件映像文件。与现有技术相比简化了固件的升级步骤,提高了升级的速度和成功率,减少了升级成本,延长了嵌入式设备的使用寿命。但是它也存在着不利之处用于更新服务的下载模块、引导占用内存资源较多,需要操作系统支持,不能做到嵌入式系统全部固件更新。以上技术中的更新服务程序和固件都是放在可读写的存储区,一旦更新服务程序损毁,系统将无法再正常使用;另外更新服务程序永久占用内存,造成资源浪费。发明内客为了克服现有相关技术的缺点和不足,本发明提供一种嵌入式微处理器系统及其固件更新方法。本发明的嵌入式微处理器系统包括嵌入式微处理器、传输接口和存储模块;存储模块与嵌入式微处理器连接,嵌入式微处理器再通过传输接口接入公共通信网络。存储模块用于存放更新服务程序、原始固件及更新后的最新固件与单前运行固件,包括均与嵌入式微处理器连接的RAM内存、只读外存、读写外存,以及通过FLASH内存写信号控制单元与嵌入式微处理器连接的FLASH内存;所述写信号控制单元将FLASH内存分为FLASH只读内存和FLASH读写内存。FLASH内存存有两个异常向量表,分别用异常向量表1和异常向量表2表示,其中 FLASH只读内存存放异常向量表1和复制模块;FLASH读写内存存放当前运行固件,当前运行固件包含了异常向量表2 ;只读外存用于保存原始固件和更新服务程序的备份;读写外存用于保存最新固件;所述RAM内存作为更新服务程序运行区,在嵌入式微处理器系统启动或复位后用于暂时加载更新服务程序,完成更新后,自动归还RAM资源。本发明的硬件电路简单,通过采用封锁写信号,保证了只读内存和只读外存的数据永久安全。公共通信网络可以是广域网,也可以是局域网,嵌入式微处理器系统接入公共通信网络的方式可以是有线或者无线。嵌入式微处理器可以是8、16或32位的微处理器,具有外部扩展系统总线和若干个I/O 口。嵌入式微处理器不断地从FLASH内存或者RAM内存中获取程序代码并执行。
FLASH内存为非易失性存储器,采用可直接接入嵌入式微处理器系统总线的NOR FLASH,NOR FLASH的数据传输效率很高,可以分扇区擦除修改其中的数据,在1 4MB的小容量时具有很高的成本效益,且程序可以直接在NOR FLASH中运行,具有断电数据保持特性;而RAM内存为易失性存储器,断电数据即丢失,可以存在于嵌入式微处理器片内,也可以是嵌入式微处理器的片外扩展,具体由嵌入式微处理器的型号决定。所以FLASH内存作为程序存储器,而RAM内存则是启动时加载程序作为程序存储器,或者完全作为数据存储器使用。FLASH内存写信号控制单元由通用集成逻辑门电路或小规模的可编程逻辑器件 PLD构成。读写外存和只读内存作为辅助存储器可采用低成本的NAND FLASH、DATA FLASH、 串行EEPROM或SD卡等。嵌入式微处理器通过I/O 口连接到读写外存,编程产生相应的NAND FLASH读写时序信号实现对读写外存的访问。只读外存与读写外存不同之处在于只读外存有一写保护控制引脚,当该引脚保护电平信号设置有效时,只读外存只读禁止写;当该引脚保护电平信号设置无效时,只读外存可以读写。所述固件不仅包括嵌入式微处理器编译系统产生的原固件,还包括将此固件扩展到最高地址端,并在高地址端存储单元增加的固件版本和CRC校验。原固件与固件版本及 CRC校验中间多余的存储元全部填充为全1或全0,用16进制表示为“OxFF”或“0x00”,其固件大小取决于下面公式固件大小=FLASH内存容量-FLASH只读内存容量其中固件版本使用年-月-日-时-分-秒作为关键字,被用来判别是否需要更新当前固件,CRC校验采用CRC32算法,产生32位的CRC码占用4个字节被用来验证固件数据是否完整。在嵌入式微处理器硬件系统安装到嵌入式设备之前,对存储模块做如下设置1、将FLASH写信号控制单元设置为写信号对整片FLASH存储器有效,将异常向量表1及复制模块先写入FLASH只读内存,然后将FLASH写信号控制单元设置对低地址存储区写无效,使该存储区域数据只读,保证FLASH只读内存不会被非法改写;2、将只读外存的写信号设置为写有效,将原始固件和更新服务程序写入只读外存,然后将只读外存的写信号设置为写无效,保证原始固件和更新服务程序在外存中不会被非法改写。原始固件是经过测试保证系统最基本功能和性能的、可正常运行的固件。对存储器只读特性设置完成后,将嵌入式微处理器系统植入嵌入式设备中。本发明还提供一种上述嵌入式微处理器系统的固件更新方法,具体步骤如下(1)接入公共通信网络的远程设备维护中心通过数据传输将欲更新固件下载到读写外存中作为最新固件存储;(2)嵌入式微处理器系统重新上电或复位之后,嵌入式微处理器的程序指针PC先指向存放于FLASH只读内存中的异常向量表1的复位向量地址,获得复制模块入口地址,跳转到复制模块,执行复制任务;再将存放在只读外存中的更新服务程序模块复制到RAM内存,之后跳转到RAM内存区执行更新服务程序;(3)更新服务程序首先检测读写外存中固件数据的完整性和固件版本,当读写外存中的固件数据完整,且固件版本比FLASH读写内存中的当前固件版本较新时,将读写外存中的固件复制到FLASH读写内存中作为当前运行固件,并进行更新;若更行成功,则直接跳转到异常向量表2的复位向量,在该复位向量的存储单元获得复位服务程序入口地址, 进入正常工作流程,运行最新固件;若更新不成功,则返回继续将读写外存中的固件复制到 FLASH读写内存中作为单前运行固件,继续进行更新;(4)当读写外存中的固件数据被损毁或者与FLASH读写内存中的当前固件版本相同,嵌入式微处理器开始检测FLASH读写内存中的当前运行固件数据;当FLASH读写内存中的当前运行固件数据正常时,直接跳转到异常向量表2的复位向量地址,获得复位服务程序入口地址,进入正常工作流程,运行当前固件;(5)当FLASH读写内存中的当前运行固件数据亦被损毁时,嵌入式微处理器将只读外存中的原始固件备份复制到FLASH读写内存中作为当前运行固件,并更新;若更新成功,则跳转到异常向量表2处的复位向量地址,获得复位服务程序入口地址,进入正常工作流程,运行原始固件;若更新不成功,则返回原始固件备份复制步骤,继续进行更新。所述数据传输方式包括有线连接的自动数据传输、无线连接的自动数据传输,可以通过Modem、GPRS、以太网、现场总线等;也包括移动存储卡的人工插拔传送,比如在PC 上将欲下载固件文件通过读卡器写入SD卡,再将SD卡插入嵌入式微处理器系统。FLASH读写内存可以改写,用于存放当前运行固件;FLASH只读内存的写信号被强制无效,数据不会被非法改写,预先写入的数据包括异常向量表1和复制模块;嵌入式微处理器系统要正常运行,必须存在异常向量表1,而复制模块则完成更新服务程序的加载和启动。本发明的固件更新方法并不要求具有操作系统和文件系统的支持,不仅适合于资源丰富的高端嵌入式处理器系统,也适合于内存资源较少的、微处理器内部没有存储器管理单元(MMU)的但应用更广泛的中低端嵌入式微处理器应用系统。在固件更新过程中,复位异常发生时执行四次跳转,其它异常发生时执行二次跳转,即保证固件能及时更新,又可以保证程序的正常运行;同时该更新方法还将固件下载服务和更新服务分离,简化了更新步骤,使更新更加安全可靠;且当前运行固件和最新固件发生损毁时发生损毁后,可以将只读区的原始固件恢复到FLASH读写内存,以保证系统的正常运行。在本发明中,异常向量表1和复制模块需要的只读内存大小计算方法描述如下根据嵌入式处理器的位数和型号的不同,每个异常(8位、16位处理器称为中断) 向量占用的存储单元数按字节计算需要4 8个字节,一般嵌入式处理器提供的异常的个数小于10个,按最大占用内存计算,异常向量表需要80个字节。而复制模块的功能是将只读外存中的更新服务程序从备份区复制到RAM内存,一个简单的循环程序即可完成。用汇编指令完成复制功能最多需要200个字节。两者之和为280个字节,考虑扩展性,FLASH 只读内存区大小定为1KB(10M字节),从嵌入式处理器系统复位地址开始0X00000000 0x000003FF共IOM字节。内存中只有这一部分和固件更新有关,故本发明的固件更新方法只用占用极少内存。与现有技术相比,本发明具有以下优点(1)本发明采用写信号控制单元将FLASH内存分为FLASH只读内存和FLASH读写内存,FLASH内存绝大部分存储空间分配给读写内存存放当前运行固件,FLASH只读内存中的异常向量表1和复制模块功能简单,只用占用极少内存空间,而需要更多内存资源的更新服务程序是放在外存中,只是在启动或复位时,由复制模块将更新服务程序暂时加载到 RAM内存运行,之后又将这部分内存归还嵌入式微处理器系统,所以更新服务程序不是永久占用内存;(2)本发明的嵌入式微处理器系统使用了廉价的辅助存储器作为外存,可采用低成本的NAND FLASH,DATA FLASH、串行EEI3ROM或SD卡;以NAND FLASH为例,和作为内存的 NOR FLASH比较,价格只有其几十分之一;在大容量时,成本优势更加明显;将最新固件、原始固件、更新服务程序的备份全部放在外存中,避免了对成本较高内存的占用;(3)与内存读写控制类似,本发明将外存也分为只读外存和读写外存,最新固件存放在读写外存中,原始固件和更新服务程序的备份则被保存在只读外存中;只读外存和 FLASH只读内存中的关键数据的安全性保证了嵌入式微处理器系统在发生非硬件的软件致命错误时,均可恢复正常运行;(4)本发明远程设备维护中心首先将待下载固件下载到读写外存作为最新固件,这一过程不涉及内存中当前固件数据的改写,保证了内存中当前固件数据的安全与完整性;当下载完成后,重启或复位系统,确认最新固件数据完整性后,将最新固件复制到 FLASH读写内存作为当前固件。通信下载过程与复制更新过程分离,保证了固件升级的可靠安全性;(5)本发明是进行固件整体更新的,系统程序和应用程序作为一个整体的固件, 从远程设备维护中心下载到嵌入式微处理器系统的读写外存,然后再从读写外存复制到 FLASH读写内存;整个过程不需要操作系统支持,所以本发明适合于高、中、低端各种嵌入式微处理器系统;(6)本发明的原始固件和更新服务程序作为备份常驻只读外存,只是在需要时暂时占用内存,之后又将所占用的内存资源归还嵌入式微处理器系统,所以原始固件和更新服务程序可以设计的更为复杂,以包含更多的功能模块;(7)本发明通过在FLASH内存中设置两个异常向量表,保证了嵌入式微处理器的各种异常都能够得到正确的处理。
图1是本发明嵌入式微处理器系统的组成示意图;图2是本发明固件更新服务程序流程图;图3是FLASH内存加载本发明固件后的微处理器复位异常处理流程图;图4是FLASH内存加载本发明固件后的微处理器其它异常处理流程图;图5是图1所示存储模块中写信号控制单元的电路图;图6是嵌入式微处理器编译系统产生的固件及对FLASH内存占用情况图;图7是本发明待下载固件及固件更新后对FLASH内存占用情况图。
具体实施例方式下面结合附图对本发明作进一步说明,但不局限于此。
实施例图1为本发明嵌入式微处理器系统的组成示意图,嵌入式微处理器系统010包括嵌入式微处理器011、接入公共通信网络030的传输接口 012和存储模块,存储模块包括均与嵌入式微处理器011连接的RAM内存014、读写外存016、只读外存017,以及通过FLASH 内存写信号控制单元01与嵌入式微处理器011连接的FLASH内存013。FLASH内存写信号控制单元015将FLASH内存013分为FLASH读写内存535和 FLASH只读内存536。FLASH内存013的存储内容如下FLASH只读内存存放异常向量表1,具体包括复位向量、其它异常向量、复制模块;FLASH读写内存存放当前运行固件,当前运行固件包括异常向量表2,异常向量表 2具体包括复位向量和其它异常向量、复位服务程序、其它异常服务程序、固件版本、CRC校验;读写外存016存放最新固件;只读外存017存放原始固件和更新服务程序的备份,RAM内存014在系统启动时暂时占用作为更新服务程序运行区。图2是为本发明固件更新方法的流程图,在上电重启或发生复位异常时,暂时加载到RAM内存区运行。更新服务程序流程描述如下200 进入更新服务程序US ;201 系统初始化;202 检查读写外存固件数据是否完整如数据完整,则继续下面步骤;若数据被损坏,则跳转到210;203 比较读写外存中的固件版本与FLASH读写内存中的固件版本;如读写外存中最新固件版本较新,则继续步骤204 ;否则执行步骤210 ;204 将读写外存中最新固件复制到读写内存中作为当前运行固件;205 复制完成后,检查固件更新是否成功;如成功,则继续步骤206 ;否则跳转回 204 ;206 跳转到异常向量表2复位向量地址,进入正常工作流程,并运行最新固件;210 检查FLASH读写内存中运行固件版本数据是否完整;如完整,执行步骤206, 跳转到异常向量表2的复位向量,获得复位服务程序入口地址,进入正常工作流程,运行当前固件;否则继续步骤220;220 将只读外存中原始固件复制到FLASH读写内存中作为当前运行固件;221 复制完成后,检查固件更新是否成功;如成功,执行步骤206,跳转到异常向量表2复位向量地址,进入正常工作流程,并运行原始固件;否则继续执行步骤220。图3为FLASH内存加载本发明固件后的微处理器复位处理流程图300:系统上电或复位后,程序指针PC指向异常向量表1的复位向量地址 0x00000 ;301 =PC在复位地址RstAddrl获得复制模块入口地址CSAddr ;302 :PC跳转至复制模块,将更新服务程序从只读外存备份区复制到RAM运行区,复制完成后,PC设置为RAM区更新服务程序入口地址USAddr ;303 =PC跳转至USAddr,执行更新服务程序US ;304 完成更新服务后,PC设置为异常向量表2的复位向量地址RstAddr2 ;305 :PC跳转至RstAddr2,在RstAddr2存储单元获得复位服务程序入口地址 RstSev ;306 =PC跳转至RstSev,执行复位服务程序,进入正常工作流程,无返回。本发明复位时PC的四次跳转与嵌入式微处理器编译系统产生固件的复位时PC的 1次跳转的最终程序入口一致,均为RstSev。图4为FLASH内存加载本发明固件后的微处理器异常处理流程图400 发生其它异常(除复位外),程序指针PC指向OthExVecl ;401 :PC在异常向量表1的向量地址OthExVecl中获得异常向量表2向量地址 0thExVec2 ;402 =PC跳转至0thExVec2,在0thExVec2存储单元获得异常服务程序入口地址 OthExSev ;403 =PC跳转至OthExSev,执行异常服务程序;404:异常返回。本发明固件更新过程中,发生异常时PC的二次跳转与嵌入式微处理器编译系统产生固件的异常发生时PC的一次跳转的最终程序入口一致,均为OthExSev。图5为本发明存储模块中写信号控制单元的电路图,本实施例中FLASH内存013 为8位存储器组织,其存储容量为1MB = 1024X 1024字节,但本发明不限定于此。FLASH内存013从嵌入式处理器的内存地址0开始计,占用内存空间为0x00000 OxFFFFF。通过写信号控制单元电路500对FLASH内存013的写信号控制,将FLASH内存013分为FLASH只读内存536和FLASH读写内存535两部分。写信号控制单元电路500由逻辑电路或非门506和或门522组成,或非门506的输入信号分别是501-A10、502-A11、503-A12 A18、504-A19,为了简化图例,其中503为7 根地址线。或门522的一个输入为嵌入式微处理器写控制信号505,另一个输入521可选择接地511或者接到或非门506的输出端507。当或门的输入521接地511时,或门522的输出@ 531逻辑表达式为WE = 0 + WR = WRFLASH内存013输入的写控制信号尿云531即是嵌入式微处理器输出的写控制信号尿云505。FLASH内存全部可写。当或门的输入521接到或非门506的输出端507时,或门522的输出尿云531逻辑
表达式为
^=^10+ ^l 1 + ^12+ ^13 +^14+ ^15 +^16+ ^17+ ^18 +^19+ TO上述逻辑表达式中,输入AlO A19全为0时,
_1] ^ = 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ^ = 1 AlO A19为全0,所对应的FLASH内存013的存储地址空间为0x00000 0x003FF。WE = 1,写无效,此地址空间为只读,大小为1KB = 1024字节。输入AlO A19不全为0时,即至少有一个为1时,贝Ij^ = 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ^ = ^FLASH内存013输入的写控制信号尿云531即是嵌入式微处理器输出的写控制信号尿云505。AlO A19不全为0的空间可以写入。即图1中的FLASH读写内存535,此地址空间可以读写,大小为10231 = 1023\1(^4字节。在内存中的存储地址空间为0x00400 OxFFFFF。通过对FLASH内存013输入的写控制信号@ 531进行控制,将物理上为一个 FLASH存储芯片在逻辑上分为FLASH只读内存536和FLASH读写内存535两部分,可以简化系统设计降低系统成本。图6为嵌入式微处理器编译器系统对FLASH内存的占用情况图,图7为本发明对 FLASH内存的占用情况图。两种不同固件最终的运行效果是一致的。下面分别予以描述如图6所示,在微处理器编译器系统中将复位服务程序代码段定位在0x00500处, 生成的固件如图6中600所示,该固件对FLASH内存的占用如图中605所示,其中复位地址 RstAddrl (某些处理器也称之为复位异常向量),其它异常向量地址OthExVecl可以包括多个异常,如中断异常、快中断异常等。本发明统一用OthExVecl表示多个异常向量地址。 复位地址RstAddrl的存储单元存储复位服务程序入口地址RstSev,当系统上电重启或复位重启后,嵌入式微处理器PC指针指向复位地址RstAddrl,并获得复位服务程序入口地址 RstSev,然后跳转至复位服务程序入口地址Rstkv,即进入正常工作流程。异常向量地址 OthExVecl存储异常服务程序入口地址OthExSev,当系统发生异常时,嵌入式微处理器将当前任务挂起,PC指针指向异常向量地址OthExVec 1,在异常向量地址OthExVec 1的存储单元获得异常服务程序入口地址OthExSev,然后跳转至异常服务程序入口地址OthExSev,执行异常服务程序,异常服务结束后返回被异常打断的下一条执行指令。图7为本发明待下载固件及固件更新后对FLASH内存占用情况图,同时参照图6 说明本发明待下载固件构成,将图6中微处理器编译系统产生的固件中的异常向量表1所有向量地址的存储单元内容,包括复位地址RstAddrl的存储单元中复位服务程序入口地址RstSev和异常服务程序入口地址OthExSev从0x00000地址复制到图7中的0x00400 地址构成异常向量表2,并得到图7中新的复位地址RstAddrf和新的其它异常向量地址 0thExVec2o图7中的复位服务程序和其它异常服务程序与图6中的复位服务程序603和其它异常服务程序604 —致。参照图7,在高地址端加入固件版本,使用年-月-日-时-分-秒作为固件版本 765关键字,按压缩的BCD码存放需要7个字节,加1个保留字节,共8个字节,固件版本占用高地址端0xFFFF4 OxFFFFB存储单元。在最高地址端加入CRC校验,用于验证固件数据是否完整,使用CRC32算法产生32 位的CRC码,占用4个字节。参与CRC32算法的二进制数据流包括从复位服务程序入口地址RstSeV701开始至固件版本705及其中间的全部存储器空间中的内容,未使用存储器空间的二进制位统一填1。复位服务程序入口地址RstSev701、异常服务程序入口地址0thEXSev702、复位服务程序703、其它异常服务程序704、固件版本号705和CRC校验706构成了本发明待下载固件707。待下载固件更新时要写入到FLASH内存的0x00400 OxFFFFF存储单元,对应于图5中FLASH读写内存535。FLASH内存的0x00000 0x003FF存储单元为只读区,只读的设定方法见前面对图5的描述。只读区预先存入的内容是固定不变的,从0x00000存储单元开始依次保存复位向量地址708、其它异常向量地址0thExVec2709和复制模块CS-710,其中CSAddr和 0thExVec2与嵌入式微处理器编译器系统产生的向量地址一致,但CSAddr向量地址的存储内容为复制模块CS710的入口地址,复制模块CS 710的功能是将更新服务程序加载到嵌入式微处理器的RAM内存并启动。
权利要求
1.嵌入式微处理器系统,其特征在于包括嵌入式微处理器、传输接口和存储模块; 存储模块与嵌入式微处理器连接,嵌入式微处理器再通过传输接口接入公共通信网
2.根据权利要求1所述的嵌入式微处理器系统,其特征在于所述存储模块包括均与嵌入式微处理器连接的RAM内存、只读外存、读写外存,以及通过FLASH内存写信号控制单元与嵌入式微处理器连接的FLASH内存;所述FLASH内存写信号控制单元将FLASH内存分为 FLASH只读内存和FLASH读写内存;FLASH只读内存存放异常向量表1和复制模块;FLASH读写内存存放当前运行固件,当前运行固件包含了异常向量表2 ;只读外存用于保存原始固件备份和更新服务程序模块; 读写外存用于保存最新固件;所述RAM内存作为更新服务程序模块运行区,在嵌入式微处理器硬件系统启动或复位后用于暂时加载更新服务程序模块,完成更新后,自动归还RAM 资源。
3.根据权利要求2所述的嵌入式微处理器硬件系统,其特征在于所述嵌入式微处理器为8位、16位或32位微处理器。
4.根据权利要求2或3所述的嵌入式微处理器硬件系统,其特征在于所述FLASH内存写信号控制单元由通用集成逻辑门电路或可编程逻辑器件构成。
5.权利要求1至4任一项所述嵌入式微处理器系统的固件更新方法,其特征在于更新过程的具体步骤如下(1)接入公共通信网络的远程设备维护中心通过数据传输将欲更新固件下载到读写外存中作为最新固件存储;(2)嵌入式微处理器系统重新上电或复位之后,嵌入式微处理器的程序指针PC先指向存放于FLASH只读内存中的异常向量表1的复位向量地址,获得复制模块入口地址,跳转到复制模块,执行复制任务;再将存放在只读外存中的更新服务程序模块复制到RAM内存,之后跳转到RAM内存区执行更新服务程序;(3)更新服务程序首先检测读写外存中固件数据的完整性和固件版本,当读写外存中的固件数据完整,且固件版本比FLASH读写内存中的当前固件版本较新时,将读写外存中的固件复制到FLASH读写内存中作为当前运行固件,并进行更新;若更行成功,则直接跳转到异常向量表2的复位向量,在该复位向量的存储单元获得复位服务程序入口地址,进入正常工作流程,运行最新固件;若更新不成功,则返回继续将读写外存中的固件复制到 FLASH读写内存中作为单前运行固件,继续进行更新;(4)当读写外存中的固件数据被损毁或者与FLASH读写内存中的当前固件版本相同, 嵌入式微处理器开始检测FLASH读写内存中的当前运行固件数据;当FLASH读写内存中的当前运行固件数据正常时,直接跳转到异常向量表2的复位向量地址,获得复位服务程序入口地址,进入正常工作流程,运行当前固件;(5)当FLASH读写内存中的当前运行固件数据亦被损毁时,嵌入式微处理器将只读外存中的原始固件备份复制到FLASH读写内存中作为当前运行固件,并更新;若更新成功,则跳转到异常向量表2处的复位向量地址,获得复位服务程序入口地址,进入正常工作流程, 运行原始固件;若更新不成功,则返回原始固件备份复制步骤,继续进行更新。
6.根据权利要求5所述的固件更新方法,其特征在于所述更新过程中复位实行四次跳转到复位服务程序入口地址,异常实行二次跳转到异常服务程序入口地址。
7.根据权利要求5所述的固件更新方法,其特征在于所述固件版本的内容包括该固件的版本和该固件的CRC校验。
8.根据权利要求7所述的固件更新方法,其特征在于所述固件版本使用年-月-日-时-分-秒作为关键字。
9.根据权利要求7所述的固件更新方法,其特征在于所述CRC校验采用CRC32算法,产生32位的CRC码占用4个字节。
10.根据权利要求5至9任一项所述的固件更新方法,其特征在于所述数据传输包括有线连接的自动数据传输、无线连接的自动数据传输或移动存储卡的人工插拔传送。
全文摘要
本发明公开了嵌入式微处理器系统及其固件更新方法,该系统包括嵌入式微处理器及分别与其连接的存储模块和传输接口,传输接口接入公共通信网络。存储模块包括FLASH内存、FLASH内存写信号控制单元、RAM内存、只读外存和读写外存;FLASH内存写信号控制单元将FLASH内存分为FLASH只读内存和FLASH读写内存。FLASH内存存有两个异常向量表,复位实行四次跳转,其它异常实行二次跳转,保证固件及时更新和程序正常运行。本发明硬件结构简单;FLASH内存通过封锁写信号保证数据永久安全;更新服务程序只在启动时暂时占用RAM内存;本发明还能将固件下载服务和更新服务分离,简化更新步骤,使更新更加安全可靠。
文档编号G06F9/445GK102360304SQ201110315449
公开日2012年2月22日 申请日期2011年10月18日 优先权日2011年10月18日
发明者刘发贵, 张齐, 朱宁西, 李蕾, 林奎 申请人:华南理工大学