In the embodiment of the present invention, a patch generation method is provided, which includes receiving patch source code file, in which the patch source code file is a source code file generated after modification of the original source code file, and the patch source code file contains one or more modifications with a single entry. The function of the patch assembly code file is compiled to generate the patch assembly code file, and the patch assembly code file is compiled to generate the patch target code file of a single patch channel. The embodiment of the invention also provides a patch generation device, an electronic device and a computer program product. The invention can automatically generate patches, which makes up for the defects of the traditional manual patch generation.
【技术实现步骤摘要】
补丁生成方法、装置、电子设备及计算机程序产品
本专利技术涉及计算机技术,具体地,涉及一种补丁生成方法、装置、电子设备及计算机程序产品。
技术介绍
小规模的嵌入式解决方案,通常以ARMCortex-M系列处理器为主。这一类产品,为了做到成本的极致,更加偏向以ROM作为代码的存储介质,而避免使用成本高30%左右的片上闪存。ROM版本的芯片产品在生产过程中必须烧录代码,后续使用过程中则无法继续更新;而片上闪存版本的芯片产品则可以多次擦写代码的内容。在以ROM作为代码存储器的系统方案中,由于ROM不可改写的天然特性,一旦代码中有Bug,哪怕是个很小的错误,都会给整个系统带来不可挽回的后果,甚至无法使用。为了避免因重新定制ROM所导致的巨额成本,补丁(PATCH)模块利用ARMCortex-M系列处理器的FPB(转换及断电单元:FlashPATCHandBreakpoint)单元所提供的代码重映射功能和Thumb-2指令集中灵活多样的分支指令,实现了所谓的为ROM打补丁的功能。但目前ARMCortexM系列CPU中由ARM公司标配的补丁通道数为6。该补丁生成机制的初衷是解决烧写在ROM中的代码中的偶发bug问题。对于功能较复杂的嵌入式处理器,由于设计周期短,芯片在流片前的测试不一定够充分,芯片进入客户的系统产品开发阶段后,往往发现6个补丁通道远不够用。同时,目前补丁生成是完全手动完成的。传统手动补丁生成的完成流程可参见图1所示。整个补丁流程的起点是ROM镜像,经由原始C代码通过标准的工具中的编译器产生。编译器可选用ARM公司的Keil工具链中的ARMCC或者开源的G ...
【技术保护点】
1.一种补丁生成方法,其特征在于,所述方法包括:接收补丁源代码文件,其中,所述补丁源代码文件是针对原始源代码文件进行修改后生成的源代码文件,所述补丁源代码文件中包含具有单一入口的一个或多个修改后的函数;将所述补丁源代码文件进行编译生成补丁汇编代码文件;对所述补丁汇编代码文件进行编译生成单个补丁通道的补丁目标代码文件。
【技术特征摘要】
1.一种补丁生成方法,其特征在于,所述方法包括:接收补丁源代码文件,其中,所述补丁源代码文件是针对原始源代码文件进行修改后生成的源代码文件,所述补丁源代码文件中包含具有单一入口的一个或多个修改后的函数;将所述补丁源代码文件进行编译生成补丁汇编代码文件;对所述补丁汇编代码文件进行编译生成单个补丁通道的补丁目标代码文件。2.根据权利要求1所述的方法,其特征在于,将所述补丁源代码文件进行编译生成补丁汇编代码文件的过程包括:获取原始源代码文件中所有的宏定义和类型定义;根据所述宏定义、类型定义和指定分散加载文件将所述补丁源代码文件进行编译生成补丁汇编代码文件。3.根据权利要求2所述的方法,其特征在于,将所述补丁源代码文件进行编译生成补丁汇编代码文件之前,所述方法还包括:爬取原始源代码文件中宏定义和类型定义,对爬取的宏定义和类型定义进行去重处理后,生成类型定义文件;所述获取原始源代码文件中所有的宏定义和类型定义的过程包括:从所述类型定义文件中获取原始源代码文件中所有的宏定义和类型定义。4.根据权利要求2所述的方法,其特征在于,在根据所述宏定义、类型定义和指定分散加载文件将所述补丁源代码文件进行编译生成补丁汇编代码文件之后,所述方法还包括对生成的补丁汇编代码文件进行汇编整理,所述汇编整理包括加入补丁头文件、添加对齐标记和/或加入跳转标签;所述补丁头文件用于指示补丁目标代码文件的入口地址和出口地址;所述对齐标记用于将补丁源代码文件中一个或多个修改后的函数的入口地址统一为单一入口;所述跳转标签用于指示修改后的函数之...
【专利技术属性】
技术研发人员:张亦农,邹世彬,张超,
申请(专利权)人:南京中感微电子有限公司,
类型:发明
国别省市:江苏,32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。