一种应用程序在线升级方法、装置、设备及介质制造方法及图纸

技术编号:35876822 阅读:11 留言:0更新日期:2022-12-07 11:14
本申请提供了一种应用程序在线升级方法、装置、设备及介质。该方法包括:在接收目标应用的升级数据后,获取芯片的启动程序的存储地址值以及该升级数据请求写入闪存的第一地址值。上述启动程序的存储地址值包括该启动程序在闪存中的首端地址值和末端地址值,根据该存储地址值与升级数据请求写入闪存的地址值进行比对以确定写入该升级数据时是否会擦除所述启动程序的闪存数据。进而在确定启动程序的闪存数据不会被擦除后再根据升级数据对目标应用进行升级,以缓解应用程序在升级过程中将启用程序的闪存数据擦除破坏的问题。用程序的闪存数据擦除破坏的问题。用程序的闪存数据擦除破坏的问题。

【技术实现步骤摘要】
一种应用程序在线升级方法、装置、设备及介质


[0001]本申请实施例涉及电池管理系统
,具体涉及一种应用程序在线升级方法、装置、设备及介质。

技术介绍

[0002]目前主流的量产电动车型普遍采用了分布式的电池管理系统(Battery Management System,BMS)架构。分布式的BMS架构能较好的实现模块级和系统级的分级管理。BMS硬件厂商在生产硬件时,通常在芯片未贴片时便通过程序烧录设备对芯片烧录boot启动程序。
[0003]由于芯片的程序下载接口多隐藏在箱体内不会被引出,因而芯片中的应用程序多需通过通讯接口和boot程序进行升级。受信息传递偏差、误码率等因素的影响,升级过程中存在将写入FLASH闪存中的boot数据擦除破坏的情况,进而导致BMS无法运行。此时只能将BMS硬件返厂,然后拆壳通过程序下载接口重新烧录boot程序,造成额外的人力成本。

技术实现思路

[0004]本申请实施例提供一种应用程序在线升级方法、装置、设备及介质,用于解决应用程序在升级过程中将写入闪存中的启动数据擦除破坏的问题。
[0005]第一方面,本申请实施例提供了一种应用程序在线升级方法,所述方法包括:
[0006]响应于应用升级指示,接收目标应用的升级数据;
[0007]获取芯片的启动程序的存储地址值,以及所述升级数据请求写入闪存的第一地址值;其中,所述存储地址值包括所述启动程序的首端地址值和末端地址值;
[0008]根据所述存储地址值和所述第一地址值确定写入所述升级数据时,是否会擦除所述启动程序的闪存数据;并在确定不会擦除所述启动程序的闪存数据后,根据所述升级数据对所述目标应用进行升级。
[0009]在一些可能的实施例中,所述获取芯片的启动程序的存储地址值,包括:
[0010]根据所述芯片的启动文件确定所述启动程序的首端地址值;
[0011]在所述启动程序的主函数循环末尾创建目标函数;其中,所述目标函数用于指示读取程序计数器寄存器的值;
[0012]通过启用所述启动程序的主函数以调用所述目标函数,根据读取的程序计数器寄存器的值确定所述启动程序的末端地址值。
[0013]在一些可能的实施例中,所述方法还包括:
[0014]在调用所述目标函数时读取堆栈当前指示的地址值;
[0015]将所述地址值与预设地址值之和作为所述启动程序的末端地址值。
[0016]在一些可能的实施例中,所述获取芯片启动程序的存储地址值,包括:
[0017]对所述启动程序进行软件编译以获取所述启动程序的映射文件;
[0018]根据所述映射文件确定所述启动程序的存储地址值。
[0019]在一些可能的实施例中,所述根据所述存储地址值和所述第一地址值确定写入所述升级数据时是否会擦除所述启动程序的闪存数据,包括:
[0020]根据所述升级数据的数据长度和所述第一地址值确定第二地址值,所述第二地址值为所述升级数据写入闪存后的末端地址值;
[0021]若所述第一地址值大于所述启动程序的末端地址值,或所述第二地址值小于所述启动程序的首端地址值,则确定写入所述升级数据时不会擦除所述启动程序的闪存数据。
[0022]在一些可能的实施例中,所述根据所述升级数据对所述目标应用进行升级,包括:
[0023]根据所述第一地址值和所述第二地址值确定所述升级数据在所述闪存中对应的目标区域;
[0024]将所述目标区域内的数据擦除,并从所述第一地址值处写入所述升级数据。
[0025]第二方面,本申请实施例提供了一种应用程序在线升级装置,所述装置包括:
[0026]数据获取模块,被配置为执行响应于应用升级指示,接收目标应用的升级数据;
[0027]地址获取模块,被配置为执行获取芯片的启动程序的存储地址值,以及所述升级数据请求写入闪存的第一地址值;其中,所述存储地址值包括所述启动程序的首端地址值和末端地址值;
[0028]地址校验模块,被配置为执行根据所述存储地址值和所述第一地址值确定写入所述升级数据时,是否会擦除所述启动程序的闪存数据;并在确定不会擦除所述启动程序的闪存数据后,根据所述升级数据对所述目标应用进行升级。
[0029]在一些可能的实施例中,执行所述获取芯片的启动程序的存储地址值,所述地址获取模块被配置为:
[0030]根据所述芯片的启动文件确定所述启动程序的首端地址值;
[0031]在所述启动程序的主函数循环末尾创建目标函数;其中,所述目标函数用于指示读取程序计数器寄存器的值;
[0032]通过启用所述启动程序的主函数以调用所述目标函数,根据读取的程序计数器寄存器的值确定所述启动程序的末端地址值。
[0033]在一些可能的实施例中,所述地址获取模块还被配置为:
[0034]在调用所述目标函数时读取堆栈当前指示的地址值;
[0035]将所述地址值与预设地址值之和作为所述启动程序的末端地址值。
[0036]在一些可能的实施例中,执行所述获取芯片启动程序的存储地址值,所述地址获取模块被配置为:
[0037]对所述启动程序进行软件编译以获取所述启动程序的映射文件;
[0038]根据所述映射文件确定所述启动程序的存储地址值。
[0039]在一些可能的实施例中,执行所述根据所述存储地址值和所述第一地址值确定写入所述升级数据时是否会擦除所述启动程序的闪存数据,所述地址校验模块被配置为:
[0040]根据所述升级数据的数据长度和所述第一地址值确定第二地址值,所述第二地址值为所述升级数据写入闪存后的末端地址值;
[0041]若所述第一地址值大于所述启动程序的末端地址值,或所述第二地址值小于所述启动程序的首端地址值,则确定写入所述升级数据时不会擦除所述启动程序的闪存数据。
[0042]在一些可能的实施例中,执行所述根据所述升级数据对所述目标应用进行升级,
所述地址校验模块被配置为:
[0043]根据所述第一地址值和所述第二地址值确定所述升级数据在所述闪存中对应的目标区域;
[0044]将所述目标区域内的数据擦除,并从所述第一地址值处写入所述升级数据。
[0045]第三方面,本申请实施例提供一种电子设备,包括:
[0046]存储器,用于存储程序指令;
[0047]处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面中任一项所述的方法包括的步骤。
[0048]第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任一项所述的方法。
[0049]第五方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行第一方面任一项所述的方本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种应用程序在线升级方法,其特征在于,所述方法包括:响应于应用升级指示,接收目标应用的升级数据;获取芯片的启动程序的存储地址值,以及所述升级数据请求写入闪存的第一地址值;其中,所述存储地址值包括所述启动程序的首端地址值和末端地址值;根据所述存储地址值和所述第一地址值确定写入所述升级数据时,是否会擦除所述启动程序的闪存数据;并在确定不会擦除所述启动程序的闪存数据后,根据所述升级数据对所述目标应用进行升级。2.根据权利要求1所述的方法,其特征在于,所述获取芯片的启动程序的存储地址值,包括:根据所述芯片的启动文件确定所述启动程序的首端地址值;在所述启动程序的主函数循环末尾创建目标函数;其中,所述目标函数用于指示读取程序计数器寄存器的值;通过启用所述启动程序的主函数以调用所述目标函数,根据读取的程序计数器寄存器的值确定所述启动程序的末端地址值。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:在调用所述目标函数时读取堆栈当前指示的地址值;将所述地址值与预设地址值之和作为所述启动程序的末端地址值。4.根据权利要求1所述的方法,其特征在于,所述获取芯片启动程序的存储地址值,包括:对所述启动程序进行软件编译以获取所述启动程序的映射文件;根据所述映射文件确定所述启动程序的存储地址值。5.根据权利要求1所述的方法,其特征在于,所述根据所述存储地址值和所述第一地址值确定写入所述升级数据时是否会擦除所述启动程序的闪存数据,包括:根据所述升级数据的数据长度和所述第一地址值确定第二地址值,所述第二地址值为所述升级数据写入闪存后的末端地址值;若所述第一地址值大于所述启动程序的末端地址值,或所述第二地址值小于所述启动程序的首端...

【专利技术属性】
技术研发人员:温家辉曹乃锋薄丽丽赵宇兰芬
申请(专利权)人:中航锂电洛阳有限公司
类型:发明
国别省市:

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

1