一种嵌入式AI板底层固件升级异常自恢复方法和装置与流程

文档序号:39337392发布日期:2024-09-10 11:52阅读:9来源:国知局
一种嵌入式AI板底层固件升级异常自恢复方法和装置与流程

本发明涉及计算机,并特别涉及一种嵌入式ai板底层固件升级异常自恢复方法和装置。


背景技术:

1、在嵌入式系统下,常用的底层固件升级会包含如下四种:kernel文件的升级,ramdisk根文件的升级,dtb文件的升级,uboot文件升级。更新固件升级时会发生一些意外,比如:固件文件下载过程中意外掉电重启,固件文件写入flash过程中发生了意外掉电,又或者升级成功带有错误bug的固件,前者不会导致固件失效,但后面二种情况会有一定概率使系统异常挂起,轻则损坏需要将flash下机重烧,重则整个设备报废。

2、避免升级底层固件发生异常死机的做法有如下几种:

3、1.将底层固件在存储器空间做备份。以操作系统固件举例:在原始flash上划分2个独立的区域分别来保存操作系统文件,其中一个分区保存操作系统的备份文件。这样uboot在引导操作系统的时候,发现一个分区上的操作系统启动异常,可以切换到另外一个分区启动。uboot备份也是同理,引导uboot启动的上级bootloader程序也会判断并引导到不同的uboot分区。通常这个上级bootloader程序就是uboot spl,就是在uboot启动中多增加一个阶段:uboot spl,uboot spl阶段会引导加载uboot主程序,这样将检测、恢复uboot主程序的动作可放到了uboot spl中,当心跳报文超时后检测到启动失败,在uboot spl中切换到备份空间做恢复。

4、2.禁止底层bootloader固件(uboot)的升级。操作系统的启动过程是由uboot引导的,操作系统损坏了还可以在uboot中恢复,如果uboot损坏了,那么就会直接导致单板变砖,所以有些单板干脆直接禁止uboot所在分区flash的数据修改,禁止升级uboot。

5、本系统采用的ai单板是一个异构的ai soc单板,它包含一个arm a系列的cpu处理器和一个arm m系列的cortex m0的协处理器。在单板中cpu处理器与mcu协处理器之间共享sram和一系列的片上寄存器。本文提到的需要升级的底层固件都是在cpu处理器上运行的,协处理器上固件升级这里不做讨论。本异构ai soc系统底层引导程序采用的是atf(armtrustzone framework)的bootloader架构,它会从烧录好的norflash存储器中加载一个固定的fip格式的文件来分阶段启动,其中一个阶段为启动uboot。fip文件格式会指定一个文件区段来包含uboot固件数据。

6、arm公司的atf框架调用流程图如下图:bl33即是uboot启动。atf加载的顺序是bl1启动阶段,bl2启动阶段,bl31启动阶段,bl32启动阶段,bl33启动阶段。在bl31阶段会引导加载bl33固件即uboot,最后由uboot继续引导存储于emmc上的操作系统文件。有时升级uboot会升级到一个异常的或者flash存储区间发生数据损坏的uboot时,启动uboot的中途cpu处理器可能会挂起。在开发板上可以通过拨码开关重烧更底层固件恢复,但在正式板上会导致设备报废变砖。如何恢复这种异常状态是升级需要解决的重要问题。解决这个问题有三个难点:

7、第一个难点就是:要求选择在uboot之上的某个引导阶段对uboot的引导启动做一个控制保护。从上段介绍atf启动框架可以发现,fip格式的固件文件有其规整的boot流程,其只留下了bl33阶段给uboot,若将uboot拆分成uboot-spl和uboot-main二阶段,不太符合当前硬件启动流程。而根据atf bootloader流程,将atf-bl31阶段的程序作为uboot的上级引导程序,正好可以完美解决这个问题。

8、第二个难点就是:当uboot启动异常挂起时,上级引导程序要能发现uboot的挂起,并能自行转换cpu处理器挂起的状态。位于mcu协处理器上的异常检测程序可以与atf-bl31阶段的程序进行交互来解决第二个难点。

9、第三个难点:光从挂起的状态主动切出来还不够,还要找一个位置将损坏的原flash空间进行恢复。之前有方案提到在uboot-spl中直接切到备份uboot flash空间。但是这有一个问题,如果不做恢复,再次误烧录一次后,备份flash空间也将被损坏了。也有方案提到切到uboot后手动再次烧录到原损坏空间。


技术实现思路

1、现有技术中,检测cpu是否异常由cpu自己完成但由此带来很多问题,对此本发明采用协处理器检测cpu是否异常,并基于此提出一种嵌入式ai板底层固件升级异常自恢复方法,用于对采用atf+uboot引导的异构平台完成底层固件升级的保护;对采用atf+uboot引导的norflash中添加双uboot区段;mcu协处理器上运行检测启动的函数;实现mcu协处理器与cpu处理器之间通讯且消息掉电不丢失;mcu协处理器上能重启cpu处理器;atf接收mcu协处理器消息判断是否需要引导进出厂备份uboot-a空间做恢复;恢复引导进操作系统后,升级服务将调用emmc文件系统中保存的备份的uboot重烧uboot-b区段做恢复。

2、具体来说,针对现有技术的不足,本发明提出一种嵌入式ai板底层固件升级异常自恢复方法,其中包括:

3、步骤1,嵌入式ai板包括pcie fpga卡和异构soc芯片,该异构soc芯片包含cpu处理器和mcu协处理器;且该异构soc芯片的底层引导程序采用atf的bootloader架构;该pciefpga卡向该cpu处理器发出升级请求;

4、步骤2,该cpu处理器从该pcie fpga卡获取uboot升级文件,发起升级请求;

5、步骤3,获取该uboot升级文件的固件数据;验证下载的固件数据升级文件后烧写到该嵌入式ai板中norflash存储器的uboot-b空间;备份该固件数据至该嵌入式ai板中emmc存储器的文件系统;

6、步骤4、向该协处理器发送计时开始消息;

7、步骤5,重启该嵌入式ai板;

8、步骤6,启动atf程序,在bl31阶段,若没有检测到该mcu协处理器发送的超时消息,则该cpu处理器从该norflash uboot-b空间启动uboot引导内核启动,此时升级成功,否则执行步骤7;

9、步骤7,在bl31阶段,若检测到mcu协处理器发送过来的超时消息,则升级失败且发生异常;该cpu处理器挂起;若该cpu处理器成功启动该固件数据,则发送正常启动消息至该mcu协处理器;

10、步骤8,该协处理器上驻留着计时重启服务函数,当该计时重启服务函数超过预定时间后检查是否有来自该cpu处理器的正常启动消息,若否,则该给cpu处理器发送检测到超时消息;该计时重启服务函数计时重置;热重启cpu处理器,执行步骤9;

11、步骤9,该cpu处理器从该norflash存储器的uboot-a空间启动;读取位于该emmc存储器文件系统上的固件数据,重新烧录到norflash存储器的uboot-b空间并重启,执行该步骤5,直到该cpu处理器成功启动该固件数据。

12、所述的一种嵌入式ai板底层固件升级异常自恢复方法,其中该norflash uboot-b空间用于存储待升级的固件数据,该norflash uboot-a空间用于存储该嵌入式ai板出厂时的固件数据。

13、所述的一种嵌入式ai板底层固件升级异常自恢复方法,其中该预定时间为40秒。

14、所述的一种嵌入式ai板底层固件升级异常自恢复方法,其中该异常为该norflashuboot-b空间中固件数据损坏。

15、本发明还提出了一种嵌入式ai板底层固件升级异常自恢复装置,其中包括:

16、模块1,嵌入式ai板包括pcie fpga卡和异构soc芯片,该异构soc芯片包含cpu处理器和mcu协处理器;且该异构soc芯片的底层引导程序采用atf的bootloader架构;该pciefpga卡向该cpu处理器发出升级请求;

17、模块2,该cpu处理器从该pcie fpga卡获取uboot升级文件,发起升级请求;

18、模块3,获取该uboot升级文件的固件数据;验证下载的固件数据升级文件后烧写到该嵌入式ai板中norflash存储器的uboot-b空间;备份该固件数据至该嵌入式ai板中emmc存储器的文件系统;

19、模块4、向该协处理器发送计时开始消息;

20、模块5,重启该嵌入式ai板;

21、模块6,启动atf程序,在bl31阶段,若没有检测到该mcu协处理器发送的超时消息,则该cpu处理器从该norflash uboot-b空间启动uboot引导内核启动,此时升级成功,否则执行模块7;

22、模块7,在bl31阶段,若检测到mcu协处理器发送过来的超时消息,则升级失败且发生异常;该cpu处理器挂起;若该cpu处理器成功启动该固件数据,则发送正常启动消息至该mcu协处理器;

23、模块8,该协处理器上驻留着计时重启服务函数,当该计时重启服务函数超过预定时间后检查是否有来自该cpu处理器的正常启动消息,若否,则该给cpu处理器发送检测到超时消息;该计时重启服务函数计时重置;热重启cpu处理器,执行模块9;

24、模块9,该cpu处理器从该norflash存储器的uboot-a空间启动;读取位于该emmc存储器文件系统上的固件数据,重新烧录到norflash存储器的uboot-b空间并重启,执行该模块5,直到该cpu处理器成功启动该固件数据。

25、所述的一种嵌入式ai板底层固件升级异常自恢复装置,其中该norflash uboot-b空间用于存储待升级的固件数据,该norflash uboot-a空间用于存储该嵌入式ai板出厂时的固件数据。

26、所述的一种嵌入式ai板底层固件升级异常自恢复装置,其中该预定时间为40秒。

27、所述的一种嵌入式ai板底层固件升级异常自恢复装置,其中该异常为该norflashuboot-b空间中固件数据损坏。

28、本发明还提出了一种电子设备,其中包括所述的一种嵌入式ai板底层固件升级异常自恢复装置。

29、本发明还提出了一种存储介质,用于存储一种执行嵌入式ai板底层固件升级异常自恢复方法的计算机程序。

30、由以上方案可知,本发明的优点在于:

31、本系统方案采用在atf bl31启动阶段的代码中判断是启动正常uboot-b还是备份uboot。没有使用uboot spl的模式原因是,本嵌入式ai系统是用的安全启动的bootloader方案:atf+uboot,uboot spl无法运行在这个安全框架内。选择在atf的bl31阶段的代码中判定是否从备份uboot启动,符合当前异构平台的实际bootloader的情况;此外,uboot的数据重烧恢复将放在应用层的升级状态机中处理而不是放到bootloader自身中,在应用层处理有一个好处,可以通过文件系统访问保存在emmc上的uboot实时备份的数据,更多了一份保障。应用层的升级服务包含一个升级状态机,可以将下载,升级、恢复,重启生效等操作全自动化,自动化程度高,无需人工干预操作。

32、本方案也可以很方便的用在操作系统文件的升级中,类似于升级uboot,升级操作系统文件(kernel,ramdisk,dtb)也同样存在系统挂起的情况。在uboot中加入判断逻辑就可以方便的引导到备份操作系统,然后在升级服务状态机中恢复损坏的操作系统。方案具有良好的通用性和可移植性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1