CN110659088B - 一种嵌入式环境下程序扩展的方法及系统 - Google Patents
一种嵌入式环境下程序扩展的方法及系统 Download PDFInfo
- Publication number
- CN110659088B CN110659088B CN201910896537.3A CN201910896537A CN110659088B CN 110659088 B CN110659088 B CN 110659088B CN 201910896537 A CN201910896537 A CN 201910896537A CN 110659088 B CN110659088 B CN 110659088B
- Authority
- CN
- China
- Prior art keywords
- library function
- program
- function
- lower computer
- file
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- 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
- G06F8/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种嵌入式环境下程序扩展的方法及系统,所述方法包括以下步骤:S1:在上位机编写扩展程序时,选择该扩展程序需要使用到相关库函数;S2:上位机从下位机查询获得相关库函数在该下位机中的绝对入口地址;S3:扩展程序引用相关库函数的绝对入口地址,上位机对扩展程序进行编译,生成BIN格式可执行文件;S4:上位机将BIN格式可执行文件以通讯的方式下发到下位机,下位机在收到扩展程序可执行文件后,完成扩展程序的固化存储,并将扩展程序拷贝到其预定的物理内存区间;S5:下位机对扩展程序的BIN格式可执行文件进行连接加载,运行扩展程序,当遇到所调用的相关库函数时,根据相关库函数的绝对入口地址直接调用执行。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种嵌入式环境下程序扩展的方法及系统。
背景技术
组态编程软件用于工业自动化控制领域的数据采集、监视控制与过程控制,用户可通过组态编程软件编写控制逻辑组态程序(以下称为组态程序)和对下位机控制器运行时环境的功能扩展程序(以下称为扩展程序),下载到控制器,由控制器来实现所需的控制功能。在使用组态编程软件对控制器进行功能程序扩展时,扩展程序可能会涉及到对控制器中已有库函数的调用,但由于组态编程软件与控制器属于各自独立的软件系统,组态编程软件通常不包含控制器中的库函数代码或者存储库函数在控制器可执行映像中的实际地址,无法直接对控制器中的库函数进行正常的使用,针对此问题,可参考的方法包括静态链接和动态链接两种。
静态链接方法,预先将控制器中可能被扩展程序使用的库函数编译成多个独立的目标文件,并关联到组态编程软件中,扩展程序调用所需的库函数,编译时将库函数所在的目标文件链接到最终生成的BIN格式可执行文件中,如果有多个扩展程序都调用了相同的库函数,则需要将库函数所在的目标文件链接到每一个扩展程序的BIN格式可执行文件中,最终下载到控制器。此方法生成的BIN格式可执行文件由于包含了库函数的实际代码,相应的增加了文件的大小。小型或者微型控制器的内存资源十分有限,通过这种静态链接方法生成的可执行文件会浪费其本就紧缺的内存资源。另外,控制器中原本存储着的库函数的实际代码也未被充分利用,当多个扩展程序的BIN格式可执行文件下载到控制器后,控制器内相当于存储了多份功能相同的函数代码。
动态链接方法,需要将待链接的程序编译成可重定位ELF格式文件,保存在控制器持久存储介质中,控制器运行待链接的程序时,内核程序需要读取并加载ELF文件,执行符号重定位。ELF文件内的程序被映射到控制器可执行映像地址空间内,可被控制器运行时程序调用。动态链接方法增加控制器内核程序的复杂度,增大了系统开销。尽管采用了地址空间映射方式,控制器内存中仍然存留了一份冗余的库函数代码。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种嵌入式环境下程序扩展的方法及系统,其技术方案如下:
一种嵌入式环境下程序扩展的方法,包括以下步骤:
S1:在上位机编写扩展程序时,从已知的下位机库函数列表中选择该扩展程序需要使用到相关库函数;所述相关库函数是指:从已知的下位机库函数列表中选择的该扩展程序需要使用到的一个或多个库函数;
S2:上位机对下位机发起通讯,从下位机查询获得相关库函数在该下位机中的绝对入口地址;
S3:扩展程序以函数指针方式引用相关库函数的绝对入口地址,上位机对扩展程序进行编译,生成扩展程序的B1N格式可执行文件;
S4:上位机将扩展程序的BIN格式可执行文件以通讯的方式下发到下位机,下位机在收到扩展程序可执行文件后,完成扩展程序的固化存储,并将扩展程序拷贝到其预定的物理内存区间;
S5:下位机对扩展程序的BIN格式可执行文件进行连接加载,运行扩展程序,当遇到所调用的相关库函数时,根据扩展程序内已编译的相关库函数的绝对入口地址直接调用执行。
可选地,所述步骤S1还包括:
根据下位机中的库函数创建配置文件,根据配置文件创建库函数列表,同时生成符号转换文件;
所述配置文件至少包括库函数相关宏定义、数据类型定义和函数指针类型定义信息;
所述库函数列表包括下位机中可被使用的全部库函数的接口,用于待扩展程序调用;
所述符号转换文件包含全部库函数接口的符号,和与其对应的唯一编码。
可选地,所述步骤S2进一步包括:
上位机启动预编译操作,如下:
S21:查询使用的相关库函数接口;
S22:根据所述符号转换文件将相关库函数接口转换为与其对应的唯一编码;
S23:生成查询相关库函数地址的报文;
S24:调用通讯接口下发该报文到下位机;
S25:接收由下位机返回的相关库函数地址信息,该地址信息指相关库函数在下位机中的绝对入口地址;
S26:将查询到的每个相关库函数的绝对入口地址添加到对应的库函数地址宏定义中;
S27:若获取相关库函数地址信息失败,则停止操作,同时报错。
可选地,步骤S26还包括:
当所有的相关库函数绝对入口地址均获取成功后,上位机根据配置文件以及编写的扩展程序生成扩展程序的源文件和头文件,将相关库函数接口以函数指针的方式在头文件中进行定义。
可选地,步骤S3还包括:
上位机通过内置的编译器对导出的源文件和头文件进行编译,生成BIN格式可执行文件,再以通讯的方式将扩展程序的BIN格式可执行文件下载到下位机。
一种嵌入式环境下程序扩展的系统,包括:
库函数选择模块,用于在上位机编写扩展程序时,从已知的下位机库函数列表中选择该扩展程序需要使用到相关库函数;所述相关库函数是指:从已知的下位机库函数列表中选择的该扩展程序需要使用到的一个或多个库函数;
库函数绝对地址获取模块,用于对下位机发起通讯,并从下位机查询获得相关库函数在该下位机中的绝对入口地址;
BIN格式可执行文件生成模块,用于在上位机对扩展程序进行编译时生成扩展程序的B1N格式可执行文件,其中扩展程序以函数指针的方式引用相关库函数的绝对入口地址;
扩展程序存储模块,用于接收上位机以通讯的方式发送的扩展程序的BIN格式可执行文件,完成扩展程序的固化存储,并将扩展程序拷贝到下位机预定的物理内存区间;
扩展程序运行模块,用于对扩展程序的BIN格式可执行文件进行连接加载,运行扩展程序,当遇到所调用的相关库函数时,根据扩展程序内已编译的相关库函数的绝对入口地址直接调用执行。
可选地,所述库函数选择模块还包括:
配置文件生成子模块,用于根据下位机中的库函数创建配置文件,
库函数列表生成子模块,用于根据配置文件创建库函数列表,同时生成符号转换文件;
所述配置文件至少包括库函数相关宏定义、数据类型定义和函数指针类型定义信息;
所述库函数列表包括下位机中可被使用的全部库函数的接口,用于待扩展程序调用;
所述符号转换文件包含全部库函数接口的符号,和与其对应的唯一编码。
可选地,所述库函数绝对地址获取模块包括:
库函数接口查询子模块,用于查询使用的相关库函数接口;
编码转换子模块,用于根据所述符号转换文件将相关库函数接口转换为与其对应的唯一编码;
报文生成子模块,用于生成查询相关库函数地址的报文;
报文下发子模块,用于调用通讯接口下发该报文到下位机;
库函数地址信息获取子模块,用于接收由下位机返回的相关库函数地址信息,该地址信息指相关库函数在下位机中的绝对入口地址;
库函数地址信息添加子模块,用于将查询到的每个相关库函数的绝对入口地址添加到对应的库函数地址宏定义中;
报错子模块,用于在获取相关库函数地址信息失败时停止操作,同时报错。
可选地,所述库函数绝对地址获取模块还包括:
函数指针定义子模块,用于当所有的相关库函数绝对入口地址均获取成功后,根据配置文件以及编写的扩展程序生成扩展程序的源文件和头文件,将相关库函数接口以函数指针的方式在头文件中进行定义。
可选地,BIN格式可执行文件生成模块还包括:
编译子模块,用于通过上位机内置的编译器对导出的源文件和头文件进行编译,生成BIN格式可执行文件,再以通讯的方式将扩展程序的BIN格式可执行文件下载到下位机。
与现有技术相比,本发明具有如下的有益效果:
本发明的技术方案中,当上位机需要对不同下位机进行程序扩展的时候,不需要提前准备好下位机中所有库函数的符号表信息,而是以通讯的方式从下位机中查询获取相关库函数的绝对入口地址。从而减少了上位机的程序复杂度,避免了维护不同版本下位机符号表的工作量,有利于实现上下位机版本的兼容。
本发明的技术方案中,扩展程序以函数指针的方式,引用相关库函数的绝对入口地址,无需链接下位机映像文件,即可在上位机完成编译与符号定位,生成BIN格式可执行文件。并且以引用相关库函数绝对入口地址的方式,调用相关库函数,减小了扩展程序的BIN格式可执行文件大小,节省了下位机的程序空间。
与一般静态链接程序的方法相比,本发明提供一种嵌入式环境下扩展程序的方法,在上位机组态编程软件预编译阶段,根据扩展程序中调用的相关库函数,向下位机控制器查询获取相关库函数的绝对入口地址,并将查询到的相关库函数绝对入口地址以函数指针的方式在扩展程序中进行引用,最终通过上位机组态编程软件内置的编译器,对扩展程序进行编译,生成BIN格式可执行文件。此方法生成的BIN格式可执行文件仅包含相关库函数在下位机控制器中的绝对入口地址,无实际代码,减小了BIN格式可执行文件的大小。并且当多个扩展程序需要调用相同的库函数时,不需要像静态链接那样,将库函数所在的目标文件链接到每一个可执行文件中。当下载到下位机控制器中时,可减小下位机控制器存储空间的使用,节省控制器的资源。
相比于一般的动态链接方法,本发明提供的技术方案,当下位机控制器运行扩展程序中的相关库函数时,不需要执行动态链接加载过程,仅根据相关库函数的绝对入口地址直接跳转到下位机控制器中相应的代码段执行即可,使程序的执行效率更高,降低了下位机控制器的系统开销,并且充分利用了下位机控制器中已有的库函数。并且不需要提供可重定位的ELF文件,也不需要对ELF文件进行动态加载和动态解析,相比于动态链接方法,降低了下位机的系统开销。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明具体实施例一种嵌入式环境下程序扩展的方法的流程图;
图2是本发明具体实施例步骤S2中的预编译操作的流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
如图1,一种嵌入式环境下程序扩展的方法,包括以下步骤:
S1:在上位机编写扩展程序时,从已知的下位机库函数列表中选择该扩展程序需要使用到相关库函数;所述相关库函数是指:从已知的下位机库函数列表中选择的该扩展程序需要使用到的一个或多个库函数;
S2:上位机对下位机发起通讯,从下位机查询获得相关库函数在该下位机中的绝对入口地址;
S3:扩展程序以函数指针方式引用相关库函数的绝对入口地址,上位机对扩展程序进行编译,生成扩展程序的BIN格式可执行文件;
S4:上位机将扩展程序的BIN格式可执行文件以通讯的方式下发到下位机,下位机在收到扩展程序可执行文件后,完成扩展程序的固化存储,并将扩展程序拷贝到其预定的物理内存区间;
S5:下位机对扩展程序的BIN格式可执行文件进行连接加载,运行扩展程序,当遇到所调用的相关库函数时,根据扩展程序内已编译的相关库函数的绝对入口地址直接调用执行。
其中,所述步骤S1还包括:
根据下位机中的库函数创建配置文件,根据配置文件创建库函数列表,同时生成符号转换文件;
所述配置文件至少包括库函数相关宏定义、数据类型定义和函数指针类型定义信息;
所述库函数列表包括全部相关库函数的接口,用于待扩展程序调用;该述库函数列表不包括下位机库函数的绝对入口地址,也不包括库函数的实际代码。
所述符号转换文件包含下位机中可被使用的全部库函数接口的符号,和与其对应的唯一编码。
其中,在所述步骤S2中,在完成扩展程序编写后,上位机开始获取相关库函数在下位机中的绝对入口地址。由于不同的下位机上相关库函数的入口地址并不完全一样,上位机对下位机发起通讯,从下位机查询获得相关库函数在该下位机中的绝对入口地址。如图2,上述过程为一个预编译操作,其进一步包括:
S21:查询使用的相关库函数接口;
S22:根据所述符号转换文件将相关库函数接口转换为与其对应的唯一编码;
S23:生成查询相关库函数地址的报文;
S24:调用通讯接口下发该报文到下位机;
S25:接收由下位机返回的相关库函数地址信息,该地址信息指相关库函数在下位机中的绝对入口地址;
S26:将查询到的每个相关库函数的绝对入口地址添加到对应的库函数地址宏定义中;
S27:若获取相关库函数地址信息失败,则停止操作,同时报错。
其中,步骤S26还包括:
当所有的相关库函数绝对入口地址均获取成功后,上位机根据配置文件以及编写的扩展程序生成扩展程序的源文件和头文件,将相关库函数接口以函数指针的方式在头文件中进行定义。
对应上述步骤中的源文件和头文件,所述步骤S3还包括:
上位机通过内置的编译器对导出的源文件和头文件进行编译,生成BIN格式可执行文件,再以通讯的方式将扩展程序的BIN格式可执行文件下载到下位机。
其中,所述上位机与下位机之前的通讯过程可以是以太网、串口、JTAG仿真调试接口等任何一种方式。
对应上述方法,本实施例还提出了一种嵌入式环境下程序扩展的系统,包括:
库函数选择模块,用于在上位机编写扩展程序时,从已知的下位机库函数列表中选择该扩展程序需要使用到相关库函数;
库函数绝对地址获取模块,用于对下位机发起通讯,并从下位机查询获得相关库函数在该下位机中的绝对入口地址;
BIN格式可执行文件生成模块,用于在上位机对扩展程序进行编译时生成扩展程序的BIN格式可执行文件,其中扩展程序以函数指针的方式引用相关库函数的绝对入口地址;
扩展程序存储模块,用于接收上位机以通讯的方式发送的扩展程序的BIN格式可执行文件,完成扩展程序的固化存储,并将扩展程序拷贝到下位机预定的物理内存区间;
扩展程序运行模块,用于对扩展程序的BIN格式可执行文件进行连接加载,运行扩展程序,当遇到所调用的相关库函数时,根据扩展程序内已编译的相关库函数的绝对入口地址直接调用执行。
其中,所述库函数选择模块还包括:
配置文件生成子模块,用于根据下位机中的库函数创建配置文件,
库函数列表生成子模块,用于根据配置文件创建库函数列表,同时生成符号转换文件;
所述配置文件至少包括库函数相关宏定义、数据类型定义和函数指针类型定义信息;
所述库函数列表包括全部相关库函数的接口,用于待扩展程序调用;
所述符号转换文件包含下位机中可被使用的全部库函数接口的符号,和与其对应的唯一编码。
其中,所述库函数绝对地址获取模块还包括:
库函数接口查询子模块,用于查询使用的相关库函数接口;
编码转换子模块,用于根据所述符号转换文件将相关库函数接口转换为与其对应的唯一编码;
报文生成子模块,用于生成查询相关库函数地址的报文;
报文下发子模块,用于调用通讯接口下发该报文到下位机;
库函数地址信息获取子模块,用于接收由下位机返回的相关库函数地址信息,该地址信息指相关库函数在下位机中的绝对入口地址;
库函数地址信息添加子模块,用于将查询到的每个相关库函数绝对入口地址添加到对应的库函数地址宏定义中;
报错子模块,用于在获取相关库函数地址信息失败时停止操作,同时报错。
其中,所述库函数绝对地址获取模块还包括:
函数指针定义子模块,用于当所有的相关库函数绝对入口地址均获取成功后,根据配置文件以及编写的扩展程序生成扩展程序的源文件和头文件,将相关库函数接口以函数指针的方式在头文件中进行定义。
其中,所述BIN格式可执行文件生成模块还包括:
编译子模块,用于通过上位机内置的编译器对导出的源文件和头文件进行编译,生成BIN格式可执行文件,再以通讯的方式将扩展程序的BIN格式可执行文件下载到下位机。
在具体实施中,在预编译阶段,上位机也可不查询扩展程序中使用到的相关库函数,而是直接组装查询库函数列表中所有库函数地址的报文,下发到下位机控制器,获取到全部库函数的入口地址后,生成一个临时文件进行保存,当扩展程序调用了某一个相关库函数时,根据生成的临时文件,将相关库函数的入口地址添加到库函数地址的宏定义中,再通过函数指针对库函数入口地址进行引用,最后进行编译生成BIN格式可执行文件。此方法同样可以完成下位机控制器的功能程序扩展,但此方法在每一次预编译阶段都会导致上位机必须向下位机控制器查询全部库函数的入口地址信息,使编译的时间变长,且扩展程序中未用到的库函数并不需要获取其函数入口地址信息。
本实施例技术方案的特点在于,当上位机需要对不同下位机进行程序扩展的时候,不需要提前准备好下位机中所有库函数的符号表信息,而是以通讯的方式从下位机中查询获取相关库函数的绝对入口地址。避免了维护不同版本下位机符号表的工作量,有利于实现上下位机版本的兼容。扩展程序以函数指针的方式,引用相关库函数的绝对入口地址,无需链接下位机映像文件,即可在上位机完成编译与符号定位,生成BIN格式可执行文件。并且,以引用相关库函数绝对入口地址的方式,调用相关库函数,减小了扩展程序的BIN格式可执行文件大小,节省了下位机的程序空间。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (6)
1.一种嵌入式环境下程序扩展的方法,其特征在于,包括以下步骤:
S1:在上位机编写扩展程序时,从已知的下位机库函数列表中选择该扩展程序需要使用到相关库函数;所述相关库函数是指:从已知的下位机库函数列表中选择的该扩展程序需要使用到的一个或多个库函数;
S2:上位机对下位机发起通讯,从下位机查询获得相关库函数在该下位机中的绝对入口地址;
S3:扩展程序以函数指针方式引用相关库函数的绝对入口地址,上位机对扩展程序进行编译,生成扩展程序的BIN格式可执行文件;
S4:上位机将扩展程序的BIN格式可执行文件以通讯的方式下发到下位机,下位机在收到扩展程序可执行文件后,完成扩展程序的固化存储,并将扩展程序拷贝到其预定的物理内存区间;
S5:下位机对扩展程序的BIN格式可执行文件进行连接加载,运行扩展程序,当遇到所调用的相关库函数时,根据扩展程序内已编译的相关库函数的绝对入口地址直接调用执行;
所述步骤S1还包括:
根据下位机中的库函数创建配置文件,根据配置文件创建库函数列表,同时生成符号转换文件;
所述配置文件至少包括库函数相关宏定义、数据类型定义和函数指针类型定义信息;
所述库函数列表包括下位机中可被使用的全部库函数的接口,用于待扩展程序调用;
所述符号转换文件包含全部库函数接口的符号,和与其对应的唯一编码;
所述步骤S2进一步包括:
上位机启动预编译操作,如下:
S21:查询使用的相关库函数接口;
S22:根据所述符号转换文件将相关库函数接口转换为与其对应的唯一编码;
S23:生成查询相关库函数地址的报文;
S24:调用通讯接口下发该报文到下位机;
S25:接收由下位机返回的相关库函数地址信息,该地址信息指相关库函数在下位机中的绝对入口地址;
S26:将查询到的每个相关库函数的绝对入口地址添加到对应的库函数地址宏定义中;
S27:若获取相关库函数地址信息失败,则停止操作,同时报错。
2.如权利要求1所述的方法,其特征在于,步骤S26还包括:
当所有的相关库函数绝对入口地址均获取成功后,上位机根据配置文件以及编写的扩展程序生成扩展程序的源文件和头文件,将相关库函数接口以函数指针的方式在头文件中进行定义。
3.如权利要求2所述的方法,其特征在于,步骤S3还包括:
上位机通过内置的编译器对导出的源文件和头文件进行编译,生成BIN格式可执行文件,再以通讯的方式将扩展程序的BIN格式可执行文件下载到下位机。
4.一种嵌入式环境下程序扩展的系统,其特征在于,包括:
库函数选择模块,用于在上位机编写扩展程序时,从已知的下位机库函数列表中选择该扩展程序需要使用到相关库函数;所述相关库函数是指:从已知的下位机库函数列表中选择的该扩展程序需要使用到的一个或多个库函数;
库函数绝对地址获取模块,用于对下位机发起通讯,并从下位机查询获得相关库函数在该下位机中的绝对入口地址;
BIN格式可执行文件生成模块,用于在上位机对扩展程序进行编译时生成扩展程序的BIN格式可执行文件,其中扩展程序以函数指针方式引用相关库函数的绝对入口地址;
扩展程序存储模块,用于接收上位机以通讯的方式发送的扩展程序的BIN格式可执行文件,完成扩展程序的固化存储,并将扩展程序拷贝到下位机预定的物理内存区间;
扩展程序运行模块,用于对扩展程序的BIN格式可执行文件进行连接加载,运行扩展程序,当遇到所调用的相关库函数时,根据扩展程序内已编译的相关库函数的绝对入口地址直接调用执行;
所述库函数选择模块还包括:
配置文件生成子模块,用于根据下位机中的库函数创建配置文件,
库函数列表生成子模块,用于根据配置文件创建库函数列表,同时生成符号转换文件;
所述配置文件至少包括库函数相关宏定义、数据类型定义和函数指针类型定义信息;
所述库函数列表包括下位机中可被使用的全部库函数的接口,用于待扩展程序调用;
所述符号转换文件包含全部库函数接口的符号,和与其对应的唯一编码;
所述库函数绝对地址获取模块包括:
库函数接口查询子模块,用于查询使用的相关库函数接口;
编码转换子模块,用于根据所述符号转换文件将相关库函数接口转换为与其对应的唯一编码;
报文生成子模块,用于生成查询相关库函数地址的报文;
报文下发子模块,用于调用通讯接口下发该报文到下位机;
库函数地址信息获取子模块,用于接收由下位机返回的相关库函数地址信息,该地址信息指相关库函数在下位机中的绝对入口地址;
库函数地址信息添加子模块,用于将查询到的每个相关库函数的绝对入口地址添加到对应的库函数地址宏定义中;
报错子模块,用于在获取相关库函数地址信息失败时停止操作,同时报错。
5.如权利要求4所述的系统,其特征在于,所述库函数绝对地址获取模块还包括:
函数指针定义子模块,用于当所有的相关库函数绝对入口地址均获取成功后,根据配置文件以及编写的扩展程序生成扩展程序的源文件和头文件,将相关库函数接口以函数指针的方式在头文件中进行定义。
6.如权利要求5所述的系统,其特征在于,BIN格式可执行文件生成模块还包括:
编译子模块,用于通过上位机内置的编译器对导出的源文件和头文件进行编译,生成BIN格式可执行文件,再以通讯的方式将扩展程序的BIN格式可执行文件下载到下位机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910896537.3A CN110659088B (zh) | 2019-09-20 | 2019-09-20 | 一种嵌入式环境下程序扩展的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910896537.3A CN110659088B (zh) | 2019-09-20 | 2019-09-20 | 一种嵌入式环境下程序扩展的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110659088A CN110659088A (zh) | 2020-01-07 |
CN110659088B true CN110659088B (zh) | 2022-11-25 |
Family
ID=69037463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910896537.3A Active CN110659088B (zh) | 2019-09-20 | 2019-09-20 | 一种嵌入式环境下程序扩展的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110659088B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767033B (zh) * | 2020-05-21 | 2023-08-25 | 江苏中科重德智能科技有限公司 | 用于机械臂程序开发的编程系统及功能扩展方法 |
CN112214415B (zh) * | 2020-11-03 | 2023-04-18 | 中国航空工业集团公司西安航空计算技术研究所 | 一种机载嵌入式系统的可执行文件可信管理方法 |
CN112989740B (zh) * | 2021-04-23 | 2022-02-01 | 北京欣博电子科技有限公司 | 一种仿真方法、装置、计算机设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6769115B1 (en) * | 2000-05-01 | 2004-07-27 | Emc Corporation | Adaptive interface for a software development environment |
CN101441566A (zh) * | 2008-11-18 | 2009-05-27 | 腾讯科技(深圳)有限公司 | 一种嵌入式平台和在嵌入式平台上动态链接程序的方法 |
CN101661397A (zh) * | 2008-08-29 | 2010-03-03 | 宇龙计算机通信科技(深圳)有限公司 | 实现程序动态加载的方法和生成映射文件的方法及设备 |
CN101763273A (zh) * | 2008-12-26 | 2010-06-30 | 上海闻泰电子科技有限公司 | 一种在嵌入式系统的扩展存储器中动态装入代码的方法 |
CN103246524A (zh) * | 2012-02-01 | 2013-08-14 | 上海野火网络科技有限公司 | 基于arm芯片的多个程序段同时运行的动态加载方法 |
CN103761089A (zh) * | 2014-01-14 | 2014-04-30 | 清华大学 | 基于寄存器传输语言确定动态函数调用关系的方法 |
-
2019
- 2019-09-20 CN CN201910896537.3A patent/CN110659088B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6769115B1 (en) * | 2000-05-01 | 2004-07-27 | Emc Corporation | Adaptive interface for a software development environment |
CN101661397A (zh) * | 2008-08-29 | 2010-03-03 | 宇龙计算机通信科技(深圳)有限公司 | 实现程序动态加载的方法和生成映射文件的方法及设备 |
CN101441566A (zh) * | 2008-11-18 | 2009-05-27 | 腾讯科技(深圳)有限公司 | 一种嵌入式平台和在嵌入式平台上动态链接程序的方法 |
CN101763273A (zh) * | 2008-12-26 | 2010-06-30 | 上海闻泰电子科技有限公司 | 一种在嵌入式系统的扩展存储器中动态装入代码的方法 |
CN103246524A (zh) * | 2012-02-01 | 2013-08-14 | 上海野火网络科技有限公司 | 基于arm芯片的多个程序段同时运行的动态加载方法 |
CN103761089A (zh) * | 2014-01-14 | 2014-04-30 | 清华大学 | 基于寄存器传输语言确定动态函数调用关系的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110659088A (zh) | 2020-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110659088B (zh) | 一种嵌入式环境下程序扩展的方法及系统 | |
KR100518584B1 (ko) | 공유 라이브러리 시스템 및 상기 시스템 구축 방법 | |
KR101213275B1 (ko) | 무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법 | |
CN100530108C (zh) | 一种调用函数的方法及系统 | |
JPH0836488A (ja) | ダイナミック・パッチングを使用するランタイム・エラー・チェック方法と装置 | |
US7730472B2 (en) | Dynamic linking of modules in a pre-operating system environment | |
KR102156371B1 (ko) | 네이티브 빌드 기반의 임베디드 소프트웨어 개발 환경을 지원하기 위한 임베디드 소프트웨어 개발 도구 제공 방법 및 장치 | |
US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
US20080005727A1 (en) | Methods, systems, and computer program products for enabling cross language access to an addressable entity | |
CN111061638A (zh) | 一种iOS系统调试的方法、装置及服务器 | |
CN108829465B (zh) | 一种基于直接读写flash的本地动态加载系统及方法 | |
CN111857801B (zh) | 一种移动应用的构建方法 | |
CN102364433B (zh) | 在ARM处理器上实现Wine构建工具移植的方法 | |
MXPA01012308A (es) | Migracion de diferentes lenguajes de fuente hacia un medio de ejecucion. | |
CN101334737A (zh) | 一种嵌入式设备的启动或复位方法 | |
CN103645888A (zh) | 一种自动构建操作系统的系统及方法 | |
CN109558121A (zh) | 接口驱动程序的开发方法、装置、设备及存储介质 | |
US20180364991A1 (en) | Method and system for preparing code to be executed by programmable control devices | |
CN111061486B (zh) | 一种安卓应用程序增量方法 | |
CN115658140A (zh) | 一种sdk的打包方法、装置、终端以及存储介质 | |
KR101083271B1 (ko) | 액티브엑스 컨트롤 변환 시스템 및 방법 | |
CN113220327B (zh) | 智能合约升级方法及区块链系统 | |
CN114115859A (zh) | iOS程序基于本地静态库的编译方法、装置及系统 | |
CN108958795B (zh) | 一种嵌入式系统中BootLoader代码重利用方法和开发板 | |
CN100476736C (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 |