发明名称 一种单片机固件升级方法
摘要 一种单片机固件升级法,通过将单片机的Flash进行分区,对升级前固件和升级新固件分区存储,防止了升级过程烧写Flash对升级前固件造成影响,使升级前固件不受破坏;同时,通过变量设置,用户可根据实际情况选择所需的固件,升级前固件和升级新固件切换灵活。本发明方法实现过程中,只要Flash本身不存在问题,就不存在固件升级失败,即使出现中断,上电恢复后升级也将会继续即具有断点续传功能,同时,本升级程序不会造成设备崩溃。
申请公布号 CN105278998A 申请公布日期 2016.01.27
申请号 CN201510789251.7 申请日期 2015.11.17
申请人 北京联合众为科技发展有限公司;华北计算技术研究所 发明人 聂停顺;李天万;刘子健;吴迪
分类号 G06F9/445(2006.01)I 主分类号 G06F9/445(2006.01)I
代理机构 北京理工大学专利中心 11120 代理人 仇蕾安;高燕燕
主权项 一种单片机固件升级方法,其特征在于,步骤包括:步骤一、将单片机的Flash分为Boot区、Flag区、APP1区、APP2区,Boot区用于存储单片机上电程序;Flag区用于存储升级辅助变量;APP1区和APP2区用于存储升级前固件或升级新固件;所述升级辅助变量包括bootflag变量和breakaddr变量,其中当bootflag变量的值为0时,APP1区为主程序区、APP2区为备用升级区,当bootflag变量的值为非0时,APP2区为主程序区、APP1区为备用升级区;所述breakaddr变量的值表示固件升级时Flash的位置;步骤二、单片机上电启动,检查bootflag变量的值,根据bootflag变量的值判断单片机的主程序区和备用升级区,并且跳转至主程序区执行程序;步骤三、单片机接收到升级指令后,检查breakaddr变量的值,将breakaddr变量的值填写到响应报文对应字节上,响应报文打包完毕,单片机向升级服务器发送响应报文并等待应答;步骤四、升级服务器接收到单片机发来的响应报文后,根据响应报文对应字节上的内容决定固件升级开始位置,当响应报文中对应字节内容为0时,升级服务器从升级新固件的起始位置发送升级新固件报文给单片机;当响应报文中对应字节内容为非0时,升级服务器从升级新固件的上次升级中断位置发送升级新固件报文给单片机;步骤五、单片机接收到升级新固件报文后进行差错检验,若检验结果为正确,则将接收到的固件升级报文写入到备用升级区,同时更新breakaddr变量的值,然后发送检验正确的响应报文给升级服务器;若检验结果为错误,则发送请求数据重传响应报文到升级服务器;步骤六、当升级服务器收到检验正确的响应报文时,则发送下一包升级新固件报文给单片机;当升级服务器收到请求数据重传响应报文时,则发送当前升级新固件报文给单片机;步骤七、重复步骤五和步骤六的过程,直至单片机接收到最后一包升级新固件报文并成功写入到备用升级区;此时breakaddr变量将被置0,并更新bootflag变量的值;步骤八、单片机重新启动,运行升级新固件,升级完成。
地址 100083 北京市海淀区北四环中路211号