一种嵌入式操作系统代码加载的方法及装置制造方法及图纸

技术编号:15436962 阅读:37 留言:0更新日期:2017-05-25 19:11
本发明专利技术提供了一种嵌入式操作系统代码加载的方法及装置,其中,方法包括:获取所述嵌入式操作系统的当前使用场景;根据使用场景与代码地址的对应关系,获取与所述当前使用场景对应的在第一内存区域中需要恢复代码的代码地址;根据所述需要恢复代码的代码地址,获取需要恢复代码和调用函数;加载所述需要恢复代码,并根据所述调用函数从第二内存区域中加载当前使用场景所对应的其他代码。本发明专利技术保证了嵌入式操作系统的正常运行,同时保证了系统的实时性和系统的高效运作。

Method and device for loading code of embedded operating system

Including the invention provides a method and a device, embedded operating system code to load the method: the current usage scenario to obtain the embedded operating system; according to the corresponding relationship between scenario and address code, and obtain the current use of the corresponding scene in the first memory area to restore code according to the address; the need to restore the code address to get recovery code and call functions; loading the code needs to be restored, and according to the calling function from the second memory area loading other code corresponding to the current scene. The invention ensures the normal operation of the embedded operating system, and ensures the real-time performance of the system and the efficient operation of the system.

【技术实现步骤摘要】
一种嵌入式操作系统代码加载的方法及装置
本专利技术涉及通信领域,尤其是涉及一种嵌入式操作系统代码加载的方法及装置。
技术介绍
在嵌入式系统中,程序执行时,对变量的赋值操作其实就是对内存执行写入操作。如果程序在只读存储器ROM里执行,变量的赋值操作是不能实现的,随机访问存储器RAM可以支持随机地址读写,因此程序代码通常是在RAM里被执行的,而内存是典型的RAM,因此需要将代码从ROM拷贝到内存中。当系统选择从Nandflash启动之后,CPU自动将0x0地址映射到Steppingstone,同时将Nandflash前4K代码拷贝到Steppingstone,由于Steppingstone大小只有4K,而系统启动程序大小往往超过4K,因此需要将全部的启动代码从Steppingstone搬运到空间更大的内存中运行。当Steppingstone里的代码对搬运过程中的相关硬件(如外部存储控制器)设置好后,即进行初始化相关动作后,将程序搬运完成至外部存储控制器—双倍速率同步动态随机存储器DDR,然后跳入到DDR中继续运行。嵌入式系统内部还有一片用于存放系统频繁调度的流程代码的内存区域—InterRam,该内存区域的大小为256k。为保证系统的功耗降至最低,满足需求,系统设计为周期性掉电休眠,唤醒上电的运转系统。唤醒上电后某些特定场景下的代码流程,如唤醒上电后的特定流程即存放在此InterRam中。至此,代码存储空间由外部DDR和内部InterRam组成。这两处代码统一调度,保证系统正常运转。对于DDR和内部InterRam的指令访问区别是,内部InterRam指令访问速度更快,不需要经过总线,而对于DDR的取指访问则需要经过总线,访问速度较慢,但掉电后数据不丢失。正是基于该原因,故将频繁调度的流程代码放置在InterRam中。但内部InterRam特性无法保证系统掉电后代码数据的正常使用,因为内部InterRam数据掉电丢失,故需要保证系统掉电休眠前InterRam数据代码被正常保存,系统上电唤醒前内部数据被正常恢复。但是作为实时性嵌入式系统而言,每次上电唤醒,都要恢复InterRam中256k的代码数据,这对于系统实时性而言是一种巨大挑战。本文设计目的正是基于此,如何保证系统上电恢复后的代码正常运行,又不影响系统的实时性,并且更高效的保证系统的运转。
技术实现思路
为了保证嵌入式操作系统的正常运行,同时保证系统的实时性和系统的高效运作,本专利技术提供了一种嵌入式操作系统代码加载的方法及装置。为了实现上述目的,本专利技术提供了一种嵌入式操作系统代码加载的方法,所述方法包括:获取所述嵌入式操作系统的当前使用场景;根据使用场景与代码地址的对应关系,获取与所述当前使用场景对应的在第一内存区域中需要恢复代码的代码地址;根据所述需要恢复代码的代码地址,获取需要恢复代码和调用函数;加载所述需要恢复代码,并根据所述调用函数从第二内存区域中加载当前使用场景所对应的其他代码。可选的,所述第一内存区域为用于存放嵌入式操作系统中频繁调度代码的内存区域,所述第二内存区域为外部存储控制器。可选的,在所述获取与所述当前使用场景对应的在第一内存区域中需要恢复的代码地址之前,所述方法还包括:所述第一内存区域根据代码的调用频率划分多个内存子区域,其中每个内存子区域所对应的代码的调用频率不同,且相邻的内存子区域所映射的虚拟地址之间的间隔值至少为32MB。可选的,所述第一内存区域划分为第一内存子区域、第二内存子区域和第三内存子区域,其中第一内存子区域和第二内存子区域中均存放有代码,第三内存子区域为保留区域,且第一内存子区域中的代码调用频率大于第二内次子区域中的代码调用频率。可选的,所述根据所述调用函数从第二内存区域中加载当前使用场景所对应的其他代码,包括:将与内存子区域对应的所述调用函数经过汇编后生成LDR指令,所述LDR指令链接地址位于所述调用函数对应的内存子区域中,所述LDR指令能在全地址范围跳转。依据本专利技术的另一个方面,本专利技术还提供了一种嵌入式操作系统代码加载的装置,所述装置包括:第一获取模块,用于获取所述嵌入式操作系统的当前使用场景;第二获取模块,用于根据使用场景与代码地址的对应关系,获取与所述当前使用场景对应的在第一内存区域中需要恢复代码的代码地址;第三获取模块,用于根据所述需要恢复代码的代码地址,获取需要恢复代码和调用函数;加载模块,用于加载所述需要恢复代码,并根据所述调用函数从第二内存区域中加载当前使用场景所对应的其他代码。可选的,所述第一内存区域为用于存放嵌入式操作系统中频繁调度代码的内存区域,所述第二内存区域为外部存储控制器。可选的,所述装置还包括划分模块,用于将所述第一内存区域根据代码的调用频率划分多个内存子区域,其中每个内存子区域所对应的代码的调用频率不同,且相邻的内存子区域所映射的虚拟地址之间的间隔值至少为32MB。可选的,所述第一内存区域划分为第一内存子区域、第二内存子区域和第三内存子区域,其中第一内存子区域和第二内存子区域中均存放有代码,第三内存子区域为保留区域,且第一内存子区域中的代码调用频率大于第二内次子区域中的代码调用频率。可选的,所述加载模块还用于,将与内存子区域对应的所述调用函数经过汇编后生成LDR指令,所述LDR指令链接地址位于所述调用函数对应的内存子区域中,所述LDR指令能在全地址范围跳转。本专利技术的有益效果是:本专利技术提供的一种嵌入式操作系统代码加载的方法,首先获取嵌入式操作系统的当前使用场景,根据使用场景与代码地址的对应关系,获取与当前使用场景对应的在第一内存区域中需要恢复代码的代码地址,然后根据需要恢复代码的代码地址,获取需要恢复代码和调用函数,最后加载需要恢复代码,并根据调用函数从第二内存区域中加载当前使用场景所对应的其他代码。本专利技术能够根据需要恢复代码和调用函数,直接从第二内存区域中加载当前使用场景所对应的其他代码,即无需恢复第一内存区域中的所有代码,而是根据使用场景恢复需要恢复代码,在保证了嵌入式操作系统正常运行的同时,保证了系统的实时性和系统的高效运作。附图说明图1表示本专利技术的实施例中嵌入式操作系统代码加载的方法的主要步骤流程图;图2表示本专利技术的实施例中嵌入式操作系统代码加载的方法的详细步骤流程图;图3表示本专利技术的实施例中各个内存子区域与虚拟地址空间之间的映射关系图;以及图4表示本专利技术的实施例中嵌入式操作系统代码加载的装置的结构框图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。如图1所示,为本专利技术的实施例中嵌入式操作系统代码加载的方法的主要步骤流程图,主要包括如下步骤:步骤101,获取嵌入式操作系统的当前使用场景。在本步骤中,获取嵌入式操作系统的当前使用场景。具体的,嵌入式操作系统的当前使用场景可以为系统从掉电休眠至上电唤醒后的场景。在此需要说明的,嵌入式操作系统的当前使用场景并不仅限于从掉电休眠至上电唤醒后的场景。步骤102,根据使用场景与代码地址的对应本文档来自技高网
...
一种嵌入式操作系统代码加载的方法及装置

【技术保护点】
一种嵌入式操作系统代码加载的方法,其特征在于,所述方法包括:获取所述嵌入式操作系统的当前使用场景;根据使用场景与代码地址的对应关系,获取与所述当前使用场景对应的在第一内存区域中需要恢复代码的代码地址;根据所述需要恢复代码的代码地址,获取需要恢复代码和调用函数;加载所述需要恢复代码,并根据所述调用函数从第二内存区域中加载当前使用场景所对应的其他代码。

【技术特征摘要】
1.一种嵌入式操作系统代码加载的方法,其特征在于,所述方法包括:获取所述嵌入式操作系统的当前使用场景;根据使用场景与代码地址的对应关系,获取与所述当前使用场景对应的在第一内存区域中需要恢复代码的代码地址;根据所述需要恢复代码的代码地址,获取需要恢复代码和调用函数;加载所述需要恢复代码,并根据所述调用函数从第二内存区域中加载当前使用场景所对应的其他代码。2.根据权利要求1所述的方法,其特征在于,所述第一内存区域为用于存放嵌入式操作系统中频繁调度代码的内存区域,所述第二内存区域为外部存储控制器。3.根据权利要求2所述的方法,其特征在于,在所述获取与所述当前使用场景对应的在第一内存区域中需要恢复的代码地址之前,所述方法还包括:将所述第一内存区域根据代码的调用频率划分多个内存子区域,其中每个内存子区域所对应的代码的调用频率不同,且相邻的内存子区域所映射的虚拟地址之间的间隔值至少为32MB。4.根据权利要求3所述的方法,其特征在于,所述第一内存区域划分为第一内存子区域、第二内存子区域和第三内存子区域,其中第一内存子区域和第二内存子区域中均存放有代码,第三内存子区域为保留区域,且第一内存子区域中的代码调用频率大于第二内次子区域中的代码调用频率。5.根据权利要求3所述的方法,其特征在于,所述根据所述调用函数从第二内存区域中加载当前使用场景所对应的其他代码,包括:将与内存子区域对应的所述调用函数经过汇编后生成LDR指令,所述LDR指令链接地址位于所述调用函数对应的内存子区域中,所述LDR指令...

【专利技术属性】
技术研发人员:金志涛
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:广东,44

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

1