CN115794260B - 一种简单的dsp软件库动态加载方法 - Google Patents
一种简单的dsp软件库动态加载方法 Download PDFInfo
- Publication number
- CN115794260B CN115794260B CN202310065675.3A CN202310065675A CN115794260B CN 115794260 B CN115794260 B CN 115794260B CN 202310065675 A CN202310065675 A CN 202310065675A CN 115794260 B CN115794260 B CN 115794260B
- Authority
- CN
- China
- Prior art keywords
- software library
- library
- software
- program
- data
- 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
-
- 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
- Stored Programmes (AREA)
Abstract
本申请涉及一种简单的DSP软件库动态加载方法。所述方法包括:对DSP软件中的CMD文件进行内存分配与段配置,得到主程序与软件库具有相互关联性的链接命令文件,建立主程序与软件库的软件库标识符查找表;根据DSP编译器输出的目标文件中的程序数据信息,制作软件库运行前加载和软件库装载ROM分区时的认证格式文件数据;利用软件库标识符查找表,在动态库ROM分区查找软件库程序数据,根据认证格式文件数据对软件库程序数据进行文件数据与段信息校验,从得到的软件库的程序数据片段中进行程序段信息拷贝或提取,根据得到的入口指针完整软件库动态加载。采用本方法能够使得运行着裸机程序的DSP动态加载软件库。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种简单的DSP软件库动态加载方法。
背景技术
DSP芯片具有高效的浮点运算能力,其一般用来作为主要的数学计算主要载体。当前主流的设计主要是静态加载的方式,在软件编译时就确定了软件的功能模块以及使用的数据,在软件部分功能模块在未来发生变化,尽管其输入和输出不变,软件设计人员依旧需要重新改写程序已经升级软件到设备中。但是,我们可以通过动态加载的方法,在用户需要时下载所需的功能,这样动态加载的需求是当前的设计开发环境比较受欢迎的方式,动态加载将模块与系统物理存储器的绑定延迟到运行时再进行。
而DSP上,为了实现动态加载的功能,有些系统会为设备安装上操作系统,对于内存足够、实时性要求不高的系统,这么做是可行的,但是当内存紧张,实时性计算要求比较高的系统来说,在DSP上运行操作系统的同时,还要兼顾实时计算的能力,系统的负荷会比较大,使得运行着裸机程序的DSP不能够动态加载某功能软件库。
发明内容
基于此,有必要针对上述技术问题,提供一种使得运行着裸机程序的DSP动态加载某功能软件库的一种简单的DSP软件库动态加载方法。
一种简单的DSP软件库动态加载方法,所述方法包括:
对DSP软件中的CMD文件进行内存分配与段配置,得到主程序与软件库具有相互关联性的链接命令文件,建立主程序与软件库的存储空间关系以及软件库标识符查找表;链接命令文件中包括软件库数据存储区和软件库运行内存区;
根据DSP编译器输出的目标文件中的程序数据信息,制作软件库运行前加载和软件库装载ROM分区时的认证格式文件数据;
利用软件库标识符查找表,在动态库ROM分区查找软件库程序数据,根据认证格式文件数据对软件库程序数据进行文件数据与段信息校验,得到软件库的程序数据片段;
从软件库的程序数据片段中进行程序段信息拷贝或提取,得到软件动态库的入口指针,根据入口指针完整软件库动态加载。
在其中一个实施例中,利用链接命令文件开发软件库程序,软件库的主程序根据输入参数的函数标识符,明确执行的函数接口,经编译器编译后得到的可执行文件将按照所认证格式存储在动态库ROM分区中;
DSP应用程序按认证格式校验动态库ROM分区中的软件库信息正确后,在应用程序调用软件库函数接口时,提取对应软件库的相关信息并通过函数指针的方式执行主函数完成动态软件库的创建;相关信息包括软件库的参数列表、主函数入口地址和函数标识符。
在其中一个实施例中,将软件库的可执行文件的数据按照DSP应用软件规定的认证格式存储到软件库数据存储区中,完成软件库装载到动态库ROM分区的过程。
在其中一个实施例中,对DSP软件中的CMD文件进行内存分配与段配置,得到主程序与软件库具有相互关联性的链接命令文件,包括:
将CMD文件中的内存分配为主程序内存空间、栈内存空间、软件库数据存储区和软件库运行内存区并对应分配内存大小和栈大小;
将主程序内存空间和栈内存空间均分配给主程序和软件库进行段配置,将软件库数据存储区和软件库运行内存区分配给软件库进行段配置,得到链接命令文件。
在其中一个实施例中,认证格式文件数据包括DLL二进制文件数据;DLL二进制文件数据包括DLL数据标记、DLL名称、DLL入口地址、DLL数据段。
在其中一个实施例中,DLL软件库加载时,根据动态库ROM分区中数据的认证格式,确认DLL软件库的存储信息和运行信息,并在DLL软件库加载时,完成软件库bootload引导加载并保存栈大小和入口地址;
DLL软件库执行时,根据软件库加载时保存的入口地址,使用物理地址到函数指针的转换方式,执行函数指针,制作DLL软件库主函数的入口参数列表并执行DLL软件库的主函数入口地址来完成DLL软件库的各接口函数的调用;入口参数列表包括应用程序需要执行的DLL软件库的接口函数标识符和接口函数的参数列表。
上述一种简单的DSP软件库动态加载方法,首先对DSP软件中的CMD文件进行内存分配与段配置,得到主程序与软件库具有相互关联性的链接命令文件,建立主程序与软件库的存储空间关系以及软件库标识符查找表;链接命令文件中包括软件库数据存储区和软件库运行内存区,对CMD文件进行内存分配与段配置明确了DLL软件库的运行内存的位置和大小,有助于DSP应用程序获取软件库的程序入口地址、栈大小等信息,便于后续进行软件库的各接口函数的调用,进而完成软件库的加载,根据DSP编译器输出的目标文件中的程序数据信息,制作软件库运行前加载和软件库装载ROM分区时的认证格式文件数据,利用软件库标识符查找表,在动态库ROM分区查找软件库程序数据,根据认证格式文件数据对软件库程序数据进行文件数据与段信息校验,得到软件库的程序数据片段,制作认证格式文件数据便于后续在动态库ROM分区找到软件库程序数据后对软件库程序数据进行文件数据与段信息校验,使得校验后的软件库数据能够被DSP的软件库加载程序模块识别进而完成软件库的加载,最后软件库加载时,从能够被DSP的软件库加载程序模块识别的软件库的程序数据片段中进行程序段信息拷贝或提取,通过bootload方式引导软件库程序,完成软件库程序和数据段的信息拷贝,并返回动态库函数指针,根据入口指针完整软件库动态加载完成软件库动态加载。
附图说明
图1为一个实施例中一种简单的DSP软件库动态加载方法的流程示意图;
图2为一个实施例中动态软件库装载的流程示意图;
图3为一个实施例中动态软件库加载的流程示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种简单的DSP软件库动态加载方法,包括以下步骤:
步骤102,对DSP软件中的CMD文件进行内存分配与段配置,得到主程序与软件库具有相互关联性的链接命令文件,建立主程序与软件库的存储空间关系以及软件库标识符查找表;链接命令文件中包括软件库数据存储区和软件库运行内存区。
CMD文件的配置,将拆分系统存储空间,将DSP最小系统的ROM和RAM内存空间拆分,用以分别存放主应用程序和软件库程序的程序数据,包括主程序的程序段、数据段空间,软件库的程序段、数据段,以及主程序和软件库公用的栈空间。同时也明确了DLL软件库的运行内存的位置和大小,有助于DSP应用程序获取软件库的程序入口地址、栈大小等信息,便于后续进行软件库的各接口函数的调用,进而完成软件库的加载。
步骤104,根据DSP编译器输出的目标文件中的程序数据信息,制作软件库运行前加载和软件库装载ROM分区时的认证格式文件数据。
根据DSP编译器输出的目标文件中的程序数据信息,制作软件库运行前加载和软件库装载ROM分区时的认证格式文件数据,便于后续在动态库ROM分区找到软件库程序数据后对软件库程序数据进行文件数据与段信息校验,使得校验后的软件库数据能够被DSP的软件库加载程序模块识别进而完成软件库的加载。
步骤106,利用软件库标识符查找表,在动态库ROM分区查找软件库程序数据,根据认证格式文件数据对软件库程序数据进行文件数据与段信息校验,得到软件库的程序数据片段。
DSP运行期间,利用预先设置的系统符号表在ROM分区查找DLL软件库数据,并根据认证格式文件数据对软件库程序数据进行文件数据与段信息校验,校验后得到的软件库的程序数据片段是能够被DSP的软件库加载程序模块识别的。
步骤108,从软件库的程序数据片段中进行程序段信息拷贝或提取,得到软件动态库的入口指针,根据入口指针完整软件库动态加载。
如图3所示,软件库加载时,从能够被DSP的软件库加载程序模块识别的软件库的程序数据片段中进行程序段信息拷贝或提取,通过bootload方式引导软件库程序,完成软件库程序和数据段的信息拷贝,并返回动态库函数指针,根据入口指针完整软件库动态加载完成软件库动态加载。
软件库的函数接口调用时,根据软件库加载时期从ROM分区中提取的信息中创建DLL软件库入口函数的参数列表,并执行DLL软件库的主函数入口地址来完成DLL软件库的各接口函数的调用。
上述一种简单的DSP软件库动态加载方法中,首先对DSP软件中的CMD文件进行内存分配与段配置,得到主程序与软件库具有相互关联性的链接命令文件,建立主程序与软件库的存储空间关系以及软件库标识符查找表;链接命令文件中包括软件库数据存储区和软件库运行内存区,对CMD文件进行内存分配与段配置明确了DLL软件库的运行内存的位置和大小,有助于DSP应用程序获取软件库的程序入口地址、栈大小等信息,便于后续进行软件库的各接口函数的调用,进而完成软件库的加载,根据DSP编译器输出的目标文件中的程序数据信息,制作软件库运行前加载和软件库装载ROM分区时的认证格式文件数据,利用软件库标识符查找表,在动态库ROM分区查找软件库程序数据,根据认证格式文件数据对软件库程序数据进行文件数据与段信息校验,得到软件库的程序数据片段,制作认证格式文件数据便于后续在动态库ROM分区找到软件库程序数据后对软件库程序数据进行文件数据与段信息校验,使得校验后的软件库数据能够被DSP的软件库加载程序模块识别进而完成软件库的加载,最后软件库加载时,从能够被DSP的软件库加载程序模块的软件库加载程序模块识别的软件库的程序数据片段中进行程序段信息拷贝或提取,通过bootload方式引导软件库程序,完成软件库程序和数据段的信息拷贝,并返回动态库函数指针,根据入口指针完整软件库动态加载完成软件库动态加载。
在其中一个实施例中,利用链接命令文件开发软件库程序,软件库的主程序根据输入参数的函数标识符,明确执行的函数接口,经编译器编译后得到的可执行文件将按照所认证格式存储在动态库ROM分区中;
DSP应用程序按认证格式校验动态库ROM分区中的软件库信息正确后,在应用程序调用软件库函数接口时,提取对应软件库的相关信息并通过函数指针的方式执行主函数完成动态软件库的创建;相关信息包括软件库的参数列表、主函数入口地址和函数标识符。
在其中一个实施例中,将软件库的可执行文件的数据按照DSP应用软件规定的认证格式存储到软件库数据存储区中,完成软件库装载到动态库ROM分区的过程。
在具体实施例中,先创建动态软件库,后将软件库可执行文件的数据按照DSP应用软件规定的认证格式存储到软件库数据的存储区中,完成DSP软件库装载到ROM的过程,最后使得DSP应用软件在软件运行时能够加载并运行ROM中存储好的DLL软件库程序。
在其中一个实施例中,对DSP软件中的CMD文件进行内存分配与段配置,得到主程序与软件库具有相互关联性的链接命令文件,包括:
将CMD文件中的内存分配为主程序内存空间、栈内存空间、软件库数据存储区和软件库运行内存区并对应分配内存大小和栈大小;
将主程序内存空间和栈内存空间均分配给主程序和软件库进行段配置,将软件库数据存储区和软件库运行内存区分配给软件库进行段配置,得到链接命令文件。
在具体实施例中,利用得到的链接命令文件(.cmd)创建DSP程序,得到主应用程序和软件库程序两个类别的软件,主应用程序调用软件库的入口函数以实现软件库的接口函数使用。
在其中一个实施例中,认证格式文件数据包括DLL二进制文件数据;DLL二进制文件数据包括DLL数据标记、DLL名称、DLL入口地址、DLL数据段。
在具体实施例中,如图2所示,DLL二进制文件数据的动态软件库装载过程,
在其中一个实施例中,DLL软件库加载时,根据动态库ROM分区中数据的认证格式,确认DLL软件库的存储信息和运行信息,并在DLL软件库加载时,完成软件库bootload引导加载并保存栈大小和入口地址;
DLL软件库执行时,根据软件库加载时保存的入口地址,使用物理地址到函数指针的转换方式,执行函数指针,制作DLL软件库主函数的入口参数列表并执行DLL软件库的主函数入口地址来完成DLL软件库的各接口函数的调用;入口参数列表包括应用程序需要执行的DLL软件库的接口函数标识符和接口函数的参数列表。
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (3)
1.一种简单的DSP软件库动态加载方法,其特征在于,所述方法包括:
对DSP软件中的CMD文件进行内存分配与段配置,得到主程序与软件库具有相互关联性的链接命令文件,建立主程序与软件库的存储空间关系以及软件库标识符查找表;所述链接命令文件中包括软件库数据存储区和软件库运行内存区;
根据DSP编译器输出的目标文件中的程序数据信息,制作软件库运行前加载和软件库装载ROM分区时的认证格式文件数据;
利用所述软件库标识符查找表,在动态库ROM分区查找软件库程序数据,根据所述认证格式文件数据对软件库程序数据进行文件数据与段信息校验,得到软件库的程序数据片段;
从所述软件库的程序数据片段中进行程序段信息拷贝或提取,得到软件动态库的入口指针,根据所述入口指针完成软件库动态加载;
利用链接命令文件开发软件库程序,软件库的主程序根据输入参数的函数标识符,明确执行的函数接口,经编译器编译后得到的可执行文件将按照所认证格式存储在动态库ROM分区中;
DSP应用程序按认证格式校验动态库ROM分区中的软件库信息正确后,在应用程序调用软件库函数接口时,提取对应软件库的相关信息并通过函数指针的方式执行主函数完成动态软件库的创建;所述相关信息包括软件库的参数列表、主函数入口地址和函数标识符;
DLL软件库加载时,根据动态库ROM分区中数据的认证格式,确认DLL软件库的存储信息和运行信息,并在DLL软件库加载时,完成软件库bootload引导加载并保存栈大小和入口地址;
DLL软件库执行时,根据软件库加载时保存的入口地址,使用物理地址到函数指针的转换方式,执行函数指针,制作DLL软件库主函数的入口参数列表并执行DLL软件库的主函数入口地址来完成DLL软件库的各接口函数的调用;入口参数列表包括应用程序需要执行的DLL软件库的接口函数标识符和接口函数的参数列表;
将CMD文件中的内存分配为主程序内存空间、栈内存空间、软件库数据存储区和软件库运行内存区并对应分配内存大小和栈大小;
将主程序内存空间和栈内存空间均分配给主程序和软件库进行段配置,将软件库数据存储区和软件库运行内存区分配给软件库进行段配置,得到链接命令文件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将软件库的可执行文件的数据按照DSP应用软件规定的认证格式存储到所述软件库数据存储区中,完成软件库装载到动态库ROM分区的过程。
3.根据权利要求1所述的方法,其特征在于,所述认证格式文件数据包括DLL二进制文件数据;所述DLL二进制文件数据包括DLL数据标记、DLL名称、DLL入口地址、DLL数据段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310065675.3A CN115794260B (zh) | 2023-02-06 | 2023-02-06 | 一种简单的dsp软件库动态加载方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310065675.3A CN115794260B (zh) | 2023-02-06 | 2023-02-06 | 一种简单的dsp软件库动态加载方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115794260A CN115794260A (zh) | 2023-03-14 |
CN115794260B true CN115794260B (zh) | 2023-05-05 |
Family
ID=85429966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310065675.3A Active CN115794260B (zh) | 2023-02-06 | 2023-02-06 | 一种简单的dsp软件库动态加载方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794260B (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5615400A (en) * | 1993-06-30 | 1997-03-25 | Apple Computer, Inc. | System for object oriented dynamic linking based upon a catalog of registered function set or class identifiers |
CN100552628C (zh) * | 2005-09-02 | 2009-10-21 | 腾讯科技(深圳)有限公司 | 在无线二进制运行环境平台实现动态链接库方法 |
US9639377B2 (en) * | 2010-03-31 | 2017-05-02 | Irdeto B.V. | Method for linking and loading to protect applications |
CN106502737B (zh) * | 2016-10-20 | 2019-07-30 | 广州酷狗计算机科技有限公司 | 一种提高应用程序启动速度的方法和终端 |
CN107122216B (zh) * | 2017-05-19 | 2020-06-16 | 北京计算机技术及应用研究所 | 一种嵌入式实时操作系统动态加载方法 |
CN111177026A (zh) * | 2019-09-11 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种修改变量内存布局的方法、装置及计算机设备 |
CN111580798B (zh) * | 2020-03-30 | 2023-06-06 | 佛山职业技术学院 | 一种动态链接库实现方法、系统、计算机设备及存储介质 |
CN113778687B (zh) * | 2021-09-16 | 2024-02-23 | 北京小米移动软件有限公司 | 内存分配信息处理方法、装置、电子设备及存储介质 |
CN113923240B (zh) * | 2021-09-29 | 2023-09-15 | 江苏合力四通智能科技股份有限公司 | 利用局部ota方法在物联网网关中动态升级设备接口协议的系统及方法 |
-
2023
- 2023-02-06 CN CN202310065675.3A patent/CN115794260B/zh active Active
Non-Patent Citations (1)
Title |
---|
侯宁,赵红梅著.《详论基于MATLAB、DSP及FPGA的通信系统仿真与开发》.吉林大学出版社 ,2018,第41-48页. * |
Also Published As
Publication number | Publication date |
---|---|
CN115794260A (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107025559B (zh) | 一种业务处理方法及装置 | |
KR100864192B1 (ko) | 사전 내면화된 프로그램 파일들을 생성 및 이용하기 위한 방법 및 디바이스 | |
CN114816417B (zh) | 一种交叉编译方法、装置、计算设备及存储介质 | |
CN110716845A (zh) | 一种Android系统的日志信息读取的方法 | |
CN113986402A (zh) | 函数调用方法、装置、电子设备及存储介质 | |
US8316357B2 (en) | Type descriptor management for frozen objects | |
CN112882782A (zh) | 页面生成方法、装置、计算机设备和存储介质 | |
CN112631600A (zh) | 基于Flutter的软件构建方法和系统 | |
US7051323B2 (en) | Method and apparatus for initializing romized system classes at virtual machine build time | |
CN115794260B (zh) | 一种简单的dsp软件库动态加载方法 | |
CN114138376B (zh) | 一种在应用中加载插件的方法、计算设备及存储介质 | |
CN115629795A (zh) | 一种可执行文件的配置方法、装置及电子设备 | |
CN114860204A (zh) | 程序处理、运行方法、装置、终端、智能卡及存储介质 | |
KR100478463B1 (ko) | 응용 프로그램의 동적링크 방법 | |
CN114489698A (zh) | 应用程序安装方法和装置 | |
KR101140522B1 (ko) | 객체 관리 시스템 및 방법 | |
CN113590149A (zh) | 程序分段加载运行的方法及装置 | |
CN113407187A (zh) | 构建文件系统的方法、装置、设备及计算机存储介质 | |
CN116700840B (zh) | 文件执行方法、装置、电子设备及可读存储介质 | |
CN114579135B (zh) | 一种安装包生成方法及装置 | |
CN112540835B (zh) | 一种混合机器学习模型的运行方法、装置及相关设备 | |
CN117251234B (zh) | 基于补丁的函数调用方法及装置 | |
KR100631780B1 (ko) | 오버레이 유닛 간의 통신 방법 및 이를 이용한 장치 | |
CN113360184A (zh) | 多生态间的软件迁移方法、装置、计算机设备及存储介质 | |
US10162547B1 (en) | Memory expansion in a linking process |
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 |