本发明专利技术公开了一种嵌入式操作系统的远程更新方法,通过在线加载外部函数库和操作系统内核的方法,解决了无线传感器网络的嵌入式操作系统在远程更新代码时的局限问题。该方法包括:对应用程序进行编译,生成二进制文件,并将所述二进制文件加载到嵌入式系统的内存空间;在所述编译时针对操作系统内核只提供该符号的接口;根据预先设定好的索引表寻找所述符号对应的内核模块内偏移或是外部函数库内偏移;根据所述内核模块内偏移或是外部函数库内偏移,向服务器请求下载所述符号对应的代码和数据;将所述代码和数据加载到所述嵌入式系统的内存空间中。
A remote update method of embedded operating system
【技术实现步骤摘要】
一种嵌入式操作系统的远程更新方法
本专利技术属于嵌入式操作系统
,具体涉及一种嵌入式操作系统的远程更新方法。
技术介绍
无线传感器网络(WSN)中的网络设备数量庞大,操作系统需要为这些设备动态加载操作系统和应用程序。现有嵌入式操作系统可以在运行时动态地加载和链接操作系统和应用程序,实现系统软件的远程更新。在对于WSN节点中的代码进行更新替换时,现有嵌入式操作系统通常采用三种方法:(1)替换整个系统的代码,这种方法虽然实现容易,但是对于WSN来说,会消耗巨大的能量和存储空间;(2)差分算法替换代码,比较原有代码和待更新的代码,只传输不相同的部分实现替换,这种方法可以节省传输流量和传输时间,但是差分算法较为复杂,传感器节点不能很好对其进行支持;(3)模块化替换代码:应用于模块化的操作系统,将功能较为统一的代码划分成功能模块,更新替换时只传输相应的模块。这种方法也可以有效减少传输流量和传输时间。上述方法虽然可以实现软件的模块化远程更新,但是一般无法实现操作系统内核的模块化的动态更新替换,这是由于内核一旦烧录到FLASH之后就无法再进行修改,一个内核功能模块需要更新时必须将整个内核代码进行全部替换,会造成传输资源的浪费和传输时间的延长。此外,现有嵌入式操作系统在进行应用程序远程更新时,如果应用程序中使用到了外部的库函数,还需要预先对于外部的链接库进行加载,这样应用程序才能够动态链接和使用外部的库函数。
技术实现思路
本专利技术公开了一种嵌入式操作系统的远程更新方法,通过在线加载外部函数库和操作系统内核的方法,解决了无线传感器网络的嵌入式操作系统在远程更新代码时的局限问题。本专利技术通过以下技术方案实现。一种应用程序的远程更新方法,包括:对应用程序进行编译,生成二进制文件,并将所述二进制文件加载到嵌入式系统的内存空间;在所述编译时针对操作系统内核只提供该符号的接口;根据预先设定好的索引表寻找所述符号对应的内核模块内偏移或是外部函数库内偏移;根据所述内核模块内偏移或是外部函数库内偏移,向服务器请求下载所述符号对应的代码和数据;将所述代码和数据加载到所述嵌入式系统的内存空间中。一种操作系统内核模块的更新方法,包括内核模块的增添、裁剪和替换;具体为:当应用程序增多时,增添操作系统内核模块;当应用程序运行完毕后,判断哪些内核模块是已完成应用程序所使用到而其他应用程序没有使用到的,然后将这些内核模块清除出内存空间;当操作系统内核模块出现新版本后,进行内核模块的替换,删除旧的内核模块,加载新的内核模块。本专利技术有益效果:本专利技术在实现应用程序在线更新的基础上提供了操作系统内核和外部函数库在运行时主动更新功能,增强了嵌入式操作系统的灵活性和应用场景适应性,达到了根据应用场景需求定制操作系统的效果。1、本专利技术设计了一套在线加载内核模块和外部函数库的机制,使得应用程序代码中如果出现外部符号,该符号对应的操作系统内核模块或函数库没有被加载到系统中,系统能够主动向服务器端请求加载相应的操作系统内核模块或外部函数库;应用程序在编译阶段,从高级语言代码到汇编代码的过程中,如果遇到外部库函数或,在汇编代码中只提供相应函数的接口,而不提供具体的代码和数据。具体的应用程序代码和数据在链接阶段进行远程链接和加载。这样做的好处是在更新应用程序的时候,只需要把需要更新的函数进行传输和更新,而不必将整个系统的程序都更新。2、本专利技术设计一套操作系统内核模块更新机制,使用该内核模块更新机制,系统在运行过程中可以实现内核模块的主动更新和加载,对于操作系统的内核功能实现模块化的增添、裁剪和替换。附图说明图1为本专利技术实施例中一种应用程序的远程更新方法流程图;图2为本专利技术实施例中一种操作系统内核模块的更新方法流程图。具体实施方式下面结合附图和具体实例对本专利技术进行详细描述,但不作为对本专利技术的限定。本专利技术的实现思想:在应用程序编译阶段,将应用程序与操作系统内核的多个功能模块一起在一个集成开发环境中编译。在应用程序编译过程中,如果遇到操作系统内核或者外部函数库符号,则只提供该符号的接口,而不必将符号对应的代码或数据编译到应用程序中。编译后生成的二进制文件中不包含内核模块和外部函数库中的具体代码,只包含相应的接口,之后的动态链接符号与代码的过程由操作系统实现。基于上述思想,本专利技术的嵌入式操作系统的远程更新方法包括应用程序的远程更新和操作系统内核模块的更新。如图1所示,本实施例中的一种应用程序的远程更新方法,具体包括:步骤一、对应用程序进行编译,生成二进制文件,并将所述二进制文件加载到嵌入式系统的内存空间;在所述编译时针对操作系统内核只提供该符号的接口;步骤二、根据预先设定好的索引表寻找所述符号对应的内核模块内偏移或是外部函数库内偏移;所述预先设定好的索引表采用以下方式:步骤三、根据所述内核模块内偏移或是外部函数库内偏移,向服务器请求下载所述符号对应的代码和数据;将所述代码和数据加载到所述嵌入式系统的内存空间中。如图2所示,对应上述实施例的方法,本实施例中还包括一种操作系统内核模块的更新方法,包括内核模块的增添、裁剪和替换;具体为:步骤一、当应用程序增多时,增添操作系统内核模块;步骤二、当应用程序运行完毕后,判断哪些内核模块是已完成应用程序所使用到而其他应用程序没有使用到的,然后将这些内核模块清除出内存空间;步骤三、当操作系统内核模块出现新版本后,进行内核模块的替换,删除旧的内核模块,加载新的内核模块。具体的:首先向嵌入式设备传输需要进行替换的内核模块代码,系统接受到所述内核模块代码,判断需要更新的是哪个模块,然后卸载旧的模块,加载新的模块到相应的内存空间中。在本实施例中,在所述进行内核模块的替换前,首先判断需要进行替换的模内核块是否有应用程序正在使用,如果有应用程序正在使用,则等待应用程序执行完毕之后进行替换。本文档来自技高网...
【技术保护点】
1.一种应用程序的远程更新方法,其特征在于,包括:/n对应用程序进行编译,生成二进制文件,并将所述二进制文件加载到嵌入式系统的内存空间;在所述编译时针对操作系统内核只提供该符号的接口;/n根据预先设定好的索引表寻找所述符号对应的内核模块内偏移或是外部函数库内偏移;/n根据所述内核模块内偏移或是外部函数库内偏移,向服务器请求下载所述符号对应的代码和数据;将所述代码和数据加载到所述嵌入式系统的内存空间中。/n
【技术特征摘要】
1.一种应用程序的远程更新方法,其特征在于,包括:
对应用程序进行编译,生成二进制文件,并将所述二进制文件加载到嵌入式系统的内存空间;在所述编译时针对操作系统内核只提供该符号的接口;
根据预先设定好的索引表寻找所述符号对应的内核模块内偏移或是外部函数库内偏移;
根据所述内核模块内偏移或是外部函数库内偏移,向服务器请求下载所述符号对应的代码和数据;将所述代码和数据加载到所述嵌入式系统的内存空间中。
2.如权利要求1所述的一种应用程序的远程更新方法,其特征在于,所述预先设定好的索引表采用以下方式:
3.一种操作系统内核模块的更新方法,包括内核模块的增添、裁剪和替换;其特征在于,具体为:
当应用程序增多时,增添操作系统内核模块;
当...
【专利技术属性】
技术研发人员:高明晋,赵紫旭,石晶林,杜一民,黄帅棋,
申请(专利权)人:北京中科晶上超媒体信息技术有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。