System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于串口通讯的固件更新方法及系统技术方案_技高网

一种基于串口通讯的固件更新方法及系统技术方案

技术编号:40737473 阅读:3 留言:0更新日期:2024-03-25 19:58
本发明专利技术涉及一种基于串口通讯的固件更新方法及系统,属于固件更新技术领域,解决了现有固件更新的合法性校验不足及用户固件出现异常时无法自动更新的问题。包括:S11、根据上位机周期性发送的指定信息识别串口通讯波特率,初始化嵌入式器件的串口设备;S12、嵌入式器件在预置时间内与上位机进行握手,如果握手成功,则根据接收的固件文件进行固件更新;如果握手失败,则进行固件有效性校验,当校验通过时运行用户固件,监听下发的命令且当用户固件接收到固件更新命令时,返回至步骤S11,当校验不通过时监听下发的命令,当引导程序接收到固件更新命令且次数小于阈值时,重新执行步骤S12,否则退出固件更新流程。实现了固件更新安全性和便捷性的提升。

【技术实现步骤摘要】

本专利技术涉及固件更新,尤其涉及一种基于串口通讯的固件更新方法及系统


技术介绍

1、目前,随着嵌入式器件的高速发展和普及,伺服设备日趋小型化、智能化,更新换代频繁,尤其其中的固件如果存在问题或漏洞,或对功能性能进行提升,都需要固件更新才能解决。

2、常用的固件更新方法主要有两种:通过jtag(joint testaction group,联合测试工作组)等专用调试口下载和通过引导程序bootloader更新固件。其中前者主要用于调试,需要专用的高速接口,不能进行远程升级,要更新固件需要拆卸设备,连接jtag等接口才能进行,操作繁琐;后者一般由两部分组成:引导程序bootloader和用户固件,引导程序通常不变,通过jtag等专用接口预先下载进入嵌入式器件,之后就可以通过各种外接通信手段:串口、usb、无线网络、蓝牙等,将用户固件远程下载至嵌入式设备,过程方便简单。

3、但是现有通过bootloader更新固件的方法,还存在不少缺点:1)固件更新操作合法性认证不足,很容易造成现有固件误擦除或恶意破坏;2)不能在多种情况下自动进行用户固件的更新。例如,当上电后进入用户固件的认证正常,即可以正常进入用户固件,但由于用户固件存在缺陷,无法与上位机通信,不能通过命令跳入引导程序时,就不能自动进行用户固件更新了。


技术实现思路

1、鉴于上述的分析,本专利技术实施例旨在提供一种基于串口通讯的固件更新方法及系统,用以解决现有固件更新的合法性校验不足及用户固件出现异常时无法自动更新的问题。

2、一方面,本专利技术实施例提供了一种基于串口通讯的固件更新方法,通过串口控制引导程序将用户固件更新至嵌入式器件中,引导程序中的固件更新流程包括以下步骤:

3、s11、根据上位机周期性发送的指定信息,识别出串口通讯的波特率,并根据波特率初始化嵌入式器件的串口设备;

4、s12、基于握手协议,嵌入式器件在预置时间内与上位机进行握手,得到握手结果,如果握手成功,则根据接收到的固件文件进行固件更新;如果握手失败,则进行固件有效性校验,当固件有效性校验通过时运行用户固件,监听上位机下发的命令且当用户固件接收到固件更新命令时,返回至步骤s11;当校验不通过时监听上位机下发的命令,当引导程序接收到固件更新命令且接收到固件更新命令的次数小于阈值时,重新执行步骤s12,否则,退出固件更新流程。

5、基于上述方法的进一步改进,进行固件更新,包括:当固件更新成功时,引导程序获取固件信息写入flash存储器预置地址中;当固件更新失败时,引导程序通过串口通知上位机更新失败,退出固件更新流程,当重新上电后,重新执行引导程序中的固件更新流程。

6、基于上述方法的进一步改进,当运行用户固件时,初始化嵌入式器件的串口设备,以便监听上位机下发的命令;当用户固件接收到固件更新命令时,重启嵌入式器件。

7、基于上述方法的进一步改进,根据上位机周期性发送的指定信息,识别出串口通讯的波特率,并根据波特率初始化嵌入式器件的串口设备,包括:

8、嵌入式器件的串口模块依次采用不同的波特率测试能否稳定接收到指定信息,如果能稳定接收,则将当前波特率设置给嵌入式器件;嵌入式器件给上位机返回相同的指定信息,当上位机接收到返回的指定信息后,停止周期性发送指定信息,并发送波特率识别成功消息给嵌入式器件。

9、基于上述方法的进一步改进,握手协议包括:帧头、数据类型、数据长度、数据内容和校验字,每帧数据以十六进制表示,数据内容中包括协商好的数值和固件更新key值。

10、基于上述方法的进一步改进,基于握手协议,嵌入式器件在预置时间内与上位机进行握手,得到握手结果,包括:

11、嵌入式器件接收到波特率识别成功消息后,开始握手计时并发送请求握手的消息给上位机,上位机接收后发送协商好的第一数值给嵌入式器件,嵌入式器件接收到第一数值后,发送协商好的第二数值给上位机,当上位机接收到第二数值后,发送固件更新key值给嵌入式器件,嵌入式器件接收到一致的固件更新key值,结束握手计时,得到握手时间;当握手时间小于预置时间时,握手结果是握手成功,否则握手结果是握手失败。

12、基于上述方法的进一步改进,上位机采用ymodem协议,基于串口将intel hex格式的固件文件传输给嵌入式器件,写入flash存储器预置地址中。

13、基于上述方法的进一步改进,获取固件信息,包括:

14、根据固件文件获取固件大小、固件入口地址、固件版本号和固件编译时间,采用crc32校验算法对固件文件计算出检验码,通过上位机获取更新时间。

15、基于上述方法的进一步改进,固件有效性校验包括:

16、引导程序读取flash存储器预置地址中写入的固件文件,采用crc32校验算法计算出实际校验码;

17、引导程序读取flash存储器预置地址中写入的固件信息中的校验码,得到待比对校验码,如果实际校验码与待比对校验码一致,则固件有效性校验通过,否则固件有效性校验不通过。

18、另一方面,本专利技术实施例提供了一种基于串口通讯的固件更新系统,包括:通过串口连接的上位机和嵌入式器件,嵌入式器件的flash存储器中烧录有引导程序,引导程序实现上述任一项的固件更新方法将用户固件更新至嵌入式器件中。

19、与现有技术相比,本专利技术至少可实现如下有益效果之一:

20、1、在引导程序中通过设置等待时间且在这段时间内与上位机握手成功,就能正常更新用户固件,即使握手失败,不管固件有效性校验是否通过,均提供了自动更新用户固件的机会,解决了用户固件出现异常时无法自动进行用户固件更新的问题,提高了固件更新的安全性、快速性和便捷性,简化了用户操作;

21、2、通过优化的更新流程及设置方法,定制握手过程,从而提高了认证的保密性和安全性,适用于高安全要求的系统;

22、3、整个固件更新流程只需要一个对外通信串口,不需要其它硬件接口,简化了硬件设计。

23、本专利技术中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本专利技术的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。

本文档来自技高网...

【技术保护点】

1.一种基于串口通讯的固件更新方法,其特征在于,通过串口控制引导程序将用户固件更新至嵌入式器件中,所述引导程序中的固件更新流程包括以下步骤:

2.根据权利要求1所述的基于串口通讯的固件更新方法,其特征在于,所述进行固件更新,包括:当固件更新成功时,所述引导程序获取固件信息写入Flash存储器预置地址中;当固件更新失败时,所述引导程序通过串口通知所述上位机更新失败,退出固件更新流程,当重新上电后,重新执行所述引导程序中的固件更新流程。

3.根据权利要求2所述的基于串口通讯的固件更新方法,其特征在于,当运行用户固件时,初始化所述嵌入式器件的串口设备,以便监听上位机下发的命令;当所述用户固件接收到固件更新命令时,重启所述嵌入式器件。

4.根据权利要求1所述的基于串口通讯的固件更新方法,其特征在于,所述根据上位机周期性发送的指定信息,识别出串口通讯的波特率,并根据波特率初始化所述嵌入式器件的串口设备,包括:

5.根据权利要求4所述的基于串口通讯的固件更新方法,其特征在于,所述握手协议包括:帧头、数据类型、数据长度、数据内容和校验字,每帧数据以十六进制表示,数据内容中包括协商好的数值和固件更新key值。

6.根据权利要求5所述的基于串口通讯的固件更新方法,其特征在于,所述基于握手协议,所述嵌入式器件在预置时间内与上位机进行握手,得到握手结果,包括:

7.根据权利要求2所述的基于串口通讯的固件更新方法,其特征在于,所述上位机采用YMODEM协议,基于串口将Intel HEX格式的固件文件传输给所述嵌入式器件,写入Flash存储器预置地址中。

8.根据权利要求7所述的基于串口通讯的固件更新方法,其特征在于,所述获取固件信息,包括:

9.根据权利要求8所述的基于串口通讯的固件更新方法,其特征在于,所述固件有效性校验包括:

10.一种基于串口通讯的固件更新系统,其特征在于,包括:通过串口连接的上位机和嵌入式器件,所述嵌入式器件的Flash存储器中烧录有引导程序,所述引导程序实现权利要求1至9任一项所述的固件更新方法将用户固件更新至所述嵌入式器件中。

...

【技术特征摘要】

1.一种基于串口通讯的固件更新方法,其特征在于,通过串口控制引导程序将用户固件更新至嵌入式器件中,所述引导程序中的固件更新流程包括以下步骤:

2.根据权利要求1所述的基于串口通讯的固件更新方法,其特征在于,所述进行固件更新,包括:当固件更新成功时,所述引导程序获取固件信息写入flash存储器预置地址中;当固件更新失败时,所述引导程序通过串口通知所述上位机更新失败,退出固件更新流程,当重新上电后,重新执行所述引导程序中的固件更新流程。

3.根据权利要求2所述的基于串口通讯的固件更新方法,其特征在于,当运行用户固件时,初始化所述嵌入式器件的串口设备,以便监听上位机下发的命令;当所述用户固件接收到固件更新命令时,重启所述嵌入式器件。

4.根据权利要求1所述的基于串口通讯的固件更新方法,其特征在于,所述根据上位机周期性发送的指定信息,识别出串口通讯的波特率,并根据波特率初始化所述嵌入式器件的串口设备,包括:

5.根据权利要求4所述的基于串口通讯的固件更新方法,其特征在于,所述握手协...

【专利技术属性】
技术研发人员:焦辰辉范欣林
申请(专利权)人:北京中航智科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1