本发明专利技术公开了一种集成有Linux和android两系统的芯片平台的升级方法、系统及可读存储介质,Linux和android系统分别使用Linux和android分区,包括:A、将获得用于升级用的差分包进行解压,其包括对应两所述分区的文件和升级脚本文件;B、根据升级脚本文件按照分区类型对各分区逐个进行升级:对于分区类型是ubifs的类型的分区:对ubifs底下的文件根据差分包中对应的差分文件进行差分还原,差分还原出来的各个目标文件直接覆盖设备上的对应的各个需要差分还原的源文件,以完成该分区升级;对于分区类型是EMMC类型的分区:执行复制/dev目录下的设备分区文件到一临时文件tmpfile;对该tmpfile根据差分包中的单个差分文件进行差分还原得到目标文件targetfile;将targetfile复制回设备分区文件里,以完成该分区升级;C、待各个分区全部完成升级后,结束升级。
Upgrade method, system and readable storage medium of chip platform integrated with Linux and Android
【技术实现步骤摘要】
集成有Linux和android两系统的芯片平台的升级方法、系统及可读存储介质
本专利技术涉及嵌入式系统
,尤其涉及一种集成有Linux和android两系统的芯片平台的升级方法、系统及可读存储介质。
技术介绍
DMC是由Linux系统的仪表和android系统的车机集成在一个芯片平台的,共用同一个flash的平台。图1为其Flash分区表。从图1中我们可以看到,这个平台前面一部分分区是Linux的,后面一部分是Android的。而且Andriod车机部分是采用A/B备份分区的形式进行升级,即当运行在A分区时,升级B分区,反之亦然。DMC升级现有方案的流程为:当运行在A分区时,升级B分区,升级成功后重启进到到B分区,然后确保Linux部分也升级成功后,用B覆盖A。如果Linux没升级成功(也即没升级,因为Linux系统这边只要基线hash对上是一定可以升级成功的,对不上就不会去升级),则重启进入A,用A覆盖B回滚到老的版本。流程图如图2所示,现有方案的不足和缺陷:1、升级过程中需要重启3次,这对于车辆的复杂环境来说,升级过程中重启次数越多风险越大,因为任何一个环境,断电重新打火上电,都需要做状态机的记忆和恢复。2、现实流程过于复杂,而且差分包需要拆分成android和Linux两份。3、由于linux和android分开升级,所以android需要有A/B分区,以避免如果Linux没升级成功,android需要回滚的情况。这样A/B分区大增加了flash空间的消耗。由上,正是由于常规方案无法在Linux系统下去挂android的文件系统,去用bsdiff对其实现基于文件系统的差分还原,同时也无法对整块android分区进行镜像文件进行差分(bsdiff不支持阿波罗平台大分区镜像文件的差分)。所以只能选择上述的流程对Linux和android两个系统分开升级,这样才能在android的recovery小系统里面对android分区用bsdiff对其基于文件系统的差分升级,同样在linuxrecovery小系统下对linux分区用bsdiff对其分区基于文件系统的差分升级。进入各自recovery小系统都需要一次重启机器才能引导进入,同时又要考虑到两者需要同时升级成功或同时不升级,所以最终需要3次重启才能完成整个升级流程。于是带来了上述缺陷。因此,目前亟需一种集成有Linux和android两系统的芯片平台的升级方法、系统及可读存储介质,以解决或者部分解决上述技术问题。
技术实现思路
有鉴于此,本申请提供了一种集成有Linux和android两系统的芯片平台的升级方法、系统及可读存储介质,以解决或者部分解决上述技术问题。本申请提供一种集成有Linux和android两系统的芯片平台的升级方法,Linux和android系统分别使用Linux和android分区,包括:A、解压获得用于升级用的差分包,该差分包中包括对应两所述分区的文件和升级脚本文件;其中,对应android分区中的EMMC类型的分区的升级文件,在差分包中以单个差分文件的形式存在;对应Linux分区中的Ubifs类型的分区的升级文件,在差分包中是以分区内有差异的文件差分文件形式存在;B、根据升级脚本文件按照分区类型对各分区逐个进行升级:对于分区类型是ubifs的类型的分区:对ubifs底下的文件根据差分包中对应的差分文件进行差分还原,差分还原出来的各个目标文件直接覆盖设备上的对应的各个需要差分还原的源文件,以完成该分区升级;对于分区类型是EMMC类型的分区:执行复制/dev目录下的设备分区文件到一临时文件tmpfile;对该tmpfile根据差分包中的单个差分文件进行差分还原得到目标文件targetfile;将targetfile复制回设备分区文件里,以完成该分区升级;C、待各个分区全部完成升级后,结束升级。由上,本申请同时升级linux和android的分区,不需要多次重启两个系统分开升级,流程大大简化。升级的安全性、可靠性大大提高,时间大大缩短,风险也大大降低。由于同时升级linux和android而避免了常规升级中因Linux没升级成功而导致Android需要回滚的A/B分区备份的缺陷,所以大大节省了flash空间的开销。且本申请不需要将差分包拆分成android和Linux两份,只需要按照不同的分区类型进行升级即可。优选地,所述升级方法在Linuxrecovery小系统中执行。由上,本申请升级方法在Linuxrecovery小系统中执行,解决了在Linuxrecovery小系统下,同时升级linux和android的分区,而不需要多次重启两个系统分开升级。优选地,所述方法,还包括:步骤A中所述脚本文件还记录了需要升级的分区的源版本和目标版本的用于校对的hash值;步骤B前还包括:对EMMC分区,计算/dev目录下各EMMC分区的设备文件的hash值;对ubifs类型的分区,挂载后,计算其下所有文件的hash值;对于计算的各所述hash值与脚本文件中对应的源版本或目标版本hash值进行对比确定是否执行升级。优选地,所述确定是否执行升级的步骤包括至少以下之一:判断匹配目标版本hash,结束本次升级,并提升已经升级;判断匹配源版本hash,执行本次升级;判断均不匹配,结束本次升级,并提升无法升级。优选地,步骤B中,对ubifs底下的文件用bspatch进行差分还原;对tmpfile文件用xdelta3进行还原。优选地,步骤B中所述将targetfile复制回设备分区文件里前,还包括:用targetfile文件和脚本中的该分区的目标版本hash进行比较确认一致的步骤。优选地,所述升级还包括对Linux和android各自的boot和system分区进行升级。本申请还提供一种对使用集成有Linux和android两系统的芯片平台的车辆的升级方法,Linux、Android分区分别提供给车辆的仪表、车机部分使用,采用上述集成有Linux和android两系统的芯片平台的升级方法进行升级。本申请还提供一种实现上述集成有Linux和android两系统的芯片平台的升级方法的系统,包括:解压模块,用于解压获得的升级差分包,得到对应Linux和android分区的文件和升级脚本文件;android分区差分升级模块,用于对ubifs底下的文件根据差分包中对应的差分文件进行差分还原,差分还原出来的各个目标文件直接覆盖设备上的对应的各个需要差分还原的源文件,以完成该分区升级;Linux分区差分升级模块,用于执行复制/dev目录下的设备分区文件到tmpfile;对该tmpfile根据差分包中的单个差分文件进行差分还原得到targetfile;将targetfile复制回设备分区文件里,以完成该分区升级。本申请还提本文档来自技高网...
【技术保护点】
1.一种集成有Linux和android两系统的芯片平台的升级方法,Linux和android系统分别使用Linux和android分区,其特征在于,包括:/nA、将获得用于升级用的差分包进行解压,该差分包中包括对应两所述分区的文件和升级脚本文件;其中,/n对应android分区中的EMMC类型的分区的升级文件,在差分包中以单个差分文件的形式存在;对应Linux分区中的Ubifs类型的分区的升级文件,在差分包中是以分区内有差异的文件差分文件形式存在;/nB、根据升级脚本文件按照分区类型对各分区逐个进行升级:/n对于分区类型是ubifs的类型的分区:对ubifs底下的文件根据差分包中对应的差分文件进行差分还原,差分还原出来的各个目标文件直接覆盖设备上的对应的各个需要差分还原的源文件,以完成该分区升级;/n对于分区类型是EMMC类型的分区:执行复制/dev目录下的设备分区文件到一临时文件tmpfile;对该tmpfile根据差分包中的单个差分文件进行差分还原得到目标文件targetfile;将targetfile复制回设备分区文件里,以完成该分区升级;/nC、待各个分区全部完成升级后,结束升级。/n...
【技术特征摘要】
1.一种集成有Linux和android两系统的芯片平台的升级方法,Linux和android系统分别使用Linux和android分区,其特征在于,包括:
A、将获得用于升级用的差分包进行解压,该差分包中包括对应两所述分区的文件和升级脚本文件;其中,
对应android分区中的EMMC类型的分区的升级文件,在差分包中以单个差分文件的形式存在;对应Linux分区中的Ubifs类型的分区的升级文件,在差分包中是以分区内有差异的文件差分文件形式存在;
B、根据升级脚本文件按照分区类型对各分区逐个进行升级:
对于分区类型是ubifs的类型的分区:对ubifs底下的文件根据差分包中对应的差分文件进行差分还原,差分还原出来的各个目标文件直接覆盖设备上的对应的各个需要差分还原的源文件,以完成该分区升级;
对于分区类型是EMMC类型的分区:执行复制/dev目录下的设备分区文件到一临时文件tmpfile;对该tmpfile根据差分包中的单个差分文件进行差分还原得到目标文件targetfile;将targetfile复制回设备分区文件里,以完成该分区升级;
C、待各个分区全部完成升级后,结束升级。
2.根据权利要求1所述的方法,其特征在于,所述升级方法在Linuxrecovery小系统中执行。
3.根据权利要求2所述的方法,其特征在于,还包括:
步骤A中所述脚本文件还记录了需要升级的分区的源版本和目标版本的用于校对的hash值;
步骤B前还包括:
对EMMC分区,计算/dev目录下各EMMC分区的设备文件的hash值;对ubifs类型的分区,挂载后,计算其下所有文件的hash值;
对于计算的各所述hash值与脚本文件中对应的源版本或目标版本hash值进行对比确定是否执行升级。
4.根据权利要求3所述的方法,其特征在于,所述确定是否执行升级的步骤包括至少以下之一:
判断匹配目标版本hash,结束本次升级,并提升已经升级;
判断匹配源版本hash,...
【专利技术属性】
技术研发人员:韩黎光,余英杰,
申请(专利权)人:红石阳光北京科技股份有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。