镜像固件版本兼容性检测方法与流程
本技术涉及嵌入式系统固件管理,尤其涉及一种镜像固件版本兼容性检测方法。
背景技术:
1、在系统级芯片(soc)的多镜像启动系统中,通常包含多个固件镜像,例如一级引导程序(bl1)、二级引导程序(bl2)、安全运行时固件(bl31)、可信执行环境操作系统(bl32)、通用引导程序(bl33)以及内核镜像(kernel)等。这些固件镜像之间通过公共接口进行交互,例如一个固件镜像调用另一个固件镜像提供的函数或数据结构。为确保系统在启动后能够正常运行,不同固件镜像所引用的公共接口版本之间须保持相互兼容。
2、现有技术中,固件镜像之间的接口兼容性检测通常采用以下方式实现:在固件镜像的配置文件或代码中由开发者以人工方式声明其所依赖的其他固件镜像的版本号或接口版本范围,系统在构建或部署时将当前系统中各固件镜像的版本号与上述人工声明的依赖信息进行比对,若版本号满足依赖约束则判定为兼容,否则判定为不兼容。
3、上述现有技术存在以下技术问题:
4、第一,依赖信息的准确性和完整性依赖于开发者的主观判断和人工维护。在多镜像、多团队并行开发的场景下,开发者可能遗漏更新依赖声明,或错误填写版本号,导致声明的依赖关系与代码中实际引用的接口定义不一致。当公共接口发生变更时,依赖声明的更新滞后于代码的实际修改,使得版本比对结果失去可信基础。
5、第二,现有技术的兼容性判断基于版本号字符串的完全匹配或范围比较,其内在逻辑是“版本号相同或满足范围约束则兼容,版本号不同则不兼容”。然而,两个固件镜像所引用的公共接口版本号不同,并不必然意味着接口不兼容——接口版本号不同可能是由于一方版本落后于另一方,但只要落后版本与领先版本之间的接口定义未发生实质性变更(例如函数签名未改变、数据结构未调整等),调用方镜像仍可在不修改代码的情况下正常调用提供方镜像的接口。现有技术的版本号比较方式将“版本号不同”直接等同于“接口不兼容”,无法区分“版本不同但接口语义兼容”与“版本不同且接口语义不兼容”两种情形,导致大量本可正常协同工作的固件镜像组合被错误判定为不兼容。
6、综上所述,现有技术依赖人工维护的版本依赖信息,通过版本号字符串比对判断兼容性,无法基于接口的实际演进状态进行跨镜像的接口语义兼容性自动检测,且依赖声明与代码实际状态脱节,导致兼容性判断结果不可信。
技术实现思路
1、针对上述技术问题,本技术采用的技术方案为:
2、第一方面,本技术一实施例提供了一种镜像固件版本兼容性检测方法,包括:
3、步骤s201、确定第一固件镜像的第一版本为接口调用者,确定第二固件镜像的第二版本为接口提供者;
4、步骤s202、获取所述接口调用者所引用的公共接口仓库对应的提交标识,记为第一提交标识;获取所述接口提供者所引用的所述公共接口仓库对应的提交标识,记为第二提交标识;其中,所述公共接口仓库包括所有固件镜像之间交互使用的接口定义,所述公共接口仓库每次代码变更时生成提交标识,且各提交标识之间基于代码变更顺序存在时序先后关系;
5、步骤s203、获取所述接口调用者所调用的、属于所述公共接口仓库的所有接口的接口名称集合;
6、步骤s204、在接口演进数据库中,以所述第一提交标识与所述第二提交标识界定提交时序区间,查询所述接口名称集合内各个接口在所述提交时序区间内对应的全部变更记录;其中,所述接口演进数据库用于记录所述公共接口仓库中每个接口的历史变更记录,每条所述变更记录包含接口名称、所述变更记录生成时的提交标识以及用于指示是否为非兼容性变更的标记字段;
7、步骤s205、若查询到的变更记录中存在所述标记字段指示为非兼容性变更的目标变更记录,则将所述目标变更记录对应的接口确定为发生非兼容性变更的目标接口,并确定所述接口调用者与所述接口提供者不兼容;否则确定所述接口调用者与所述接口提供者兼容。
8、第二方面,本技术一实施例提供了一种镜像固件版本兼容性检测方法,包括:
9、步骤s301、获取目标固件集合,所述目标固件集合包括设备启动阶段待运行的全部固件镜像,或模拟ota升级完成后形成的整机固件镜像组合;
10、步骤s302、对所述目标固件集合中各固件镜像的版本进行两两配对,得到至少一个配对组合;
11、步骤s303、针对任一配对组合,以所述配对组合中的第一个固件镜像的版本作为接口调用者,以所述配对组合中的第二个固件镜像的版本作为接口提供者,执行第一方面所述的方法,得到第一兼容性检测结果;以所述第二个固件镜像的版本作为接口调用者,以所述第一个固件镜像的版本作为接口提供者,执行第一方面所述的方法,得到第二兼容性检测结果;若所述第一兼容性检测结果和所述第二兼容性检测结果均为兼容,则确定所述配对组合兼容,否则确定所述配对组合不兼容;
12、步骤s304、若全部配对组合均兼容,则确定所述目标固件集合兼容;否则确定所述目标固件集合不兼容。
13、第三方面,本技术一实施例提供了一种固件镜像版本号验证方法,包括:
14、获取目标固件镜像的第一版本和第二版本,所述第二版本为所述目标固件镜像在所述第一版本之前的版本;
15、获取所述第一版本所引用的公共接口仓库对应的提交标识,记为第一提交标识;获取所述第二版本所引用的公共接口仓库对应的提交标识,记为第二提交标识;其中,所述公共接口仓库包括所有固件镜像之间交互使用的接口定义,所述公共接口仓库每次代码变更时生成提交标识,且各提交标识之间基于代码变更顺序存在时序先后关系;
16、在接口演进数据库中,以所述第一提交标识与所述第二提交标识界定提交时序区间,查询所述目标固件镜像的接口在所述提交时序区间内的全部变更记录;其中,所述接口演进数据库用于记录所述公共接口仓库中每个接口的历史变更记录;每条所述变更记录包含接口名称、该变更记录生成时的提交标识、用于指示是否为非兼容性变更的标记字段以及变更操作类型;
17、根据查询到的变更记录中的标记字段以及变更操作类型,确定版本号升级要求;
18、获取所述第一版本对应的版本号和所述第二版本对应的版本号;
19、若所述第一版本的版本号相对于所述第二版本的版本号未按照所述版本号升级要求进行升级,则确定所述目标固件镜像的所述第一版本的版本号声明错误。
20、第四方面,本技术一实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述任一种方法的步骤。
21、本技术实施例提供的技术方案,至少具有如下有益效果:
22、第一,实现基于接口实际变更状态的兼容性自动检测。
23、现有技术通过版本号比较判断兼容性,无法区分“版本不同但接口兼容”与“版本不同且接口不兼容”两种情形。本技术通过确定第一固件镜像的第一版本为接口调用者、第二固件镜像的第二版本为接口提供者,明确兼容性判断的方向性;通过获取接口调用者所调用的接口名称集合,划定兼容性判断的依赖边界;进而以接口调用者与接口提供者各自引用的提交标识界定提交时序区间,在接口演进数据库中仅查询接口名称集合内各接口在时序区间内的变更记录,根据变更记录中用于指示是否为非兼容性变更的标记字段,判定接口调用者与接口提供者是否兼容。由此,当两个固件镜像版本引用的公共接口仓库版本不同时,能够精确判断接口调用者所依赖的接口在两个版本之间是否发生了实质性的非兼容变更。若接口调用者依赖的接口在两个版本之间未发生非兼容性变更(即使两个版本的版本号不同),则仍然判定为兼容。将兼容性判断的输入从“人工声明”转变为“客观事实推导”,将兼容性判断的粒度从“版本号”转变为“接口是否存在非兼容性变更”。这避免了现有技术将“版本号不同”直接等同于“接口不兼容”的误判,使得大量版本号不同但接口语义兼容的固件镜像组合能够被正确识别为兼容,从而提升了系统的升级灵活性和固件复用效率。
24、第二,兼容性判断的粒度精确到具体接口在特定版本演进区间内的变更事实,避免将无关接口的变更误判为不兼容。
25、本技术以第一提交标识与第二提交标识界定提交时序区间,并在接口演进数据库中查询接口名称集合内各个接口在该区间内的具体变更记录。由于判定依据是接口演进数据库中记录的、包含接口名称和提交标识的具体变更记录,判定粒度精确到接口在特定版本演进区间内的变更事实,避免了将无关接口的变更误判为不兼容。
26、第三,支持渐进式升级,不强制所有固件镜像同步升级至相同版本。
27、本技术以两个提交标识界定查询区间,不要求两个固件镜像版本引用相同的公共接口仓库提交标识。只要调用者所依赖的各接口在该时序区间内未发生非兼容性变更,即使两个版本引用了不同版本的公共接口仓库,仍判定为兼容。由此,各固件镜像可按照各自的开发节奏独立演进,无需强制同步升级至相同版本。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com