CN106371884B - 通用嵌入式加载应用***及方法 - Google Patents
通用嵌入式加载应用***及方法 Download PDFInfo
- Publication number
- CN106371884B CN106371884B CN201610826247.8A CN201610826247A CN106371884B CN 106371884 B CN106371884 B CN 106371884B CN 201610826247 A CN201610826247 A CN 201610826247A CN 106371884 B CN106371884 B CN 106371884B
- Authority
- CN
- China
- Prior art keywords
- application
- program
- identification number
- interface structure
- entry
- 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
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/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种通用嵌入式加载应用***及方法,属于电子技术领域。包括以下步骤:定义一组动态指针数组,指向程序的入口位置和程序的其他接口位置;将每个应用程序按照其实际存放的位置结构化存放在唯读记忆体内;定义程序入口格式;将应用识别号、与应用识别号对应的应用接口结构位置之间的对应关系存储到应用调用模块中;开始调用应用程序。本发明改变载入整个应用后才执行和只能根据***运作的需求呼叫接口的方式,实现在需要的时候直接调用接口,这样无需将整个应用先行载入暂态记忆体内运行,这样不需要重复载入和卸载的动作,不会照成内存泄露的问题。可以增加***的稳定度。
Description
技术领域
本发明涉及电子技术领域,尤其涉及一种通用嵌入式加载应用***及方法。
背景技术
在通用型的嵌入式芯片上为了保证工作效率和稳定度,不一定会加载带有文件管理的作业***如:linux,windows等。这一类的***对于芯片和资源的要求很高,不是所有嵌入式主控芯片都可以加载。就算是轻量级的实时作业***(RTOS)具备有文件档案管理***,也不一定能加载应用且运行。
在无法动态加载新的应用状况之下,目前嵌入式芯片升级的时候必须整个芯片的固件重新下载,如果使用USB或是串口等升级工具还可以。如果使用空中升级的话,大量的数据传输过程容易照成升级是失败。而且为了要达到空中升级(OTA)的功能,在目前的***上都必须准备2倍以上的存储空间。这个空间平时无法使用,无疑是浪费了。例如:工厂内有几十个检测环节,每个环节检测的数据和判断的方法不一样。但是基本板型是一样的。这种状况在物联网(IoT)里面常常遇到。如果要做的同一硬件板型涵盖不同功能,则必须加载不同的应用。但是把所有应用放进一个软件中势必照成测试和开发的不稳定问题。如果使用不同的固化软件,在生产上有一定的困难度。
以往加载应用软件必须有完善的档案***和复杂的应用加载过程,如LINUX,WINDOWS,UNIX等***,这些***能在嵌入式里面完成的只有 LINUX, ANDROID, WINDOWS10IoT, 或是WINCE。 这些***都可以任意加载应用,需要应用的时候载入。不要的时候就可以移除,只可以做到很广大的应用。赋予产品复杂而实际的应用。
但是应用这些***需要庞大的资源,如果只是简单的一个微控制器芯片(MCU)是无法加载这些***。如:8051的芯片***,一共就64K的ROM,2K的RAM,这么小的资源根本不足以支持以上***的运作。这样的单芯片(MCU)***,在IoT 上比比皆是。 如何解决这些***的应用加载是目前市面上的迫切需求。
目前的***需要文件档案来管理应用程序,文件档案***虽然方便。但是对于没有或是需要复杂文件的嵌入式单芯片而已。文件***的导入反而是个包袱。因为文件***需要大量的代码关机文件的存储分配。单芯片***在设计开始的时候就已经决定所有应用或是数据存放的位子。如果只是为了载入应用而加入文件管理的代码很不值得。本发明无需使用文件***,利用程序语言的指针方式动态载入应用程序,而且设置每个程序的调用函数。这样就可以正确调用所有应用。
在目前***做动态应用在如的时候,必须制造出一个类是容器(DOCKER)的环境,在此环境内运行应用,容器就像是一个小型电脑或是芯片,不断地在芯片之内复制芯片环境,容易大幅减低芯片的运行性能,本发明无需使用容器技术,让应用变成主程序的一部分。完全不改变任何运行的速度。
目前的方式必须先将应用由长久记忆体(ROM)或是磁盘内读出,放入到一块暂时记忆体内,让后运行。这个做法需要大量的暂时记忆体。***的资源需求必须满足所有程序运作记忆空间。这样的做法必须重复两倍的记忆体提供程序运作(一个部分是存储,一个部分是运行)。本发明利用磁盘空间直接运行。无需多一次载入的过程。
本方法可以快速而且简单的解决以上的问题,动态加载应用如同手机或是电脑的环境,应用可以随时变更。一个产品只要是硬件不改变,但是可以产生不同的功能。
发明内容
针对现有技术的不足,本发明提出了一种通用嵌入式加载应用***及方法,本发明利用指针的特性和统一的程序入口,可以做到随时动态调用程序。
为了实现上述目的,本发明技术方案如下:
一种通用嵌入式加载应用方法,其特征在于,包括以下步骤:
定义一组动态指针数组,指向程序的入口位置和程序的其他接口位置;
将每个应用程序按照其实际存放的位置结构化存放在唯读记忆体内;
定义程序入口格式,包括:接口架构和入口架构,接口架构中定义各中应用接口结构位置,入口架构中定义应用识别号和与应用接口结构位置的对应关系;
将应用识别号、与应用识别号对应的应用接口结构位置之间的对应关系存储到应用调用模块中;
开始调用应用程序,首先将需要调用的应用识别号传入应用调用模块中,应用调用模块根据应用识别号查询判断该应用是否存在;
判断为存在时,应用调用模块找出与应用识别号对应的应用接口结构位置,并跳转到该位置执行对应的应用接口结构程序。
进一步地,所述定义一组动态指针数组,指向程序的入口位置和程序的其他接口位置中程序其他的接口的指针值相对于入口位置指针值为一个可设定的固定差距值。
进一步地,所述将每个应用程序按照其实际存放的位置结构化存放在唯读记忆体内程序中的存放顺序从上到下为:启动代码存放区、***程序存放区、入口指针存放区、应用程序存放区。
进一步地,所述判断为存在时,应用调用模块找出与应用识别号对应的应用接口结构位置,并跳转到该位置执行对应的应用接口结构程序后还包括:该应用接口结构程序执行结束后通知调用的应用程序,调用成功回复返回成功,调用失败回复返回失败。
一种通用嵌入式加载应用***,其特征在于,包括以下模块:
指针定义模块,用于定义一组动态指针数组,指向程序的入口位置和程序的其他接口位置;
程序存放模块,用于将每个应用程序按照其实际存放的位置结构化存放在唯读记忆体内;
入口定义模块,用于定义程序入口格式,包括:接口架构和入口架构,接口架构中定义各中应用接口结构位置,入口架构中定义应用识别号和与应用接口结构位置的对应关系;
调用信息存储模块,用于将应用识别号、与应用识别号对应的应用接口结构位置之间的对应关系存储到应用调用模块中;
应用程序调用模块,用于开始调用应用程序,首先将需要调用的应用识别号传入应用调用模块中,应用调用模块根据应用识别号查询判断该应用是否存在;判断为存在时,应用调用模块找出与应用识别号对应的应用接口结构位置,并跳转到该位置执行对应的应用接口结构程序。
本发明的有益效果:
无需载入整个应用后才执行,根据***运作的需求呼叫接口.本方法在需要的时候直接调用接口,这样无需将整个应用先行载入暂态记忆体内运行,这样不需要重复载入和卸载的动作,不会照成内存泄露的问题。可以增加***的稳定度。
附图说明
图1为本发明的框架图;
图2为本发明程序存放示意图;
图3为本发明主要流程图。
具体实施方式
下面结合附图和实施例,进一步阐述本发明。
S101,定义一组动态指针数组,指向程序的入口位置和程序的其他接口位置;
定义一组动态指针数组,指向程序的入口位置和程序的其他接口位置,指针数组按顺序存放程序的入口位置和其他接口的动态指针,程序其他的接口的指针值都是相对于这个入口位置指针值的固定差距,这样可以通过修改入口的位置相对应可以调用不同的应用。
S102,将每个应用程序按照其实际存放的位置结构化存放在唯读记忆体内;
本发明建议的程序存放方式如图2所示,这个方式可以让硬件升级的时候只升级应用程序存放区和入口指针存放区。这样可以大幅降低空中升级的时间,减小由于流量和连接中断造成失败的可能性。同时应用程序存放区和入口指针存放区也可以再细分成2个部分,一个部分是可以升级的,一个部分是不需要升级的。这样更能减小升级时造成问题的可能性。
依照本发明建议的存放方式,***更容易加入新的应用程序。只要将应用程序放入存放区,然后在入口指针部分加入应用入口存放位置指针,这样就可以调用新加入的应用程序了。并且,硬件无需重复不断的升级,而可以用相同的硬件达到不同的功能。
将每个应用程序按照其实际存放的位置,结构化存放于唯读记忆体ROM内。并且在需要的时候直接透过二级指针调用程序。二级指针包括:一级为不支持外部存储的芯片,芯片需要将其载入内部存储区域进行调用运行。二级为支持外部存储的芯片,直接在外部存储区调用运行。
S103,定义程序入口格式,包括:接口架构和入口架构,接口架构中定义各中应用接口结构位置,入口架构中定义应用识别号和与应用接口结构位置的对应关系;
程序入口格式定义如下:
程序接口架构:
应用程序的架构可以依照实现的方式而不同的名词,基本的架构如下:
结构体的架构必须包含:
{
启动程序的进入点位置,
结束程序的进入点位置,
通讯接口的进入点位置,
。。。。(可以依照需要增加)
}
程序入口架构:
程序入口就是所有应用程序结构体的存放位置和唯一识别号码,唯一识别号可以根据产品的延续性来定义。结构体的定义如下:
结构体:
{
应用识别号1 : 应用1接口结构位置,
应用识别号2 : 应用2接口结构位置,
应用识别号3 : 应用3接口结构位置,
S104,将应用识别号、与应用识别号对应的应用接口结构位置之间的对应关系存储到应用调用模块中;
S105,开始调用应用程序,首先将需要调用的应用识别号传入应用调用模块中,应用调用模块根据应用识别号查询判断该应用是否存在;存在时,应用调用模块找出与应用识别号对应的应用接口结构位置,并跳转到该位置执行对应的应用接口结构程序;该应用接口结构程序执行结束后通知调用的应用程序,是否调用成功。
调用应用程序的时候,先把需要调用的应用识别号传入应用调用模块,应用调用模块根据识别号查询应用是否存在;
当该识别号存在时,根据指定的调用接口,应用调用模块查询应用接口结构,跳转到指定的位置执行应用接口;
接口执行结束后通知调用的应用程序,是否调用成功。
调用成功回复返回成功,调用失败回复返回失败。防止调用失败后,一直处于调用程序状态,造成***崩溃。
1.无需档案***,可以用于所有实时作业***上或是没有作业***:
本发明利用编程语言的特性,只需要定义结构体,不许增加新的代码就可以做到应用加载,运行,和卸载的功能。
2.无需利用容器的方式直接运行应用代码,不影响***效能且降低了***运作资源需求:
利用容器的方式虽然能保证应用代码不会影响***的稳定度,但是在很多嵌入式的应用上,本身应用的代码不复杂,用了容器的架构反而增加了不稳定。还不如直接控制应用的稳定度反而容易。
本方法直接运行应用代码而不是载入容器内执行。
3.无需载入整个应用后才执行,根据***运作的需求呼叫接口.
本发明在需要的时候直接调用接口,这样无需将整个应用先行载入暂态记忆体内运行,这样不需要重复载入和卸载的动作,不会照成内存泄露的问题。可以增加***的稳定度。
以上所述的仅是本发明的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的基本构思的前提下直接导出或联想到的其它改进和变化均应认为包含在本发明的保护范围之内。
Claims (5)
1.一种通用嵌入式加载应用方法,其特征在于,包括以下步骤:
定义一组动态指针数组,指向应用程序的入口位置和应用程序的其他接口位置;
将每个应用程序按照其实际存放的位置结构化存放在唯读记忆体内;
定义应用程序入口格式,包括:接口架构和入口架构,接口架构中定义各种应用接口结构位置,入口架构中定义应用识别号和与应用接口结构位置的对应关系;
将应用识别号、与应用识别号对应的应用接口结构位置之间的对应关系存储到应用调用模块中;
开始调用应用程序,首先将需要调用的应用识别号传入应用调用模块中,应用调用模块根据应用识别号查询判断该应用程序是否存在;
判断为存在时,应用调用模块找出与应用识别号对应的应用接口结构位置,并跳转到该位置执行对应的应用接口结构程序。
2.根据权利要求1所述的一种通用嵌入式加载应用方法,其特征在于,所述定义一组动态指针数组,指向应用程序的入口位置和应用程序的其他接口位置中应用程序其他的接口的指针值相对于入口位置指针值为一个可设定的固定差距值。
3.根据权利要求1所述的一种通用嵌入式加载应用方法,其特征在于,所述将每个应用程序按照其实际存放的位置结构化存放在唯读记忆体内程序中的存放顺序从上到下为:启动代码存放区、***程序存放区、入口指针存放区、应用程序存放区。
4.根据权利要求1所述的一种通用嵌入式加载应用方法,其特征在于,所述判断为存在时,应用调用模块找出与应用识别号对应的应用接口结构位置,并跳转到该位置执行对应的应用接口结构程序后还包括:该应用接口结构程序执行结束后通知调用的应用程序,调用成功回复返回成功,调用失败回复返回失败。
5.一种通用嵌入式加载应用***,其特征在于,包括以下模块:
指针定义模块,用于定义一组动态指针数组,指向应用程序的入口位置和应用程序的其他接口位置;
程序存放模块,用于将每个应用程序按照其实际存放的位置结构化存放在唯读记忆体内;
入口定义模块,用于定义应用程序入口格式,包括:接口架构和入口架构,接口架构中定义各种应用接口结构位置,入口架构中定义应用识别号和与应用接口结构位置的对应关系;
调用信息存储模块,用于将应用识别号、与应用识别号对应的应用接口结构位置之间的对应关系存储到应用调用模块中;
应用程序调用模块,用于开始调用应用程序,首先将需要调用的应用识别号传入应用调用模块中,应用调用模块根据应用识别号查询判断该应用程序是否存在;判断为存在时,应用调用模块找出与应用识别号对应的应用接口结构位置,并跳转到该位置执行对应的应用接口结构程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610826247.8A CN106371884B (zh) | 2016-09-18 | 2016-09-18 | 通用嵌入式加载应用***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610826247.8A CN106371884B (zh) | 2016-09-18 | 2016-09-18 | 通用嵌入式加载应用***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106371884A CN106371884A (zh) | 2017-02-01 |
CN106371884B true CN106371884B (zh) | 2019-12-20 |
Family
ID=57896706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610826247.8A Active CN106371884B (zh) | 2016-09-18 | 2016-09-18 | 通用嵌入式加载应用***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106371884B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1502075A (zh) * | 2001-03-16 | 2004-06-02 | Ħ��������˾ | 在嵌入式环境中加载和执行应用程序的方法 |
CN1529227A (zh) * | 2003-09-29 | 2004-09-15 | 中兴通讯股份有限公司 | 一种嵌入式***下usb存储器的驱动开发方法 |
CN1687899A (zh) * | 2005-06-15 | 2005-10-26 | 大唐微电子技术有限公司 | 将应用程序动态下载到用户识别模块的方法、***及模块 |
CN101004690A (zh) * | 2007-01-09 | 2007-07-25 | 京信通信技术(广州)有限公司 | 嵌入式***加载程序与应用程序一体化更新方法 |
CN101290577A (zh) * | 2007-04-20 | 2008-10-22 | 鸿富锦精密工业(深圳)有限公司 | 嵌入式设备及其加载方法 |
CN101464807A (zh) * | 2009-01-08 | 2009-06-24 | 杭州华三通信技术有限公司 | 一种应用程序的加载方法及装置 |
CN102541579A (zh) * | 2010-12-17 | 2012-07-04 | 沈阳新邮通信设备有限公司 | 嵌入式***应用程序动态加载的方法 |
CN102750157A (zh) * | 2011-04-20 | 2012-10-24 | 中兴通讯股份有限公司 | 一种应用程序加载的方法及装置 |
CN102955707A (zh) * | 2011-08-31 | 2013-03-06 | 福建三元达软件有限公司 | 基于前后台***驱动程序与应用程序的相互加载的方法 |
CN103294510A (zh) * | 2013-05-24 | 2013-09-11 | 深圳市爱夫卡科技有限公司 | 应用程序动态加载方法和装置 |
-
2016
- 2016-09-18 CN CN201610826247.8A patent/CN106371884B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1502075A (zh) * | 2001-03-16 | 2004-06-02 | Ħ��������˾ | 在嵌入式环境中加载和执行应用程序的方法 |
CN1529227A (zh) * | 2003-09-29 | 2004-09-15 | 中兴通讯股份有限公司 | 一种嵌入式***下usb存储器的驱动开发方法 |
CN1687899A (zh) * | 2005-06-15 | 2005-10-26 | 大唐微电子技术有限公司 | 将应用程序动态下载到用户识别模块的方法、***及模块 |
CN101004690A (zh) * | 2007-01-09 | 2007-07-25 | 京信通信技术(广州)有限公司 | 嵌入式***加载程序与应用程序一体化更新方法 |
CN101290577A (zh) * | 2007-04-20 | 2008-10-22 | 鸿富锦精密工业(深圳)有限公司 | 嵌入式设备及其加载方法 |
CN101464807A (zh) * | 2009-01-08 | 2009-06-24 | 杭州华三通信技术有限公司 | 一种应用程序的加载方法及装置 |
CN102541579A (zh) * | 2010-12-17 | 2012-07-04 | 沈阳新邮通信设备有限公司 | 嵌入式***应用程序动态加载的方法 |
CN102750157A (zh) * | 2011-04-20 | 2012-10-24 | 中兴通讯股份有限公司 | 一种应用程序加载的方法及装置 |
CN102955707A (zh) * | 2011-08-31 | 2013-03-06 | 福建三元达软件有限公司 | 基于前后台***驱动程序与应用程序的相互加载的方法 |
CN103294510A (zh) * | 2013-05-24 | 2013-09-11 | 深圳市爱夫卡科技有限公司 | 应用程序动态加载方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106371884A (zh) | 2017-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110673853B (zh) | 一种编译方法、装置及*** | |
CN105718287B (zh) | 一种智能终端的程序流式执行方法 | |
CN105100191A (zh) | 一种云编译实现Java应用安装的方法、装置及*** | |
US20140033208A1 (en) | Method and device for loading application program | |
CN103810416A (zh) | 一种软件安装或卸载方法及装置 | |
CN105335187A (zh) | 一种应用的处理方法及装置 | |
CN103927180A (zh) | 一种基于安卓***的功能插件的实现方法及其*** | |
CN110727581A (zh) | 崩溃定位方法与电子设备 | |
CN108255735A (zh) | 关联环境测试方法、电子装置及计算机可读存储介质 | |
CN105045642A (zh) | 一种自定义类的加载方法及装置 | |
CN101932145B (zh) | 一种无线通信***中实现软件版本管理的装置及方法 | |
CN111158743A (zh) | 大数据运维管理平台 | |
CN106371884B (zh) | 通用嵌入式加载应用***及方法 | |
CN111722857A (zh) | 软件开发工具包的更新方法、装置、电子设备及存储介质 | |
CN112214413B (zh) | 一种应用程序的测试方法、装置、设备及存储介质 | |
CN113791870B (zh) | 一种WebAssembly虚拟机分布式***细粒度迁移方法及*** | |
CN113342376B (zh) | 一种针对物联网设备的操作***进行升级的方法及装置 | |
CN116028084A (zh) | 一种基于OpenStack云平台跨版本热升级的方法、***及终端 | |
CN115454575A (zh) | jar包转换并自动加载的方法、装置、设备及存储介质 | |
CN110309018B (zh) | 充电设备***切换方法、充电设备及可读存储介质 | |
CN112965733A (zh) | 组件库更新方法、装置、电子设备和可读存储介质 | |
WO2019157891A1 (zh) | 应用安装方法、应用安装包的生成方法 | |
CN112596821A (zh) | 一种安卓应用中动态加载算法的方法 | |
CN112035439A (zh) | 数据迁移方法及装置、计算机设备及计算机可读存储介质 | |
CN104281443A (zh) | 利用tcm实现代码、数据替换的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |