【1】Uboot的啟動流程
Uboot的啟動分為兩個階段。
第一階段:設置異常向量表,設置ARM核為svc模式,關cache和關mmu,
關看門狗,初始化時鍾,串口,內存,初始化棧空間,清bss。跳轉到第二階
段。
第二階段:硬件的初始化,讀取環境變量,將內核從emmc加載到內存中,
調用內核。
【2】kernel的啟動流程
0.設置cpu為svc模式,關中斷。
1. 為內核的解壓做准備(內存,中斷等等)。
2.內核自解壓 (vmlinux.lds)。
3.跳轉到入口地址執行(head.S--->main.c)start_kernel執行內核。
4.硬件的初始化(初始mm mmu 中斷(request_irq),軟中斷初始化,內核定時器) (解析設備設備樹,執行驅動)。
5.掛載根文件系統。
6.開啟第一個用戶進程init,執行linuxrc應用程序。
【3】rootfs執行過程
Linuxrc調用inittab文件(規定操作系統行為文件)獲取操作系統行為。
執行啟動第一個腳本rcS,rcS中調用mount -a 掛載fstab中所有設備。
當控制台登錄的時候,執行bin/sh命令,進入shell命令行(在進入前,會執行profile,設置環境變量)。
原文:https://blog.csdn.net/JISHUQIANJIA/article/details/80920156