一种嵌入式系统组件加载方法技术方案

技术编号:8489666 阅读:238 留言:0更新日期:2013-03-28 08:37
本发明专利技术实施例涉及一种嵌入式系统组件加载方法,所述方法包括:应用程序或组件在接收到需要调用其它组件的相应功能指令时,查找所述其它组件,所述其它组件具有唯一标识其身份的特征接口;查找到所述组件后,将所述组件加载到内存中,并获取所述组件的实例以及调用所述组件的相应功能接口;在不需要所述的相应功能时,调用卸载组件接口,将所述其他组件卸载。本发明专利技术实施例在编译时不链接组件,在应用程序启动时不加载不必要的组件,节省了内存,避免了针对不同业务形态的嵌入式系统生成不同版本的应用程序。

【技术实现步骤摘要】

本专利技术涉及计算机应用程序发现和组件加载
,尤其涉及。
技术介绍
目前,组件技术被广泛应用于嵌入式系统中。在嵌入式系统中,系统的业务形态较多,不同形态下中间件或应用程序的功能不同,需加载的组件也不同,现有技术通常是在编译时必须链接组件,这样对于相同的中间件或应用程序,需要为每个业务形态的系统链接不同的组件,生成不同版本,使用这种方法使得中间件或应用程序后续的软件维护工作量大。此外,嵌入式系统包括内存在内的硬件资源非常有限,编译链接组件库后,在应用程序启动时就加载所有组件,不必要地耗费了内存。
技术实现思路
针对上述问题,本专利技术实施例提出,所述方法包括应用程序或组件在接收到需要调用其它组件的相应功能指令时,查找所述其它组件,所述其它组件具有唯一标识其身份的特征接口 ;查找到所述组件后,将所述组件加载到内存中,并获取所述组件的实例以及调用所述组件的相应功能接口 ;在不需要所述的相应功能时,调用卸载组件接口,将所述其他组件卸载。优选地,所述查找其他组件,具体为根据内存中的组件注册表或者组件目录查找所述其它组件,或者遍历系统中各组件库的特征接口来查找所述其它组件。优选地,应用程序或组件启动时不加载所述其它组件。优选地,应用程序在编译阶段时不链接所述其它组件。优选地,所述其它组件具有唯一标识其身份的特征接口,具体为所述其它组件包含用于返回所述其它组件的名称的固定名称接口,或者带有所述其它组件的名称的固定接口名称。本专利技术实施例在应用程序启动时或者编译时不加载不必要的组件,即只在应用程序或组件在接收到需要调用其它组件的相应功能指令时,才加载相应组件,节省了内存,避免了需要针对不同业务形态的嵌入式系统生成不同版本的应用程序。附图说明下面将参照附图对具体实施方案进行更详细的说明,在附图中图1是本专利技术实施例的嵌入式浏览器动态查找和加载组件流程示意图;图2是本专利技术实施例嵌入式系统组件加载方法示意图。具体实施例方式下面通过附图和实施例,对本专利技术实施例的技术方案做进一步的详细描述。本专利技术实施例提出一种基于动态查找的嵌入式系统组件加载方法,针对嵌入式系统的特点,只在具备组件功能的系统中以及在启动组件功能时发现并加载组件,编译时无需链接组件,从而无需为不同业务形态系统中是否需要该组件编译生成不同版本。本专利技术实施例包含以下步骤步骤1,为各组件配置具有可唯一标识其身份的特征接口。步骤2,应用程序或其他组件在接收到需要调用其它组件相应功能指令时,查找内存中的组件目录或者组件注册表来查找组件,或者通过遍历系统中各组件库的特征接口来查找组件;所述的查找组件注册表以及遍历手段在顺序上没有先后限制。步骤3,如果存在该组件,则将组件加载到内存中,并获取组件实例、调用组件相应的功能接口;步骤4,在退出相应功能模块时,卸载组件,释放内存。其中,唯一标识组件身份的特征接口可使用以下几种方法组件中包含固定名称接口,用于返回组件名称;组件中包含带有组件名称的固定接口名。本专利技术实施例根据嵌入式系统的特点,只在具备组件功能的系统中以及在启动组件功能时加载组件,避免了应用程序为不同业务形态的系统生成不同版本,减少了应用程序启动时加载组件耗费的内存。下面通过一个优选实施例对本专利技术实施例的方法做进一步阐述图1是本专利技术实施例的嵌入式浏览器动态查找和加载组件流程示意图。以嵌入式浏览器作为具体的应用程序。当前网页以其跨平台、易部署等特点成为嵌入式系统中的主流门户导航,嵌入式浏览器是解析网页的核心,在不同业务系统中需求不同,需要加载不同组件的功能,比如对于双模机顶盒需要使用DVB组件库,但互联网机顶盒不需要DVB组件库。通过本专利技术实施例方法,所述嵌入式浏览器可以动态发现和加载本地功能组件,无须为不同业务系统编译不同版本,并且只在启动相应功能时才加载组件。本实例中组件创建实例的特征接口是以“Get+组件名+Object”命名,撤销实例的特征接口是以“Delete+组件名+Object”命名。此外组件的功能接口都是C++类,因此浏览器与组件库之间需要定义一个与组件接口一一对应的基类,以供加载组件后能得到组件C++实例对象并使用其方法。所述Get、Obje ct、Delete的中文含义分别是获取、对象、删除。此外,本实例的系统可以基于Iinux操作系统,组件编译成动态库(.so),浏览器使用Iinux系统函数dlopen、dlclose、dlsym来打开、关闭组件库以及执行组件的接口,具体可以包括以下步骤浏览器定义一个基类,该基类中的方法与组件接口一一对应;组件继承浏览器提供的基类,实现其派生类,并增加创建、撤销类两个接口,分别以“Get+组件名+ObjecCDelete+组件名+Object”命名,用于创建和撤销组件实例,编译成动态库;在具备该组件功能的系统中,将组件库的路径加入配置文件;当页面解析到需要调用组件的功能接口后,浏览器查找内存中的组件注册表是否已注册该组件,如果组件注册表中已注册该组件,则直接读取该组件库所在路径,跳转到步骤7 ;如果组件注册表中尚未注册该组件,则读取配置文件中的库目录路径,在该路径下遍历库查找是否有创建该组件对象的接口,如果有该接口则将组件名称和库路径添加到组件注册表中,并跳转到步骤7,如果没有该接口则返回错误;如果有创建组件对象的接口,则调用创建组件对象接口,返回组件实例;然后调用组件实例中的方法,以实现相应功能;当离开页面时,调用撤销组件对象的接口,释放组件实例。为更加清楚地展示本专利技术实施例的方法,图2展示了本专利技术实施例嵌入式系统组件加载方法示意图。从图2可见所述方法包括步骤200,应用程序或组件在接收到需要调用其它组件的相应功能指令时,查找所述其它组件,所述其它组件具有唯一标识其身份的特征接口 ;步骤202,查找到所述组件后,将所述组件加载到内存中,并获取所述组件的实例以及调用所述组件的相应功能接口 ;步骤204,在不需要所述的相应功能时,调用卸载组件接口,将所述其他组件卸载。优选地,所述查找其他组件,具体为根据内存中的组件注册表或者组件目录查找所述其它组件,或者遍历系统中各组件库的特征接口来查找所述其它组件。优选地,应用程序或组件启动时不加载所述其它组件。优选地,应用程序在编译阶段时不链接所述其它组件。优选地,所述其它组件具有唯一标识其身份的特征接口,具体为所述其它组件包含用于返回所述其它组件的名称的固定名称接口,或者带有所述其它组件的名称的固定接口名称。本专利技术实施例在编译时不链接组件,在应用程序启动时不加载不必要的组件,而只在应用程序或组件在接收到需要调用其它组件的相应功能指令时,才加载相应组件,节省了内存,避免了需要针对不同业务形态的嵌入式系统生成不同版本的应用程序。最后所应说明的是,以上实施例仅用以说明本专利技术的技术方案而非限制,尽管参照较佳实施例对本专利技术进行了详细说明,本领域的普通技术人员应当理解,可以对本专利技术的技术方案进行修改或者等同替换,而不脱离本专利技术技术方案的精神和范围。权利要求1.,其特征在于,所述方法包括应用程序或组件在接收到需要调用其它组件的相应功能指令时,查找所述其它组件, 所述其它组件具有唯一标识其身份的特征接口;查找到所述组件后,将所述组件加载到内存中,并获取所述组件的实例以及调用所述组件的相应功能本文档来自技高网...

【技术保护点】
一种嵌入式系统组件加载方法,其特征在于,所述方法包括:应用程序或组件在接收到需要调用其它组件的相应功能指令时,查找所述其它组件,所述其它组件具有唯一标识其身份的特征接口;查找到所述组件后,将所述组件加载到内存中,并获取所述组件的实例以及调用所述组件的相应功能接口;在不需要所述的相应功能时,调用卸载组件接口,将所述其他组件卸载。

【技术特征摘要】

【专利技术属性】
技术研发人员:胡琳琳孙鹏邓峰
申请(专利权)人:中国科学院声学研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1