CN102541579A - 嵌入式***应用程序动态加载的方法 - Google Patents
嵌入式***应用程序动态加载的方法 Download PDFInfo
- Publication number
- CN102541579A CN102541579A CN2010105998124A CN201010599812A CN102541579A CN 102541579 A CN102541579 A CN 102541579A CN 2010105998124 A CN2010105998124 A CN 2010105998124A CN 201010599812 A CN201010599812 A CN 201010599812A CN 102541579 A CN102541579 A CN 102541579A
- Authority
- CN
- China
- Prior art keywords
- application program
- operating system
- embedded
- dynamic load
- application
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种嵌入式***应用程序动态加载的方法,其包括以下步骤:S1、开启嵌入式设备,划分操作***和应用程序分别占有的ROM空间和RAM空间;S2、确定操作***和应用程序间的函数接口;S3、将应用程序固件文件存入嵌入式设备自带的外部存储空间中,把此嵌入式设备与外部存储空间相连;S4、将应用程序固件文件烧录到应用程序的ROM空间中;S5、初始化所述函数接口,操作***对应用程序进行动态加载。本发明通过将应用程序的固件文件存入嵌入式设备自带的外部存储空间中,并设置操作***和应用程序间的函数接口来进行动态加载,使得芯片ROM空间的需求降低,以致降低研发成本。此外还减少了烧录的时间,提高了调试的速度。
Description
技术领域
本发明涉及一种应用程序动态加载的方法,特别是涉及一种嵌入式操作***应用程序动态加载的方法。
背景技术
目前,很多嵌入式操作***并不支持动态加载技术,如UC/OS、ThreadX、RTK等。在基于这些嵌入式操作***开发应用程序的时候,通常将应用程序和操作***都放到一个固件文件里面,即应用程序并不是独立存在的。然后,用户还需要把包含操作***和应用程序的固件文件烧录到产品中去。
这样不仅增加了用户的使用难度,并且提高了对芯片的ROM空间要求,从而导致研发成本的增大。
此外,调试的时候很不方便。该方式需要把所有可执行文件(包含操作***和应用程序)烧录进去。这样增加了烧录的时间,降低了调试的速度。
发明内容
本发明要解决的技术问题是为了克服现有技术实施难度大,成本高且效率低的缺陷,提供一种嵌入式***应用程序动态加载的方法。
本发明是通过下述技术方案来解决上述技术问题的:一种嵌入式***应用程序动态加载的方法,其特点在于,其包括以下步骤:
S1、开启嵌入式设备,划分操作***和应用程序分别占有的ROM(只读内存)空间和RAM(随机存取存储器)空间。
这是为后面烧录应用程序固件文件作准备,使得应用程序固件文件烧录到固定的区域,不会和操作***所占的区域产生重叠。
S2、确定操作***和应用程序间的函数接口。
所述函数接口的作用在于使得操作***能够调用应用程序提供的接口,应用程序能够调用操作***提供的***接口。
S3、将应用程序固件文件存入嵌入式设备自带的外部存储空间中,把此嵌入式设备与外部存储空间相连。
由于芯片内部的ROM空间有限,需要把应用程序的固件文件放置到***的外部文件***中去,在动态加载时便于随时调用。
S4、将应用程序固件文件烧录到应用程序的ROM空间中。
S5、初始化所述函数接口,操作***对应用程序进行动态加载。
通过函数接口,可以快速便捷地进行应用程序的动态加载,降低了操作难度,提高了操作效率。
较佳地,所述操作***为非智能的嵌入式操作***。
非智能的嵌入式操作***中应用程序功能单一,这样方便定义操作***与应用程序之间的函数接口,而且应用程序面向的对象很多,可以根据所连接的对象来加载不同的应用程序固件。
较佳地,所述外部存储空间为U盘、移动硬盘或电脑。所述外部存储空间简单易行。
较佳地,所述步骤S2中还包括以下步骤:
S21、定义操作***函数结构体,包含操作***向应用程序提供的函数接口:
S22、定义操作***函数结构体变量,将所述变量固定在操作***ROM空间的第一固定位置;
S23、定义应用程序函数结构体,包含应用程序向操作***提供的函数接口;
S24、定义应用程序函数结构体变量,将所述变量固定在应用程序ROM空间的第二固定位置。
较佳地,所述步骤S3中还包括:在所述嵌入式设备自带的外部存储空间中创建一对应表文件。
较佳地,所述对应表文件用于记录每个应用程序固件文件的名字及支持的设备型号,并建立对应关系。这样方便操作***快速查找固件。
***在获取连接的设备型号后,根据对应表格文件进行快速的应用程序固件的查找,减少了查找的时间。
较佳地,所述步骤S3之后还包括以下步骤:
S31、操作***获取连接的嵌入式设备型号;
S32、判断是否获取所连接的嵌入式设备型号成功;若否,进入步骤S33,若是,进入步骤S34;
S33、提示用户不支持,需要更新应用程序固件;
S34、根据获取的所连接的嵌入式设备型号在对应表文件中查找对应的应用程序固件;
S35、判断是否查找成功;若否,返回步骤S33,若是,进入步骤S4。
较佳地,所述步骤S5中还包括以下步骤:
S51、操作***在第二位置上初始化应用程序向操作***提供的函数接口;
S52、应用程序在第一位置上初始化操作***向应用程序提供的函数接口。
当合适的应用程序固件烧录到ROM空间以后,操作***进行函数接口的初始化,以达到操作***可以调用应用程序提供的接口,应用程序可以调用操作***的接口的目的。
本发明的积极进步效果在于:本发明通过将应用程序的固件文件存入嵌入式设备自带的外部存储空间中,并设置操作***和应用程序间的函数接口来进行动态加载,使得芯片ROM空间的需求降低,以致降低研发成本。此外,由于只需要烧录应用程序的固件文件,减少了烧录的时间,同时也提高了调试的速度。
附图说明
图1为本发明嵌入式***应用程序动态加载的方法的流程图。
图2为本发明嵌入式***应用程序动态加载的方法中确定函数接口的流程图。
图3为本发明嵌入式***应用程序动态加载的方法中初始化函数接口的流程图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。
首先要划分好操作***和应用程序所占的ROM和RAM空间。
例如,设定如下地址范围:
ROM空间:
操作***:0x00000000-0x000FFFFF
应用程序 0x100000-0x8FFFFF
RAM空间:
操作***:0x00000000-0x00100000
应用程序 0x100001-0x300001
这样就可以把应用程序固件文件烧录到固定的区域,从而保证操作***所占的区域产生重叠。
图1为本发明嵌入式***应用程序动态加载的方法的流程图。如图1所示,该方法包括以下步骤:
步骤100,开启嵌入式设备。
步骤101,划分操作***和应用程序分别占有的ROM空间和RAM空间。
该步骤为后面烧录应用程序固件文件作准备,保证应用程序固件文件不会和操作***所占的区域产生重叠。
此外,这里的所述操作***为非智能的嵌入式操作***。其中的应用程序功能单一,这样方便定义操作***与应用程序之间的函数接口。而且,应用程序面向的对象很多,可以根据所连接的对象来加载不同的应用程序固件。
比如:一款应用程序的功能是烧写手机的IEMI(International MobileEquipment Identity,国际移动装备辨识码)号,功能相对单一。但是由于手机的种类繁多,按照以前的应用模式,对每一款不同的手机需要对产品烧录不同的固件(包含操作***和支持当前手机的应用程序)。
采用本发明,把应用程序固件存放到外部文件***中去,操作***根据所连接设备的型号进行应用程序固件查找,查找到以后,烧录到ROM空间,然后开始工作,实现动态加载,整个操作简便快捷。
步骤102,确定操作***和应用程序间的函数接口。
所述函数接口的作用在于使得操作***能够调用应用程序提供的接口,应用程序行能够调用操作***提供的***接口。
步骤103,将应用程序固件文件存入嵌入式***自带的外部存储空间中。
外部存储空间可以为U盘、移动硬盘或电脑,以及其他存储设备。
由于芯片内部的ROM空间有限,需要把应用程序的固件文件放置到***的外部文件***中去,在动态加载时便于随时调用。
步骤104,在嵌入式***自带的外部存储空间中创建一对应表文件。
对应表文件用于记录每个应用程序固件文件的名字及支持的设备型号,并建立对应关系。这样方便操作***快速查找固件。
***在获取连接的设备型号后,根据对应表格文件进行快速的应用程序固件的查找,减少了查找的时间。
步骤105,连接嵌入式设备和外部存储空间。
步骤106,操作***获取连接的嵌入式设备型号。
步骤107,判断是否成功获取所连接的嵌入式设备型号;若否,进入步骤108,若是,进入步骤109。
步骤108,提示用户不支持,需要更新应用程序固件。
步骤109,根据获取的嵌入式设备型号在对应表文件中查找对应的应用程序固件。
步骤110,判断是否查找成功;若否,返回步骤108,若是,进入步骤111。
步骤111,将应用程序固件文件烧录到应用程序的ROM空间中。
步骤112,初始化所述函数接口,操作***对应用程序进行动态加载。
通过函数接口,可以快速便捷地进行应用程序的动态加载,降低了操作难度,提高了操作效率。
以下通过一个实例来详细说明该方法:
假设有8个应用程序固件文件,分别是1.bin,2.bin,3.bin,4.bin,5.bin,6.bin,7.bin,8.bin,且分别支持M_A,M_B,M_C,M_D,M_E,M_F,M_G,M_H。
建立关系对应表table.txt如下:
1.bin:M_A
2.bin:M_B
3.bin:M_C
4.bin:M_D
5.bin:M_E
6.bin:M_F
7.bin:M_G
8.bin:M_H
当连接的设备是M_E,***根据对应表table.txt查找到5.bin支持M_E。因此将5.bin烧录到应用程序对应的ROM空间,然后初始化操作***与应用程序之间的函数接口,***开始运行。
当连接的设备是M_C,***根据对应表table.txt查找到3.bin支持M_C。因此将3.bin烧录到应用程序对应的ROM空间,然后初始化操作***与应用程序之间的函数接口,***开始运行。
这样就达到了动态调用的目的。如果连接的设备为M_X,table.txt不存在,则提示用户不支持,需要更新固件。
图2为本发明嵌入式***应用程序动态加载的方法中确定函数接口的流程图。
如图2所示,该确定函数接口的流程包括如下步骤:
步骤200,定义操作***函数结构体,包含操作***向应用程序提供的函数接口。
步骤201,定义操作***函数结构体变量,将所述变量固定在操作***ROM空间的第一固定位置。
步骤202,定义应用程序函数结构体,包含应用程序向操作***提供的函数接口。
步骤203,定义应用程序函数结构体变量,将所述变量固定在应用程序ROM空间的第二固定位置。
图3为本发明嵌入式***应用程序动态加载的方法中初始化函数接口的流程图。
当合适的应用程序固件烧录到ROM空间以后,操作***进行函数接口的初始化,以达到操作***可以调用应用程序提供的接口,应用程序可以调用操作***的接口的目的。
如图3所示,该初始化函数接口的流程包括如下步骤:
步骤300,操作***在第二位置上初始化应用程序向操作***提供的函数接口。
步骤301,应用程序在第一位置上初始化操作***向应用程序提供的函数接口。
以下通过一实例来说明确定函数接口和初始化函数接口的流程:
操作***向应用程序提供的函数接口:
Void(*)OS_interface1(Void*)
Void(*)OS_interface2(Void*)
Void(*)OS_interface3(Void*)
Void(*)OS_interface4(Void*)
Void(*)OS_interface5(Void*)
Void(*)OS_interfacex(Void*)
应用程序向操作***提供的函数接口:
Void(*)App_interface1(Void*)
Void(*)App_interface2(Void*)
Void(*)App_interface3(Void*)
Void(*)App_interface4(Void*)
Void(*)App_interface5(Void*)
Void(*)App_interfacex(Void*)
定义操作***函数结构体:
定义操作应用程序结构体:
定义操作***函数结构体变量:
将o_Interface固定在0x0000FFFF上。
定义应用程序函数结构体变量:
将a_Interface固定在0x8FFFF0上。
通过本发明嵌入式***应用程序动态加载的方法,提高了调试速度,降低了产品的成本,从而有效解决了嵌入式操作***不支持动态加载的情况。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (8)
1.一种嵌入式***应用程序动态加载的方法,其特征在于,其包括以下步骤:
S1、开启嵌入式设备,划分操作***和应用程序分别占有的ROM空间和RAM空间;
S2、确定操作***和应用程序间的函数接口;
S3、将应用程序固件文件存入嵌入式设备自带的外部存储空间中,把此嵌入式设备与外部存储空间相连;
S4、将应用程序固件文件烧录到应用程序的ROM空间中;
S5、初始化所述函数接口,操作***对应用程序进行动态加载。
2.如权利要求1所述的嵌入式***应用程序动态加载的方法,其特征在于,所述操作***为非智能的嵌入式操作***。
3.如权利要求1所述的嵌入式***应用程序动态加载的方法,其特征在于,所述外部存储空间为U盘、移动硬盘或电脑。
4.如权利要求1所述的嵌入式***应用程序动态加载的方法,其特征在于,所述步骤S2中还包括以下步骤:
S21、定义操作***函数结构体,包含操作***向应用程序提供的函数接口;
S22、定义操作***函数结构体变量,将所述变量固定在操作***ROM空间的第一固定位置;
S23、定义应用程序函数结构体,包含应用程序向操作***提供的函数接口;
S24、定义应用程序函数结构体变量,将所述变量固定在应用程序ROM空间的第二固定位置。
5.如权利要求1所述的嵌入式***应用程序动态加载的方法,其特征在于,所述步骤S3中还包括:在所述嵌入式设备自带的外部存储空间中创建一对应表文件。
6.如权利要求5所述的嵌入式***应用程序动态加载的方法,其特征在于,所述对应表文件用于记录每个应用程序固件文件的名字及支持的设备型号,并建立对应关系。
7.如权利要求1所述的嵌入式***应用程序动态加载的方法,其特征在于,所述步骤S3之后还包括以下步骤:
S31、操作***获取连接的嵌入式设备型号;
S32、判断是否获取所连接的嵌入式设备型号成功;若否,进入步骤S33,若是,进入步骤S34;
S33、提示用户不支持,需要更新应用程序固件;
S34、根据获取的所连接的嵌入式设备型号在对应表文件中查找对应的应用程序固件;
S35、判断是否查找成功;若否,返回步骤S33,若是,进入步骤S4。
8.如权利要求1所述的嵌入式***应用程序动态加载的方法,其特征在于,所述步骤S5中还包括以下步骤:
S51、操作***在第二位置上初始化应用程序向操作***提供的函数接口;
S52、应用程序在第一位置上初始化操作***向应用程序提供的函数接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105998124A CN102541579A (zh) | 2010-12-17 | 2010-12-17 | 嵌入式***应用程序动态加载的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105998124A CN102541579A (zh) | 2010-12-17 | 2010-12-17 | 嵌入式***应用程序动态加载的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102541579A true CN102541579A (zh) | 2012-07-04 |
Family
ID=46348550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105998124A Pending CN102541579A (zh) | 2010-12-17 | 2010-12-17 | 嵌入式***应用程序动态加载的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102541579A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103645920A (zh) * | 2013-12-19 | 2014-03-19 | 深圳市捷顺科技实业股份有限公司 | 一种嵌入式***程序烧录方法及*** |
CN104422865A (zh) * | 2013-08-22 | 2015-03-18 | 上海海尔集成电路有限公司 | 晶圆级一次性编程otp芯片测试方法及装置 |
CN106371884A (zh) * | 2016-09-18 | 2017-02-01 | 时瑞科技(深圳)有限公司 | 通用嵌入式加载应用***及方法 |
CN106909480A (zh) * | 2017-01-19 | 2017-06-30 | 华南师范大学 | 一种嵌入式***交叉调试方法和装置 |
CN107122216A (zh) * | 2017-05-19 | 2017-09-01 | 北京计算机技术及应用研究所 | 一种嵌入式实时操作***动态加载方法 |
CN109254762A (zh) * | 2018-08-23 | 2019-01-22 | 深圳市默贝克驱动技术有限公司 | 一种开放式驱动器软件平台 |
CN114035842A (zh) * | 2022-01-07 | 2022-02-11 | 飞腾信息技术有限公司 | 固件配置方法、计算***配置方法、计算装置以及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101246427A (zh) * | 2007-02-15 | 2008-08-20 | 凌阳科技股份有限公司 | 应用程序可重定位加载的方法及地址重定位装置 |
CN101290577A (zh) * | 2007-04-20 | 2008-10-22 | 鸿富锦精密工业(深圳)有限公司 | 嵌入式设备及其加载方法 |
CN101458629A (zh) * | 2008-12-31 | 2009-06-17 | 北京中星微电子有限公司 | 嵌入式实时操作***中实现动态加载的方法和装置 |
WO2009086692A1 (zh) * | 2008-01-07 | 2009-07-16 | Fortune Spring Technology (Shenzhen) Corporation | 嵌入式***利用nand闪存记忆体储存及启动的处理方法 |
CN101493775A (zh) * | 2009-03-06 | 2009-07-29 | 北京北纬通信科技股份有限公司 | 嵌入式***的动态加载***及其加载方法 |
CN101673204A (zh) * | 2009-08-13 | 2010-03-17 | 上海酷吧信息技术有限公司 | 一种基于arm的手机应用程序动态加载方法 |
-
2010
- 2010-12-17 CN CN2010105998124A patent/CN102541579A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101246427A (zh) * | 2007-02-15 | 2008-08-20 | 凌阳科技股份有限公司 | 应用程序可重定位加载的方法及地址重定位装置 |
CN101290577A (zh) * | 2007-04-20 | 2008-10-22 | 鸿富锦精密工业(深圳)有限公司 | 嵌入式设备及其加载方法 |
WO2009086692A1 (zh) * | 2008-01-07 | 2009-07-16 | Fortune Spring Technology (Shenzhen) Corporation | 嵌入式***利用nand闪存记忆体储存及启动的处理方法 |
CN101458629A (zh) * | 2008-12-31 | 2009-06-17 | 北京中星微电子有限公司 | 嵌入式实时操作***中实现动态加载的方法和装置 |
CN101493775A (zh) * | 2009-03-06 | 2009-07-29 | 北京北纬通信科技股份有限公司 | 嵌入式***的动态加载***及其加载方法 |
CN101673204A (zh) * | 2009-08-13 | 2010-03-17 | 上海酷吧信息技术有限公司 | 一种基于arm的手机应用程序动态加载方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104422865A (zh) * | 2013-08-22 | 2015-03-18 | 上海海尔集成电路有限公司 | 晶圆级一次性编程otp芯片测试方法及装置 |
CN103645920A (zh) * | 2013-12-19 | 2014-03-19 | 深圳市捷顺科技实业股份有限公司 | 一种嵌入式***程序烧录方法及*** |
CN106371884A (zh) * | 2016-09-18 | 2017-02-01 | 时瑞科技(深圳)有限公司 | 通用嵌入式加载应用***及方法 |
CN106371884B (zh) * | 2016-09-18 | 2019-12-20 | 时瑞科技(深圳)有限公司 | 通用嵌入式加载应用***及方法 |
CN106909480A (zh) * | 2017-01-19 | 2017-06-30 | 华南师范大学 | 一种嵌入式***交叉调试方法和装置 |
CN107122216A (zh) * | 2017-05-19 | 2017-09-01 | 北京计算机技术及应用研究所 | 一种嵌入式实时操作***动态加载方法 |
CN107122216B (zh) * | 2017-05-19 | 2020-06-16 | 北京计算机技术及应用研究所 | 一种嵌入式实时操作***动态加载方法 |
CN109254762A (zh) * | 2018-08-23 | 2019-01-22 | 深圳市默贝克驱动技术有限公司 | 一种开放式驱动器软件平台 |
CN109254762B (zh) * | 2018-08-23 | 2022-12-20 | 深圳市默贝克驱动技术有限公司 | 一种开放式驱动器软件平台 |
CN114035842A (zh) * | 2022-01-07 | 2022-02-11 | 飞腾信息技术有限公司 | 固件配置方法、计算***配置方法、计算装置以及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102541579A (zh) | 嵌入式***应用程序动态加载的方法 | |
CN104166561B (zh) | 电子设备***启动方法和电子设备 | |
CN104239083A (zh) | 移动终端的应用的迁移方法、装置以及*** | |
CN101510161A (zh) | 一种引导程序的实现方法、装置和便携式电子设备 | |
CN102622249B (zh) | 一种防止cpu自锁的安全启动方法 | |
CN103955536A (zh) | 应用程序的分类方法和装置 | |
CN103365644A (zh) | 一种扩展软件功能的方法及装置 | |
CN104503922B (zh) | 基于uboot引导加载WindowsCE***的方法 | |
US12008171B2 (en) | Program download method for intelligent terminal with memory card identifier and intelligent terminal with memory card identifier | |
CN106465249A (zh) | 漫游入网方法及装置 | |
CN101833464A (zh) | 一种移动终端分段加载应用程序的方法及装置 | |
CN102937904A (zh) | 一种多节点固件升级方法和装置 | |
CN103593281A (zh) | 测试***及测试方法 | |
CN104978224A (zh) | 一种面向多硬件平台的应用程序管理方法 | |
CN111290773B (zh) | ***升级方法、设备及可读存储介质 | |
CN103226505A (zh) | 一种校验基本输入输出***bios的方法及设备 | |
CN103514014A (zh) | 一种嵌入式终端设备引导***的设计方法 | |
CN104050001A (zh) | 基于Android***的资源处理方法、装置和设备 | |
CN103455750B (zh) | 一种嵌入式设备的高安验证方法及装置 | |
US20140298319A1 (en) | Method for installing operating system on electronic device | |
CN109190367B (zh) | 利用沙箱运行应用程序安装包的方法及装置 | |
CN103020186B (zh) | 一种基于嵌入式设备的文件检索方法、装置以及设备 | |
CN103024928A (zh) | 一种终端无线连接的方法及无线终端 | |
CN113031996A (zh) | 一种电子设备的ota升级方法、装置、控制终端及介质 | |
CN105630530A (zh) | 数字信号处理器多级启动方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120704 |