一种车载软件升级的方法与流程

文档序号:18475086发布日期:2019-08-20 20:54阅读:2755来源:国知局
一种车载软件升级的方法与流程

本发明涉及车载电子领域,特别涉及一种车载软件升级的方法。



背景技术:

如果想给车上的ecu更新软件,瓶颈在于can的传输速率与数据包的大小,假如can的速率以500kbps(62.5kb/s)为例,以20%带宽利用率计算,就是12.5kb/s,如果升级包大小为44mb,使用can传输的时间:44mb/12.5kb/s≈3604秒≈1小时,1个小时不管对于用户还是4s店,都太不能接受,在can的速率一定的情况下,如何减少升级包的大小和改善升级方案,减少升级的时间,是急需解决的一个问题。



技术实现要素:

本发明实施例的目的在于提供一种车载软件升级的方法,可以缩短软件升级时间。

本发明实施例提供的一种车载软件升级的方法,包括:

向mcu请求版本号;

根据mcu版本号匹配更新的差分文件包版本;

读取更新的差分文件包并校验所述差分文件包是否完整;

如果存在至少两个更新的所述差分文件包,则将所有差分文件包组合成一个差分文件组合包;

将所述差分文件包或差分文件组合包转换成预定格式,并发送给所述mcu;

所述mcu将所述差分文件包或差分文件组合包发送给soc;

由所述soc读取所述差分文件包或差分文件组合包,并完成升级。

可选地,在根据mcu版本号匹配更新的差分文件包版本之前,还包括:

判断更新的升级包文件类型,所述文件类型包括mcu升级包、旧升级包、更新的所述差分文件包。

可选地,所述差分文件的生成,包括:

对比新升级文件与旧版本文件,生成打补丁命令、目录及更新的方法脚本;

将生成的打补丁命令、目录及更新的方法脚本打包成压缩文件;

使用差分文件工具制作成所述差分文件;

生成所述差分文件校验码。

可选地,使用xdelta3制作所述打补丁命令。

可选地,使用bz2制作压缩文件。

可选地,请求版本号包括:

所述soc根据所述mcu请求生成soc版本号,并将所述soc版本号反馈给所述mcu,所述mcu根据soc版本号生成mcu版本号并反馈给版本号请求端。

可选地,所述mcu与soc通过spi通信,所述mcu通过can协议与车机通信。

可选地,所述soc进行文件升级包括:

写入差分升级标志,更新软件标志位,重启并进入安全模式;

安全模式支持识别所述差分文件包或差分文件组合包,如果为差分文件组合包需要拆分成差分文件包;

校验所述差分文件包是否完整;

分别提取压缩文件,调用打补丁命令,运行方法脚本,完成软件更新。

可选地,如需更新所述mcu,将所述mcu的升级包复制至所述soc的目录。

由上可见,应用本实施例技术方案,由于采用差分升级的方案可以缩短软件升级时间,既兼容以往的整包升级方法,又增加新的差分包的升级方法。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种车载软件升级的方法流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例:

ecu(electroniccontrolunit,电子控制单元)产品包括mcu(microcontrollerunit,微控制单元)与soc(systemonchip,片上系统),所述mcu与soc通过spi通信,所述mcu通过can协议跟汽车其它模块通信。所述mcu软件支持can转输文件至soc,soc升级软件支持与mcu交互,获取can传送的数据流,本实施例提供一种车载软件升级的方法,包括:

向mcu请求版本号,包括:所述soc根据所述mcu请求生成soc版本号,并将所述soc版本号反馈给所述mcu,所述mcu根据soc版本号生成mcu版本号并反馈给版本号请求端;

根据mcu版本号匹配更新的差分文件包版本;

读取更新的差分文件包并校验所述差分文件包是否完整;

如果存在至少两个更新的所述差分文件包,则将所有差分文件包组合成一个差分文件组合包;

将所述差分文件包或差分文件组合包转换成预定格式,并发送给所述mcu;

所述mcu将所述差分文件包或差分文件组合包发送给soc;

由所述soc读取所述差分文件包或差分文件组合包,并完成升级。

可以但不限于,如图1所示,在一个实施例中:

1、差分文件的生成:

如版本号:sw_dabcdef_160801(old)tosw_dabcdef_160808(new)

1.1对比new与old的如下文件差异生成xdelta3patch、list.txt文件、preinst.sh、postinst.sh,xdelta3是一种优秀的、被广泛使用的差量更新算法,

差分管理的文件:

dtb:是dts被dtc编译后的二进制格式的devicetree描述,可由linux内核解析,rootfs是linux系统中的根文件系统,zimage为内核的一种映像压缩文件,radio.bin为mcu的升级包。

1.2将生成的patch文件、list.txt和更新的方法脚本打包成x.tar.bz2,tar.bz2是一种linux压缩包。

1.3diff工具制作成如下“diff格式”

1.4生成md5sum。

差分数据包小,使用xdelta3制作patch,并使用bz2压缩,减少can数据传输。

2、升级包的处理:

2.1判断文件类型:

如果为s19格式,s0字段为radio.bin,则进行can升级mcu。

如果为s19格式,s0字段为其他字符,则为旧的更新方式,支持转输文件。

如果为diff格式,前面4个byte为字符串“ccdd”,表示为新方案的更新包。

可见,部分兼容旧的can升级方案,pc端工具通过s0字段确定是否旧的升级包。

2.2读取机器的版本号

根据机器的版本号匹配diff包的版本。

如:机器版本为a,如果存在file1.diff:a->bfile2.diff:b->c,则说明机器可以更新至c版本。

2.3md5sum检验“diff格式”包是否完整。

2.4如果存在多个可以更新的diff文件,则将其组合成一个。

如:file1.diff与file2.diff将组合成如下“diff组合格式”

将“diff格式”或“diff组合格式”转换成s19格式,magic_key放在s0字段,其他内容放在s3字段。启动与radio交互,转输数据,同旧方案的传输方式。

3、mcu软件处理:

3.1提供获取软件版本号的接口。

3.2提供支持直接can升级mcu的功级。

3.3提供数据传输协议与接口can-->mcu-->spi。

4、soc处理:

4.1将s0与s3字段的内容的内容写入指定的文件。

4.2设备更新软件标志位,重启并进入failsafe模式。

4.3failsafe处理,failsafe支持识别“diff格式”,tar.bz2包,xdelata3的patch,同时完软件更新。

4.3.1读取数据头,判断aabb为“diff组合格式”,ccdd为“diff格式”。

4.3.2如果为“diff组合格式”,需要拆分成“diff格式”。

4.3.3md5sum检验“diff格式”包是否完整。

4.3.4分别提取x.tar.bz2。

4.3.5运行preinst.sh与postinst.sh(调用xdelta3处patch)。

4.3.6如需要更新mcu软件(radio.bin),将mcu软件(radio.bin)复制至soc的目录。

4.3.7完成更新后设置成功标志,重启。

本专利描述了一种软件升级方法,可以缩短ecu的软件升级时间,既兼容以往的整包升级方法,又增加新的差分包的升级方法,通过本方案,软件升级包可以控制在1mb以内,实际测试的can传输速度:5.6kb/s,传输1mb数据:1mb/5.6kb/s≈182秒≈3分钟。

以上所述的实施方式,并不构成对该技术方案保护范围的限定。任何在上述实施方式的精神和原则之内所作的修改、等同替换和改进等,均应包含在该技术方案的保护范围之内。

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