一种多制式应用程序的动态加载方法和装置的制作方法

文档序号:6425947阅读:165来源:国知局
专利名称:一种多制式应用程序的动态加载方法和装置的制作方法
技术领域
本发明涉及嵌入式软件系统的动态加载技术,特别涉及一种多制式应用程序的动态加载方法和装置。
背景技术
在成本战略的今日,人们总希望以最少的硬件实现最多的应用,这种场景的需求越来越多。比如,随着移动通信技术的飞速发展,呈现出了越来越多的协议标准,包括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单元实现副本区与运行区的地址转换,编译时仅需要建立单个制式的工程项目,用较少的代码量实现了一个基站对多制式的支持。


图I是本发明实施例提供的多制式应用程序的动态加载方法的流程示意图;图2是本发明实施例提供的多制式应用程序的动态加载装置的示意图;图3是本发明实施例提供的实现多制式应用程序的动态加载的代码分布示意图;图4是本发明实施例提供的实现多制式应用程序的动态加载的流程图。
具体实施例方式以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。图I显示了本发明提供的多制式应用程序的动态加载方法的流程示意,如图I所示步骤S101,把存储器分成三个区,分别为副本区,链接脚本区和运行区,副本区用于存放所有制式的应用层应用程序,链接脚本区用于描述各个制式单独运行及其组合时相关应用程序在内存中的分布,运行区是应用程序执行的空间区域。并且,对RTOS和各制式应用程序进行编译,其中,RTOS中符号与操作系统专区的存储地址相关联,各制式应用程序的符号与副本区的存储地址相关联。把RTOS加载至操作系统专区,把各制式应用程序加载至副本区,把用于配置各制式单独或组合运行的脚本文件加载至链接脚本区,并填写当前运行的单独或组合各制式应用程序的配置字,放在固定地址中,其中,配置字与各制式应用程序对应。步骤S102,启动加载器,并根据配置字解析脚本文件,从副本区中加载对应的模块应用程序至运行区。脚本文件描述了各制式单独或组合时应用程序在存储器中的分布信息,加载器根据脚本文件从副本区中加载相应的模块应用程序到运行区。其中,分布信息包括各制式的字段名、占用的空间,及其在副本区中的首地址和运行区的加载地址。步骤S103,创建MMU配置表,在MMU配置表建立模块应用程序在副本区的存储地 址与运行区的存储地址之间的映射关系,模块应用程序使用的绝对地址是副本区的存储地址,因此必须配置MMU,建立副本区的存储地址到运行区的存储地址之间的映射关系,其中,映射关系是模块应用程序在副本区的首地址与地址转换后在运行区的首地址的对应关系。步骤S104,启动运行区的应用程序,并启动MMU,MMU根据映射关系实现模块应用程序使用的副本区的存储地址与运行区的存储地址的转换。如果进行制式切换,后台主机重新填写配置字,以中断的方式通知RT0S,加载器提取配置字并重新运行脚本文件,加载相应的模块应用程序到运行区,然后重新配置MMU。图2显示了本发明提供的多制式应用程序的动态加载装置的示意,如图2所示,初始化单元把存储器分成三个区,分别为副本区,链接脚本区和运行区,副本区用于存放所有制式的应用层应用程序,链接脚本区用于描述各个制式单独运行及其组合时相关应用程序在内存中的分布,运行区是应用程序执行的空间区域,并且,对RTOS和各制式应用程序进行编译,其中,RTOS中的符号与操作系统专区的存储地址相关联,各制式应用程序中的符号与副本区的存储地址相关联。初始化单元把RTOS加载至操作系统专区,把各制式应用程序加载至副本区,把用于进行各制式单独或组合的脚本文件加载至链接脚本区,并填写当前运行的单独或组合各制式应用程序的配置字,放在固定地址中。其中,脚本文件是各制式单独或组合的应用程序在存储器中的分布信息,分布信息包括各制式的字段名、占用的空间,及其在副本区中的首地址和运行区的加载地址,配置字与所述各制式应用程序一一对应。然后RTOS启动加载器,加载单元根据配置字解析脚本文件,加载器从副本区中加载对应的模块应用程序至运行区,并通过MMU建立模块应用程序使用的副本区的存储地址与运行区的存储地址之间的映射关系。其中,映射关系是模块应用程序在副本区的首地址与地址转换后在运行区的首地址的对应关系。程序运行单元启动运行区的应用程序,并根据映射关系实现模块应用程序使用的副本区的存储地址与运行区的存储地址的转换。图3显示了本发明实施例提供的实现多制式应用程序的动态加载的代码分布示意,如图3所示,把存储器分为三个区副本区、链接脚本区和运行区,其中,副本区是用来存放所有制式的应用层应用程序,这样在发生制式切换时后台主机不需要重新加载相关应用程序,链接脚本区主要用来描述各个制式单独运行及其任意组合时,相关应用程序在内存中的分布,运行区是应用程序执行时的空间区域,根据脚本文件把副本区的相关应用程序加载到该区域,做相应的MMU映射处理后方可正常运行。采用这种方法的前提是芯片必须有MMU单元,代码在编译时,依然采用静态编译的方式,编译时的链接脚本即用户指定各个模块在存储器中具体存储位置的文件中描述的各个模块的地址必须是DDR中对应副本区及存储系统专区的存储地址。为了实现各种制式的动态加载,必须编写一个脚本文件,该脚本文件在应用程序加载时用于提供各制式单独或任意组合,其应用程序在存储器中的分布状况,描述信息主要包括section段名,占用空间的大小,及其在副本中的首地址和运行区的加载地址。图4显示了本发明实施例提供的多制式应用程序的动态加载的流程,如图4所示步骤S401,后台主机在启动阶段加载所有相关的应用程序RT0S加载到操作系统专区,各个制式的应用层的动态库加载到DDR相应的副本区,脚本存放在链接脚本区。 步骤S402,后台主机与RTOS事先确定一个地址用于填写配置字,然后把控制权交给RT0S,即RTOS启动运行。步骤S403,RTOS启动,做相应的初始化,并为加载器的使用搭建好环境,然后启动RTOS内的加载器,根据配置字开始解析脚本文件。步骤S404,脚本文件描述了各制式单独或任意组合时应用程序在存储器中的分布信息,加载器根据脚本信息走不同的分支,从副本区中加载相应的模块应用程序到运行区。步骤S405,通过MMU单元进行副本区的存储地址与运行区的存储地址之间的转换。由于CPU运行时访问的是运行区的应用程序,但是应用程序中所使用的绝对地址却是副本区的存储地址,这时应用程序还不能直接运行,必须做相应的处理,建立地址之间的映射关系。步骤S406,完成MMU配置,跳出加载器,开始启动运行应用程序。步骤S407,如果发生制式切换,后台主机重新填写配置字,以中断的方式通知RT0S,加载器提取配置字并重新解析脚本文件,加载相应的应用程序到运行区,然后重新配置 MMU。综上所述,本发明具有以下技术效果本发明把各制式的组合放在加载阶段完成,通过MMU单元实现副本区与运行区的地址转换,编译时仅仅只需建立单个制式的工程项目,用较少的代码量实现了一个基站对多制式的支持,避免了传统方式的工程项目繁多和存在大量重复代码的问题。尽管上文对本发明进行了详细说明,但是本发明不限于此,本领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。
权利要求
1.一种多制式应用程序的动态加载方法,其特征在于,包括以下步骤 A、把实时操作系统RTOS加载至操作系统专区,把各制式应用程序加载至存储器的副本区,把用于配置各制式単独或组合运行的脚本文件加载至链接脚本区,并填写当前运行的単独或组合制式应用程序的配置字; B、根据所述配置字解析脚本文件,从副本区中加载对应的模块应用程序至运行区; C、创建内存管理単元MMU配置表,在所述MMU配置表建立所述模块应用程序在副本区的存储地址与运行区的存储地址之间的映射关系;以及 D、启动运行区的应用程序,MMU根据所述映射关系实现所述模块应用程序中符号的存储地址的转换。
2.根据权利要求I所述的方法,其特征在于,在所述步骤A之前,包括 把存储器分成副本区、链接脚本区和运行区。
3.根据权利要求I所述的方法,其特征在于,所述脚本文件配置各制式単独或组合的应用程序在存储器中的分布信息。
4.根据权利要求3所述的方法,其特征在于,所述分布信息包括各制式的字段名、占用的空间,及其在副本区中的首地址和运行区的加载地址。
5.根据权利要求I所述的方法,其特征在于,所述映射关系是所述模块应用程序在副本区的首地址与地址转换后在运行区的首地址的对应关系。
6.根据权利要求I至5任一项所述的方法,其特征在于,所述RTOS中的符号与操作系统专区的存储地址相关联,各制式应用程序的符号与其所在副本区的存储地址相关联。
7.根据权利要求I至5任一项所述的方法,其特征在于,所述配置字与所述各制式単独或组合的应用程序一一对应。
8.一种多制式应用程序的动态加载装置,其特征在于,包括 初始化单元,把实时操作系统RTOS加载至操作系统专区,把各制式应用程序加载至存储器的副本区,把用于配置各制式単独或组合运行的脚本文件加载至链接脚本区,并填写当前运行的単独或组合制式应用程序的配置字; 加载单元,用于根据所述配置字解析脚本文件,从副本区中加载对应的模块应用程序至运行区; 内存管理単元,用于建立所述模块应用程序在副本区的存储地址与运行区的存储地址之间的映射关系;以及 程序运行单元,用于启动运行区的应用程序; 其中,MMU根据所述映射关系实现所述模块应用程序中符号的存储地址的转换。
9.根据权利要求8所述的装置,其特征在于,所述初始化単元还用于把存储器分成副本区、链接脚本区和运行区。
10.根据权利要求8所述的装置,其特征在于,所述脚本文件配置各制式単独或组合的应用程序在存储器中的分布信息,所述分布信息包括各制式的字段名、占用的空间,及其在副本区中的首地址和运行区的加载地址。
全文摘要
本发明公开了一种多制式应用程序的动态加载方法和装置,该方法包括把RTOS加载至操作系统专区,把各制式应用程序加载至副本区,把脚本文件加载至链接脚本区,并填写当前运行的制式应用程序的配置字;根据配置字解析脚本文件,从副本区加载对应的模块应用程序至运行区;创建MMU配置表,建立模块应用程序在副本区与运行区的存储地址间的映射关系;启动运行区的应用程序,MMU根据映射关系实现模块应用程序中符号的存储地址的转换。本发明采用在应用程序加载阶段完成各制式的任意组合,通过MMU单元实现副本区与运行区的地址转换,编译时仅建立单个制式的工程项目,用较少的代码量实现了一个基站对多制式的支持。
文档编号G06F9/445GK102819440SQ20111015538
公开日2012年12月12日 申请日期2011年6月10日 优先权日2011年6月10日
发明者张团, 余中云 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1