典型的嵌入式Linux启动顺序

1)引导加载程序固件(示例项目里的U-Boot)运行于目标MCU内置闪存(无需外部存储器),并在上电/复位后,执行所有必需的初始化工作,包括设置串口和用于外部存储器(RAM)访问的存储器控制器。

 

2)U-Boot可将Linux映像从外部Flash转移到外部RAM,并将控制交接到RAM中的内核入口点。可压缩Linux映像以节省闪存空间,代价是在启动时要付出解压缩时间。

 

3)Linux进行引导并安装基于RAM的文件系统(initramfs)作为根文件系统。在项目构建时,Initramfs被填充以所需的文件和目录,然后被简单地链接到内核。

 

4)在Linux内核下,执行/sbin/init。/sbin/init程序按照/etc/inittab中配置文件的描述对系统进行初始化。

 

5)一旦初始化进程完成运行级执行和/sbin/init里的命令,它会启动一个登录进程。

 

6)初始化文件/etc/profile的执行,标志着启动过程的完成。

 

通过使能就地执行(ExecuteInPlace——XIP)可以显著缩短启动时间、提升整体性能,XIP是从闪存执行代码的方法。通常,Linux代码是从闪存加载到外部存储器,然后从外部存储器执行。通过从闪存执行,因不再需复制这步,从而只需较少的存储器,且只读存储器不再占程序空间。

posted @ 2020-10-18 21:51  蒲城小农  阅读(581)  评论(0)    收藏  举报