CN108279935A - 一种针对片上系统的操作系统启动引导方法 - Google Patents
一种针对片上系统的操作系统启动引导方法 Download PDFInfo
- Publication number
- CN108279935A CN108279935A CN201611258091.4A CN201611258091A CN108279935A CN 108279935 A CN108279935 A CN 108279935A CN 201611258091 A CN201611258091 A CN 201611258091A CN 108279935 A CN108279935 A CN 108279935A
- Authority
- CN
- China
- Prior art keywords
- linux
- boot
- chip
- level
- bootstrap
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种针对片上系统的操作系统启动引导方法,包括:1)片上系统上电后启动板载RBL,从Nor Flash读取所述一级引导程序至内存中,所述一级引导程序仅包括PLL配置单元、用于支持PLL配置的第一板级硬件初始化单元以及二级引导程序加载单元;2)在内存中运行一级引导程序,处理器执行第一板级硬件初始化单元的代码,完成用于支持PLL配置的板级硬件的初始化;执行对PLL配置单元的代码,使得ARM核心的时钟频率和SPI总线的时钟频率最大化;然后执行二级引导程序加载单元的代码,将二级引导程序从Nor Flash加载到内存中;3)执行二级引导程序的代码,完成Linux启动引导。本发明能够缩短SoC的操作系统启动引导时间。
Description
技术领域
本发明涉及嵌入式操作系统与嵌入式驱动技术领域,具体地说,本发明涉及一种针对片上系统的操作系统启动引导方法。
背景技术
片上系统(System on Chip,缩写为SoC)又称为芯片级系统,它目前已在市场上得到了广泛地应用。现有的SoC常常搭载Linux操作系统并通过该操作系统来实现各种设计功能。例如,对于基于多核ARM的芯片结构,在ARM上移植SMP Linux对称多核处理系统,能够使得用户不必关心SoC内部有多少个ARM核,任务调度以及内存分配由Linux内核完成,且操作系统对用户屏蔽了底层的硬件信息,实现了硬件虚拟化。
Linux操作系统通常需要Boot Loader来引导启动。通常地,Boot Loader是芯片上电后运行的第一段程序,其主要功能是完成硬件初始化、建立内存空间映射图,将系统的软硬件环境带到一个适合的状态,最终实现引导操作系统的启动。
因此,Boot Loader是应用多核架构芯片的首要任务,它将系统配置到一个适宜系统启动的状态,以便为最终启动Linux系统准备好正确的环境。然而,SMP Linux对称多核处理系统的代码可能达到几百兆,而SoC的板上内存是十分有限的,不足以运行Linux系统。另一方面,用于引导Linux系统的Boot Loader一般固化在外部存储器中,若在CPU初始状态下将整个Boot Loader加载到内存中运行并启动Linux,往往会导致Linux操作系统启动时间过长甚至启动失败。
为了解决片上内存不足以及Boot Loader加载时间过长的问题,有人提出了一种分级引导的方法,该方法将Boot Loader拆分为两级引导,由一级引导的SPL程序完成CPU、DDR的初始化等功能,由于一级引导已完成对DDR的初始化,所以直接加载完整的uboot到具有足够存储空间的DDR,然后在DDR中运行二级引导,完成启动Linux操作系统必要的硬件初始化、内存分配、系统引导等功能。这种方法能够缩短Linux操作系统启动的引导时间,但对于某些结构较为复杂的SoC(例如基于TI公司KeyStone II架构处理器的SoC)来说,其启动操作系统所需准备的软硬件环境也较为复杂,这种方案仍然存在引导时间过长的问题。
因此,当前迫切需要一种能够进一步压缩SoC的操作系统启动引导时间的解决方案。
发明内容
因此,本发明的任务是提供一种能够进一步压缩SoC的操作系统启动引导时间的解决方案。
根据本发明的一个方面,提供了一种针对片上系统的操作系统启动引导方法,所述片上系统包括带有内存的处理器、与所述处理器连接的DDR3存储器以及与所述处理器通过SPI总线连接的Nor Flash,所述处理器具有ARM核心和板载RBL,所述Nor Flash存储固化的一级引导程序和二级引导程序;所述引导方法包括下列步骤:
1)片上系统上电后启动板载RBL,从所述Nor Flash读取所述一级引导程序至内存中,所述一级引导程序仅包括PLL配置单元、用于支持PLL配置的第一板级硬件初始化单元以及二级引导程序加载单元;
2)在内存中运行一级引导程序,处理器执行第一板级硬件初始化单元的代码,完成用于支持PLL配置的板级硬件的初始化;执行对PLL配置单元的代码,使得ARM核心的时钟频率和SPI总线的时钟频率最大化;然后执行二级引导程序加载单元的代码,将二级引导程序从Nor Flash加载到内存中;
3)执行二级引导程序的代码,完成Linux启动引导。
其中,所述二级引导程序包括第二板级硬件初始化单元、复制单元、重定向单元以及Linux启动环境配置单元;所述第二板级硬件初始化单元用于完成未被第一板级硬件初始化单元初始化的其它板级硬件的初始化,所述的其它板级硬件的初始化至少包括DDR3存储器的初始化。
其中,所述步骤3)包括下列子步骤:
31)在内存中运行第二引导程序,执行所述第二板级硬件初始化单元的代码,完成DDR3存储器的初始化,然后执行所述复制单元的代码,将内存中的第二引导程序复制到DDR3存储器中,执行重定向单元的代码,将PC指针指向被复制到DDR3存储器的第二引导程序的Linux启动环境配置单元的入口位置处;
32)在DDR3存储器中运行Linux启动环境配置单元,完成Linux启动引导。
其中,所述步骤32)包括下列子步骤:
321)设置Linux镜像入口地址;
322)初始化NAND Flash;
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公司KeyStone II架构处理器的片上系统。
其中,所述操作系统是SMP Linux对称多核处理操作系统。
其中,所述步骤2)中,所述的用于支持PLL配置的板级硬件是ARM核和PLL单元。
与现有技术相比,本发明具有下列技术效果:
1、本发明能够显著缩短SoC的操作系统启动引导时间。
2、本发明特别适合多核SoC的SMP Linux对称多核处理系统的启动引导。
附图说明
以下,结合附图来详细说明本发明的实施例,其中:
图1示出了本实施例中的基于TI公司KeyStone II架构处理器的SoC的系统构架;
图2示出了现有技术中的ARM SPI Boot模式下启动过程;
图3示出了本发明一个实施例中的SPI与ARM时钟输入的方框示意图;
图4示出了SPI在不同频率下的吞吐量的示意图;
图5示出了本发明一个实施例中Boot Loader改进前后在不同板载硬件上的工作方式的对比示意图;
图6示出了本发明一个实施例中的SPL代码结构示意图;
图7示出了本发明一个实施例中的U-Boot代码结构示意图;
图8示出了本发明一个实施例中DDR3的初始化和重定位过程的示意图;
图9示出了本发明一个实施例中改进前后的加载Boot Loader的耗时情况的对比示意图。
具体实施方式
根据本发明的一个实施例,提供了一种针对片上系统的操作系统启动引导方法,该方法特别适合于结构体系较为复杂的多核SoC的操作系统启动引导。为便于描述,下文中以为基于TI公司KeyStone II架构处理器的SoC为例进行描述。
图1示出了本实施例中的基于TI公司KeyStone II架构处理器的SoC的系统构架。该系统构架采用ARM+DSP多核构架的TCI6638K2K处理器,其共享内存(MSMC)为6M。TCI6638K2K处理器通过SPI总线连接到非易失闪存(Nor Flash)。除此之外,TCI6638K2K处理器还分别连接DDR3存储器、以太网接口、时钟分发模块、电源模块、NAND闪存(NANDFlash)以及RS232接口等。
TCI6638K2K的Boot模式被配置为ARM SPI Boot模式。现有技术中的ARM SPI Boot模式下启动过程如图2所示,该过程的具体步骤本文中不再赘述。
电源开启后,固化在TCI6638K2K处理器芯片上的ROM bootloader(下文简称为RBL)确认启动模式为ARM SPI Boot模式后,根据Boot参数表对SPI进行初始化,然后从SPINor Flash指定地址读取已经固化在Nor Flash的Boot镜像,并加载到共享内存(MSMC)中,将主控权交给Boot镜像。Boot镜像完成完整的Boot Loader功能,包括初始化处理器以及必要的硬件,建立内存空间的映射等,为Linux启动提供合适的环境,并最终实现加载启动Linux内核,再在内核中完成DSP的启动。然而,对于SMP Linux对称多核处理系统来说,TCI6638K2K处理器的共享内存空间不足,往往导致引导程序运行缓慢,进而拖慢开机速度,甚至造成系统无法启动。
发明人深入研究和分析后,发现开机速度慢的主要原因是引导程序过大以及从外部Nor Flash读取引导程序的速率不足。因此,本实施例提出了一种针对上述SoC的改进的操作系统启动引导方法,将引导SMP Linux对称多核处理操作系统启动的引导程序(BootLoader)划分成两个部分,并有针对性地设计了对应的引导步骤,从而显著地提高了引导速度。
本实施例中,采用在U-Boot的基础上设计Boot程序。U-Boot能够支持绝大多数ARM体系结构,具有良好的兼容性。本实施例中,将U-Boot分成两个部分,分别是占用内存较小的一级引导程序SPL和负责完成全部引导功能的二级引导程序U-Boot(作为二级引导程序的U-Boot是完整的U-Boot)。一级引导程序和二级引导程序均被固化在Nor Flash中。
在SoC上电后,首先启动RBL,RBL加载占用内存较小的SPL镜像到片内共享内存(MSMC)中运行,完成PLL、ARM核等简单的配置,使SPI读取速率处于高速状态,再从Flash中加载占据内存较大的二级引导程序U-Boot。其中,为了SPL所占内存足够小,SPL只完成PLL和ARM核的配置。PLL的全称为Phase Locked Loop,可译为锁相环回路,它是SoC中用来配置时钟频率的模块。
然后,由U-Boot完成Boot Loader的全部功能。由于MSMC内存较小,而U-Boot除了要完成硬件设备初始化外,还要负责解析各类复杂的命令,并最终实现加载运行Linux系统,因此,本实施例中,U-Boot在MSMC中仅进行简单的硬件初始化,而后续工作通过将代码重定位到存储空间更大的DDR3中运行。
本实施例中,需要完成PLL、ARM核等简单的配置,使SPI读取速率处于高速状态。下面首先对SPI做简要介绍。
SPI是在一种主从模式的串行外设接口,通过片选信号来支持多个从设备,数据传输只能由主设备进行控制,从设备无法主动发起通信请求,采用四线制实现全双工通信,其数据传输依赖于接口时钟频率。SPI控制器包含发送和接收缓存区,CPU通过读写缓存区操作,经过8位移位寄存器实现SPI串行链路的传输。
TCI6638K2K的SPI时钟频率(SPICLK)由外部时钟经过系统PLL、6分频的共享分频器、分频系数为2~256的SPI内部分频器输出得到,ARM主频(ARMCLK)由外部时钟经过专用PLL倍频后得到,时钟模块提供给ARM专用PLL和系统PLL的时钟分别为125MHz和122.88MHz,如图3所示。
分别对PLL处于配置模式和Bypass模式下SPI Flash读取速率进行测试,ARMCLK在Bypass模式频率为125MHz,在配置模式下分别配置为500、800、1200MHz。SPI时钟模式选择无相位延迟上升沿触,接收方式设置为中断接收,字长设置为8,关闭EDMA功能。SPI读取速率测试结果如图5所示。当SPICLK小于66Mhz时,SPI无数据读取错误,误码率为0,当SPICLK大于66Mhz时,出现较大误码率。
依据测试数据结果可以得出:由于SPI传输速率依赖于SPICLK,因此,当ARMCLK不变时,SPI读取速率随着SPICLK的增加而增加;由于CPU需要执行读指令从SPI接收缓存区中读取数据,因此,ARMCLK越高SPI最大读取速率越高,SPI最大读取速率可达到15Mbps。
由于PLL在默认状态下处于Bypass模式,这意味着ARMCLK及SPICLK均由没有经过PLL倍频的时钟提供,而SPI内部分配器默认分频系数为2。因此,SPICLK与ARMCLK的取值分别为10.24Mhz和125Mhz。
图4示出了SPI在不同频率下的吞吐量的示意图,其中纵坐标表示吞吐量,即SPI读取Flash的速率。由图4的测试结果可知此时SPI读取速率为4Mbps,处于低速状态。这将导致从SPI加载整个Boot镜像将耗费大量时间,尤其是Boot镜像尺寸较大时,这一问题将更加明显。
基于上述分析,本实施例对Boot Loader进行改进,RBL加载占用内存较小的SPL镜像到片内共享内存(MSMC)中运行,完成PLL、ARM核等简单的配置以提升SPI时钟频率和ARM主频,使SPI读取速率处于高速状态,再从Flash中加载占据内存较大的二级引导程序U-Boot。图5示出了Boot Loader改进前后在不同板载硬件上的工作方式的对比示意图。该图中,改进后的二级引导程序用Full uboot表示,表示该二级引导程序是完整的U-Boot。
进一步地,在一个优选实施例中,将U-Boot的运行分为两个阶段,第一阶段:在MSMC中运行,完成简单硬件设备的初始化、DDR3的初始化以及内存分配等功能;第二阶段:在DDR3中运行,完成以太网等复杂硬件设备的初始化、解析U-Boot命令以及引导Linux启动等功能。
在一个优选实施例中,SPL的代码结构如图6所示。
U-Boot入口函数是由链接脚本决定,设置入口函数为start.S,start.S由汇编代码来实现,完成一些依赖于CPU体系结构的初始化工作。设置CPU工作在SVC32模式,SPLBoot过程不允许被中断,因此在start.S中禁止FIQ、IRQ中断。
SPL的板级初始化工作主要在board_init_r()函数中完成,包括PLL的配置、控制端口的初始化以及U-Boot的加载。配置好ARM时钟频率(ARMCLK)以及SPI时钟频率(SPICLK),保证SPI处于最大速率且无误码率出现,完成控制端口的初始化,以便于将SPL阶段的调试信息输出到控制端口。U-Boot根据配置文件中的相关配置来进行加载,在配置文件中添加:
#define CONFIG_SPL_SPI_SUPPORT
#define CONFIG_SPL_SPI_LOAD
#define CONFIG_SPL_PAD_TO 65536
表示U-Boot由SPI Nor Flash方式启动,且其Flash地址偏移量为64Kbyte,SPL在Flash的预留地址为前64Kbyte。通过spl_spi_load_image()函数完成将U-Boot的加载,再由jump_to_image_no_args(&spl_image)跳转到MSMC相应地址运行U-Boot,spl_image由spl_image_info结构体描述,具体如下:
可以看出,spl_image_info描述了U-Boot的加载地址、内存的运行地址、大小和标志等信息,spl_image通过配置头文件的加载地址、内存大小等设置来填充成员变量,例如,在配置头文件中添加:
#define CONFIG_SYS_TEXT_BASE 0x0c001000
这表明U-Boot在MSMC中运行的入口地址为0x0c001000。SPL将U-Boot加载到MSMC后,通过将PC指针指向U-Boot在MSMC中运行的入口地址,将主控权交给U-Boot。
U-Boot将完成设置异常向量入口、设置CPU模式、建立内存空间、初始化DDR3以及所需的外围接口、实现加载引导Linux启动等功能。其代码结构如图7所示。
U-Boot首先建立了包括复位、预存指令等异常中断向量表,设置异常向量入口,当异常中断发生时进行相应的中断处理,并配置好CP15,然后跳转到main函数完成相关的初始化工作。初始化分为两个阶段:代码重定位前和重定位后。代码重定位前在MSMC中运行,由board_init_f()函数完成初始化终端、串口、定时器、DDR3等。DDR3的初始化完成后,将代码重定位到DDR3,并将PC指针指向board_init_r()函数,由board_init_r()完成为Linux启动分配内存空间、初始化NAND Flash和以太网接口,最后进入main_loop()函数等待输入命令。
第一阶段:U-Boot在MSMC中运行。这一阶段调用board_init_f()函数完成对CPU寄存器的配置以及部分硬件接口的初始化的,通过一个for循环实现运行一系列初始化函数。
init_fnc_ptr定义了一个指向函数的指针,*init_sequence[]是一个指向数组的指针,数组成员变量由一系列函数指针构成,通过循环判断*init_sequence[]内函数指针是否为空来逐一运行函数指针所指向的函数实体,函数实体运行成功返回0,否则调用hang()输出错误信息,从而完一系列的初始化工作,主要包括以下内容:
①为ARM核、以太网接口等设备分配MSMC内存空间;
②初始化环境变量;
③初始化终端及串口,以输出调试信息;
④初始化DDR3,由于DDR3通过EMIF接口与DDR3相连,因此,还需配置EMIF以匹配DDR3速率。
第一阶段初始化完成后,设置DDR3重定位地址,并调用relocate_code函数完成整个U-Boot镜像的搬移,并将PC指针指向board_init_r()函数,如图8所示。
第二阶段:U-Boot在DDR3中运行。这一阶段在board_init_r()函数中完成了复杂硬件设备的初始化以及解析U-Boot命令等工作,主要包括以下内容:
①设置Linux镜像入口地址;
②初始化NAND Flash;
③初始化标准输入输出;
④初始化中断控制器,并使能中断;
⑤初始化以太网接口;
⑥进入到main_loop()函数,通过解析U-Boot命令做出相应操作,由Boot命令实现引导Linux启动。
main_loop()函数首先会判断一个时间延迟值,这个值可以在配置文件中进行配置,在这个延时内如果没有中断输入则直接进入Bootm命令完成Linux的引导,若有中断产生则进入到命令模式,等待执行命令,U-Boot用哈希表来解析命令行,通过输入命令行可以实现TFTP文件传输、烧写U-Boot和Linux镜像等功能,也可以在U-Boot中添加自定义的命令行,命令行的实现使得用户能够非常便利的在U-Boot平台上实现各种硬件操作。
Linux内核的加载由Bootm命令完成。Linux内核镜像uImage包含64字节的头部,描述了镜像长度、内核版本、程序加载地址和入口地址等信息,在Bootm中获取到uImage的这些描述信息,并取出U-Boot预存的环境变量参数,最后U-Boot找到Linux内核镜像入口地址,并将描述信息以及参数传入Linux内核,至此,U-Boot完成了其全部使命,将控制权转交给Linux内核。
与传统的Boot Loader相比,采用分级启动后,通过10Kbyte大小的SPL程序完成对时钟频率的配置,可将SPI的读取速率由原来4Mbps提升为提升3倍以上,这样,加载约500Kbyte的第二引导程序(例如U-Boot程序)到MSMC的加载时间大大缩减。图9示出了实测的改进前后的加载Boot Loader的耗时情况,可以看出改进后使得加载时间缩短了将近4倍,这将显著地提高Boot Loader的运行效率,缩短引导时间。
当高性能异构多核ARM+DSP处理器应用在通信架构中的基带处理,或是多核ARM处理器用于协议处理层时,如果出现基带处理板卡或协议处理板卡出现大规模断电或者CPU死机的情况,采用本发明的针对片上系统的操作系统启动引导方法,能够缩减基带处理板(BBU)或者协议处理板的卡机时间,降低通信失联的可能,有助于防止事故和损失(例如,在航天领域,0.1s的通信失联就可能造成航天事故)。因此,本发明的缩短引导时间的方案在工业上具有非常重要的意义。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (8)
1.一种针对片上系统的操作系统启动引导方法,所述片上系统包括带有内存的处理器、与所述处理器连接的DDR3存储器以及与所述处理器通过SPI总线连接的Nor Flash,所述处理器具有ARM核心和板载RBL,所述Nor Flash存储固化的一级引导程序和二级引导程序;所述引导方法包括下列步骤:
1)片上系统上电后启动板载RBL,从所述Nor Flash读取所述一级引导程序至内存中,所述一级引导程序仅包括PLL配置单元、用于支持PLL配置的第一板级硬件初始化单元以及二级引导程序加载单元;
2)在内存中运行一级引导程序,处理器执行第一板级硬件初始化单元的代码,完成用于支持PLL配置的板级硬件的初始化;执行对PLL配置单元的代码,使得ARM核心的时钟频率和SPI总线的时钟频率最大化;然后执行二级引导程序加载单元的代码,将二级引导程序从Nor Flash加载到内存中;
3)执行二级引导程序的代码,完成Linux启动引导。
2.根据权利要求1所述的针对片上系统的操作系统启动引导方法,其特征在于,所述二级引导程序包括第二板级硬件初始化单元、复制单元、重定向单元以及Linux启动环境配置单元;所述第二板级硬件初始化单元用于完成未被第一板级硬件初始化单元初始化的其它板级硬件的初始化,所述的其它板级硬件的初始化至少包括DDR3存储器的初始化。
3.根据权利要求2所述的针对片上系统的操作系统启动引导方法,其特征在于,所述步骤3)包括下列子步骤:
31)在内存中运行第二引导程序,执行所述第二板级硬件初始化单元的代码,完成DDR3存储器的初始化,然后执行所述复制单元的代码,将内存中的第二引导程序复制到DDR3存储器中,执行重定向单元的代码,将PC指针指向被复制到DDR3存储器的第二引导程序的Linux启动环境配置单元的入口位置处;
32)在DDR3存储器中运行Linux启动环境配置单元,完成Linux启动引导。
4.根据权利要求1所述的针对片上系统的操作系统启动引导方法,其特征在于,所述步骤32)包括下列子步骤:
321)设置Linux镜像入口地址;
322)初始化NAND Flash;
323)初始化标准输入输出;
324)初始化中断控制器,并使能中断;
325)初始化以太网接口;
326)进入到main_loop()函数,通过解析U-Boot命令做出相应操作,由Boot命令实现引导Linux启动。
5.根据权利要求1所述的针对片上系统的操作系统启动引导方法,其特征在于,所述步骤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内核。
6.根据权利要求1所述的针对片上系统的操作系统启动引导方法,其特征在于,所述片上系统是基于TI公司KeyStone II架构处理器的片上系统。
7.根据权利要求1所述的针对片上系统的操作系统启动引导方法,其特征在于,所述操作系统是SMP Linux对称多核处理操作系统。
8.根据权利要求1所述的针对片上系统的操作系统启动引导方法,其特征在于,所述步骤2)中,所述的用于支持PLL配置的板级硬件是ARM核和PLL单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611258091.4A CN108279935A (zh) | 2016-12-30 | 2016-12-30 | 一种针对片上系统的操作系统启动引导方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611258091.4A CN108279935A (zh) | 2016-12-30 | 2016-12-30 | 一种针对片上系统的操作系统启动引导方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108279935A true CN108279935A (zh) | 2018-07-13 |
Family
ID=62800220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611258091.4A Pending CN108279935A (zh) | 2016-12-30 | 2016-12-30 | 一种针对片上系统的操作系统启动引导方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108279935A (zh) |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213531A (zh) * | 2018-09-01 | 2019-01-15 | 哈尔滨工程大学 | 一种基于emif16的多核dsp上电自启动的简化实现方法 |
CN109254799A (zh) * | 2018-08-29 | 2019-01-22 | 新华三技术有限公司 | 引导程序的启动方法、装置及通信设备 |
CN109446021A (zh) * | 2018-09-30 | 2019-03-08 | 中国气象局气象探测中心 | 一种针对浮空器掩星接收机双核soc的ddr监控方法 |
CN109725941A (zh) * | 2018-12-18 | 2019-05-07 | 深圳吉迪思电子科技有限公司 | 一种用于显示驱动芯片的可编程初始化方法及系统 |
CN109918124A (zh) * | 2019-03-15 | 2019-06-21 | 盛科网络(苏州)有限公司 | SOC启动早期载入用户配置的方法及系统、Bootloader镜像配置方法 |
CN110286953A (zh) * | 2019-07-03 | 2019-09-27 | 迈普通信技术股份有限公司 | 嵌入式系统的启动方法、装置、嵌入式设备及存储介质 |
CN110489169A (zh) * | 2019-08-06 | 2019-11-22 | 晶晨半导体(上海)股份有限公司 | 一种片上系统的存储器快速启动方法 |
CN111045739A (zh) * | 2019-12-03 | 2020-04-21 | 福州瑞芯微电子股份有限公司 | 基于启动程序的固件引导方法、介质及设备 |
CN111143131A (zh) * | 2019-12-26 | 2020-05-12 | 中国电子科技集团公司第五十八研究所 | 对操作系统进行备份热启动的系统 |
CN111240753A (zh) * | 2019-12-31 | 2020-06-05 | 京信通信系统(中国)有限公司 | 引导程序的加载方法、存储介质及嵌入式终端 |
CN111338702A (zh) * | 2020-02-27 | 2020-06-26 | 珠海亿智电子科技有限公司 | 一种基于片外nor-flash的SOC系统引导方法 |
CN111381892A (zh) * | 2018-12-29 | 2020-07-07 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置、设备和机器可读介质 |
CN111522568A (zh) * | 2020-05-07 | 2020-08-11 | 深圳市吉祥腾达科技有限公司 | 一种boot下验证升级文件的方法 |
CN111666104A (zh) * | 2020-06-11 | 2020-09-15 | 江苏华创微系统有限公司 | 一种支持从RapidO启动的DSP处理器设计方法 |
CN111984329A (zh) * | 2019-08-22 | 2020-11-24 | 中国科学院国家空间科学中心 | 一种boot引导软件标准化生成、执行方法及系统 |
CN112306782A (zh) * | 2020-11-24 | 2021-02-02 | 中国人民解放军军事科学院国防科技创新研究院 | 面向调测试的操作系统内核引导与加载硬件架构及方法 |
CN112328426A (zh) * | 2020-09-25 | 2021-02-05 | 武汉海微科技有限公司 | 系统uboot损坏检测及恢复方法 |
CN112596796A (zh) * | 2020-12-21 | 2021-04-02 | 苏州长风航空电子有限公司 | 一种在VxWorks SMP启动过程中使用原子操作的方法 |
CN112631663A (zh) * | 2020-12-24 | 2021-04-09 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于ARMv7 SoC的一体化映像引导启动方法 |
CN112799743A (zh) * | 2021-04-13 | 2021-05-14 | 浙江华创视讯科技有限公司 | 加载从片处理器单元系统文件的方法、装置及电子设备 |
CN112817902A (zh) * | 2021-02-05 | 2021-05-18 | 中国电子科技集团公司第五十八研究所 | 互联裸芯接口管理系统及其初始化方法 |
CN112905395A (zh) * | 2021-03-12 | 2021-06-04 | 湖南长城银河科技有限公司 | 一种面向异构多核/众核微处理器的自纠错启动系统 |
CN113467837A (zh) * | 2021-06-25 | 2021-10-01 | 厦门码灵半导体技术有限公司 | 工业级arm芯片的控制方法、控制装置、存储介质和电子设备 |
CN114090090A (zh) * | 2021-11-25 | 2022-02-25 | 北京字节跳动网络技术有限公司 | 终端固件的启动方法、装置、电子设备及存储介质 |
CN114138360A (zh) * | 2021-11-12 | 2022-03-04 | 上海华元创信软件有限公司 | DSP在Flash上的多核烧写启动方法及系统 |
CN114138333A (zh) * | 2021-11-27 | 2022-03-04 | 深圳曦华科技有限公司 | 程序加载的方法及相关装置 |
CN114510287A (zh) * | 2022-01-25 | 2022-05-17 | 南京地平线集成电路有限公司 | 多处理单元的系统启动方法、装置、存储介质和电子设备 |
CN114968388A (zh) * | 2022-08-01 | 2022-08-30 | 摩尔线程智能科技(北京)有限责任公司 | 应用于微处理器的引导方法和系统 |
CN115495392A (zh) * | 2022-11-17 | 2022-12-20 | 深圳市楠菲微电子有限公司 | 多级启动中内存复用方法、装置、存储介质和处理器 |
TWI843444B (zh) * | 2023-02-20 | 2024-05-21 | 大陸商星宸科技股份有限公司 | 電子裝置及其操作方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040123089A1 (en) * | 2002-12-20 | 2004-06-24 | Bodily Melvin Dirk | Method of field upgradeable boot code |
CN105630530A (zh) * | 2014-11-15 | 2016-06-01 | 航天恒星科技有限公司 | 数字信号处理器多级启动方法及系统 |
CN105867977A (zh) * | 2016-04-01 | 2016-08-17 | 天津七所精密机电技术有限公司 | DSP用户程序升级及Flash下载方法 |
CN106164853A (zh) * | 2014-04-07 | 2016-11-23 | 高通股份有限公司 | 使用驻留在外部存储器设备上的芯片限制的指令用于启动序列修改的系统和方法 |
-
2016
- 2016-12-30 CN CN201611258091.4A patent/CN108279935A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040123089A1 (en) * | 2002-12-20 | 2004-06-24 | Bodily Melvin Dirk | Method of field upgradeable boot code |
CN106164853A (zh) * | 2014-04-07 | 2016-11-23 | 高通股份有限公司 | 使用驻留在外部存储器设备上的芯片限制的指令用于启动序列修改的系统和方法 |
CN105630530A (zh) * | 2014-11-15 | 2016-06-01 | 航天恒星科技有限公司 | 数字信号处理器多级启动方法及系统 |
CN105867977A (zh) * | 2016-04-01 | 2016-08-17 | 天津七所精密机电技术有限公司 | DSP用户程序升级及Flash下载方法 |
Non-Patent Citations (3)
Title |
---|
OUCAIJUN: "uboot代码2:stage2代码,启动内核", 《HTTPS://WWW.CNBLOGS.COM/MYLINUX/P/5043921.HTML》 * |
TEXAS INSTRUMENTS: "KeyStone II architecture ARM Bootloader User Guide", 《HTTPS://WWW.TI.COM/PRODUCT/TCI6638K2K》 * |
进击的菜鸟: "Uboot启动过程详解", 《HTTP://BLOG.CHINAUNIX.NET/UID-29106641-ID-3961178.HTML》 * |
Cited By (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109254799A (zh) * | 2018-08-29 | 2019-01-22 | 新华三技术有限公司 | 引导程序的启动方法、装置及通信设备 |
CN109254799B (zh) * | 2018-08-29 | 2023-03-10 | 新华三技术有限公司 | 引导程序的启动方法、装置及通信设备 |
CN109213531A (zh) * | 2018-09-01 | 2019-01-15 | 哈尔滨工程大学 | 一种基于emif16的多核dsp上电自启动的简化实现方法 |
CN109446021A (zh) * | 2018-09-30 | 2019-03-08 | 中国气象局气象探测中心 | 一种针对浮空器掩星接收机双核soc的ddr监控方法 |
CN109446021B (zh) * | 2018-09-30 | 2022-11-22 | 中国气象局气象探测中心 | 一种针对浮空器掩星接收机双核soc的ddr监控方法 |
CN109725941A (zh) * | 2018-12-18 | 2019-05-07 | 深圳吉迪思电子科技有限公司 | 一种用于显示驱动芯片的可编程初始化方法及系统 |
CN111381892A (zh) * | 2018-12-29 | 2020-07-07 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置、设备和机器可读介质 |
CN111381892B (zh) * | 2018-12-29 | 2023-04-28 | 斑马智行网络(香港)有限公司 | 一种数据处理方法、装置、设备和机器可读介质 |
CN109918124A (zh) * | 2019-03-15 | 2019-06-21 | 盛科网络(苏州)有限公司 | SOC启动早期载入用户配置的方法及系统、Bootloader镜像配置方法 |
CN110286953A (zh) * | 2019-07-03 | 2019-09-27 | 迈普通信技术股份有限公司 | 嵌入式系统的启动方法、装置、嵌入式设备及存储介质 |
CN110286953B (zh) * | 2019-07-03 | 2023-12-19 | 迈普通信技术股份有限公司 | 嵌入式系统的启动方法、装置、嵌入式设备及存储介质 |
CN110489169A (zh) * | 2019-08-06 | 2019-11-22 | 晶晨半导体(上海)股份有限公司 | 一种片上系统的存储器快速启动方法 |
CN110489169B (zh) * | 2019-08-06 | 2021-10-19 | 晶晨半导体(上海)股份有限公司 | 一种片上系统的存储器快速启动方法 |
CN111984329A (zh) * | 2019-08-22 | 2020-11-24 | 中国科学院国家空间科学中心 | 一种boot引导软件标准化生成、执行方法及系统 |
CN111984329B (zh) * | 2019-08-22 | 2023-10-31 | 中国科学院国家空间科学中心 | 一种boot引导软件标准化生成、执行方法及系统 |
CN111045739B (zh) * | 2019-12-03 | 2022-06-07 | 福州瑞芯微电子股份有限公司 | 基于启动程序的固件引导方法、介质及设备 |
CN111045739A (zh) * | 2019-12-03 | 2020-04-21 | 福州瑞芯微电子股份有限公司 | 基于启动程序的固件引导方法、介质及设备 |
CN111143131B (zh) * | 2019-12-26 | 2022-08-12 | 中国电子科技集团公司第五十八研究所 | 对操作系统进行备份热启动的系统 |
CN111143131A (zh) * | 2019-12-26 | 2020-05-12 | 中国电子科技集团公司第五十八研究所 | 对操作系统进行备份热启动的系统 |
CN111240753A (zh) * | 2019-12-31 | 2020-06-05 | 京信通信系统(中国)有限公司 | 引导程序的加载方法、存储介质及嵌入式终端 |
CN111338702A (zh) * | 2020-02-27 | 2020-06-26 | 珠海亿智电子科技有限公司 | 一种基于片外nor-flash的SOC系统引导方法 |
CN111338702B (zh) * | 2020-02-27 | 2022-04-26 | 珠海亿智电子科技有限公司 | 一种基于片外nor-flash的SOC系统引导方法 |
CN111522568A (zh) * | 2020-05-07 | 2020-08-11 | 深圳市吉祥腾达科技有限公司 | 一种boot下验证升级文件的方法 |
CN111666104B (zh) * | 2020-06-11 | 2023-12-19 | 江苏华创微系统有限公司 | 一种支持从RapidI/O启动的DSP处理器设计方法 |
CN111666104A (zh) * | 2020-06-11 | 2020-09-15 | 江苏华创微系统有限公司 | 一种支持从RapidO启动的DSP处理器设计方法 |
CN112328426A (zh) * | 2020-09-25 | 2021-02-05 | 武汉海微科技有限公司 | 系统uboot损坏检测及恢复方法 |
CN112306782A (zh) * | 2020-11-24 | 2021-02-02 | 中国人民解放军军事科学院国防科技创新研究院 | 面向调测试的操作系统内核引导与加载硬件架构及方法 |
CN112596796B (zh) * | 2020-12-21 | 2022-09-20 | 苏州长风航空电子有限公司 | 一种在VxWorks SMP启动过程中使用原子操作的方法 |
CN112596796A (zh) * | 2020-12-21 | 2021-04-02 | 苏州长风航空电子有限公司 | 一种在VxWorks SMP启动过程中使用原子操作的方法 |
CN112631663A (zh) * | 2020-12-24 | 2021-04-09 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于ARMv7 SoC的一体化映像引导启动方法 |
CN112817902A (zh) * | 2021-02-05 | 2021-05-18 | 中国电子科技集团公司第五十八研究所 | 互联裸芯接口管理系统及其初始化方法 |
CN112817902B (zh) * | 2021-02-05 | 2022-08-02 | 中国电子科技集团公司第五十八研究所 | 互联裸芯接口管理系统及其初始化方法 |
CN112905395A (zh) * | 2021-03-12 | 2021-06-04 | 湖南长城银河科技有限公司 | 一种面向异构多核/众核微处理器的自纠错启动系统 |
CN112799743A (zh) * | 2021-04-13 | 2021-05-14 | 浙江华创视讯科技有限公司 | 加载从片处理器单元系统文件的方法、装置及电子设备 |
CN113467837A (zh) * | 2021-06-25 | 2021-10-01 | 厦门码灵半导体技术有限公司 | 工业级arm芯片的控制方法、控制装置、存储介质和电子设备 |
CN114138360A (zh) * | 2021-11-12 | 2022-03-04 | 上海华元创信软件有限公司 | DSP在Flash上的多核烧写启动方法及系统 |
CN114138360B (zh) * | 2021-11-12 | 2024-03-26 | 上海华元创信软件有限公司 | DSP在Flash上的多核烧写启动方法及系统 |
CN114090090A (zh) * | 2021-11-25 | 2022-02-25 | 北京字节跳动网络技术有限公司 | 终端固件的启动方法、装置、电子设备及存储介质 |
WO2023093633A1 (zh) * | 2021-11-25 | 2023-06-01 | 北京字节跳动网络技术有限公司 | 终端固件的启动方法、装置、电子设备及存储介质 |
CN114090090B (zh) * | 2021-11-25 | 2024-03-22 | 抖音视界有限公司 | 终端固件的启动方法、装置、电子设备及存储介质 |
CN114138333A (zh) * | 2021-11-27 | 2022-03-04 | 深圳曦华科技有限公司 | 程序加载的方法及相关装置 |
CN114510287A (zh) * | 2022-01-25 | 2022-05-17 | 南京地平线集成电路有限公司 | 多处理单元的系统启动方法、装置、存储介质和电子设备 |
CN114968388A (zh) * | 2022-08-01 | 2022-08-30 | 摩尔线程智能科技(北京)有限责任公司 | 应用于微处理器的引导方法和系统 |
CN115495392A (zh) * | 2022-11-17 | 2022-12-20 | 深圳市楠菲微电子有限公司 | 多级启动中内存复用方法、装置、存储介质和处理器 |
TWI843444B (zh) * | 2023-02-20 | 2024-05-21 | 大陸商星宸科技股份有限公司 | 電子裝置及其操作方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108279935A (zh) | 一种针对片上系统的操作系统启动引导方法 | |
US10055218B2 (en) | System and method for adding and storing groups of firmware default settings | |
CN105745617B (zh) | 用于预启动固件更新的选择性功率管理 | |
EP3274788B1 (en) | Technologies for improved hybrid sleep power management | |
US8484631B2 (en) | Supporting hardware configuration changes in a UEFI firmware component | |
US9274804B2 (en) | Overlapped boot task fetches and boot task execution to reduce boot time in an electrical device | |
US9411601B2 (en) | Flexible bootstrap code architecture | |
CN102388366B (zh) | 实现不同处理器兼容的方法及装置 | |
US20110231858A1 (en) | Burst access protocol | |
EP3910469A1 (en) | Interface and warm reset path for memory device firmware upgrades | |
US10983847B2 (en) | Dynamically loadable unikernel binaries | |
CN103761088A (zh) | 一种适用于arm架构移动设备的多操作系统切换方法 | |
CN111209046A (zh) | 一种面向多任务处理的嵌入式sparc处理器操作系统设计方法 | |
CN107408090A (zh) | 输入/输出控制器访问通道的动态配置 | |
CN109800032A (zh) | Bootrom多核加载方法及装置 | |
WO2017206151A1 (zh) | 在单任务系统中实现多任务的方法、装置及单任务系统 | |
CN114185607B (zh) | Arm服务器中pci设备的启动控制方法、装置及设备 | |
EP3633507B1 (en) | Technologies for secure and efficient native code invocation for firmware services | |
CN103853557A (zh) | 一种用Uboot网络启动WinCE的方法 | |
US20170308154A1 (en) | Fast system setting changes | |
US10503523B2 (en) | Technologies to improve system boot performance and reliability | |
CN106155682A (zh) | 一种基于SDMA控制器的Linux系统启动方法及系统 | |
CN116302122A (zh) | 多核异构域控制器、外设适配方法以及存储介质 | |
US20140258751A1 (en) | Mobile system optimization method | |
CN115309463A (zh) | 一种amp系统引导和配置的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180713 |
|
RJ01 | Rejection of invention patent application after publication |