保持通信响应的Bootloader升级方法及系统与流程

摘要: 本发明属于嵌入式系统,具体涉及一种保持通信响应的bootloader升级方法及系统。背景技术:1、随着物联网、工业控制、无人机及车辆电子信息化等领域的飞速发展,...
保持通信响应的Bootloader升级方法及系统与流程

本发明属于嵌入式系统,具体涉及一种保持通信响应的bootloader升级方法及系统。

背景技术:

1、随着物联网、工业控制、无人机及车辆电子信息化等领域的飞速发展,嵌入式设备的功能日益复杂,应用程序或固件的在线升级已经成为了一项必不可少的关键技术。bootloader作为系统上电后运行的第一段代码,负责硬件的初始化和自检功能,更重要的是后续应用程序发生版本变化的升级工作,其在线升级功能成为整个软件系统的使用和维护的关键部分。

2、作为一种改进,目前主流的bootloader在线升级方案中,大部分bootloader升级应用程序的方案都是通过硬件复位或者软件复位,从应用程序中进入bootloader程序,bootloader程序接收通信接口的应用程序后将原有的应用程序擦除,然后将新的应用程序烧写到存储空间中,处理器跳转到新的应用程序处执行。有的bootloader方案中会有一个备份空间,两个空间存放同一套应用程序,防止其中一个损坏后系统无法正常工作。有的bootloader方案采用通信总线,控制器作为主机可以向不同的节点发送不同的应用程序,使得不同节点的应用程序得到更新。综合来看,目前的bootloader在线升级中,bootloader程序下载过程中,程序可能被迫停止,进而导致关键代码得不到继续运行。

技术实现思路

1、本发明提供一种保持通信响应的bootloader升级方法及系统,目的在于解决目前的bootloader在线升级中,存在bootloader程序下载过程中,程序可能被迫停止,进而导致关键代码得不到继续运行的问题。

2、为达到上述目的,本发明采用如下技术方案:

3、本发明提供一种保持通信响应的bootloader升级方法,包括如下步骤:

4、处理器接收上位机发送的升级指令后进入boot先导程序,通过boot先导程序向上位机发送当前运行程序的存储地址,保存当前运行程序的上下文现场,并解除待更新程序区域的存储空间保护,跳转到bootloader程序执行;

5、基于当前运行程序的存储地址,上位机向处理器发送待更新程序文件;

6、通过bootloader程序接收待更新程序文件,将待更新程序文件烧写到非运行区的存储空间中并进行校验;

7、根据校验结果和待更新程序类型,恢复原程序上下文现场继续运行或者跳转到新的应用程序执行。

8、在一些实施方式中,处理器接收上位机发送的升级指令后进入boot先导程序,包括:处理器接收到升级指令后,不执行复位操作,直接从当前运行的应用程序跳转到固定存储区域的boot先导程序执行。

9、在一些实施方式中,保存当前程序的上下文现场,包括:boot先导程序将当前应用程序的寄存器状态、栈指针以及中断上下文信息保存到片外随机存取存储器的上下文存储空间中。

10、在一些实施方式中,解除待更新程序区域的存储空间保护,包括:通过配置处理器的存储器保护单元,解除对非运行区存储空间的写保护权限。

11、在一些实施方式中,上位机向处理器发送待更新程序文件,包括:上位机根据接收到的当前运行程序存储地址,确定待更新程序的目标存储地址,采用一帧数据对应一帧确认的传输方式向处理器发送包含目标地址、文件大小以及校验值的待更新程序文件。

12、在一些实施方式中,将待更新程序文件烧写到非运行区的存储空间中,包括:bootloader程序先将接收到的待更新程序文件暂存到非运行区的随机存取存储器中,擦除非运行区闪存存储空间后,将待更新程序文件烧写到所述非运行区闪存存储空间中;校验包括:bootloader程序对烧写到闪存存储空间中的待更新程序文件进行完整性校验,校验失败则向上位机发送更新失败指令。

13、在一些实施方式中,恢复原程序上下文现场继续运行,包括:当待更新程序为bootloader程序且校验通过时,处理器从bootloader程序跳转回boot先导程序,从上下文存储空间中恢复原程序的上下文现场及栈指针,返回原应用程序被打断的位置继续执行。

14、在一些实施方式中,跳转到新的应用程序执行,包括:当待更新程序为应用程序且校验通过时,处理器等待当前正在执行的中断服务程序结束后禁用全局中断,跳转到新应用程序的首地址执行,完成新应用程序的堆栈、模块及中断控制器初始化后打开全局中断。

15、在一些实施方式中,非运行区的存储空间为片内闪存或片外闪存中与当前运行程序所在区域不同的另一存储区域,采用乒乓操作方式交替存储运行程序和待更新程序。

16、本发明还提供一种保持通信响应的bootloader升级系统,用以实现上述一种保持通信响应的bootloader升级方法,包括指令跳转与预处理模块、文件下发传输模块、接收烧写校验模块以及程序调度执行模块;其中:

17、指令跳转与预处理模块,用于:处理器接收上位机发送的升级指令后进入boot先导程序,通过boot先导程序向上位机发送当前运行程序的存储地址,保存当前运行程序的上下文现场,并解除待更新程序区域的存储空间保护,跳转到bootloader程序执行;

18、文件下发传输模块,用于:基于当前运行程序的存储地址,上位机向处理器发送待更新程序文件;

19、接收烧写校验模块,用于:通过bootloader程序接收待更新程序文件,将待更新程序文件烧写到非运行区的存储空间中并进行校验;

20、程序调度执行模块,用于:根据校验结果和待更新程序类型,恢复原程序上下文现场继续运行或者跳转到新的应用程序执行。

21、与现有技术相比,本发明一种保持通信响应的bootloader升级方法及系统,具有以下有益效果:

22、本发明使处理器在升级过程中能够持续响应外设中断及自身定时器中断。本发明上位机向芯片发出一个应用程序或者bootloader程序更新指令,处理器接收到该指令后不会通过复位功能进入bootloader区,而是通过指针的跳转,将处理器的控制权从应用程序交给bootloader代码,同时处理器继续保持对原应用程序的外设中断及定时器中断的响应。一般情况下,bootloader在完成应用程序的更新之前需要软件复位或者硬件复位的支持。在bootloader更新应用程序期间,处理器仅能处理bootloader过程中需要的各种工作,原应用程序必须停止运行,应用程序的外设中断或者定时器中断等都不能够再被响应处理。本发明提出的保持中断响应的更新方式会保留处理器对原应用程序中部分中断处理能力,使得处理器在升级应用程序的过程中还能对部分外设中断或者定时器中断进行处理。本发明还能够完成仅对bootloader程序的升级操作,升级过程中保持应用程序的中断响应能力,使得处理器在bootloader程序的过程中能够对部分外设中断或者定时器中断进行处理,完成bootloader的升级工作后还能够回到应用程序中继续执行被打断的应用程序。

1.保持通信响应的bootloader升级方法,其特征在于,包括如下步骤:

2.根据权利要求1所述保持通信响应的bootloader升级方法,其特征在于,处理器接收上位机发送的升级指令后进入boot先导程序,包括:处理器接收到升级指令后,不执行复位操作,直接从当前运行的应用程序跳转到固定存储区域的boot先导程序执行。

3.根据权利要求1所述保持通信响应的bootloader升级方法,其特征在于,保存当前程序的上下文现场,包括:boot先导程序将当前应用程序的寄存器状态、栈指针以及中断上下文信息保存到片外随机存取存储器的上下文存储空间中。

4.根据权利要求1所述保持通信响应的bootloader升级方法,其特征在于,解除待更新程序区域的存储空间保护,包括:通过配置处理器的存储器保护单元,解除对非运行区存储空间的写保护权限。

5.根据权利要求1所述保持通信响应的bootloader升级方法,其特征在于,上位机向处理器发送待更新程序文件,包括:上位机根据接收到的当前运行程序存储地址,确定待更新程序的目标存储地址,采用一帧数据对应一帧确认的传输方式向处理器发送包含目标地址、文件大小以及校验值的待更新程序文件。

6.根据权利要求1所述保持通信响应的bootloader升级方法,其特征在于,将待更新程序文件烧写到非运行区的存储空间中,包括:bootloader程序先将接收到的待更新程序文件暂存到非运行区的随机存取存储器中,擦除非运行区闪存存储空间后,将待更新程序文件烧写到所述非运行区闪存存储空间中;校验包括:bootloader程序对烧写到闪存存储空间中的待更新程序文件进行完整性校验,校验失败则向上位机发送更新失败指令。

7.根据权利要求1所述保持通信响应的bootloader升级方法,其特征在于,恢复原程序上下文现场继续运行,包括:当待更新程序为bootloader程序且校验通过时,处理器从bootloader程序跳转回boot先导程序,从上下文存储空间中恢复原程序的上下文现场及栈指针,返回原应用程序被打断的位置继续执行。

8.根据权利要求1所述保持通信响应的bootloader升级方法,其特征在于,跳转到新的应用程序执行,包括:当待更新程序为应用程序且校验通过时,处理器等待当前正在执行的中断服务程序结束后禁用全局中断,跳转到新应用程序的首地址执行,完成新应用程序的堆栈、模块及中断控制器初始化后打开全局中断。

9.根据权利要求1所述保持通信响应的bootloader升级方法,其特征在于,非运行区的存储空间为片内闪存或片外闪存中与当前运行程序所在区域不同的另一存储区域,采用乒乓操作方式交替存储运行程序和待更新程序。

10.保持通信响应的bootloader升级系统,用以实现权利要求1-9任一项所述保持通信响应的bootloader升级方法,其特征在于,包括指令跳转与预处理模块、文件下发传输模块、接收烧写校验模块以及程序调度执行模块;其中: