Mcu在线升级固件的系统的制作方法

文档序号:10856187阅读:420来源:国知局
Mcu在线升级固件的系统的制作方法
【专利摘要】本实用新型提供了一种MCU在线升级固件的系统,包括MCU、备份RAM、备份电池,所述备份RAM与所述MCU连接,所述备份电池与所述备份RAM连接;所述MCU的FLASH存储区包括IAP程序存储区和至少两个的APP程序存储区,所述两个的APP程序存储区分别存储当前运行中的APP程序和更新数据包;所述备份RAM存储固件升级的状态信息,所述状态信息包括状态标志和固件版本号。正在运行的程序和更新数据包存放在不同的APP程序存储区,各APP程序存储区内的代码相互独立,不会相互干扰;根据备份RAM内固件升级的状态信息对更新中断的程序继续进行更新,从而实现固件在线升级不受系统掉电的影响。
【专利说明】
MCU在线升级固件的系统
技术领域
[0001] 本实用新型涉及MCU产品固件升级技术领域,特别涉及一种MCU在线升级固件的系 统。
【背景技术】
[0002] MCU固件更新过程中需要对MCU代码存储区域进行覆盖编程操作,更新过程若被意 外中断(如掉电、线缆连接中断)将导致MCU再次启动时无法正常运行代码。
[0003] 公开号为CN 1752933 A的中国专利公开了一种支持固件在线升级的芯片系统及 其在线升级方法,所述系统包括固件、存储固件升级程序等程序存储器,业务模块,以及与 业务模块相连的存储业务模块数据的数据存储器,所述数据存储器还与程序存储器相连, 用于存储从程序存储器中复制来的固件升级程序。所述方法为:固件收到在线升级指令后, 将存储于程序存储器中的固件在线升级程序复制到所述数据存储器中;将芯片中MCU的程 序空间映射到所述数据存储器;在数据存储器中运行固件在线升级程序,将新版的固件写 入程序存储器中。该方案利用芯片上现有的RAM或寄存器组来进行固件在线升级,但是在固 件在线升级的过程中,数据存储器与程序存储器均不能正常工作,一旦更新过程出现断电 现象,下次上电需重新开始固件升级过程,固件升级的可靠性较低。 【实用新型内容】
[0004] 本实用新型所要解决的技术问题是:提供一种可靠性强,掉电后仍能完成固件升 级的MCU在线升级固件的系统。
[0005] 为了解决上述技术问题,本实用新型采用的技术方案为:
[0006] 一种MCU在线升级固件的系统,包括MCU、备份RAM、备份电池,所述备份RAM与所述 MCU连接,所述备份电池与所述备份RAM连接;
[0007] 所述M⑶的FLASH存储区包括IAP程序存储区和至少两个的APP程序存储区,所述两 个的APP程序存储区分别存储当前运行中的APP程序和更新数据包;所述备份RAM存储固件 升级的状态信息,所述状态信息包括状态标志和固件版本号。
[0008] 进一步的,还包括掉电检测电路,所述掉电检测电路与所述MCU连接。
[0009] 进一步的,还包括MPU,所述MPU通过UART传输方式与所述MCU连接。
[0010] 进一步的,还包括上位机,所述上位机通过UART传输方式与所述MCU连接。
[0011] 进一步的,还包括上位机和MPU,所述上位机通过USB传输方式与所述MPU连接,所 述MPU通过UART传输方式与所述MCU连接。
[0012 ]本实用新型MCU在线升级固件的系统的有益效果在于:FLASH存储区包括多个APP 程序存储区,从而当前正在运行的程序和更新数据包可以存放在不同的APP程序存储区,各 APP程序存储区内的代码相互独立,不会相互干扰;系统还包括与MCU连接的备份RAM和与备 份RAM连接的备份电池,系统掉电时可采用备份电池进行临时供电;系统恢复上电后,根据 备份RAM内固件升级的状态信息对更新中断的程序继续进行更新,从而实现固件在线升级 不受系统掉电的影响。
【附图说明】
[0013] 图1为本实用新型实施例一的MCU在线升级固件的系统的结构图一;
[0014] 图2为本实用新型实施例一的M⑶在线升级固件的系统的结构图二;
[0015] 图3为本实用新型实施例二的M⑶在线升级固件的方法的流程图一;
[0016] 图4为本实用新型实施例二的M⑶在线升级固件的方法的流程图二。
[0017] 标号说明:
[0018] 1、1〇];11、1六?程序存储区;12^??程序存储区 ;13^??1程序存储区;14^??2程序 存储区;2、备份RAM;3、备份电池;4、掉电检测电路;5、MPU;6、上位机。
【具体实施方式】
[0019] 为详细说明本实用新型的技术内容、所实现目的及效果,以下结合实施方式并配 合附图予以说明。
[0020] 本实用新型最关键的构思在于:将M⑶的FLASH划分出两个APP程序存储区,分别用 于存储正在运行的程序和更新数据包;掉电后采用备份电源供电,将固件升级的状态信息 写入备份RAM,系统上电后根据该状态信息运行最新版本的固件或更新失败后重新获取数 据更新包进行固件升级。
[0021 ]本实用新型涉及的技术术语解释见表1:
[0022]耒 1
[0024]请参照图1以及图2,本实用新型提供了:
[0025] 一种MCU在线升级固件的系统,包括MCUl、备份RAM2、备份电池3,所述备份RAM2与 所述MCUl连接,所述备份电池3与所述备份RAM2连接;所述MCUl的FLASH存储区包括IAP程序 存储区11和至少两个的APP程序存储区12,所述两个的APP程序存储区12分别存储当前运行 中的APP程序和更新数据包;所述备份RAM2存储固件升级的状态信息,所述状态信息包括状 态标志和固件版本号。
[0026] 进一步的,还包括掉电检测电路4,所述掉电检测电路4与所述M⑶1连接。
[0027] 从上述描述可知,通过掉电检测电路4检测掉电事件并通知M⑶1,从而能够及时采 取启动备份电池3供电并将固件升级的状态信息写入备份RAM2等应对措施。
[0028] 进一步的,还包括MPU5,所述MPU5通过UART传输方式与所述MCUl连接。
[0029] 进一步的,还包括上位机6,所述上位机6通过UART传输方式与所述M⑶1连接。
[0030] 进一步的,还包括上位机6和MPU5,所述上位机6通过USB传输方式与所述MPU5连 接,所述MPU5通过UART传输方式与所述MCUl连接。
[0031] 从上述描述可知,M⑶1可直接从MPU5或上位机6获取数据更新包,也可通过MPU5从 上位机6获取更新数据包。
[0032] 请参照图3以及图4,本实用新型还提供了 :
[0033] -种与上述M⑶在线升级固件的系统对应的方法,包括:
[0034] Sl、将MCU的FLASH划分为一IAP程序存储区和至少两个的APP程序存储区,一APP程 序存储区存储有运行中APP程序;
[0035] S2、MCU获取更新数据包,将所述更新数据包存储至另一 APP程序存储区;并依据所 述更新数据包进行固件升级;
[0036] S3、若系统掉电,则所述M⑶通过备份电源将固件升级的状态信息写入备份RAM,所 述状态信息包括状态标志和固件版本号;
[0037] S4、系统恢复供电后,M⑶查询所述备份RAM,依据所述状态标志判断更新是否完 成;
[0038] S5、若是,则依据所述固件版本号运行当前最新版本的APP程序;
[0039] S6、若否,则重新获取更新数据包进行固件升级。
[0040]进一步的,所述"S3、若系统掉电,则所述MCU通过备份电源将固件升级的状态信息 写入备份RAM"具体为:
[0041 ] S31、掉电检测电路检测到系统掉电后,将系统掉电信息发送至所述M⑶;
[0042] S32、所述MCU接收到所述系统掉电信息后,通过备份电源将固件升级的状态信息 写入备份RAM。
[0043] 从上述描述可知,MCU通过掉电检测电路检获取掉电信息,从而相应地启动备份电 池、将固件升级的状态信息写入备份RAM,从而系统恢复供电后能够根据备份RAM内的状态 信息进行相应的处理。
[0044] 进一步的,S7、固件升级完成后设置存储更新数据包的APP程序存储区为当前使用 的APP程序存储区,并将当前使用的APP程序存储区信息存储于IAP程序存储区。
[0045] 从上述描述可知,下次进行固件升级时,通过IAP程序存储区内的当前使用的APP 程序存储区信息即可确定更新数据包应该放在哪个存储区。
[0046] 进一步的,所述更新数据包由上位机发送至M⑶。
[0047] 进一步的,所述更新数据包和更新请求由上位机发送至MPU;M⑶从MPU获取所述更 新数据包。
[0048] 从上述描述可知,MCU可直接从MPU或上位机获取数据更新包,也可通过MPU从上位 机获取更新数据包。
[0049] 请参照图1以及图2,本实用新型的实施例一为:
[0050] -种M⑶1在线升级固件的系统,包括MCUl、备份RAM2、掉电检测电路4、备份电池3、 MPU5和上位机6,所述备份RAM2和掉电检测电路4均与所述M⑶1连接,所述备份电池3与所述 备份RAM2连接;所述MCUl的FLASH存储区包括IAP程序存储区11、APP1程序存储区13和APP2 程序存储区14,程序存储区并不局限于三个,具体分配可根据实际需要和FLASH的大小进行 调节;APPl程序存储区13存储当前运行中的APP程序,APP2程序存储区14存储更新数据包; 所述备份RAM2存储固件升级的状态信息;该状态信息包括:更新标志:当MCUl收到外部信 息,提示需要更新固件时置位,更新完毕复位;检测标志:当更新过程因检测到掉电事件时, 通过中断服务程序将其置位,直到更新完毕时复位;状态标志:对当前传输数据进行计数的 标志,从0开始,每收到一个字节加1,直到等于更新数据包大小则认为当前已完成更新;各 APP程序存储区12内的程序版本号:当系统收到更新命令时首先将版本号写为Oxffffffff, 更新完成后填上正确版本号(正常版本号不等于Oxffffffff);以及各APP程序存储区12内 的更新数据包的大小。所述MPU5通过UART传输方式与所述MCUl连接;所述上位机6通过USB 传输方式与所述MPU5连接。所述上位机6也可直接通过UART传输方式与所述M⑶1连接。优选 的,MCUl采用意法半导体(ST)公司的STM32F4系列的单片机,该系列芯片具备多至IMB片上 FLASH可用于执行代码存储,多至4KB片上备份SRAM用于掉电存储备份信息;MPU 5指的是微 处理器单元,在此处特指对MCU更新固件的主设备(这里以RK3288举例),它负责将从上位机 接收到的数据包按本实用新型的传输机制发送到M⑶端进行固件升级,在实际使用场合可 以是任何胜任该项功能的处理器;M⑶甚至可以直接通过上位机直接进行固件升级而不需 要中间的转发环节;备份电池3为纽扣电池。
[0051 ] 上述MCU在线升级固件的系统工作原理如下:正常供电时,MPU5或上位机6将更新 请求发送至MCUl,MCU1收到更新请求后向MPU5或上位机6请求获取更新数据包,并将获取的 更新数据包存储在APP2程序存储区14,然后在APP2程序存储区14内依据该更新数据包进行 固件升级;固件升级完成后,将APP2程序存储区14设置为当前使用的APP程序存储区12后将 当前使用的APP程序存储区12信息存储于IAP程序存储区11。系统掉电时,即电源电压下降 至一定阈值时,掉电检测电路4输出一个低电平通知MCUl,MCUl控制备份电源启动,并将固 件升级的状态信息写入备份RAM2。系统恢复供电后,MCUl根据备份RAM2中的状态信息判断 掉电前的更新是否完成;若更新完成,则直接查找最新版本的程序存放地址,运行最新版本 的程序;若未更新完成,则向MPU5或上位机6请求重新发送更新数据包,按照上述正常供电 的情况进行固件升级。
[0052 ]请参照图3以及图4,本实用新型的实施例二为:
[0053] 一种与上述实施例一的M⑶在线升级固件系统对应的方法,包括:
[0054] 将MCUl的FLASH划分为一 IAP程序存储区IUAPPl程序存储区13和APP2程序存储区 14,APP1程序存储区13存储有运行中APP程序;
[0055] MCUl获取更新请求,并依据该更新请求向上位机6或MPU5请求更新程序;
[0056] MCUl获取更新数据包,并将所述更新数据包存储至APP2程序存储区14;并依据所 述更新数据包进行固件升级;上述更新请求和更新数据包可由上位机6发送至MCUl,也可由 MPU5发送至MCUl,还可由上位机6发送至MPU5,MPU5再发送至MCUl;具体的,进行固件升级 时,首先擦除APP2程序存储区14,然后持续接收更新数据包并对更新数据包进行校验,校验 成功后将该更新数据包写入相应位置,并进行相应的程序安装,完成固件升级;
[0057]若系统掉电,则所述MCUl通过备份电源将固件升级的状态信息写入备份RAM2,所 述状态信息包括状态标志和固件版本号;具体的,掉电检测电路4检测到系统掉电后,将系 统掉电信息发送至所述MCUl;所述MCUl接收到所述系统掉电信息后,通过备份电源将固件 升级的状态信息写入备份RAM2;所述状态信息包括:更新标志:当MCUl收到外部信息,提示 需要更新固件时置位,更新完毕复位;检测标志:当更新过程因检测到掉电事件时,通过中 断服务程序将其置位,直到更新完毕时复位;状态标志:对当前传输数据进行计数的标志, 从〇开始,每收到一个字节加1,直到等于更新数据包大小则认为当前已完成更新;各APP程 序存储区12内的程序版本号:当系统收到更新命令时首先将版本号写为Oxffffffff,更新 完成后填上正确版本号(正常版本号不等于Oxffffffff);以及各APP程序存储区12内的更 新数据包的大小;
[0058]系统恢复供电后,MCUl查询所述备份RAM2,依据所述状态标志判断更新是否完成; 具体的,执行IAP程序存储区11的程序,查询APPl程序存储区13和APP2程序存储区14内的程 序代码是否完整,只要存在程序代码不完整的情况,则判定未完成更新;
[0059]若是,则查询APPl程序存储区13和APP2程序存储区14内程序的版本号,依据所述 固件版本号运行当前最新版本的APP程序;
[0060] 若否,则向MPU5或上位机6重新获取更新数据包进行固件升级;具体的,MPU5或上 位机6重新传输更新数据包时,首先更新数据包里的第一个数据包包含了当前ROM的大小以 及版本号,将大小写进状态标志;传输更新数据包时,每正确收到且往FLASH成功写进一个 字节,状态标志加1,直到状态字标志等于对应的ROM大小,判断为更新完成。
[0061] 固件升级完成后,设置所述APP2程序存储区14为当前使用的APP程序存储区12后 将当前使用的APP程序存储区12信息存储于IAP程序存储区11。
[0062] 综上所述,本实用新型提供的MCU在线升级固件的系统,通过将当前正在运行的程 序和更新后的程序存储在不同的APP程序存储器,各程序代码相互独立,不会相互干扰;更 新出现异常时,仍可正常运行旧的程序;并通过设置备份电源在掉电后一段时间内进行临 时供电,并对备份RAM写入固件升级的状态信息等应急信息,由于写入应急信息时间极短, 故在备份电源也无法供电之前可以完成。待系统重新上电后,根据备份RAM内的状态信息即 可判断固件是否更新完成,并对未更新完成的固件重新获取更新数据包进行固件升级,从 而固件升级不会受掉电影响,并且始终能够保证正常运行程序,实现可靠的固件在线升级。
[0063] 以上所述仅为本实用新型的实施例,并非因此限制本实用新型的专利范围,凡是 利用本实用新型说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领 域,均同理包括在本实用新型的专利保护范围内。
【主权项】
1. 一种MCU在线升级固件的系统,其特征在于,包括MCU、备份RAM、备份电池,所述备份 RAM与所述MCU连接,所述备份电池与所述备份RAM连接; 所述MCU的FLASH存储区包括IAP程序存储区和至少两个的APP程序存储区,所述两个的 APP程序存储区分别存储当前运行中的APP程序和更新数据包;所述备份RAM存储固件升级 的状态信息,所述状态信息包括状态标志和固件版本号。2. 根据权利要求1所述的MCU在线升级固件的系统,其特征在于,还包括掉电检测电路, 所述掉电检测电路与所述MCU连接。3. 根据权利要求1所述的MCU在线升级固件的系统,其特征在于,还包括MPU,所述MPU通 过UART传输方式与所述MCU连接。4. 根据权利要求1所述的MCU在线升级固件的系统,其特征在于,还包括上位机,所述上 位机通过UART传输方式与所述MCU连接。5. 根据权利要求1所述的MCU在线升级固件的系统,其特征在于,还包括上位机和MPU, 所述上位机通过USB传输方式与所述MPU连接,所述MPU通过UART传输方式与所述MCU连接。
【文档编号】G06F9/445GK205540695SQ201620306246
【公开日】2016年8月31日
【申请日】2016年4月13日
【发明人】高建民
【申请人】深圳市高巨创新科技开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1