1.本发明涉及汽车仪表软件技术领域,特别涉及一种汽车仪表软件的安全升级方法及系统。
背景技术:2.目前国内外车厂的技术规范并没有明确提出安全升级的功能,仪表软件升级异常,导致仪表功能不正常、黑屏、花屏等现象,直接影响驾驶人员对行车信息与状态的判断;更严重的情况,仪表异常会直接影响整车其它ecu的运作,导致交通事故,威胁财产与人身安全。
3.当前判断汽车仪表的升级是否正常的方法主要有:1)是否有进度条显示升级进度;2)是否有显示升级成功提示;3)读取软件版本号进行判断;4)屏幕是否有花屏现象。这些判断方法都是通过视觉主观判断的,并没有很严谨的方法与流程保证升级正常。现有mcu中,内部ram的容量有限,升级过程中无法通过ram暂存整个升级文件的数据,收到的数据包直接会刷写进外部flash中,并没有对整个升级文件的数据进行完整性校验等操作。
4.因此,一种汽车仪表软件的安全升级方法及系统应运而生。
技术实现要素:5.本发明的发明内容在于提供一种汽车仪表软件的安全升级方法及系统,主要解决了现有的mcu中内部ram的容量有限,升级过程中无法通过ram暂存整个升级文件的数据,收到的数据包直接会刷写进外部flash中,并没有对整个升级文件的数据进行完整性校验等操作,导致无法保证汽车仪表的正常升级过程。
6.本发明提出了一种汽车仪表软件的安全升级方法,包括以下步骤:
7.s1,带有升级文件的存储设备上电;
8.s2,检测所述存储设备中升级文件的大小,并读取配置信息;
9.s3,传输所述升级文件至暂存空间;
10.s4,检验所述暂存空间的所述升级文件是否传输完成,若是则进一步判断当前帧是否为所述升级文件的最后一帧,若是则将所述暂存空间的数据迁移至外部flash对应的分区中,并清空所述暂存空间,并执行下一步,若否则认为所述升级文件数据不完全,终止升级;
11.s5,仪表mcu重启并进入升级模式,运行所述升级文件。
12.优选地,所述步骤s1~s3中的升级文件,包括有类型不同的多个bin文件,且每一类型的所述bin文件的末尾设置有校验值,且不同的所述bin文件的校验值不同;
13.所述步骤s4中,判断当前帧是否为所述升级文件的最后一帧,具体为,判断当前帧的所述校验值是否与所述升级文件中最后的bin文件的所述校验值相同,若相同则认为当前帧为所述升级文件的最后一帧,若否则认为当前帧并非所述升级文件的最后一帧。
14.优选地,所述步骤s4中,检验所述升级文件是否传输完成,具体为,以当前传输的
数据与所述升级文件的大小比值形成进度条,并查看所述进度条进行加载完成,若是则所述升级文件传输完成。
15.优选地,在所述步骤s4与步骤s5之间,设置有步骤sx,判断所述flash分区中的升级文件大小是否与所述存储设备中的升级文件大小一致,若是则传输完成并执行步骤s5,若否则返回所述步骤s2并继续读取所述配置信息。
16.优选地,所述步骤s4中的校验值为md5值。
17.本发明还提出了一种汽车仪表软件的安全升级系统,包括仪表mcu,以及分别与所述仪表mcu电性连接的usb芯片、tft显示屏、sdram以及外部flash;所述usb芯片还外接有存储设备;
18.所述存储设备,用于存储升级文件;
19.所述usb芯片,用于读取所述存储设备的升级文件大小以及配置信号;还用于将所述升级文件发送至所述仪表mcu;
20.所述仪表mcu,用于接收所述升级文件,并转存至所述sdram;还用于在所述升级文件传输期间,生成进度数据并传输至所述tft显示屏;还用于在所述升级文件传输终止后,验证所述升级文件的最后传输帧数据是否为所述升级文件的最后一帧数据;还用于在检测到所述升级文件的最后传输帧数据为所述升级文件的最后一帧数据时,将所述sdram的升级文件迁移至外部flash,并清空所述sdram;还用于在检测到所述升级文件的最后传输帧数据并非所述升级文件的最后一帧数据时,判断所述升级文件不完全,并终止升级;还用于在所述sdram的升级文件全部迁移至所述外部flash后,重启并运行所述升级文件;
21.所述tft显示屏,用于显示所述升级文件的传输进度。
22.优选地,所述升级文件,包括有类型不同的多个bin文件;
23.所述升级文件的多个bin文件的末端,均形成有不同的校验值;
24.所述仪表mcu,用于在接收到每一所述校验值时,更新自身的value值;还用于在所述升级文件传输终止后,判断所述升级文件的最后校验值是否与所述value值相等,若是则将所述sdram的升级文件迁移至外部flash,并清空所述sdram,若否则判断所述升级文件不完全,并终止升级。
25.优选地,所述tft显示屏,用于以进度条的形式显示所述升级文件的传输进度。
26.优选地,所述仪表mcu,用于校验所述外部flash中的所述升级文件大小与所述u盘中的所述升级文件大小是否一致,若是则判断升级文件传输终止。
27.优选地,所述sdram,用于接收到所述升级文件时,一部分用于暂存所述升级文件,另一部分用于加载升级进度条。
28.由上可知,应用本发明提供的技术方案可以得到以下有益效果:
29.第一,本发明提出的技术方案中采用sdram转存升级文件数据,并在升级文件校验完成后才进行外部flash的数据刷写,防止了升级过程中的数据干扰、数据丢失、数据篡改,进而保证仪表软件的安全升级;
30.第二,本发明提出的技术方案中sdram本身用于加载图像素材数据,在升级状态下,可根据其自身用途进行拓展,不需额外增加存储器即可实现安全升级,可极大地降低升级成本;
31.第三,本发明提出的技术方案中sdram具有分区划分功能,在升级状态下,能够同
时实现暂存数据,以及文字报警形式提示升级进度与升级失败原因,有助于使用者实时获取升级进度及其状态。
附图说明
32.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
33.图1为本发明实施例1中安全升级方法的流程图;
34.图2为本发明实施例2中安全升级系统的框图。
具体实施方式
35.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
36.现有的mcu中内部ram的容量有限,升级过程中无法通过ram暂存整个升级文件的数据,收到的数据包直接会刷写进外部flash中,并没有对整个升级文件的数据进行完整性校验等操作,导致无法保证汽车仪表的正常升级过程。
37.实施例1
38.如图1所示,为了解决前述问题,本实施例提出的一种汽车仪表软件的安全升级方法,其主要包括以下步骤:
39.s1,带有升级文件的存储设备上电;
40.s2,检测存储设备中升级文件的大小,并读取配置信息;
41.s3,传输升级文件至暂存空间;
42.s4,检验暂存空间的升级文件是否传输完成,若是则进一步判断当前帧是否为升级文件的最后一帧,若是则将暂存空间的数据迁移至外部flash对应的分区中,并清空暂存空间,并执行下一步,若否则认为升级文件数据不完全,终止升级;
43.s5,仪表mcu重启并进入升级模式,运行升级文件。
44.优选但不限定的是,本实施例中步骤s1中,升级文件存放在存储设备的根目录下,且通过按键触发升级操作。
45.优选但不限定的是,本实施例中步骤s2中的配置信息包括即将传输的文件大小与地址信息。
46.优选但不限定的是,本实施例中步骤s5具体为,仪表mcu重启进入boot模式,如果有升级app文件,需要对code-flash编程。
47.在本实施例中,存储设备为u盘,暂存空间为sdram。
48.更具体地,步骤s1~s3中的升级文件,包括有类型不同的多个bin文件,且每一类型的bin文件的末尾设置有校验值,且不同的bin文件的校验值不同;
49.步骤s4中,判断当前帧是否为升级文件的最后一帧,具体为,判断当前帧的校验值
是否与升级文件中最后的bin文件的校验值相同,若相同则认为当前帧为升级文件的最后一帧,若否则认为当前帧并非升级文件的最后一帧。
50.优选地,本实施例中不同bin文件的末尾的校验值为md5值,且为自动生成计算的结果。
51.优选但不限定的是,本实施例中升级文件包括有功能代码app.bin、图像素材him.bin、报警声音sound.bin等。
52.优选但不限定的是,本实施例中仪表mcu接收到各升级文件的数据后,对每包数据进行md5校验算法更新校验值value1,再把每包数据依次暂存到sdram中,本升级文件是最后一包数据时携带本文件的md5值value2,当value1与value2相等时,把sdram的暂存数据搬到外部flash中。
53.更具体地,步骤s4中,检验升级文件是否传输完成,具体为,以当前传输的数据与升级文件的大小比值形成进度条,并查看进度条是否加载完成,若是则升级文件传输完成。
54.更具体地,在步骤s4与步骤s5之间,设置有步骤sx,判断flash分区中的升级文件大小是否与存储设备中的升级文件大小一致,若是则传输完成并执行步骤s5,若否则返回步骤s2并继续读取配置信息。
55.优选但不限定的是,本实施例中sx若判断到flash分区中的升级文件大小与存储设备中的升级文件大小不一致,则存储其他文件需要升级传输。
56.实施例2
57.如图2所示,为了解决前述问题,本实施例提出了一种汽车仪表软件的安全升级系统,其主要包括仪表mcu,以及分别与仪表mcu电性连接的usb芯片、tft显示屏、sdram以及外部flash;usb芯片还外接有存储设备。
58.其中,存储设备,用于存储升级文件;usb芯片,用于读取存储设备的升级文件大小以及配置信号;还用于将升级文件发送至仪表mcu;仪表mcu,用于接收升级文件,并转存在sdram;还用于在升级文件传输期间,生成进度数据并传输至tft显示屏;还用于在升级文件传输终止后,验证升级文件的最后传输数据是否为升级文件的最后一帧数据;还用于在检测到升级文件的最后传输帧数据为升级文件的最后一帧数据时,将sdram的升级文件迁移至外部flash,并清空sdram;还用于在检测到升级文件的最后传输帧数据并非升级文件的最后一帧数据时,判断升级文件不完全,并终止升级;还用于在sdram的升级文件全部迁移至外部flash后,重启并运行升级文件;sdram,用于在升级文件传输区间,生成进度数据并传输至tft显示屏;tft显示屏,用于显示升级文件的传输进度。
59.优选地,tft显示屏,用于以进度条的形式显示升级文件的传输进度。
60.优选地,本实施例中存储设备为u盘,且升级文件存储于u盘根目录下,并根据按键启动升级流程。
61.本实施例中,sdram在仪表正常工作的运行态下,将flash素材数据加载到sdram中运行,达到更高效率的访问数据;当在仪表软件升级时,将sdram空间划分为两部分,一部分用于显示升级进度与升级提示加载区,另一部分是升级文件数据的暂存区。其中,sdram升级文件数据的暂存区必须大于每个升级文件的大小。
62.在本实施例中,外部flash的存储结构如下:图像素材在flash的0地址开始,长度为46m;声音素材在flash的0x2e00000地址开始,长度为14m;应用程序app在0x3c00000地址
开始,长度为4m。升级时,把数据暂存在sdram中,每个升级文件接收完后,进行md5完整性校验,把sdram的数据搬到外部flash中,实现了安全升级。对应地,sdram中升级提示加载区从0x2e00000地址开始,长度为18m;升级数据暂存区从0x0000000地址开始,长度为46m。
63.更具体地,升级文件,包括有类型不同的多个bin文件;升级文件中的多个bin文件的末端,均形成有不屠龙的校验值md5;仪表mcu,用于在接收到每一校验值时,更新自身的value值;还用于在升级文件传输终止后,判断升级文件的最后校验值是否与value值相等,若是则将sdram的升级文件迁移至外部flash,并清空sdram,若否则判断升级文件不完全,并终止升级。
64.在本实施例中,仪表mcu接收到各升级文件的数据后,对每包数据进行md5校验算法更新校验值value1,再把每包数据依次暂存到sdram中,本升级文件是最后一包数据时携带本文件的md5值value2,当value1与value2相等时,把sdram的暂存数据搬到外部flash中。
65.更具体地,仪表mcu,用于校验外部flash中的升级文件大小与u盘中的升级文件大小是否一致,若是则判断升级文件传输终止。
66.综上所述,本实施例1与实施例2提出的一种汽车仪表软件的安全升级方法及系统,通过调用sdram暂存升级数据,并在校验升级数据完全时才将升级数据迁移至外部flash,防止升级过程中的数据干扰、数据丢失与数据篡改,保证了仪表软件的安全升级过程。
67.以上所述的实施方式,并不构成对该技术方案保护范围的限定。任何在上述实施方式的精神和原则之内所作的修改、等同替换和改进等,均应包含在该技术方案的保护范围之内。
技术特征:1.一种汽车仪表软件的安全升级方法,其特征在于,包括以下步骤:s1,带有升级文件的存储设备上电;s2,检测所述存储设备中升级文件的大小,并读取配置信息;s3,传输所述升级文件至暂存空间;s4,检验所述暂存空间的所述升级文件是否传输完成,若是则进一步判断当前帧是否为所述升级文件的最后一帧,若是则将所述暂存空间的数据迁移至外部flash对应的分区中,并清空所述暂存空间,并执行下一步,若否则认为所述升级文件数据不完全,终止升级;s5,仪表mcu重启并进入升级模式,运行所述升级文件。2.根据权利要求1所述的一种汽车仪表软件的安全升级方法,其特征在于:所述步骤s1~s3中的升级文件,包括有类型不同的多个bin文件,且每一类型的所述bin文件的末尾设置有校验值,且不同的所述bin文件的校验值不同;所述步骤s4中,判断当前帧是否为所述升级文件的最后一帧,具体为,判断当前帧的所述校验值是否与所述升级文件中最后的bin文件的所述校验值相同,若相同则认为当前帧为所述升级文件的最后一帧,若否则认为当前帧并非所述升级文件的最后一帧。3.根据权利要求2所述的一种汽车仪表软件的安全升级方法,其特征在于:所述步骤s4中,检验所述升级文件是否传输完成,具体为,以当前传输的数据与所述升级文件的大小比值形成进度条,并查看所述进度条是否加载完成,若是则所述升级文件传输完成。4.根据权利要求1~3任一项所述的一种汽车仪表软件的安全升级方法,其特征在于:在所述步骤s4与步骤s5之间,设置有步骤sx,判断所述flash分区中的升级文件大小是否与所述存储设备中的升级文件大小一致,若是则传输完成并执行步骤s5,若否则返回所述步骤s2并继续读取所述配置信息。5.根据权利要求4所述的一种汽车仪表软件的安全升级方法,其特征在于:所述步骤s4中的校验值为md5值。6.一种汽车仪表软件的安全升级系统,其特征在于:包括仪表mcu,以及分别与所述仪表mcu电性连接的usb芯片、tft显示屏、sdram以及外部flash;所述usb芯片还外接有存储设备;所述存储设备,用于存储升级文件;所述usb芯片,用于读取所述存储设备的升级文件大小以及配置信号;还用于将所述升级文件发送至所述仪表mcu;所述仪表mcu,用于接收所述升级文件,并转存至所述sdram;还用于在所述升级文件传输终止后,验证所述升级文件的最后传输帧数据是否为所述升级文件的最后一帧数据;还用于在检测到所述升级文件的最后传输帧数据为所述升级文件的最后一帧数据时,将所述sdram的升级文件迁移至外部flash,并清空所述sdram;还用于在检测到所述升级文件的最后传输帧数据并非所述升级文件的最后一帧数据时,判断所述升级文件不完全,并终止升级;还用于在所述sdram的升级文件全部迁移至所述外部flash后,重启并运行所述升级文件;所述sdram,用于在所述升级文件传输期间,生成进度数据并传输至所述tft显示屏;所述tft显示屏,用于显示所述升级文件的传输进度。
7.根据权利要求6所述的一种汽车仪表软件的安全升级系统,其特征在于:所述升级文件,包括有类型不同的多个bin文件;所述升级文件的多个bin文件的末端,均形成有不同的校验值;所述仪表mcu,用于在接收到每一所述校验值时,更新自身的value值;还用于在所述升级文件传输终止后,判断所述升级文件的最后校验值是否与所述value值相等,若是则将所述sdram的升级文件迁移至外部flash,并清空所述sdram,若否则判断所述升级文件不完全,并终止升级。8.根据权利要求7所述的一种汽车仪表软件的安全升级系统,其特征在于:所述tft显示屏,用于以进度条的形式显示所述升级文件的传输进度。9.根据权利要求8所述的一种汽车仪表软件的安全升级系统,其特征在于:所述仪表mcu,用于校验所述外部flash中的所述升级文件大小与所述存储设备中的所述升级文件大小是否一致,若是则判断升级文件传输终止。10.根据权利要求6~9任一项所述的一种汽车仪表软件的安全升级系统,其特征在于:所述sdram,用于接收到所述升级文件时,一部分用于暂存所述升级文件,另一部分用于加载升级进度条。
技术总结本发明涉及汽车仪表软件技术领域,特别涉及一种汽车仪表软件的安全升级方法及系统,通过调用SDRAM暂存升级数据,并在校验升级数据完全时才将升级数据迁移至外部flash。本发明的提出解决了现有的MCU中内部RAM的容量有限,升级过程中无法通过RAM暂存整个升级文件的数据,收到的数据包直接会刷写进外部flash中,并没有对整个升级文件的数据进行完整性校验等操作,导致无法保证汽车仪表的正常升级过程。导致无法保证汽车仪表的正常升级过程。导致无法保证汽车仪表的正常升级过程。
技术研发人员:王卫忠 谭富民
受保护的技术使用者:惠州市德赛西威汽车电子股份有限公司
技术研发日:2022.06.23
技术公布日:2022/11/1