微控制器固件升级方法、系统、车载终端及存储介质与流程

    技术2024-12-22  45


    本技术涉及固件升级,尤其涉及一种微控制器固件升级方法、系统、车载终端及存储介质。


    背景技术:

    1、随着汽车智能网联化的高速发展,ota(over the air,空中下载技术)被广泛运用到整车各汽车ecu(electronic control unit,电子控制单元)中。通过ota技术,ecu制造商或汽车厂商可以不通过售后服务中心,而是直接将升级包通过网络传输到目标车辆的方式,实现ecu升级。而mcu(microcontroller unit,微控制器)作为ecu的中枢,承担着控制管理电子系统、数据采集、信号处理和故障诊断等重要功能,针对ecu的ota升级,其核心就是mcu固件的升级。另外,ota技术所具有的在线修复软件漏洞、快速迭代产品功能等持续提升了用户体验,但频繁的升级活动也对ota技术的可靠性提出了更高的要求。

    2、目前,mcu固件ota升级的主流方案是单分区方案,即将mcu片内的flash空间(存储器的存储空间)分为bootloader(启动引导程序)和app(应用程序)两个分区。在升级时,运行程序从app分区切换到bootloader分区中运行,在bootloader程序中,将ota平台下发的新版本app固件刷写到app分区,刷写成功后,复位mcu,从bootloader分区跳转到app分区,运行新版本固件。在单分区方案中,从传统的bootloader通过uds(unified diagnosticservices,统一诊断服务)协议刷写app固件的方式发展而来,对mcu固件架构影响较小,实现起来比较简单。但单分区方案仍存在以下缺点:1、固件升级过程中app功能不可用,升级过程对用户是“有感”的;2、升级失败后会导致app程序无法运行,即发生所谓的ecu“砖化”。


    技术实现思路

    1、鉴于以上所述现有技术的缺点,本技术公开了一种微控制器固件升级方法、系统、车载终端及存储介质,用于解决上述技术问题中至少之一。

    2、第一方面,本技术提供了一种微控制器固件升级方法,所述方法包括:预先对微控制器的存储器进行分区操作,获得多个存储区块,其中,所述存储区块包括存放固件数据的第一固件区块与第二固件区块;响应于固件升级请求,对所述存储区块进行地址匹配,从所述第一固件区块与所述第二固件区块中确定固件运行区块与固件升级区块;接收固件升级包,并利用所述存储器的驱动程序,将所述固件升级包刷写至所述固件升级区块;检测刷写结果,并根据所述刷写结果从所述固件运行区块与所述固件升级区块中确定有效固件运行区块。

    3、于本技术一实施例中,所述存储区块还包括第一校验区块与第二校验区块,所述固件升级包中包括校验数据与新版本固件数据;所述将所述固件升级包刷写至所述固件升级区块,包括:根据所述固件升级区块,从所述第一校验区块与所述第二校验区块中确定升级校验区块,其中,所述第一校验区块用于对所述第一固件区块的升级进行完整性校验,所述第二校验区块用于对所述第二固件区块的升级进行完整性校验;将所述固件升级包刷写至所述升级校验区块,以使所述升级校验区块存放所述校验数据;从所述升级校验区块中,将所述新版本固件数据刷写至所述固件升级区块。

    4、于本技术一实施例中,所述固件升级包中还包括所述新版本固件数据的文件长度;所述检测刷写结果,包括:监测所述固件升级包的刷写进程,若监测到所述固件升级包刷写结束,则根据所述文件长度回读所述固件升级区块中的数据并计算校验码;将所述校验码与所述校验数据进行比对;若所述校验码与所述校验数据比对一致,则确定刷写成功;若所述校验码与所述校验数据比对不一致,则确定刷写失败。

    5、于本技术一实施例中,所述存储区块还包括启动加载程序区块;所述根据所述刷写结果从所述固件运行区块与所述固件升级区块中确定有效固件运行区块,包括:若所述刷写结果为刷写失败,则将所述固件运行区块确定为所述有效固件运行区块;若所述刷写结果为刷写成功,则监测所述启动加载程序区块中是否存在第一跳转标志,所述第一跳转标志在刷写成功后生成;若存在所述第一跳转标志,则将所述固件升级区块确定为所述有效固件运行区块,若不存在所述第一跳转标志,则将所述固件运行区块确定为所述有效固件运行区块。

    6、于本技术一实施例中,在所述响应于固件升级请求之后,还包括:监测所述启动加载程序区块中是否存在第二跳转标志,其中,所述第二跳转标志为上次升级刷写成功生成的跳转标志或程序上电后生成的跳转标志;若存在所述第二跳转标志,则清除所述第二跳转标志。

    7、于本技术一实施例中,所述对所述存储区块进行地址匹配,从所述第一固件区块与所述第一固件区块中确定固件运行区块与固件升级区块,包括:获取固件运行的主函数地址、所述第一固件区块对应的第一地址范围与所述第二固件区块对应的第二地址范围;将所述主函数地址分别与所述第一地址范围、所述第二地址范围进行匹配,从所述第一地址范围与所述第二地址范围中确定所述主函数地址落入的目标地址范围;将所述目标地址范围对应的固件区块确定为所述固件运行区块,将另一固件区块确定为所述固件升级区块。

    8、于本技术一实施例中,所述固件升级包的确定方式,包括:接收升级平台下发的升级压缩包,并对所述升级压缩包进行解析,获得第一固件区块升级包与第二固件区块升级包,其中,所述第一固件区块升级包与所述第二固件区块升级包中包括相同的新版本固件数据与不同的校验数据,所述第一区块升级包用于对所述第一固件区块中的固件数据进行升级,所述第二区块升级包用于对所述第二固件区块中的固件数据进行升级;根据所述固件升级区块,从所述第一固件区块升级包与所述第二固件区块升级包中确定出与所述固件升级区块对应的所述固件升级包。

    9、第二方面,本技术提供了一种微控制器固件升级系统,所述系统包括:分区模块,用于预先对微控制器的存储器进行分区操作,获得多个存储区块,其中,所述存储区块包括存放固件数据的第一固件区块与第二固件区块;确定模块,用于响应于固件升级请求,对所述存储区块进行地址匹配,从所述第一固件区块与所述第二固件区块中确定固件运行区块与固件升级区块;刷写模块,用于接收固件升级包,并利用所述存储器的驱动程序,将所述固件升级包刷写至所述固件升级区块;复位模块,用于接收固件升级包,并利用所述存储器的驱动程序,将所述固件升级包刷写至所述固件升级区块。

    10、第三方面,本技术提供了一种车载终端,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得车载终端实现第一方面描述的微控制器固件升级方法。

    11、第四方面,本技术提供了一种计算机可读存储介质,其上存储有计算机程序,当计算机程序被计算机的处理器执行时,使计算机执行第一方面描述的微控制器固件升级方法。

    12、如上所述,本技术实施例提供的一种微控制器固件升级方法、系统、车载终端及存储介质,具有以下有益效果:

    13、通过预先对微控制器的存储器进行分区操作,获得多个存储区块,该存储区块包括存放固件数据的第一固件区块与第二固件区块,然后响应固件升级请求,对存储区块进行地址匹配,从第一固件区块与第二固件区块中确定固件运行区块与固件升级区块,在接收到固件升级包后,利用存储器的驱动程序,将固件升级包刷写至固件升级区块,最后根据刷写结果从固件运行区块与固件升级区块中确定有效固件运行区块,基于存储器双分区的方式进行固件升级,并利用驱动程序将固件升级包刷写至固件升级区块,而无需跳转到启动引导程序中,使得固件可以在固件升级区块中进行升级,而在固件运行区块中的程序运行不受影响,并且,在固件升级区块中刷写结束后,基于升级成功还是失败的结果,从固件运行区块与固件升级区块中确定有效固件运行区块,可以有效防止因升级失败带来的ecu砖化的问题,实现了微控制器固件的无感升级。

    14、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。


    技术特征:

    1.一种微控制器固件升级方法,其特征在于,所述方法包括:

    2.根据权利要求1所述的微控制器固件升级方法,其特征在于,所述存储区块还包括第一校验区块与第二校验区块,所述固件升级包中包括校验数据与新版本固件数据;

    3.根据权利要求2所述的微控制器固件升级方法,其特征在于,所述固件升级包中还包括所述新版本固件数据的文件长度;

    4.根据权利要求1所述的微控制器固件升级方法,其特征在于,所述存储区块还包括启动加载程序区块;

    5.根据权利要求4所述的微控制器固件升级方法,其特征在于,在所述响应于固件升级请求之后,还包括:

    6.根据权利要求1至5任一项所述的微控制器固件升级方法,其特征在于,所述对所述存储区块进行地址匹配,从所述第一固件区块与所述第一固件区块中确定固件运行区块与固件升级区块,包括:

    7.根据权利要求6所述的微控制器固件升级方法,其特征在于,所述固件升级包的确定方式,包括:

    8.一种微控制器固件升级系统,其特征在于,所述系统包括:

    9.一种车载终端,其特征在于,包括:

    10.一种计算机可读存储介质,其特征在于,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行权利要求1至7任一项所述的微控制器固件升级方法。


    技术总结
    本申请提供一种微控制器固件升级方法、系统、车载终端及存储介质,其中,该方法包括:预先对微控制器的存储器进行分区操作,获得多个存储区块,存储区块包括存放固件数据的第一固件区块与第二固件区块;响应于固件升级请求,对存储区块进行地址匹配,从第一固件区块与第二固件区块中确定固件运行区块与固件升级区块;接收固件升级包,并利用存储器的驱动程序,将固件升级包刷写至固件升级区块;检测刷写结果,并根据刷写结果从固件运行区块与固件升级区块中确定有效固件运行区块。基于存储器双分区的方式进行固件升级,并利用驱动程序将固件升级包刷写至固件升级区块,实现了微控制器固件的无感升级。

    技术研发人员:滕星宇,胡德民,徐开庭
    受保护的技术使用者:重庆赛力斯凤凰智创科技有限公司
    技术研发日:
    技术公布日:2024/10/24
    转载请注明原文地址:https://symbian.8miu.com/read-24038.html

    最新回复(0)