【技术实现步骤摘要】
差分文件生成及固件在线升级的方法和装置
本专利技术涉及OTA升级,尤其涉及一种差分文件生成方法和装置,以及使用该差分文件进行固件在线升级的方法和装置。
技术介绍
随着物联网的发展,智能设备的种类愈加丰富。为了降低维护成本、提升用户体验,FOTA(FirmwareOver-the-Air,可被称为“固件在线升级”或“固件空中升级”)技术成为智能物联网时代的标配。随着4G、WiFi和蓝牙Mesh技术在物联网升级设备上的普及,更多设备对升级的要求日渐增高。FOTA升级过程中,由于一次传输的数据大小(比如,不超过250字节)和嵌入式系统的限制,更多采用增量升级方案。在增量升级中,如果差分包过大,需要更多的传输次数和更大的存储空间,容易导致升级失败。为此,需要一种能够进一步降低升级包大小,有效提升升级成功率的方案。
技术实现思路
有鉴于此,本专利技术提出了一种差分文件升级方案,该方案针对源代码修改导致函数编译后大小变化,从而影响地址相关指令的问题,通过使得修改后的函数编译二进制码与原函数的长度保持一 ...
【技术保护点】
1.一种差分文件生成方法,包括:/n对源代码中的特定函数进行代码修改;/n对修改的代码进行编译以生成二进制代码;/n基于所述特定函数的修改后二进制代码,生成差分文件,其中,从所述差分文件恢复的替换代码与所述特定函数的修改前二进制代码大小相同。/n
【技术特征摘要】
1.一种差分文件生成方法,包括:
对源代码中的特定函数进行代码修改;
对修改的代码进行编译以生成二进制代码;
基于所述特定函数的修改后二进制代码,生成差分文件,其中,从所述差分文件恢复的替换代码与所述特定函数的修改前二进制代码大小相同。
2.如权利要求1所述的方法,其中,基于所述特定函数的修改后二进制代码,生成差分文件包括:
生成包括与所述特定函数的修改前二进制代码大小相同的替换代码的差分文件,所述替换代码能够执行所述修改后的特定函数的至少部分或全部功能。
3.如权利要求2所述的方法,其中,所述差分文件是仅包括所述替换代码和偏移相关指令的二进制文件。
4.如权利要求2所述的方法,其中,所述替换代码包括用于将所述特定函数的修改后二进制代码填充至与所述特定函数的修改前二进制代码长度相同的空指令代码。
5.如权利要求1所述的方法,其中,基于所述特定函数的修改后二进制代码,生成差分文件包括:
比较所述特定函数的修改后二进制代码与所述特定函数的修改前二进制代码的长度大小;
在所述特定函数的修改后二进制代码长度小于所述特定函数的修改前二进制代码长度的情况下,进行空指令填充操作使得从所述差分文件恢复的替换代码与所述特定函数的修改前二进制代码长度相同;以及
基于空指令填充操作后的所述特定函数的修改后二进制代码生成差分文件。
6.如权利要求5所述的方法,其中,进行空指令填充操作使得从所述差分文件恢复的替换代码与所述特定函数的修改前二进制代码长度相同包括如下至少一项:
在修改后的特定函数的源代码之后填充空指令以使得编译得到的填充后二进制代码与所述特定函数的修改前二进制代码长度相同;
在特定函数的修改后二进制代码之后填充空指令直至与所述特定函数的修改前二进制代码长度相同;
针对编译过程中的中间代码填充空指令以使得编译得到的填充后二进制代码与所述特定函数的修改前二进制代码长度相同;以及
针对修改后的特定函数的源代码、编译过程中的中间代码或特定函数的修改后二进制代码添加填充空指令的指令,以使得所述空指令填充操作后的所述特定函数的修改后二进制代码在所述升级设备上基于所述填充空指令的指令而被填充至与所述特定函数的修改前二进制代码长度相同。
7.如权利要求5所述的方法,其中,基于所述特定函数的修改后二进制代码,生成差分文件还包括:
在所述特定函数的修改后二进制代码长度大于所述特定函数的修改前二进制代码长度的情况下,将修改后的特定函数进一步划分为主函数以及被所述主函数调用的附加函数,其中,划分主函数和附加函数以使得主函数编译得到的二进制代码长度小于等于所述特定函数的修改前二进制代码长度;
在主函数的二进制代码长度小于所述特定函数的修改前二进制代码长度的情况下,针对所述主函数填充空指令以使得所述主函数的填充后二进制代码长度与所述特定函数的修改前二进制代码长度相同;
使用所述主函数的填充后二进制代码长度作为替换代码以及所述附加函数的二进制代码作为附加代码,生成差分文件。
8.如权利要求7所述的方法,其中,所述差分文件中还包括用于将所述附加代码追加到升级设备上的代码段后的偏移相关指令。
9.如权利要求1所述的方法,其中,所述差分文件是从编译的ELF文件中提取的仅针对所述特定函数的bin文件或其压缩包。
10.如权利要求9所述的方法,其中,所述差分文件包括多份替换指令及其各自的偏移相关指令,其中每份替换指令针对多个修改后的特定函数中的一个特定函数。
11.一种FOTA(固件在线升级)方法,包括:
获取如权利要求1-10中任一项所述的差分文件;以及
使用从所述差分文件恢复的替换代码覆盖特定函数的修改前二进制代码所占据的相同物理存储空间。
12.如权利要求11所述的方法,其中,所述差分文件包括对应于主函数二进制代码的替换代码、被所述主函数引用的附加函数的附加代码以及用于将附加代码追加至指定位置的偏移相关指令,其中所述主函数和所述附加函数共同用于实现修改后的特定函数的功能,并且所述方法还包括:
基于所述差分文件中包含的偏移相关指令,将所述附加代码追加至固件代码段之后...
【专利技术属性】
技术研发人员:罗嵩,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛;KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。