CN114816581B - 一种基于arm处理器的无操作系统算法动态加载方法 - Google Patents
一种基于arm处理器的无操作系统算法动态加载方法 Download PDFInfo
- Publication number
- CN114816581B CN114816581B CN202210548606.3A CN202210548606A CN114816581B CN 114816581 B CN114816581 B CN 114816581B CN 202210548606 A CN202210548606 A CN 202210548606A CN 114816581 B CN114816581 B CN 114816581B
- Authority
- CN
- China
- Prior art keywords
- algorithm
- address
- program
- function
- sram
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于ARM处理器的无操作系统算法动态加载方法,包括以下步骤:S1.将调用算法的固件主程序固化到地址A,将算法代码指定到SRAM/RAM空间的地址B,并在地址B首部放置算法函数列表以获取函数;S2.在固件主程序运行中需要调用算法时,将算法代码加注到地址B,并使用指针函数指向地址B的首地址,通过调用指针函数获取算法函数列表,从而实现算法动态加载。本发明可实现程序运行过程中算法资源实时动态加载技术,提高产品安全性和扩展性。
Description
技术领域
本发明涉及电数字数据处理技术领域,尤其涉及一种基于ARM处理器的无操作系统算法动态加载方法。
背景技术
在嵌入式小型安全产品设计时基于安全考虑一般将算法程序和业务调度主程序分开实现,在主程序启动运行后当需要调用算法时再动态加载到内存中运行,实现算法程序动态加载实时调用,掉电后资源丢失。由于操作(如Linux等)可通过动态库标准函数加载资源,这对实现算法动态加技术不存在技术障碍。但在无操作系统的ARM小系统环境中,由于没有操作系统支持,无法使用操作系统的动态库等加载技术实现目标算法程序的动态加载。如果使用传统方法将算法程序与固件一起整体编译又存在安全性低、程序无法实时动态更换、算法更新需要更新整体固件后重启设备程序等诸多问题。如果引入操作系统以支持动态加载则可能需要升级处理器,配置足够RAM,这对于嵌入式低成本产品来说是无法忍受的。
发明内容
为了解决上述问题,针对无操作系统的ARM嵌入式微小型系统,本发明提出一种基于ARM处理器的无操作系统算法动态加载方法,可实现程序运行过程中算法资源实时动态加载技术,提高产品安全性和扩展性。
本发明采用的技术方案如下:
一种基于ARM处理器的无操作系统算法动态加载方法,包括以下步骤:
S1.将调用算法的固件主程序固化到地址A,将算法代码指定到SRAM/RAM空间的地址B,并在地址B首部放置算法函数列表以获取函数;
S2.在固件主程序运行中需要调用算法时,将算法代码加注到地址B,并使用指针函数指向地址B的首地址,通过调用指针函数获取算法函数列表,从而实现算法动态加载。
进一步地,在ARM产品系统初始设计时,对固件主程序和算法程序分别建立独立的工程,每个工程规划互不重叠的程序运行内存空间。
进一步地,将固件主程序的烧录文件规划存储在EFLASH或FLASH芯片可固化地址存储区即地址A,在上电后仅将DATA,BSS区域段初始化到掉电可丢失的SRAM/RAM空间,配置程序堆栈地址。
进一步地,将算法程序的所有程序空间全部规划到SRAM/RAM空间地址即地址B,不配置堆栈空间;所述算法程序的所有程序空间包括CODE,DATA,BSS区域段。
进一步地,在链接器生产嵌入式工程代码时,指定算法函数列表获取函数存储在算法程序规划的SRAM/RAM空间首地址。
进一步地,在固件主程序运行中需要调用算法服务时,通过外部加载方式或内部搬移方式将算法库代码加注到算法程序规划的SRAM/RAM空间即地址B。
进一步地,所述外部加载方式的载体包括介质和总线接口。
进一步地,所述内部搬移方式的载体包括固化的内部EFLASH或FLASH区。
进一步地,将指针函数赋值为算法程序规划的SRAM/RAM空间首地址,由外部传入算法函数列表数组,通过调用指针函数获取算法所提供的约定算法函数列表返回到算法函数列表数组中。
进一步地,当成功获取到算法函数列表数组后,固件主程序在需要调用算法服务时只需要调用约定的数组函数即可。
本发明的有益效果在于:
(1)在ARM无操作系统环境中,通过规划整个嵌入式系统的内存空间实现算法调用固件与算法库的独立实现,动态分离加载更换。
(2)通过约定算法库程序运行空间和算法库函数功能列表以及算法库服务列表获取方式,可实现算法资源运行过程中实时动态加载服务。
(3)通过分散加载技术使算法调用者与算法实现者独立实现各自功能,通过各自独立的调试,可以有效提高工作效率,并实现算法实现者相对独立,有效保障算法提供安全。
(4)通过分散加载技术可实现程序运行中的算法功能动态更换,可有效提高产品安全性、扩展性。
(5)本发明可扩展到单片机、微控制器等无操作系统的微系统中各功能模块的独立动态加载,为无操作系统的程序设计提供了一种函数动态库解决方案。
附图说明
图1是本发明实施例的无操作系统算法动态加载方法原理框图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现说明本发明的具体实施方式。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1所示,本实施例提供了一种基于ARM处理器的无操作系统算法动态加载方法,包括以下步骤:
S1.将调用算法的固件主程序固化到地址A,将算法代码指定到SRAM/RAM空间的地址B,并在地址B首部放置算法函数列表以获取函数;
S2.在固件主程序运行中需要调用算法时,将算法代码加注到地址B,并使用指针函数指向地址B的首地址,通过调用指针函数获取算法函数列表,从而实现算法动态加载。
具体地,在ARM产品系统初始设计时,对固件主程序和算法程序分别建立独立的工程,每个工程规划互不重叠的程序运行内存空间(ARM处理器一般有CODE,DATA,BSS等区域段):
(1)将固件主程序的烧录文件规划存储在EFLASH或FLASH芯片可固化地址存储区即地址A,在上电后仅将DATA,BSS区域段初始化到掉电可丢失的SRAM/RAM空间(受限于低成本ARM处理器内存小特点,一般仅将关键数据存储到SRAM/RAM空间),配置程序堆栈地址。
(2)将算法程序的所有程序空间(CODE,DATA,BSS区域段)全部规划到SRAM/RAM空间地址即地址B,不配置堆栈空间(由固件主程序调用时占的主程序堆栈)。
在链接器生产嵌入式工程代码时,指定算法函数列表获取函数存储在算法程序规划的SRAM/RAM空间首地址。优选地,该函数参考原型可以为:intpAlgInitFunction(INOUTvoid pAlgFunTab[],INOUT int*pFuncNum,IN…),其中INOUT类型参数用于返回算法库支持的函数列表及个数信息,其它输入参数可方便将初始化等信息传入算法库。
在固件主程序运行中需要调用算法服务时,通过外部加载方式(介质和总线接口)或内部搬移方式(固化的内部EFLASH或FLASH区)将算法库代码加注到算法程序规划的SRAM/RAM空间即地址B;然后定义算法函数列表获取函数的指针函数,并将指针函数赋值为算法程序规划的SRAM/RAM空间首地址,由外部传入算法函数列表数组,通过调用指针函数获取算法所提供的约定算法函数列表返回到算法函数列表数组中。优选地,函数列表数组原型可以为:algFuncTab[]{int algFun1(void),int algFun2(int…),…}。当成功获取到算法函数列表数组后,固件主程序在需要调用算法服务时只需要调用约定的数组函数即可。例如,第n个算法服务接口函数调用方法为algFuncTab[n-1](…),其中n的取值为[0,算法函数总个数)。
综上所述,本实施例的算法动态加载方法在ARM无操作系统环境中,通过规划整个嵌入式系统的内存空间实现算法调用固件与算法库的独立实现,动态分离加载更换。通过约定算法库程序运行空间和算法库函数功能列表以及算法库服务列表获取方式,可实现算法资源运行过程中实时动态加载服务。
实施例2
本实施例在实施例1的基础上:
本实施例提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行该计算机程序时实现实施例1的基于ARM处理器的无操作系统算法动态加载方法的步骤。其中,计算机程序可以为源代码形式、对象代码形式、可执行文件或者某些中间形式等。
实施例3
本实施例在实施例1的基础上:
本实施例提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现实施例1的基于ARM处理器的无操作系统算法动态加载方法的步骤。其中,计算机程序可以为源代码形式、对象代码形式、可执行文件或者某些中间形式等。存储介质包括:能够携带计算机程序代码的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM)、随机存取存储器(RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,存储介质不包括电载波信号和电信信号。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (5)
1.一种基于ARM处理器的无操作系统算法动态加载方法,其特征在于,包括以下步骤:
S1. 将调用算法的固件主程序固化到地址A,将算法代码指定到SRAM/RAM空间的地址B,并在地址B首部放置算法函数列表以获取函数;
S2. 在固件主程序运行中需要调用算法时,将算法代码加注到地址B,并使用指针函数指向地址B的首地址,通过调用指针函数获取算法函数列表,从而实现算法动态加载;
在ARM产品系统初始设计时,对固件主程序和算法程序分别建立独立的工程,每个工程规划互不重叠的程序运行内存空间;将固件主程序的烧录文件规划存储在EFLASH或FLASH芯片可固化地址存储区即地址A,在上电后仅将DATA,BSS区域段初始化到掉电可丢失的SRAM/RAM空间,配置程序堆栈地址;将算法程序的所有程序空间全部规划到SRAM/RAM空间地址即地址B,不配置堆栈空间;所述算法程序的所有程序空间包括CODE, DATA, BSS区域段;在固件主程序运行中需要调用算法服务时,通过外部加载方式或内部搬移方式将算法库代码加注到算法程序规划的SRAM/RAM空间即地址B;将指针函数赋值为算法程序规划的SRAM/RAM空间首地址,由外部传入算法函数列表数组,通过调用指针函数获取算法所提供的约定算法函数列表返回到算法函数列表数组中。
2.根据权利要求1所述的基于ARM处理器的无操作系统算法动态加载方法,其特征在于,在链接器生产嵌入式工程代码时,指定算法函数列表获取函数存储在算法程序规划的SRAM/RAM空间首地址。
3.根据权利要求1所述的基于ARM处理器的无操作系统算法动态加载方法,其特征在于,所述外部加载方式的载体包括介质和总线接口。
4.根据权利要求1所述的基于ARM处理器的无操作系统算法动态加载方法,其特征在于,所述内部搬移方式的载体包括固化的内部EFLASH或FLASH区。
5.根据权利要求1所述的基于ARM处理器的无操作系统算法动态加载方法,其特征在于,当成功获取到算法函数列表数组后,固件主程序在需要调用算法服务时只需要调用约定的数组函数即可。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210548606.3A CN114816581B (zh) | 2022-05-20 | 2022-05-20 | 一种基于arm处理器的无操作系统算法动态加载方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210548606.3A CN114816581B (zh) | 2022-05-20 | 2022-05-20 | 一种基于arm处理器的无操作系统算法动态加载方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114816581A CN114816581A (zh) | 2022-07-29 |
CN114816581B true CN114816581B (zh) | 2023-06-02 |
Family
ID=82515542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210548606.3A Active CN114816581B (zh) | 2022-05-20 | 2022-05-20 | 一种基于arm处理器的无操作系统算法动态加载方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114816581B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673204A (zh) * | 2009-08-13 | 2010-03-17 | 上海酷吧信息技术有限公司 | 一种基于arm的手机应用程序动态加载方法 |
CN102938046A (zh) * | 2012-10-11 | 2013-02-20 | 杭州晟元芯片技术有限公司 | 一种基于静态加密存储动态解密运行的代码保护方法 |
CN105867977A (zh) * | 2016-04-01 | 2016-08-17 | 天津七所精密机电技术有限公司 | DSP用户程序升级及Flash下载方法 |
CN106843022A (zh) * | 2015-12-03 | 2017-06-13 | 中国航空工业集团公司雷华电子技术研究所 | 一种提高嵌入式控制系统输出可靠性的方法 |
CN106843925A (zh) * | 2016-12-16 | 2017-06-13 | 中国电子科技集团公司第三十研究所 | 一种运用于dsp的功能模块动态加载方法 |
CN107168647A (zh) * | 2017-04-17 | 2017-09-15 | 武汉永力科技股份有限公司 | Flash数据读写方法及系统 |
CN107908364A (zh) * | 2017-11-13 | 2018-04-13 | 中国电子科技集团公司第三十研究所 | 一种基于norflash的嵌入式文件系统 |
CN110968284A (zh) * | 2019-12-09 | 2020-04-07 | 武汉纺织大学 | 基于双口ram双cpu的高速旋转led显示方法及系统 |
CN111008045A (zh) * | 2019-11-14 | 2020-04-14 | 中国航空工业集团公司洛阳电光设备研究所 | 一种片外flash大容量程序自动加载方法 |
CN111158273A (zh) * | 2019-12-20 | 2020-05-15 | 中核控制系统工程有限公司 | 一种无操作系统的安全显示界面实现方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7884631B2 (en) * | 2009-02-25 | 2011-02-08 | Kingston Technology Corp. | Parking structure memory-module tester that moves test motherboards along a highway for remote loading/unloading |
CN101706725B (zh) * | 2009-11-20 | 2014-03-19 | 中兴通讯股份有限公司 | 一种可重定位程序的加载及调试方法及系统 |
-
2022
- 2022-05-20 CN CN202210548606.3A patent/CN114816581B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673204A (zh) * | 2009-08-13 | 2010-03-17 | 上海酷吧信息技术有限公司 | 一种基于arm的手机应用程序动态加载方法 |
CN102938046A (zh) * | 2012-10-11 | 2013-02-20 | 杭州晟元芯片技术有限公司 | 一种基于静态加密存储动态解密运行的代码保护方法 |
CN106843022A (zh) * | 2015-12-03 | 2017-06-13 | 中国航空工业集团公司雷华电子技术研究所 | 一种提高嵌入式控制系统输出可靠性的方法 |
CN105867977A (zh) * | 2016-04-01 | 2016-08-17 | 天津七所精密机电技术有限公司 | DSP用户程序升级及Flash下载方法 |
CN106843925A (zh) * | 2016-12-16 | 2017-06-13 | 中国电子科技集团公司第三十研究所 | 一种运用于dsp的功能模块动态加载方法 |
CN107168647A (zh) * | 2017-04-17 | 2017-09-15 | 武汉永力科技股份有限公司 | Flash数据读写方法及系统 |
CN107908364A (zh) * | 2017-11-13 | 2018-04-13 | 中国电子科技集团公司第三十研究所 | 一种基于norflash的嵌入式文件系统 |
CN111008045A (zh) * | 2019-11-14 | 2020-04-14 | 中国航空工业集团公司洛阳电光设备研究所 | 一种片外flash大容量程序自动加载方法 |
CN110968284A (zh) * | 2019-12-09 | 2020-04-07 | 武汉纺织大学 | 基于双口ram双cpu的高速旋转led显示方法及系统 |
CN111158273A (zh) * | 2019-12-20 | 2020-05-15 | 中核控制系统工程有限公司 | 一种无操作系统的安全显示界面实现方法 |
Non-Patent Citations (3)
Title |
---|
"Research on a novel robotic arm with non-backlash driving for industrial applications";Longfei Sun等;《2017 IEEE International Conference on Cybernetics and Intelligent Systems (CIS) and IEEE Conference on Robotics, Automation and Mechatronics (RAM)》;第70-75页 * |
"基于ARM+μC/OS-Ⅱ的程序动态加载实现方案";郑映等;《舰船电子工程》;第88-90页 * |
"基于μCOS系统的嵌入式动态加载技术实现与改进";裴俊宇等;《软件导刊》;第149-152页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114816581A (zh) | 2022-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2473111C1 (ru) | Способ динамической компоновки программы на встроенной платформе и встроенная платформа | |
US7739696B2 (en) | Message translation systems and methods | |
CN111124704B (zh) | 一种数据处理方法、处理器及终端设备 | |
CN111223036B (zh) | 一种gpu虚拟化共享方法、装置及电子设备和存储介质 | |
CN112631684B (zh) | 可执行程序的运行方法、装置、电子设备及计算机存储介质 | |
CN104750528A (zh) | 一种Android程序中的组件管理方法和装置 | |
CN110673856A (zh) | 一种数据处理方法、装置及机器可读存储介质 | |
CN113986402A (zh) | 函数调用方法、装置、电子设备及存储介质 | |
CN114816581B (zh) | 一种基于arm处理器的无操作系统算法动态加载方法 | |
WO2022110775A1 (zh) | 一种无服务容器启动方法及相关设备 | |
CN112817600A (zh) | 程序注解编译方法及其相应的装置、设备、介质 | |
CN116680014B (zh) | 数据处理方法和装置 | |
CN113791870B (zh) | 一种WebAssembly虚拟机分布式系统细粒度迁移方法及系统 | |
CN116680209A (zh) | 基于wasm的多智能合约实例管理方法 | |
US20030088865A1 (en) | Apparatus and method for incrementally performing remote loading | |
CN106843925B (zh) | 一种运用于dsp的功能模块动态加载方法 | |
CN113626071B (zh) | 函数注册方法、系统、电子设备及存储介质 | |
CN115934213A (zh) | 一种控制器栈调用方法、装置、设备及存储介质 | |
CN116382713A (zh) | 构建应用镜像的方法、系统、设备和存储介质 | |
CN115328679A (zh) | 异构函数库的自动化集成方法、计算设备及其系统 | |
US20040044708A1 (en) | Executable file system for an embedded computer | |
CN112306539A (zh) | 一种单片机应用层开发方法、系统、终端及介质 | |
CN111562928A (zh) | 资源提供方法及装置、资源下载方法及装置 | |
CN114116051B (zh) | 基于神经网络模型的处理方法、装置、设备和存储介质 | |
CN113741946B (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 |