CN102819440A - 一种多制式应用程序的动态加载方法和装置 - Google Patents
一种多制式应用程序的动态加载方法和装置 Download PDFInfo
- Publication number
- CN102819440A CN102819440A CN2011101553874A CN201110155387A CN102819440A CN 102819440 A CN102819440 A CN 102819440A CN 2011101553874 A CN2011101553874 A CN 2011101553874A CN 201110155387 A CN201110155387 A CN 201110155387A CN 102819440 A CN102819440 A CN 102819440A
- Authority
- CN
- China
- Prior art keywords
- application program
- standard
- operational area
- address
- copy region
- 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.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种多制式应用程序的动态加载方法和装置,该方法包括:把RTOS加载至操作系统专区,把各制式应用程序加载至副本区,把脚本文件加载至链接脚本区,并填写当前运行的制式应用程序的配置字;根据配置字解析脚本文件,从副本区加载对应的模块应用程序至运行区;创建MMU配置表,建立模块应用程序在副本区与运行区的存储地址间的映射关系;启动运行区的应用程序,MMU根据映射关系实现模块应用程序中符号的存储地址的转换。本发明采用在应用程序加载阶段完成各制式的任意组合,通过MMU单元实现副本区与运行区的地址转换,编译时仅建立单个制式的工程项目,用较少的代码量实现了一个基站对多制式的支持。
Description
技术领域
本发明涉及嵌入式软件系统的动态加载技术,特别涉及一种多制式应用程序的动态加载方法和装置。
背景技术
在成本战略的今日,人们总希望以最少的硬件实现最多的应用,这种场景的需求越来越多。比如,随着移动通信技术的飞速发展,呈现出了越来越多的协议标准,包括UMTS,CDMA2000,TD-SCDMA,WiMAX,LTE等等,对基站的设计也提出了更高的要求。在2G时代一个基站只需要满足一种制式,因为用户的移动通讯终端只支持GSM、CDMA其中一种制式,但随着3G时代的到来,带来了更多的制式,可供用户选择的移动通讯终端随着制式的不同呈现差异化,一个小区内会出现多种制式的终端,在同一个小区内建立多个不同制式的基站的形式成本太高,为了满足不同用户的差异化需求,就要求每一个基站同时可以支持多种制式。
采用传统方式,各制式的应用软件与嵌入式RTOS(Real-time operating system,实时操作系统)是一起编译的。基站要支持多制式,就意味着每种制式可以单独运行,其任意组合也可以同时运行,这就需要为每一种场景建立其相应的工程项目,进行独立编译。
多制式运行时,后台主机根据不同的制式设置,加载相应工程项目的可执行文件到存储器,然后启动运行。当制式需要切换时,就必须断电,后台主机重新加载相应工程项目的代码,因为我们不可能把所有可能运行的制式及其组合的工程代码全部放在DDR中,这样代码量太大。
这种方式虽然也能实现一个基站对多制式的支持,但是,这样势必导致工程项目繁多,各个工程项目之间存在大量的重复代码,使得耦合性紧密,为操作维护带来了不便。
发明内容
本发明的目的在于提供一种的多制式应用程序的动态加载方法和装置,用于解决用较少的代码量实现一个基站对多制式的支持的问题。
根据本发明的一个方面,提供了一种多制式应用程序的动态加载方法,包括以下步骤:
A、把RTOS加载至操作系统专区,把各制式应用程序加载至存储器的副本区,把用于配置各制式单独或组合运行的脚本文件加载至链接脚本区,并填写当前运行的单独或组合制式应用程序的配置字;
B、根据配置字解析脚本文件,从副本区中加载对应的模块应用程序至运行区;
C、创建MMU(Memory Management Unit,内存管理单元)配置表,在MMU配置表建立模块应用程序在副本区的存储地址与运行区的存储地址之间的映射关系;
D、启动运行区的应用程序,MMU根据映射关系实现模块应用程序中符号的存储地址的转换。
优选的,在步骤A之前,包括:
把存储器分成副本区、链接脚本区和运行区。
优选的,脚本文件配置各制式单独或组合的应用程序在存储器中的分布信息。
优选的,分布信息包括各制式的字段名、占用的空间,及其在副本区中的首地址和运行区的加载地址。
优选的,映射关系是模块应用程序在副本区的首地址与地址转换后在运行区的首地址的对应关系。
优选的,RTOS中的符号与操作系统专区的存储地址相关联,各制式应用程序的符号与其所在副本区的存储地址相关联。
优选的,配置字与各制式单独或组合的应用程序一一对应。
根据本发明的另一方面,提供了一种多制式应用程序的动态加载装置,包括:
初始化单元,把RTOS加载至操作系统专区,把各制式应用程序加载至存储器的副本区,把用于配置各制式单独或组合运行的脚本文件加载至链接脚本区,并填写当前运行的单独或组合各制式应用程序的配置字;
加载单元,用于根据配置字解析脚本文件,从副本区中加载对应的模块应用程序至运行区;
内存管理单元,用于建立模块应用程序在副本区的存储地址与运行区的存储地址之间的映射关系;
程序运行单元,用于启动运行区的应用程序;
其中,MMU根据映射关系实现模块应用程序中符号的存储地址的转换。
优选的,初始化单元还用于把存储器分成副本区、链接脚本区和运行区。
优选的,脚本文件配置各制式单独或组合的应用程序在存储器中的分布信息,分布信息包括各制式的字段名、占用的空间,及其在副本区中的首地址和运行区的加载地址。
与现有技术相比较,本发明的有益效果在于:本发明采用在代码加载阶段完成各制式的任意组合,通过MMU单元实现副本区与运行区的地址转换,编译时仅需要建立单个制式的工程项目,用较少的代码量实现了一个基站对多制式的支持。
附图说明
图1是本发明实施例提供的多制式应用程序的动态加载方法的流程示意图;
图2是本发明实施例提供的多制式应用程序的动态加载装置的示意图;
图3是本发明实施例提供的实现多制式应用程序的动态加载的代码分布示意图;
图4是本发明实施例提供的实现多制式应用程序的动态加载的流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1显示了本发明提供的多制式应用程序的动态加载方法的流程示意,如图1所示:
步骤S101,把存储器分成三个区,分别为副本区,链接脚本区和运行区,副本区用于存放所有制式的应用层应用程序,链接脚本区用于描述各个制式单独运行及其组合时相关应用程序在内存中的分布,运行区是应用程序执行的空间区域。并且,对RTOS和各制式应用程序进行编译,其中,RTOS中符号与操作系统专区的存储地址相关联,各制式应用程序的符号与副本区的存储地址相关联。把RTOS加载至操作系统专区,把各制式应用程序加载至副本区,把用于配置各制式单独或组合运行的脚本文件加载至链接脚本区,并填写当前运行的单独或组合各制式应用程序的配置字,放在固定地址中,其中,配置字与各制式应用程序一一对应。
步骤S102,启动加载器,并根据配置字解析脚本文件,从副本区中加载对应的模块应用程序至运行区。脚本文件描述了各制式单独或组合时应用程序在存储器中的分布信息,加载器根据脚本文件从副本区中加载相应的模块应用程序到运行区。其中,分布信息包括各制式的字段名、占用的空间,及其在副本区中的首地址和运行区的加载地址。
步骤S103,创建MMU配置表,在MMU配置表建立模块应用程序在副本区的存储地址与运行区的存储地址之间的映射关系,模块应用程序使用的绝对地址是副本区的存储地址,因此必须配置MMU,建立副本区的存储地址到运行区的存储地址之间的映射关系,其中,映射关系是模块应用程序在副本区的首地址与地址转换后在运行区的首地址的对应关系。
步骤S104,启动运行区的应用程序,并启动MMU,MMU根据映射关系实现模块应用程序使用的副本区的存储地址与运行区的存储地址的转换。
如果进行制式切换,后台主机重新填写配置字,以中断的方式通知RTOS,加载器提取配置字并重新运行脚本文件,加载相应的模块应用程序到运行区,然后重新配置MMU。
图2显示了本发明提供的多制式应用程序的动态加载装置的示意,如图2所示,初始化单元把存储器分成三个区,分别为副本区,链接脚本区和运行区,副本区用于存放所有制式的应用层应用程序,链接脚本区用于描述各个制式单独运行及其组合时相关应用程序在内存中的分布,运行区是应用程序执行的空间区域,并且,对RTOS和各制式应用程序进行编译,其中,RTOS中的符号与操作系统专区的存储地址相关联,各制式应用程序中的符号与副本区的存储地址相关联。初始化单元把RTOS加载至操作系统专区,把各制式应用程序加载至副本区,把用于进行各制式单独或组合的脚本文件加载至链接脚本区,并填写当前运行的单独或组合各制式应用程序的配置字,放在固定地址中。其中,脚本文件是各制式单独或组合的应用程序在存储器中的分布信息,分布信息包括各制式的字段名、占用的空间,及其在副本区中的首地址和运行区的加载地址,配置字与所述各制式应用程序一一对应。
然后RTOS启动加载器,加载单元根据配置字解析脚本文件,加载器从副本区中加载对应的模块应用程序至运行区,并通过MMU建立模块应用程序使用的副本区的存储地址与运行区的存储地址之间的映射关系。其中,映射关系是模块应用程序在副本区的首地址与地址转换后在运行区的首地址的对应关系。
程序运行单元启动运行区的应用程序,并根据映射关系实现模块应用程序使用的副本区的存储地址与运行区的存储地址的转换。
图3显示了本发明实施例提供的实现多制式应用程序的动态加载的代码分布示意,如图3所示,把存储器分为三个区:副本区、链接脚本区和运行区,其中,副本区是用来存放所有制式的应用层应用程序,这样在发生制式切换时后台主机不需要重新加载相关应用程序,链接脚本区主要用来描述各个制式单独运行及其任意组合时,相关应用程序在内存中的分布,运行区是应用程序执行时的空间区域,根据脚本文件把副本区的相关应用程序加载到该区域,做相应的MMU映射处理后方可正常运行。
采用这种方法的前提是芯片必须有MMU单元,代码在编译时,依然采用静态编译的方式,编译时的链接脚本即用户指定各个模块在存储器中具体存储位置的文件中描述的各个模块的地址必须是DDR中对应副本区及存储系统专区的存储地址。为了实现各种制式的动态加载,必须编写一个脚本文件,该脚本文件在应用程序加载时用于提供各制式单独或任意组合,其应用程序在存储器中的分布状况,描述信息主要包括section段名,占用空间的大小,及其在副本中的首地址和运行区的加载地址。
图4显示了本发明实施例提供的多制式应用程序的动态加载的流程,如图4所示:
步骤S401,后台主机在启动阶段加载所有相关的应用程序:RTOS加载到操作系统专区,各个制式的应用层的动态库加载到DDR相应的副本区,脚本存放在链接脚本区。
步骤S402,后台主机与RTOS事先确定一个地址用于填写配置字,然后把控制权交给RTOS,即RTOS启动运行。
步骤S403,RTOS启动,做相应的初始化,并为加载器的使用搭建好环境,然后启动RTOS内的加载器,根据配置字开始解析脚本文件。
步骤S404,脚本文件描述了各制式单独或任意组合时应用程序在存储器中的分布信息,加载器根据脚本信息走不同的分支,从副本区中加载相应的模块应用程序到运行区。
步骤S405,通过MMU单元进行副本区的存储地址与运行区的存储地址之间的转换。由于CPU运行时访问的是运行区的应用程序,但是应用程序中所使用的绝对地址却是副本区的存储地址,这时应用程序还不能直接运行,必须做相应的处理,建立地址之间的映射关系。
步骤S406,完成MMU配置,跳出加载器,开始启动运行应用程序。
步骤S407,如果发生制式切换,后台主机重新填写配置字,以中断的方式通知RTOS,加载器提取配置字并重新解析脚本文件,加载相应的应用程序到运行区,然后重新配置MMU。
综上所述,本发明具有以下技术效果:本发明把各制式的组合放在加载阶段完成,通过MMU单元实现副本区与运行区的地址转换,编译时仅仅只需建立单个制式的工程项目,用较少的代码量实现了一个基站对多制式的支持,避免了传统方式的工程项目繁多和存在大量重复代码的问题。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。
Claims (10)
1.一种多制式应用程序的动态加载方法,其特征在于,包括以下步骤:
A、把实时操作系统RTOS加载至操作系统专区,把各制式应用程序加载至存储器的副本区,把用于配置各制式单独或组合运行的脚本文件加载至链接脚本区,并填写当前运行的单独或组合制式应用程序的配置字;
B、根据所述配置字解析脚本文件,从副本区中加载对应的模块应用程序至运行区;
C、创建内存管理单元MMU配置表,在所述MMU配置表建立所述模块应用程序在副本区的存储地址与运行区的存储地址之间的映射关系;以及
D、启动运行区的应用程序,MMU根据所述映射关系实现所述模块应用程序中符号的存储地址的转换。
2.根据权利要求1所述的方法,其特征在于,在所述步骤A之前,包括:
把存储器分成副本区、链接脚本区和运行区。
3.根据权利要求1所述的方法,其特征在于,所述脚本文件配置各制式单独或组合的应用程序在存储器中的分布信息。
4.根据权利要求3所述的方法,其特征在于,所述分布信息包括各制式的字段名、占用的空间,及其在副本区中的首地址和运行区的加载地址。
5.根据权利要求1所述的方法,其特征在于,所述映射关系是所述模块应用程序在副本区的首地址与地址转换后在运行区的首地址的对应关系。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述RTOS中的符号与操作系统专区的存储地址相关联,各制式应用程序的符号与其所在副本区的存储地址相关联。
7.根据权利要求1至5任一项所述的方法,其特征在于,所述配置字与所述各制式单独或组合的应用程序一一对应。
8.一种多制式应用程序的动态加载装置,其特征在于,包括:
初始化单元,把实时操作系统RTOS加载至操作系统专区,把各制式应用程序加载至存储器的副本区,把用于配置各制式单独或组合运行的脚本文件加载至链接脚本区,并填写当前运行的单独或组合制式应用程序的配置字;
加载单元,用于根据所述配置字解析脚本文件,从副本区中加载对应的模块应用程序至运行区;
内存管理单元,用于建立所述模块应用程序在副本区的存储地址与运行区的存储地址之间的映射关系;以及
程序运行单元,用于启动运行区的应用程序;
其中,MMU根据所述映射关系实现所述模块应用程序中符号的存储地址的转换。
9.根据权利要求8所述的装置,其特征在于,所述初始化单元还用于把存储器分成副本区、链接脚本区和运行区。
10.根据权利要求8所述的装置,其特征在于,所述脚本文件配置各制式单独或组合的应用程序在存储器中的分布信息,所述分布信息包括各制式的字段名、占用的空间,及其在副本区中的首地址和运行区的加载地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110155387.4A CN102819440B (zh) | 2011-06-10 | 2011-06-10 | 一种多制式应用程序的动态加载方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110155387.4A CN102819440B (zh) | 2011-06-10 | 2011-06-10 | 一种多制式应用程序的动态加载方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102819440A true CN102819440A (zh) | 2012-12-12 |
CN102819440B CN102819440B (zh) | 2017-02-22 |
Family
ID=47303565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110155387.4A Active CN102819440B (zh) | 2011-06-10 | 2011-06-10 | 一种多制式应用程序的动态加载方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102819440B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109002299A (zh) * | 2017-06-07 | 2018-12-14 | 中兴通讯股份有限公司 | 一种嵌入式系统多模式应用软件动态加载的方法及装置 |
CN111858004A (zh) * | 2020-07-21 | 2020-10-30 | 中国人民解放军国防科技大学 | 基于tee扩展的计算机安全世界实时应用动态加载方法及系统 |
CN112650501A (zh) * | 2020-12-31 | 2021-04-13 | 重庆芯讯通无线科技有限公司 | 编译、终端设备及其客户应用程序的编译链接和加载方法 |
WO2022179101A1 (zh) * | 2021-02-23 | 2022-09-01 | 深圳市广和通无线股份有限公司 | 存储架构下的软件存储方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070015527A1 (en) * | 2005-07-18 | 2007-01-18 | Pantech & Curitel Communications, Inc. | Method of compressing and decompressing executable file in mobile communication terminal |
CN101193351A (zh) * | 2006-11-20 | 2008-06-04 | 华为技术有限公司 | 多制式基站及其信息处理方法和无线通信系统 |
CN101572899A (zh) * | 2009-05-31 | 2009-11-04 | 中兴通讯股份有限公司 | 基于多制式网络的切换装置及方法 |
-
2011
- 2011-06-10 CN CN201110155387.4A patent/CN102819440B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070015527A1 (en) * | 2005-07-18 | 2007-01-18 | Pantech & Curitel Communications, Inc. | Method of compressing and decompressing executable file in mobile communication terminal |
CN101193351A (zh) * | 2006-11-20 | 2008-06-04 | 华为技术有限公司 | 多制式基站及其信息处理方法和无线通信系统 |
CN101572899A (zh) * | 2009-05-31 | 2009-11-04 | 中兴通讯股份有限公司 | 基于多制式网络的切换装置及方法 |
Non-Patent Citations (2)
Title |
---|
夏爽: ""ARM处理器的分散加载及特殊应用研究"", 《计算机与嵌入式系统应用》 * |
孟钢等: ""多映像加载方法在嵌入式系统程序调试中的应用"", 《计算机工程与应用》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109002299A (zh) * | 2017-06-07 | 2018-12-14 | 中兴通讯股份有限公司 | 一种嵌入式系统多模式应用软件动态加载的方法及装置 |
CN109002299B (zh) * | 2017-06-07 | 2024-03-08 | 中兴通讯股份有限公司 | 一种嵌入式系统多模式应用软件动态加载的方法及装置 |
CN111858004A (zh) * | 2020-07-21 | 2020-10-30 | 中国人民解放军国防科技大学 | 基于tee扩展的计算机安全世界实时应用动态加载方法及系统 |
CN112650501A (zh) * | 2020-12-31 | 2021-04-13 | 重庆芯讯通无线科技有限公司 | 编译、终端设备及其客户应用程序的编译链接和加载方法 |
WO2022179101A1 (zh) * | 2021-02-23 | 2022-09-01 | 深圳市广和通无线股份有限公司 | 存储架构下的软件存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102819440B (zh) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101324850B (zh) | Linux内核动态加载方法 | |
CN102819439A (zh) | 一种基于重定位的多制式应用程序的动态加载方法和装置 | |
CN111045714B (zh) | 一种固件更新方法、装置、耳机及计算机可读存储介质 | |
US9405697B2 (en) | Memory management method and apparatus | |
CN102855193A (zh) | 非易失性存储系统中未使用的逻辑地址的挂载时去映射 | |
EP2521033A1 (en) | Startup method and device for application program on mobile device | |
CN102567136A (zh) | 一种计算机系统的备份、还原方法、装置及计算机系统 | |
CN105183551A (zh) | 基于Linux容器技术的多Android系统之间切换方法 | |
CN101859317A (zh) | 一种利用虚拟化构建数据库集群的方法 | |
CN103793255B (zh) | 可配置的多主模式多os内核实时操作系统架构的启动方法 | |
CN102819440A (zh) | 一种多制式应用程序的动态加载方法和装置 | |
CN102831173A (zh) | 基于Android系统的内存扩展方法、装置及终端设备 | |
CN102402622A (zh) | 嵌入式内存数据库的内存页面管理调度方法 | |
CN101697128A (zh) | 版本升级方法和装置 | |
CN101414264A (zh) | 一种高可靠软件版本的更新方法和三种更新方式 | |
CN103777981A (zh) | 一种适用于x86架构的多操作系统远程加载实现方法 | |
CN110874261A (zh) | 可用性系统、方法和存储有程序的存储介质 | |
CN101533350A (zh) | 一种页面快速切换方法、装置和注塑机系统 | |
CN102231116A (zh) | 应用程序虚拟化安装及加载方法及装置 | |
CN101290590A (zh) | 一种嵌入式操作系统中切换任务的方法和单元 | |
CN114491507A (zh) | 一种基于嵌入式实时操作系统实现轻量级安全容器的设计方法 | |
CN103116475B (zh) | 一种自动精简配置扩容的方法 | |
CN104318091A (zh) | 一种基于虚拟化计算机系统的小卫星地面测试方法 | |
CN101615129B (zh) | 应用于分布式系统中的升级方法及版本管理客户端 | |
CN101620573A (zh) | X86体系结构内存管理单元虚拟化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20201106 Address after: No.3, Tonghai Road, chuegang Town, Rudong County, Nantong City, Jiangsu Province, 226400 Patentee after: Rudong Dongguang Logistics Co., Ltd Address before: 518057 Nanshan District Guangdong high tech Industrial Park, South Road, science and technology, ZTE building, Ministry of Justice Patentee before: ZTE Corp. |
|
TR01 | Transfer of patent right |