一种针对片上系统的操作系统启动引导方法技术方案

技术编号:18444589 阅读:24 留言:0更新日期:2018-07-14 10:14
本发明专利技术提供一种针对片上系统的操作系统启动引导方法,包括:1)片上系统上电后启动板载RBL,从Nor Flash读取所述一级引导程序至内存中,所述一级引导程序仅包括PLL配置单元、用于支持PLL配置的第一板级硬件初始化单元以及二级引导程序加载单元;2)在内存中运行一级引导程序,处理器执行第一板级硬件初始化单元的代码,完成用于支持PLL配置的板级硬件的初始化;执行对PLL配置单元的代码,使得ARM核心的时钟频率和SPI总线的时钟频率最大化;然后执行二级引导程序加载单元的代码,将二级引导程序从Nor Flash加载到内存中;3)执行二级引导程序的代码,完成Linux启动引导。本发明专利技术能够缩短SoC的操作系统启动引导时间。

A boot method for OS on OS

The present invention provides an operating system boot and boot method for an on-chip system, including: 1) on the system on the chip, the RBL is mounted on the system, and the primary boot program is read from the Nor Flash to the memory. The first level bootstrap program includes only the PLL configuration unit, the first board level hardware initialization unit to support the PLL configuration and the PLL configuration. The two level bootloader load unit; 2) running a primary boot program in memory, the processor executes the code of the first board level hardware initialization unit, and completes the initialization of the board level hardware to support the PLL configuration; executes the code for the PLL configuration unit, maximizes the clock frequency of the ARM core and the clock frequency of the SPI bus; After executing the code of the two - level boot loader, the two - level bootloader is loaded from Nor Flash into memory; 3) the code of the two - level boot program is executed, and the Linux boot boot is completed. The invention can shorten the start-up time of the SoC operating system.

【技术实现步骤摘要】
一种针对片上系统的操作系统启动引导方法
本专利技术涉及嵌入式操作系统与嵌入式驱动
,具体地说,本专利技术涉及一种针对片上系统的操作系统启动引导方法。
技术介绍
片上系统(SystemonChip,缩写为SoC)又称为芯片级系统,它目前已在市场上得到了广泛地应用。现有的SoC常常搭载Linux操作系统并通过该操作系统来实现各种设计功能。例如,对于基于多核ARM的芯片结构,在ARM上移植SMPLinux对称多核处理系统,能够使得用户不必关心SoC内部有多少个ARM核,任务调度以及内存分配由Linux内核完成,且操作系统对用户屏蔽了底层的硬件信息,实现了硬件虚拟化。Linux操作系统通常需要BootLoader来引导启动。通常地,BootLoader是芯片上电后运行的第一段程序,其主要功能是完成硬件初始化、建立内存空间映射图,将系统的软硬件环境带到一个适合的状态,最终实现引导操作系统的启动。因此,BootLoader是应用多核架构芯片的首要任务,它将系统配置到一个适宜系统启动的状态,以便为最终启动Linux系统准备好正确的环境。然而,SMPLinux对称多核处理系统的代码可能达到几百兆,而SoC的板上内存是十分有限的,不足以运行Linux系统。另一方面,用于引导Linux系统的BootLoader一般固化在外部存储器中,若在CPU初始状态下将整个BootLoader加载到内存中运行并启动Linux,往往会导致Linux操作系统启动时间过长甚至启动失败。为了解决片上内存不足以及BootLoader加载时间过长的问题,有人提出了一种分级引导的方法,该方法将BootLoader拆分为两级引导,由一级引导的SPL程序完成CPU、DDR的初始化等功能,由于一级引导已完成对DDR的初始化,所以直接加载完整的uboot到具有足够存储空间的DDR,然后在DDR中运行二级引导,完成启动Linux操作系统必要的硬件初始化、内存分配、系统引导等功能。这种方法能够缩短Linux操作系统启动的引导时间,但对于某些结构较为复杂的SoC(例如基于TI公司KeyStoneII架构处理器的SoC)来说,其启动操作系统所需准备的软硬件环境也较为复杂,这种方案仍然存在引导时间过长的问题。因此,当前迫切需要一种能够进一步压缩SoC的操作系统启动引导时间的解决方案。
技术实现思路
因此,本专利技术的任务是提供一种能够进一步压缩SoC的操作系统启动引导时间的解决方案。根据本专利技术的一个方面,提供了一种针对片上系统的操作系统启动引导方法,所述片上系统包括带有内存的处理器、与所述处理器连接的DDR3存储器以及与所述处理器通过SPI总线连接的NorFlash,所述处理器具有ARM核心和板载RBL,所述NorFlash存储固化的一级引导程序和二级引导程序;所述引导方法包括下列步骤:1)片上系统上电后启动板载RBL,从所述NorFlash读取所述一级引导程序至内存中,所述一级引导程序仅包括PLL配置单元、用于支持PLL配置的第一板级硬件初始化单元以及二级引导程序加载单元;2)在内存中运行一级引导程序,处理器执行第一板级硬件初始化单元的代码,完成用于支持PLL配置的板级硬件的初始化;执行对PLL配置单元的代码,使得ARM核心的时钟频率和SPI总线的时钟频率最大化;然后执行二级引导程序加载单元的代码,将二级引导程序从NorFlash加载到内存中;3)执行二级引导程序的代码,完成Linux启动引导。其中,所述二级引导程序包括第二板级硬件初始化单元、复制单元、重定向单元以及Linux启动环境配置单元;所述第二板级硬件初始化单元用于完成未被第一板级硬件初始化单元初始化的其它板级硬件的初始化,所述的其它板级硬件的初始化至少包括DDR3存储器的初始化。其中,所述步骤3)包括下列子步骤:31)在内存中运行第二引导程序,执行所述第二板级硬件初始化单元的代码,完成DDR3存储器的初始化,然后执行所述复制单元的代码,将内存中的第二引导程序复制到DDR3存储器中,执行重定向单元的代码,将PC指针指向被复制到DDR3存储器的第二引导程序的Linux启动环境配置单元的入口位置处;32)在DDR3存储器中运行Linux启动环境配置单元,完成Linux启动引导。其中,所述步骤32)包括下列子步骤:321)设置Linux镜像入口地址;322)初始化NANDFlash;323)初始化标准输入输出;324)初始化中断控制器,并使能中断;325)初始化以太网接口;326)进入到main_loop()函数,通过解析U-Boot命令做出相应操作,由Boot命令实现引导Linux启动。其中,所述步骤326)还包括:main_loop()函数首先判断一个时间延迟值,在这个延时内如果没有中断输入则直接进入Bootm命令完成Linux的引导,若有中断产生则进入到命令模式,等待执行命令,其中,用哈希表来解析命令行,通过输入命令行可以实现TFTP文件传输、烧写U-Boot和Linux镜像功能;其中,Bootm命令完成Linux的引导方法如下:Linux内核镜像uImage包含64字节的头部,描述了镜像长度、内核版本、程序加载地址和入口地址等信息,在Bootm中获取到uImage的这些描述信息,并取出U-Boot预存的环境变量参数,最后U-Boot找到Linux内核镜像入口地址,并将描述信息以及参数传入Linux内核,至此,U-Boot完成了其全部使命,将控制权转交给Linux内核。其中,所述片上系统是基于TI公司KeyStoneII架构处理器的片上系统。其中,所述操作系统是SMPLinux对称多核处理操作系统。其中,所述步骤2)中,所述的用于支持PLL配置的板级硬件是ARM核和PLL单元。与现有技术相比,本专利技术具有下列技术效果:1、本专利技术能够显著缩短SoC的操作系统启动引导时间。2、本专利技术特别适合多核SoC的SMPLinux对称多核处理系统的启动引导。附图说明以下,结合附图来详细说明本专利技术的实施例,其中:图1示出了本实施例中的基于TI公司KeyStoneII架构处理器的SoC的系统构架;图2示出了现有技术中的ARMSPIBoot模式下启动过程;图3示出了本专利技术一个实施例中的SPI与ARM时钟输入的方框示意图;图4示出了SPI在不同频率下的吞吐量的示意图;图5示出了本专利技术一个实施例中BootLoader改进前后在不同板载硬件上的工作方式的对比示意图;图6示出了本专利技术一个实施例中的SPL代码结构示意图;图7示出了本专利技术一个实施例中的U-Boot代码结构示意图;图8示出了本专利技术一个实施例中DDR3的初始化和重定位过程的示意图;图9示出了本专利技术一个实施例中改进前后的加载BootLoader的耗时情况的对比示意图。具体实施方式根据本专利技术的一个实施例,提供了一种针对片上系统的操作系统启动引导方法,该方法特别适合于结构体系较为复杂的多核SoC的操作系统启动引导。为便于描述,下文中以为基于TI公司KeyStoneII架构处理器的SoC为例进行描述。图1示出了本实施例中的基于TI公司KeyStoneII架构处理器的SoC的系统构架。该系统构架采用ARM+DSP多核构架的TCI6638K2K处理器,其共享内存(MSMC)为6M。TC本文档来自技高网
...

【技术保护点】
1.一种针对片上系统的操作系统启动引导方法,所述片上系统包括带有内存的处理器、与所述处理器连接的DDR3存储器以及与所述处理器通过SPI总线连接的Nor Flash,所述处理器具有ARM核心和板载RBL,所述Nor Flash存储固化的一级引导程序和二级引导程序;所述引导方法包括下列步骤:1)片上系统上电后启动板载RBL,从所述Nor Flash读取所述一级引导程序至内存中,所述一级引导程序仅包括PLL配置单元、用于支持PLL配置的第一板级硬件初始化单元以及二级引导程序加载单元;2)在内存中运行一级引导程序,处理器执行第一板级硬件初始化单元的代码,完成用于支持PLL配置的板级硬件的初始化;执行对PLL配置单元的代码,使得ARM核心的时钟频率和SPI总线的时钟频率最大化;然后执行二级引导程序加载单元的代码,将二级引导程序从Nor Flash加载到内存中;3)执行二级引导程序的代码,完成Linux启动引导。

【技术特征摘要】
1.一种针对片上系统的操作系统启动引导方法,所述片上系统包括带有内存的处理器、与所述处理器连接的DDR3存储器以及与所述处理器通过SPI总线连接的NorFlash,所述处理器具有ARM核心和板载RBL,所述NorFlash存储固化的一级引导程序和二级引导程序;所述引导方法包括下列步骤:1)片上系统上电后启动板载RBL,从所述NorFlash读取所述一级引导程序至内存中,所述一级引导程序仅包括PLL配置单元、用于支持PLL配置的第一板级硬件初始化单元以及二级引导程序加载单元;2)在内存中运行一级引导程序,处理器执行第一板级硬件初始化单元的代码,完成用于支持PLL配置的板级硬件的初始化;执行对PLL配置单元的代码,使得ARM核心的时钟频率和SPI总线的时钟频率最大化;然后执行二级引导程序加载单元的代码,将二级引导程序从NorFlash加载到内存中;3)执行二级引导程序的代码,完成Linux启动引导。2.根据权利要求1所述的针对片上系统的操作系统启动引导方法,其特征在于,所述二级引导程序包括第二板级硬件初始化单元、复制单元、重定向单元以及Linux启动环境配置单元;所述第二板级硬件初始化单元用于完成未被第一板级硬件初始化单元初始化的其它板级硬件的初始化,所述的其它板级硬件的初始化至少包括DDR3存储器的初始化。3.根据权利要求2所述的针对片上系统的操作系统启动引导方法,其特征在于,所述步骤3)包括下列子步骤:31)在内存中运行第二引导程序,执行所述第二板级硬件初始化单元的代码,完成DDR3存储器的初始化,然后执行所述复制单元的代码,将内存中的第二引导程序复制到DDR3存储器中,执行重定向单元的代码,将PC指针指向被复制到DDR3存储器的第二引导程序的Linux启动环境配置单元的入口位置处;32)在DDR3存储器中运行Linux启动环境配置单元,完成Li...

【专利技术属性】
技术研发人员:曾定立卓蕊潋苏泳涛马英矫石晶林丁国杰
申请(专利权)人:北京中科晶上科技股份有限公司
类型:发明
国别省市:北京,11

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

1