一种基于PCM的系统启动方法技术方案

技术编号:10266748 阅读:144 留言:0更新日期:2014-07-30 15:12
本发明专利技术提供了一种基于PCM的系统启动方法,包括:Bootloader和内核映像存储在PCM中;在PCM上执行Bootloader,在执行中将可读写的部分分配至DRAM中;在PCM上执行内核映像,在执行中将可读写的部分分配至DRAM中。利用PCM存储并执行Bootloader和内核映像,在执行中,将可读写的部分分配至DRAM中,由于启动中需要搬移的数据段仅占Bootloader和内核映像的不到十分之一,同时PCM的读延迟与DRAM相当,从而可以有效地减少系统启动的时间,提高系统效率。

【技术实现步骤摘要】
一种基于PCM的系统启动方法
本专利技术涉及存储器领域,尤其涉及一种基于PCM的系统启动方法。
技术介绍
近年来,随着移动终端设备的兴起,嵌入式技术得到了飞速的发展,尤其是嵌入式Linux系统的应用越来越广泛。嵌入式系统在加电或复位后,会执行一段启动程序Bootloader,以初始化好硬件和软件环境,之后调用Linux内核。Bootloader和Linux内核映像一般都存储在Flash或者磁盘等非挥发性存储器上,但由于Flash或磁盘的读写速度慢,Bootloader执行一小段程序后就会将其自身搬移到DRAM上继续执行,初始化好环境之后会将Linux内核映像从Flash中搬移到内存上然后调用内核,该启动方法由于Flash或磁盘的读写速度慢,需要占用内存进行启动,同时内核的搬运也会造成启动时间的增加。
技术实现思路
本专利技术的实施例提供了一种基于PCM的系统启动方法,实现PCM作为内存及存储设备的新策略,减小了时间开销。为实现上述目的,本专利技术实施例提供了如下技术方案:一种基于PCM的系统启动方法,包括:引导程序和内核映像存储在PCM中;在PCM上执行引导程序,在执行中将可读写的部分分配至DRAM中,包括:采用U-Boot作为应用于嵌入式CPU的引导程序,在整个执行过程中,将其中可读写的部分分配至DRAM中,引导程序中可读写的段包括数据DATA段、未初始化BSS段、动态内存分配、全局变量和堆栈段,除此之外,引导程序代码都直接在PCM上直接执行;在PCM上执行内核映像,在执行中将可读写的部分分配至DRAM中,包括:首先,设置好本地执行内核的物理位置,该物理位置设置为内核映像在PCM上的首地址,然后在内核建立页表的阶段,页表将内核虚拟空间的代码段映射到PCM上,而将内核虚拟空间的数据段和堆栈段映射到DRAM上,然后开启内存管理单元之后,内核开始以虚拟地址访问内存,复制内核的数据段到DRAM中,并且在DRAM上建立BSS段、堆栈段。可选的,系统启动参数和根文件系统也存储在PCM中。可选的,在执行内核映像之前,还包括步骤:等待用户命令。可选的,该用户命令设置为内核映像在PCM上的首地址。可选的,通过在引导程序的头文件中设置宏,并在引导程序起始阶段采用预处理语句的方式,运行拷贝数据部分,以实现将可读写的部分分配至DRAM中。可选的,在PCM上执行内核映像时,内核的分配步骤具体包括:设置内核的物理地址;在建立页表时,将内核虚拟空间的代码段映射到PCM上,将内核虚拟空间的可读写部分映射到DRAM上;以虚拟地址访问内存,复制内核的可读写部分到DRAM中。本专利技术实施例提供的基于PCM的系统启动方法,利用PCM存储并执行引导程序和内核映像,在执行中,将可读写的部分分配至DRAM中,由于启动中需要搬移的数据段仅占引导程序和内核映像的不到十分之一,同时PCM的读延迟与DRAM相当,从而可以有效地减少系统启动的时间,提高系统效率。附图说明图1为根据本专利技术实施例的基于PCM的系统启动方法的流程示意图;图2为根据本专利技术实施例的基于PCM的系统存储映像分布示意图;图3为根据本专利技术实施例的启动方法在引导程序执行时的存储分布示意图;图4为根据本专利技术实施例的启动方法在内核映像执行时的内存空间映射示意图。具体实施方式为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图对本专利技术的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本专利技术,但是本专利技术还可以采用其他不同于在此描述的其它方式来实施,凡是未脱离本专利技术技术方案的内容,依据本专利技术的技术实质对以下实施例所做的任何简单修改、等同变化及修饰,均仍属于本专利技术技术方案保护的范围内,因此本专利技术不受下面公开的具体实施例的限制。本专利技术提出了一种基于PCM的系统启动方法,将PCM(PhaseChangeRandomAccessMemory)作为系统启动的设备,在PCM中存储系统启动的代码与映像,将DRAM作为内存,从而提高系统启动的效率,减小启动的时间开销。为此,本专利技术提供了如下技术方案:一种基于PCM的系统启动方法,参考图1所示,包括:引导程序和内核映像存储在PCM中;在PCM上执行引导程序,在执行中将可读写的部分分配至DRAM中;在PCM上执行内核映像,在执行中将可读写的部分分配至DRAM中。在本专利技术中,利用PCM存储并执行引导程序和内核映像,在执行中,将可读写的部分分配至DRAM中,由于启动中需要搬移的数据段仅占引导程序和内核映像的不到十分之一,同时PCM的读延迟与DRAM相当,从而可以有效地减少系统启动的时间,提高系统效率。为了更好的理解本专利技术,以下将结合具体的实施例进行详细的描述。在本实施例中,为针对目前通常的嵌入式Linux系统的启动方法,通过以PCM为启动设备实现系统的启动,节省启动时间。如图2所示,在PCM上依次存储了引导程序、启动参数、内核映像和根文件系统。引导程序(Bootloader)为一段启动程序,以实现硬件和软件环境的初始化,而后执行内核的调用。在本实施例中,利用PCM存储并执行引导程序和内核映像,并将启动参数和根文件系统存储在PCM中,以便统一进行编码和管理。当然,在系统中还具有其他存储设备时,也可以将启动参数和根文件系统存储在其他的存储设备中。而后,系统上电后,执行初始化以及内核的调用,以启动系统。在本实施例中,首先,在PCM上执行Bootloader,在执行中将可读写的部分分配至DRAM中。在本专利技术中,可读写的部分是程序中需要进行读写操作的部分,即非只读部分。在本实施例中,可以采用U-Boot作为应用于嵌入式CPU的Bootloader,在整个执行过程中,将其中可读写的部分分配至DRAM中,UBOOT引导程序中,可读写的段包括数据DATA段(.data)、未初始化BSS段(.bss)、MALLOC、GLB_DATA和STACK段(堆栈段),如图3所示,除此之外,U-Boot程序代码都直接在PCM上直接执行。由于需要搬移的数据段仅占整个初始化程序的不到十分之一,可以将运行功耗和运行速度进一步优化,节省启动的时间。更具体的,可以在U-Boot程序的头文件设置宏,在U-Boot程序的开始阶段采用预处理语句,跳过U-Boot自身拷贝,运行拷贝数据段的程序,程序代码的其余部分直接在PCM上执行。此外,在调用操作系统内核之前,可以等待用户命令。具体地,在等待时,可以通过执行自动启动的启动参数设置等候秒数,如果在执行自动启动的等候时间内,若串口无输入则进入命令行模式,通过设置默认执行的命令并保存到PCM中,可以让下次启动后自动执行这个设置的默认执行的命令,这里可以设置默认执行的命令为内核映像在PCM上的首地址,以便直接进入内核的执行程序中。而后,在PCM上执行内核映像,在执行中将可读写的部分分配至DRAM中。在本实施例中,在执行内核部分时,需要把内核映像中可读写的部分分配到DRAM主存中,主要包括未初始化BSS段和可读写的数据DATA,以优化系统运行速度和功耗。在具体的实施例中,首先,设置内核的物理地址。在具体的实施例中,首先,设置好XIP内核的物理位置,这个物理地址设置为内核映像在PCM上的首地址。然后在内核建立页表的阶段,页表将内核虚拟空间的代码段映射到本文档来自技高网...
一种基于PCM的系统启动方法

【技术保护点】
一种基于PCM的系统启动方法,包括:引导程序和内核映像存储在PCM中;在PCM上执行引导程序,在执行中将可读写的部分分配至DRAM中;在PCM上执行内核映像,在执行中将可读写的部分分配至DRAM中。

【技术特征摘要】
1.一种基于PCM的系统启动方法,包括:引导程序和内核映像存储在PCM中;在PCM上执行引导程序,在执行中将可读写的部分分配至DRAM中,包括:采用U-Boot作为应用于嵌入式CPU的引导程序,在整个执行过程中,将其中可读写的部分分配至DRAM中,引导程序中可读写的段包括数据DATA段、未初始化BSS段、动态内存分配、全局变量和堆栈段,除此之外,引导程序代码都直接在PCM上直接执行;在PCM上执行内核映像,在执行中将可读写的部分分配至DRAM中,包括:首先,设置好本地执行内核的物理位置,该物理位置设置为内核映像在PCM上的首地址,然后在内核建立页表的阶段,页表将内核虚拟空间的代码段映射到PCM上,而将内核虚拟空间的数据段和堆栈段映射到DRAM上,然后开启内存管理单元之后,内核开始以虚拟地址访问内存,复制内核的数据段到DRAM中,并且在...

【专利技术属性】
技术研发人员:陈岚戴正元郝晓冉
申请(专利权)人:中国科学院微电子研究所
类型:发明
国别省市:北京;11

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

1