关于嵌入式Linux的开机启动流程网上有好多资料,这儿我们仅进行一个简单的介绍linux软件工程师,借以让人能快速了解整个启动流程。
整个开机流程可以归结为以下几点:
首先分个介绍:
ROMCode(芯片内固化好的一段代码)linux 程序开机启动,起最初的引导功能,包括初始化时钟、片内RAM、相关外设等,读取引脚配置信息等;
U-Boot(UniversalBootLoader),初始化相关硬件设备linux 程序开机启动,引导系统加载内核镜像的一段程序;
Kernel,负责储存器、文件、外设等的管理,以及进程通讯、调度等;
文件系统,负责文件的管理;
应用,就是各个应用程序。
为形象点说明,我们将整个流程称作开一辆面包车,我们把前面那幅图进行修改:
上电后CPU执行内部固化好的一段代码(ROMCode),初始化相关外设,按照外部引脚的信息,选择从那个储存设备读取U-Boot(emmc、TF卡......),之后将U-Boot加载到显存上运行,U-Boot完成相关外设配置后,将Kernel加载到显存上,至此,由Kernel负责剩下的任务。
这儿ROMCode是上电后最先执行的动作,就相当一个启动引导的过程;U-Boot不仅初始外设外,还有很重要的一点就是为Kernel初始化相关显存空间,为其加载做打算,这似乎就相当于要使底盘发动,要先为它提供能源;有了底盘没设备,空有动力也做不了哪些实质的事,相反,没有底盘提供动力linux系统应用,设备动不上去,这儿似乎就阐明着Kernel和文件系统密不可分的关系;当一切打算就绪后,我们就可以在里面编撰、运行应用相关的程序(驾车)。