CN111142877B - Rom芯片补丁的接口函数及参数类型自动化提取方法、系统及存储介质 - Google Patents
Rom芯片补丁的接口函数及参数类型自动化提取方法、系统及存储介质 Download PDFInfo
- Publication number
- CN111142877B CN111142877B CN201911314765.1A CN201911314765A CN111142877B CN 111142877 B CN111142877 B CN 111142877B CN 201911314765 A CN201911314765 A CN 201911314765A CN 111142877 B CN111142877 B CN 111142877B
- Authority
- CN
- China
- Prior art keywords
- file
- information
- type
- compiled
- source code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000003860 storage Methods 0.000 title claims abstract description 15
- 230000006870 function Effects 0.000 claims abstract description 82
- 238000000605 extraction Methods 0.000 claims abstract description 37
- 238000004590 computer program Methods 0.000 claims description 10
- 238000004519 manufacturing process Methods 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 15
- 238000013507 mapping Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000007547 defect Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种ROM芯片补丁的接口函数及参数类型自动化提取方法、系统及存储介质,所述方法包括对源码文件进行编译生成编译信息,将所述编译信息保存为编译信息文件,再链接生成链接文件;基于所述编译信息文件完成ROM芯片补丁的参数类型自动化提取,生成类型文件;基于所述链接文件,完成ROM芯片补丁的接口函数自动化提取,生成接口文件。本发明能够实现自动从源码中获取参数类型和接口函数,避免补丁制作过程中的低效劳动,使能软件工程师对于补丁制作的生产效率得到成倍提升。
Description
技术领域
本发明具体涉及一种ROM芯片补丁的接口函数及参数类型自动化提取方法、系统及存储介质。
背景技术
在小规模的嵌入式解决方案中,通常以ARM Cortex M系列处理器为主,而其实现软件功能逻辑的语言一般都是采用C语言架构。为了做到成本的极致,更加偏向以ROM(Read-Only Memory)作为代码的存储代码介质。
在以ROM作为代码存储器的系统方案中,由于ROM不可改写的天然特性,一旦代码中有BUG,哪怕是个很小的错误,都会给整个系统带来不可挽回的后果,甚至无法使用。
为了避免因重新定制ROM而流片所导致的巨额物料成本,以及流片所带来的时间成本。补丁模块利用ARM Cortex-M系列处理器的FPB(Flash PATCH and Breakpoint)单元所提供的代码重映射功能和Thumb-2指令集中灵活多样的分支指令,实现了所谓的为ROM打补丁的功能。
打补丁是不能修改原来ROM里面的Code的,在上电后,程序BootLoader把补丁从FLASH中搬运到RAM指定区域。当ROM中程序执行到某个缺陷区域时(根据执行的入口地址),则直接跳转到RAM的补丁区域进行执行,当执行完成后,则直接跳转到ROM区域(补丁的返回地址)。
如图1所示,是ROM补丁通常架构下补丁的执行示意图。为了进行补丁制作并编写源代码,引入其所有涉及的ROM匹配的源码(tape-out时freeze的source code)里面接口及类型,传统而言就是在制作补丁需要用的那些接口,以及那些类型都手动的方式从原始代码中进行提取,就是制作一次补丁去查找一下,如此递归的操作。
为了实现快捷把原始代码中的“定义类型以及接口函数的地址”全部自动提取出来,一般强制地从原始代码里面提取“定义类型以及接口函数的地址”势必会造成类型前后逻辑嵌套,最后无法使用。这就要ARM CC编译器或GCC编译器进行耦合,让其在中间的做一个前置条件。使用编译器编译原始代码后,其会输出一个编译输出文件,这个文件就是整个系统中所有文件的编译顺序,也就是说,这个系统中的类型定义也是按这个方式进行嵌套的,在后面自动获取全部的“定义类型以及接口函数的地址”。
原始代码中的原始文件非常的多,以公司的ROM芯片而言,含有800以上源码文件,最后生成是一个小于768KB的BIN文件;在芯片生产时把镜像BIN文件蚀刻到ROM空间上(此操作是机械的,不可恢复的)。
ROM镜像文件一般分为代码区域与数据区域的,纯代码逻辑最后编译存储在代码区,而全局变量编译后存储在数据区域;而一般代码存储低地址上,而数据区存在高地址上(如上图0x00000~0x9FFFF为代码区,0xA0000-0xBFFFF为数据区),具体参见图2。
目前比较常用的两种传统方式有两种,直接型与间接型;
直接型:补丁的制作是在原始代码中进行的,参数类型以及接口地址的使用都是原始代码中,这样的确实非常方便的验证补丁代码的逻辑是否满足预期。但是最后补丁BIN文件的提取非常费劲,不仅很容易出错,还不易发现错误。
如图3所示,在原始代码A1中插入缺陷修正代码trap1,变形成示意图T1,这个层次去查看,一般看不出最后生成的BIN文件与tape-out时的BIN有区别,只有在T2示意图后,就能对比对差异性,代码的添加肯定会增加代码区(如果增加了全局变量,那么数据区也会增加的)。这样导致缺陷trap1使用的函数接口地址以及全局变量地址都是不对的,接下来的操作就是把此次生成的汇编提取出来,然后汇编级修改函数接口地址或全局变量的地址。操作过程非常麻烦,而且很容易出错的。
间接性:是在第一种方式上改进而来的,在修正trap1的函数code完成之后,新建工程独立编译,肯定会缺少函数调用,工程师直接上原始代码中进行查找后,复制到补丁源码中进行再次编译;如还有缺失,再行查找复制;如此反复操作至补丁能正常的编译成功。
发明内容
针对上述问题,本发明提出一种ROM芯片补丁的接口函数及参数类型自动化提取方法、系统及存储介质,能够实现自动从源码中获取参数类型和接口函数,避免补丁制作过程中的低效劳动,使能软件工程师对于补丁制作的生产效率得到成倍提升。
为了实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:
第一方面,本发明提供了一种ROM芯片补丁的接口函数及参数类型自动化提取方法,包括:
对源码文件进行编译生成编译信息,将所述编译信息保存为编译信息文件,再链接生成链接文件;
基于所述编译信息文件完成ROM芯片补丁的参数类型自动化提取,生成类型文件;
基于所述链接文件完成ROM芯片补丁的接口函数自动化提取,生成接口文件。
可选地,所述基于所述编译信息完成ROM芯片补丁的参数类型自动化提取,生成类型文件,具体包括以下步骤:
按照编译顺序获取编译信息文件中所有的编译文件,并从源码文件中获取各个编译文件的路径,形成编译文件列表;
基于所述编译文件列表中的顺序,依次获取各编译文件中包含的所有头文件,形成头文件列表;
基于设定的规则从所述头文列件表中获取所有的参数类型定义,形成类型文件。
可选地,所述基于设定的规则从所述头文件列表中获取所有的参数类型定义,形成类型文件,包括以下步骤:
基于设定的规则从所述头文件列表中获取所有的参数类型定义,并写入临时类型文件中;
对所述临时类型文件中的参数类型进行去重处理,形成最终的类型文件。
可选地,所述头文件列表的形成过程包括:
基于所述编译文件列表中的顺序,依次获取各编译文件中包含的头文件,形成临时头文件列表;
当所述临时头文件列表中的每头文件中依然嵌套有头文件时,则从所述临时头文件列表首个位置开始,递归的去查找每个头文件中包含的头文件,最后依次按顺序的插入到所述临时头文件列表中对应的位置处,形成头文件列表。
可选地,所述基于所述链接文件完成ROM芯片补丁的接口函数自动化提取,生成接口文件,具体包括以下步骤:
从所述链接文件中获取所有函数、各函数对应的地址信息和源码文件名,以及所有变量、各变量对应的地址信息和源码文件名,形成初始二维表;
按照所述初始二维表中的顺序以及源码文件名,从所述源码文件中查找所有函数的定义类型信息和参数信息,以及变量的定义类型信息,并将所述定义信息和参数信息更新至初始二维表,形成新的二维表;
根据获取到的函数指针和变量指针定义规范,重新定义所述新的二维表中所有函数和变量,形成接口文件。
可选地,在所述对源码进行编译步骤之前还包括:
对ROM芯片进行源码匹配,选择对应的源码文件。
第二方面,本发明提供了一种ROM芯片补丁的接口函数及参数类型自动化提取系统,包括:
第一生成模块,用于对源码文件进行编译生成编译信息,将所述编译信息保存为编译信息文件,再链接生成链接文件;
第二生成模块,用于基于所述编译信息文件完成ROM芯片补丁的参数类型自动化提取,生成类型文件;
第三生成模块,用于基于所述链接文件完成ROM芯片补丁的接口函数自动化提取,生成接口文件。
可选地,所述基于所述编译信息完成ROM芯片补丁的参数类型自动化提取,生成类型文件,具体包括以下步骤:
按照编译顺序获取编译信息文件中所有的编译文件,并从源码文件中获取各编译文件的路径,形成编译文件列表;
基于所述编译文件列表中的顺序,依次获取各编译文件中包含的所有头文件,形成头文件列表;
基于设定的规则从所述头文列件表中获取所有的参数类型定义,形成类型文件。
可选地,所述头文件列表的形成过程包括:
基于所述编译文件列表中的顺序,依次获取各编译文件中包含的头文件,形成临时头文件列表;
当所述临时头文件列表中的每头文件中依然嵌套有头文件时,则从所述临时头文件列表首个位置开始,递归的去查找每个头文件中包含的头文件,最后依次按顺序的插入到所述临时头文件列表中对应的位置处,形成头文件列表。
可选地,所述基于所述链接文件完成ROM芯片补丁的接口函数自动化提取,生成接口文件,具体包括以下步骤:
从所述链接文件中获取所有函数、各函数对应的地址信息和源码文件名,以及所有变量、各变量对应的地址信息和源码文件名,形成初始二维表;
按照所述初始二维表中的顺序以及源码文件名,从对应的源码文件中查找所有函数的定义类型信息和参数信息,以及变量的定义类型信息,并将所述定义信息和参数信息更新至初始二维表,形成新的二维表;
根据获取到的函数指针和变量指针定义规范,重新定义所述新的二维表中所有函数和变量,形成接口文件。
第三方面,本发明提供了计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任一项所述方法的步骤。
与现有技术相比,本发明的有益效果:
本发明能够实现自动从源码中获取参数类型和接口函数,避免补丁制作过程中的低效劳动,使能软件工程师对于补丁制作的生产效率得到成倍提升。
本发明能够实现自动化且完美地与ARMCC、GCC的工具框架完全融合,不需要对原有的工具做额外的改动。
本发明不仅适用于ARM Cortex M系列的处理器,对于任何用ROM作为代码存储的嵌入式处理器原则上都适用。
附图说明
为了使本发明的内容更容易被清楚地理解,下面根据具体实施例并结合附图,对本发明作进一步详细的说明,其中:
图1为现有技术中ROM补丁通常架构下补丁执行示意图;
图2为现有技术中ROM镜像文件的存储示意图;
图3为现有技术中插入缺陷修正代码示意图;
图4为本发明一种实施例的ROM芯片补丁的接口函数及参数类型自动化提取方法示意图;
图5为本发明一种实施例的参数类型自动化提取方法示意图;
图6为本发明一种实施例的接口函数自动化提取方法示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明的保护范围。
下面结合附图对本发明的应用原理作详细的描述。
实施例1
本发明实施例中提供了一种ROM芯片补丁的接口函数及参数类型自动化提取方法,如图4所示,具体包括以下步骤:
(1)对源码文件进行编译生成编译信息,将所述编译信息保存为编译信息文件(output.txt文件),再链接生成链接文件(xxx.map文件);在具体实施过程中,是通过ARMCC编译器或GCC编译器对源码文件进行编译;
(2)基于所述编译信息完成ROM芯片补丁的参数类型自动化提取,文件生成类型文件(Type.h文件);
(3)基于所述链接文件完成ROM芯片补丁的接口函数自动化提取,生成接口文件(API.h文件)。
在本发明实施例的一种具体实施方式中,所述基于所述编译信息完成ROM芯片补丁的参数类型自动化提取,文件生成类型文件,如图5所示,具体包括以下步骤:
按照编译顺序获取编译信息文件中所有的编译文件([*.c]文件),并从源码文件中获取各编译文件的路径,以list表形成存储,形成一张一维的编译文件列表(c_list表);
基于所述编译文件列表中的顺序,依次获取各编译文件中包含的所有[*.h]头文件,形成头文件列表(h_list表);
基于设定的规则从所述头文件列表中获取所有的参数类型定义,形成类型文件(Type.h文件),完成ROM芯片补丁的参数类型自动化提取。
具体地:所述头文件列表的形成过程包括:
基于所述编译文件列表中的顺序,依次获取各编译文件中包含的[*.h]头文件,形成临时头文件列表(临时h_list表);
当所述临时头文件列表中的每头文件中依然嵌套有头文件时,则从所述临时头文件列表首个位置开始,递归的去查找每个头文件中包含的头文件,最后依次按顺序的插入到所述临时头文件列表中对应的位置处,形成头文件列表。
在本发明实施例的一种具体实施方式中,所述基于设定的规则从所述头文件列表中获取所有的参数类型定义,形成类型文件,包括以下步骤:
基于设定的规则从所述头文件列表中获取所有的参数类型定义,并写入临时类型文件(tmp_type.h文件)中;
对所述临时类型文件中的参数类型进行去重处理,形成最终的类型文件,这个文件就是当前ROM芯片所有源码类型定义集合。
在本发明实施例的一种具体实施方式中,所述基于所述链接文件完成ROM芯片补丁的接口函数自动化提取,生成接口文件,如图6所示,具体包括以下步骤:
从所述链接文件中获取所有函数、各函数对应的地址信息和源码文件名,以及所有变量、各变量对应的地址信息和源码文件名,形成初始二维表api_table;
按照所述初始二维表api_table中的顺序以及源码文件名,从对应的源码文件中查找所有函数的定义类型信息和参数信息,以及变量的定义类型信息,并将所述定义信息和参数信息更新至初始二维表api_table,形成新的二维表api_table;
根据获取到的函数指针和变量指针定义规范,重新定义所述新的二维表api_table中所有函数和变量,形成接口文件(API.h文件)。
具体实施时,由于链接文件是一个ARM编译生成文档,其包含模块、段(入口)交叉引用、移除未使用的模块、映射符号表、内存(映射)分布、存储组成大小;
在发明中仅使用其映射符号表,它是一张二维表,其包含符号名、映射地址、占用空间尺寸、引用对象等。在本发明中仅用用符号名(其包含函数接口、全局变量名),映射地址和引用对象三项,把这三项提取出来形成一张初始api_table表;
然后再根据初始api_table表中的引用对象,去分析其是否存在引用对象所描述的*.c和*.h文件,如存在,则从*.h或者*.c中获取其函数或变量在源文件中定义的原型;如是函数接口,除了要获取去返回类型还要获取其参数类型列表;如是全局变量则获取其定义类型即可,将获得的类型和参数定义更新至初始二维表api_table,形成新的二维表api_table;
根据获取到的函数指针和变量指针定义规范,重新定义所述新的二维表api_table中所有函数接口和全局变量,形成API.h文件。
在本发明实施例的一种具体实施方式中,在所述对源码进行编译步骤之前还包括:
对ROM芯片进行源码匹配,选择对应的源码文件。
实施例2
基于与实施例1相同的发明构思,本发明实施例中提供了一种ROM芯片补丁的接口函数及参数类型自动化提取系统,包括:
第一生成模块,用于对源码文件进行编译生成编译信息,将所述编译信息保存为编译信息文件,再链接生成链接文件;
第二生成模块,用于基于编译信息文件完成ROM芯片补丁的参数类型自动化提取,生成类型文件;
第三生成模块,用于基于所述链接文件完成ROM芯片补丁的接口函数自动化提取,生成接口文件。
在本发明实施例的一种具体实施方式中,所述基于所述编译信息完成ROM芯片补丁的参数类型自动化提取,生成类型文件,具体包括以下步骤,如图5所示,具体包括以下步骤:
按照编译顺序获取编译信息文件中所有的编译文件,并从源码文件中获取各编译文件的路径,形成编译文件列表;
基于所述编译文列件表中的顺序,依次获取各编译文件中包含的所有头文件,形成头文件列表;
基于设定的规则从所述头文列件表中获取所有的参数类型定义,形成类型文件,完成ROM芯片补丁的参数类型自动化提取。
在本发明实施例的一种具体实施方式中,所述头文件列表的形成过程包括:
基于所述编译文列件表中的顺序,依次获取各编译文件中包含的头文件,形成临时头文件列表;
当所述临时头文件列表中的每头文件中依然嵌套有头文件时,则从所述临时头文件列表首个位置开始,递归的去查找每个头文件中包含的头文件,最后依次按顺序的插入到所述临时头文件列表中对应的位置处,形成头文件列表。
在本发明实施例的一种具体实施方式中,所述基于所述链接文件完成ROM芯片补丁的接口函数自动化提取,生成接口文件,如图6所示,具体包括以下步骤:
从所述链接文件中获取所有函数、各函数对应的地址信息和源码文件名,以及所有变量、各变量对应的地址信息和源码文件名,形成初始二维表;
按照所述初始二维表中的顺序以及源码文件名,从对应的源码文件中查找所有函数的定义类型信息和参数信息,以及变量的定义类型信息,并将所述定义信息和参数信息更新至初始二维表,形成新的二维表;
根据函数和变量定义,重新定义所述新的二维表中所有函数和变量,形成接口文件。
其余部分均与实施例1相同。
实施例3
基于与实施例1相同的发明构思,本发明实施例中提供了计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现实施例1中任一项所述方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (7)
1.一种ROM芯片补丁的接口函数及参数类型自动化提取方法,其特征在于,包括:
对源码文件进行编译生成编译信息,将所述编译信息保存为编译信息文件,再链接生成链接文件;
基于所述编译信息文件完成ROM芯片补丁的参数类型自动化提取,生成类型文件;
基于所述链接文件完成ROM芯片补丁的接口函数自动化提取,生成接口文件;
所述基于所述编译信息完成ROM芯片补丁的参数类型自动化提取,生成类型文件,具体包括以下步骤:
按照编译顺序获取编译信息文件中所有的编译文件,并从源码文件中获取各个编译文件的路径,形成编译文件列表;
基于所述编译文件列表中的顺序,依次获取各编译文件中包含的所有头文件,形成头文件列表;
基于设定的规则从所述头文件列表中获取所有的参数类型定义,形成类型文件;
所述基于所述链接文件完成ROM芯片补丁的接口函数自动化提取,生成接口文件,具体包括以下步骤:
从所述链接文件中获取所有函数、各函数对应的地址信息和源码文件名,以及所有变量、各变量对应的地址信息和源码文件名,形成初始二维表;
按照所述初始二维表中的顺序以及源码文件名,从对应的源码文件中查找所有函数的定义类型信息和参数信息,以及变量的定义类型信息,并将所述定义信息和参数信息更新至初始二维表,形成新的二维表;
根据获取到的函数指针和变量指针定义规范,重新定义所述新的二维表中所有函数和变量,形成接口文件。
2.根据权利要求1所述的一种ROM芯片补丁的接口函数及参数类型自动化提取方法,其特征在于:所述基于设定的规则从所述头文件列表中获取所有的参数类型定义,形成类型文件,包括以下步骤:
基于设定的规则从所述头文件列表中获取所有的参数类型定义,并写入临时类型文件中;
对所述临时类型文件中的参数类型进行去重处理,形成最终的类型文件。
3.根据权利要求2所述的一种ROM芯片补丁的接口函数及参数类型自动化提取方法,其特征在于:所述头文件列表的形成过程包括:
基于所述编译文件列表中的顺序,依次获取各编译文件中包含的头文件,形成临时头文件列表;
当所述临时头文件列表中的每头文件中依然嵌套有头文件时,则从所述临时头文件列表首个位置开始,递归的去查找每个头文件中包含的头文件,最后依次按顺序的插入到所述临时头文件列表中对应的位置处,形成头文件列表。
4.根据权利要求1所述的一种ROM芯片补丁的接口函数及参数类型自动化提取方法,其特征在于:在所述对源码进行编译步骤之前还包括:
对ROM芯片进行源码匹配,选择对应的源码文件。
5.一种ROM芯片补丁的接口函数及参数类型自动化提取系统,其特征在于,包括:
第一生成模块,用于对源码文件进行编译生成编译信息,将所述编译信息保存为编译信息文件,再链接生成链接文件;
第二生成模块,用于基于所述编译信息文件完成ROM芯片补丁的参数类型自动化提取,生成类型文件;
第三生成模块,用于基于所述链接文件完成ROM芯片补丁的接口函数自动化提取,生成接口文件;
所述基于所述编译信息完成ROM芯片补丁的参数类型自动化提取,生成类型文件,具体包括以下步骤:
按照编译顺序获取编译信息文件中所有的编译文件,并从源码文件中获取各个编译文件的路径,形成编译文件列表;
基于所述编译文件列表中的顺序,依次获取各编译文件中包含的所有头文件,形成头文件列表;
基于设定的规则从所述头文件列表中获取所有的参数类型定义,形成类型文件;
所述基于所述链接文件完成ROM芯片补丁的接口函数自动化提取,生成接口文件,具体包括以下步骤:
从所述链接文件中获取所有函数、各函数对应的地址信息和源码文件名,以及所有变量、各变量对应的地址信息和源码文件名,形成初始二维表;
按照所述初始二维表中的顺序以及源码文件名,从对应的源码文件中查找所有函数的定义类型信息和参数信息,以及变量的定义类型信息,并将所述定义信息和参数信息更新至初始二维表,形成新的二维表;
根据获取到的函数指针和变量指针定义规范,重新定义所述新的二维表中所有函数和变量,形成接口文件。
6.根据权利要求5所述的一种ROM芯片补丁的接口函数及参数类型自动化提取系统,其特征在于:所述头文件列表的形成过程包括:
基于所述编译文件列表中的顺序,依次获取各编译文件中包含的头文件,形成临时头文件列表;
当所述临时头文件列表中的每头文件中依然嵌套有头文件时,则从所述临时头文件列表首个位置开始,递归的去查找每个头文件中包含的头文件,最后依次按顺序的插入到所述临时头文件列表中对应的位置处,形成头文件列表。
7.计算机可读存储介质,其上存储有计算机程序,其特征在于:该程序被处理器执行时实现权利要求1~4中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911314765.1A CN111142877B (zh) | 2019-12-19 | 2019-12-19 | Rom芯片补丁的接口函数及参数类型自动化提取方法、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911314765.1A CN111142877B (zh) | 2019-12-19 | 2019-12-19 | Rom芯片补丁的接口函数及参数类型自动化提取方法、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111142877A CN111142877A (zh) | 2020-05-12 |
CN111142877B true CN111142877B (zh) | 2023-10-27 |
Family
ID=70518874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911314765.1A Active CN111142877B (zh) | 2019-12-19 | 2019-12-19 | Rom芯片补丁的接口函数及参数类型自动化提取方法、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111142877B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930413B (zh) * | 2020-05-22 | 2023-07-21 | 无锡中感微电子股份有限公司 | 一种补丁自动生成方法、装置及系统 |
CN113377370A (zh) * | 2021-05-18 | 2021-09-10 | 龙芯中科(西安)科技有限公司 | 一种文件处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103885810A (zh) * | 2014-03-07 | 2014-06-25 | 东莞市升力智能科技有限公司 | 基于正则表达式的Gerber文件编译器 |
WO2018072493A1 (zh) * | 2016-10-17 | 2018-04-26 | 宁德时代新能源科技股份有限公司 | 编译方法和编译系统 |
CN108108162A (zh) * | 2016-11-24 | 2018-06-01 | 腾讯科技(深圳)有限公司 | 应用程序编程接口生成方法及装置 |
CN108874438A (zh) * | 2018-06-25 | 2018-11-23 | 南京中感微电子有限公司 | 补丁生成方法、装置、电子设备及计算机程序产品 |
-
2019
- 2019-12-19 CN CN201911314765.1A patent/CN111142877B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103885810A (zh) * | 2014-03-07 | 2014-06-25 | 东莞市升力智能科技有限公司 | 基于正则表达式的Gerber文件编译器 |
WO2018072493A1 (zh) * | 2016-10-17 | 2018-04-26 | 宁德时代新能源科技股份有限公司 | 编译方法和编译系统 |
CN108108162A (zh) * | 2016-11-24 | 2018-06-01 | 腾讯科技(深圳)有限公司 | 应用程序编程接口生成方法及装置 |
CN108874438A (zh) * | 2018-06-25 | 2018-11-23 | 南京中感微电子有限公司 | 补丁生成方法、装置、电子设备及计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN111142877A (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106775723B (zh) | 基于Android平台的系统固件定制的方法和Android设备 | |
CN108874438B (zh) | 补丁生成方法、装置、电子设备及计算机存储介质 | |
AU2013290313B2 (en) | Method and system for automated improvement of parallelism in program compilation | |
CN107506219A (zh) | 一种基于Android系统的通用版本升级方法 | |
CN103984582A (zh) | 一种热更新方法和装置 | |
CN111142877B (zh) | Rom芯片补丁的接口函数及参数类型自动化提取方法、系统及存储介质 | |
US20190171426A1 (en) | Program compiler and linker, and method | |
JP2007521555A (ja) | 記憶装置に記憶されたコンテンツのバージョンを更新する方法およびシステム | |
US10248409B1 (en) | Limiting the effects of source code patches on corresponding native-code patches | |
CN110837393A (zh) | 一种固件差分升级包的制作方法及装置、可读存储介质 | |
CN108469955B (zh) | 一种基于注解的Android注入框架实现方法 | |
US20180203676A1 (en) | Removing library objects from a static library | |
US20130111442A1 (en) | Parallel development of a software system | |
CN110442371A (zh) | 一种发布代码的方法、装置、介质及计算机设备 | |
CN111125067B (zh) | 数据维护方法及装置 | |
CN111949303A (zh) | 升级包处理方法、装置、电子设备及存储介质 | |
CN109947711B (zh) | 一种对ios项目开发过程中的多语言文件自动化管理方法 | |
Yin et al. | Formal verification by reverse synthesis | |
TW201732648A (zh) | 原始碼偵錯裝置及偵錯方法 | |
US20220318005A1 (en) | Generation of software program repair explanations | |
CN112835572B (zh) | 一种依赖项目管理工具自定义引用流程的方法及设备 | |
CN111930413B (zh) | 一种补丁自动生成方法、装置及系统 | |
JP2013041546A (ja) | デバッグ支援プログラム、デバッグ支援方法及びデバッグ支援システム | |
JP5578625B2 (ja) | プログラム分析装置、プログラム分析方法、及びプログラム | |
CN115167862A (zh) | 补丁方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |