嵌入式实时操作系统中实现动态加载的方法和装置的制作方法

文档序号:6472171阅读:184来源:国知局
专利名称:嵌入式实时操作系统中实现动态加载的方法和装置的制作方法
技术领域
本发明涉及计算机领域,特别涉及一种嵌入式实时操作系统中实现动态 加载的方法和装置。
背景技术
根据正EE (国际电机工程师协会)的定义,嵌入式系统是"控制、监视 或者辅助装置、机器和设备运行的装置"(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。这主要是从应用上力口以 定义的,从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械 等附属装置。目前国内一个普遍^皮认同的嵌入式系统的定义是以应用为中 心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、 成本、体积、功耗严格要求的专用计算机系统。
嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业 的具体应用相结合后的产物,是面向用户、面向产品、面向应用的,它必须 与具体应用相结合才会具有生命力、才更具有优势。嵌入式系统必须根据应 用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要 求。所以,如果能建立相对通用的软硬件基础,然后在其上开发出适应各种 需要的系统,是一个比较好的M才莫式。目前的嵌入式系统的核心往往是一 个只有几K到几十K微内核,需要4艮据实际的使用进行功能扩展或者裁减, 但是由于微内核的存在,使得这种扩展能够非常顺利的进行。实际上,嵌入 式系统本身是一个外延极广的名词,凡是与产品结合在一起的具有嵌入式特 点的控制系统都可以叫嵌入式系统。
一般而言,嵌入式系统的构架可以分成四个部分处理器、存储器、输 入输出(I/O)、操作系统OS。
目前,对于基于嵌入式实时操作系统RTOS的应用开发,通常的做法是
4把应用模块所有的代码全部编译并且链接在一起。这样做最大的问题在于一
个应用模块所需要的代码的存储空间会很大;当应用模块在嵌入式系统中运 行时,其代码都是存储在内存中,为了存储产品代码,需要内存的容量较大, 而内存的价格通常较高,因此提高了整个系统的成本。

发明内容
本发明要解决的技术问题是提供一种嵌入式实时操作系统中实现动态加 载的方法和装置,可以节省代码存储空间,降低产品成本,在相同的代码空 间上,完成更多的功能。
为了解决上述问题,本发明提供了一种嵌入式实时操作系统中实现动态 加载的方法,包括
将应用模块分为基础平台组件和若干应用组件;
运行基础平台;所述基础平台包括所述基础平台组件、数据库冲莫式定义 语言DDL组件和实时操作系统RTOS;
所述基础平台将各应用组件先保存在外存;
当基础平台需要调用 一应用组件时,将该应用组件从外存中加载到内存, 编译链接后运行该应用組件;
当 一应用组件运行结束,基础平台从内存中卸载应用組件。
进一步地,由所述DDL组件通过统一的入口函数将所述应用组件加载到 内存,并进行编译链4妄后运行;
由DDL组件通过统一的退出函数从内存中卸载该应用组件。
进一步地,所述DDL组件将应用组件编译成位置独立代码/数据PIC/PID 的形式;
DDL组件动态决定所加载的应用組件的代码和数据在内存中的实际地址。
进一步地,运行基础平台具体包括 RTOS启动;将所有的基础平台组件通过DDL組件进行注册。
进一步地,所述应用组件在运行时通过DDL组件调用注册的基础平台组件。
本发明还提供了 一种嵌入式实时操作系统中实现动态加载的装置,包括
基础平台、内存、外存和保存在外存中的应用组件;
所述基础平台包括基础平台组件、DDL组件和RTOS,用于将各应用组 件保存在外存中,当需要调用一应用组件时,将该应用组件从外存中加载到 内存,编译链接后运行该应用组件;以及当一应用组件运行结束时,卸载该 应用组件。
进一步地,所述DDL组件包括
力口载单元、执行单元和卸载单元;
所述加载单元通过统一的入口函数将所述应用组件加载到内存,并进行 编译链接;
所述执行单元运行所述应用组件;
所述卸载单元通过统一的退出函数从内存中卸载应用组件。 进一步地,所述DDL组件包括
所述加载单元将应用组件编译成位置独立代码/数据PIC/PID的形式;
所述执行单元动态决定所加载的应用组件的代码和数据在内存中的实际 地址。
进一步地,所述DDL组件包括 提供给基础平台组件的注册服务函数的第一接口 ;
所述RTOS启动后,将所有的所述基础平台组件通过所述第一接口进行 注册。
进一步地,所述DDL组件包括
提供给所述应用组件的使用注册的服务函数的第二接口 ;
所述应用组件在运行时通过所述第二接口调用注册的基础平台组件。本发明的技术方案将DDL应用于嵌入式系统,实现了在嵌入式实时操作 系统中,只将当前需要运行的代码加载进内存,当运行完毕后,又可以动态 的从内存卸载出去;不用一次性把所有的应用全部编译成一个程序,同样的 空间,可以只根据需要的时候才加载相应的代码,这样可以在相同的代码空 间上,完成更多的功能,从而节约产品的成本。


图1是本发明实施例一中嵌入式实时操作系统中实现动态加载的方法的 流程示意图。
具体实施例方式
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
本发明提出了一种嵌入式实时操作系统中实现动态加栽的方法和装置, 通过动态加载的方式加载程序代码的方式开发基于RTOS的产品。
实施例一, 一种嵌入式实时操作系统中实现动态加载的方法,包括
当产品一一 即所开发的应用模块运行的时候,并不需要所有的代码同时 运行,因此可以将不运行的部分存储在价格较为低廉的外存中,只将要运行 的部分保存在内存中,从而缩小所需要的内存空间。比如原先把一个应用才莫 块所有的代码需要4M的空间,该应用模块共由5个应用组件(APP)组成,其 中基础平台占有了 2M的空间,5个APP共占有了 2M。使用了本发明的方法 和装置后,只需要2M+2M/5 = 2.4M的空间即可。当然,不在运行状态的APP 也需要存储,但是可以存储在价格更便宜的外存,如Flash中,而不是始终 占有内存空间;只在^f吏用一应用组件时,将该应用组件加栽到内存中。
所述方法如图l所示,具体包括以下步骤
A、划分基础平台组件和应用组件。
将应用模块分为基础平台组件和若干应用组件;其中,各应用组件分别 是实现不同功能的代码部分,比如播放MP3的应用组件、录音的应用组件等; 而基础平台组件是各应用组件共用的代码部分、以及需要始终运行的代码部分;所述基础平台组件根据嵌入式系统的不同有很大区别,比如文件系统, GUI组件等。
B、 运行基础平台;所述基础平台包括所迷基础平台组件、DDL(数据 库模式定义语言)组件和RTOS;此基础平台可以作为单独的程序运行。
本实施例中,所述DDL组件可以包括加载单元、执行单元、卸载单元、 第 一接口及第二接口 ;其中第 一接口是提供给基础平台组件的注册服务函数 的接口;第二接口是提供给其它组件的使用注册的服务函数的接口。
本实施例中,RTOS启动的时候,将所有的基础平台组件通过DDL组件 中的第 一接口进行注册一 一 即将所有的基础平台组件加载到内存里,进行编 译链接后运行。
本实施例中,DDL组件的代码也可以使用基础平台的相应的功能,提供 DDL功能的基础平台可以提供很多通用的功能,这部分功能就不需要每个 DDL组件都去实现。
C、 所述基础平台将各应用组件先保存在外存。
本实施例中,所述基础平台在保存各应用组件时,还可以记录各应用组 件在外存的存储地址和数据长度,以方便调用。
D、 当基础平台需要调用一应用组件时,将该应用组件从外存中加载到 内存,编译链接后运行该应用组件。
本实施例中,基础平台需要调用 一应用组件包括以下情况中的任一种或 任几种
用户运行与一应用组件相对应的应用程序;比如用户通过鼠标或键盘的 输入运行的命令;
基础平台需要运行一应用组件;
其他应用才莫块需要运行一应用组件。
实际应用时,还可以包括其它需要运行应用組件的情况。
本实施例中,由所述DDL组件中的加载单元通过统一的入口函数将所述 应用组件加载到内存,并进行编译链接。本实施例中,由所述DDL组件中的执行单元运行所迷应用组件。
本实施例中,加载是指复制;实际应用是也可以是指从外存移动到内存, 这样卸载时就相应需要从内存移动回外存。
本实施例中,所述应用组件在运行时可以通过DDL组件提供的第二接口 调用基础平台注册的基础平台组件。
本实施例中,需要将应用组件编译成PIC/PID (Position Independent Code/Data,位置独立代码/数据)的形式;原因是动态加载的应用组件需要由 DDL组件动态决定code (代码)和data (数据)在内存中的实际地址。
E、当一应用组件运行结束,基础平台从内存中卸载该应用组件。
本实施例中,应用组件运行结束的情况可以是用户关闭与该应用组件相 对应的应用程序;比如用户通过鼠标或键盘的输入关闭的命令;比如对于有 界面程序的应用模块,当用户通过鼠标或键盘选择开始播放MP3的应用程序 时,基础平台就会加载用于播放mp3的应用组件;当用户通过鼠标或键盘关 闭播放MP3的应用程序时,基础平台就会卸栽用于播放mp3的应用组件。
本实施例中,应用组件运行结束的情况也可以是该应用组件运行完毕, 或是基础平台或其它应用模块不再需要该应用组件的情况。
本实施例中,从内存中卸载是指删去该应用組件在内存中的代码。
本实施例中,由DDL组件中的卸载单元通过统一的退出函数从内存中卸 载该应用组件。
当再需要调用应用组件时,执行步骤D。
本发明所提供的嵌入式实时操作系统中实现动态加载的装置,包括
基础平台、内存、外存和保存在外存中的应用组件;
所述基础平台用于将各应用组件保存在外存中,当需要调用 一应用组件 时,将该应用组件从外存中加载到内存,编译链接后运行该应用组件;以及 当一应用组件运4亍结束时,从内存中卸载该应用组件。
所述基础平台包括基础平台组件、DDL组件和RTOS。各应用组件是应用才莫块中实现不同功能的代码部分,比如播放MP3的应 用组件、录音的应用组件等;而基础平台组件是应用才莫块中各应用组件共用 的代码部分、以及需要始终运行的代码部分;所述基础平台组件根据嵌入式 系统的不同有很大区别,比如文件系统,GUI组件等。
本实施例中,所述DDL组件可以包括加载单元、执4亍单元、卸载单元、 第 一接口及第二接口 ;其中第 一接口是提供给基础平台组件的注册服务函数 的接口 ;第二接口是提供给其它组件的使用注册的服务函数的接口 。
本实施例中,RTOS启动的时候,将基础平台的所有组件通过DDL组件 中的第一接口进行注册一一即将基础平台的所有组件加载到内存里,进行编 译链接后运行。
本实施例中,DDL组件的代码也可以使用基础平台的相应的功能,提供 DDL功能的基础平台可以提供很多通用的功能,这部分功能就不需要每个 DDL组件都去实现。
本实施例中,由所述DDL组件中的加载单元通过统一的入口函数将所述 应用组件加载到内存,并进4亍编译链4妾。
本实施例中,由所迷DDL组件中的执行单元运行所述应用组件。
本实施例中,加栽是指复制;实际应用是也可以是指从外存移动到内存, 这样卸载时就相应需要从内存移动回外存。
本实施例中,所述应用组件在运行时可以通过DDL组件提供的第二接口 调用基础平台注册的基础平台组件。
本实施例中,所^。载单元需要将应用组件编译成PIC/PID的形式;原 因是动态加载的应用组件需要由DDL组件中的所迷执行单元动态决定code (代码)和data (数据)在内存中的实际地址。
本实施例中,由DDL组件中的卸载单元通过统一的退出函数从内存中卸 载该应用组件。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的 情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形, 但这些相应的改变和变形都应属于本发明的权利要求的保护范围。
10
权利要求
1、一种嵌入式实时操作系统中实现动态加载的方法,包括将应用模块分为基础平台组件和若干应用组件;运行基础平台;所述基础平台包括所述基础平台组件、数据库模式定义语言DDL组件和实时操作系统RTOS;所述基础平台将各应用组件先保存在外存;当基础平台需要调用一应用组件时,将该应用组件从外存中加载到内存,编译链接后运行该应用组件;当一应用组件运行结束,基础平台从内存中卸载应用组件。
2、 如权利要求l所迷的方法,其特征在于由所述DDL組件通过统一的入口函数将所述应用组件加载到内存,并进 4亍编译链4妄后运4亍;由DDL组件通过统一的退出函数从内存中卸载该应用组件。
3、 如权利要求2所述的方法,其特征在于所述DDL组件将应用组件编译成位置独立代码/数据PIC/PID的形式; DDL组件动态决定所加载的应用组件的代码和数据在内存中的实际地址。
4、 如权利要求1到3中任一项所述的方法,其特征在于,运行基础平台 具体包括RTOS启动;将所有的基础平台组件通过DDL组件进行注册。
5、 如权利要求4所述的方法,其特征在于所述应用组件在运行时通过DDL组件调用注册的基础平台组件。
6、 一种嵌入式实时操作系统中实现动态加载的装置,其特征在于,包括基础平台、内存、外存和保存在外存中的应用组件;所述基础平台包括基础平台组件、DDL组件和RTOS,用于将各应用组 件保存在外存中,当需要调用一应用组件时,将该应用组件从外存中加载到 内存,编译链接后运行该应用组件;以及当一应用组件运行结束时,卸载该 应用组件。
7、 如权利要求6所述的装置,其特征在于,所述DDL组件包括 力口载单元、执行单元和卸载单元;所述加载单元通过统一的入口函数将所述应用组件加载到内存,并进行 编译链接;所述执行单元运行所述应用组件;所述卸载单元通过统一的退出函数从内存中卸载应用組件。
8、 如权利要求7所述的装置,其特征在于,所述DDL组件包括所述加载单元将应用组件编译成位置独立代码/数据PIC/PID的形式;所述执行单元动态决定所加载的应用组件的代码和数据在内存中的实际 地址。
9、 如权利要求6到8中任一项所述的方法,其特征在于,所述DDL组 件包括提供给基础平台组件的注册服务函数的第一接口 ;所述RTOS启动后,将所有的所述基础平台组件通过所述第一接口进行 注册。
10、 如权利要求9所述的装置,其特征在于,所述DDL组件包括 提供给所述应用组件的使用注册的服务函数的第二接口 ; 所述应用组件在运行时通过所述第二接口调用注册的基础平台组件。
全文摘要
本发明公开了一种嵌入式实时操作系统中实现动态加载的方法和装置;所述方法包括将应用模块分为基础平台组件和若干应用组件;运行基础平台;所述基础平台包括所述基础平台组件、数据库模式定义语言DDL组件和实时操作系统RTOS;所述基础平台将各应用组件先保存在外存;当基础平台需要调用一应用组件时,将该应用组件从外存中加载到内存,编译链接后运行该应用组件;当一应用组件运行结束,基础平台从内存中卸载应用组件。本发明可以节省代码存储空间,降低产品成本,在相同的代码空间上,完成更多的功能。
文档编号G06F9/445GK101458629SQ200810247059
公开日2009年6月17日 申请日期2008年12月31日 优先权日2008年12月31日
发明者华 张 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1