天天看點

嵌入式linux核心啟動過程簡明描述

一個嵌入式 Linux 系統從軟體的角度看通常可以分為四個層次:

1. 引導加載程式。包括固化在固件(firmware)中的 boot 代碼(可選),和 Boot Loader 兩大部分。

2. Linux 核心。特定于嵌入式闆子的定制核心以及核心的啟動參數。

3. 檔案系統。包括根檔案系統和建立于 Flash 記憶體裝置之上檔案系統。通常用 ram disk 來作為 root fs。

4. 使用者應用程式。特定于使用者的應用程式。有時在使用者應用程式和核心層之間可能還會包括一個嵌入式圖形使用者界面

嵌入式linux核心啟動過程簡明描述

大多數 Boot Loader 都包含兩種不同的操作模式:"啟動加載"模式和"下載下傳"模式,這種差別僅對于開發人員才有意義。但從最終使用者的角度看,Boot Loader 的作用就是用來加載作業系統,而并不存在所謂的啟動加載模式與下載下傳工作模式的差別。

啟動加載(Boot loading)模式:這種模式也稱為"自主"(Autonomous)模式。也即 Boot Loader 從目标機上的某個固态儲存設備上将作業系統加載到 RAM 中運作,整個過程并沒有使用者的介入。這種模式是 Boot Loader 的正常工作模式,是以在嵌入式産品釋出的時侯,Boot Loader 顯然必須工作在這種模式下。

下載下傳(Downloading)模式:在這種模式下,目标機上的 Boot Loader 将通過序列槽連接配接或網絡連接配接等通信手段從主機(Host)下載下傳檔案,比如:下載下傳核心映像和根檔案系統映像等。從主機下載下傳的檔案通常首先被 Boot Loader 儲存到目标機的 RAM 中,然後再被 Boot Loader 寫到目标機上的FLASH 類固态儲存設備中。Boot Loader 的這種模式通常在第一次安裝核心與根檔案系統時被使用;此外,以後的系統更新也會使用 Boot Loader 的這種工作模式。工作于這種模式下的 Boot Loader 通常都會向它的終端使用者提供一個簡單的指令行接口。

uImage構成:

嵌入式linux核心啟動過程簡明描述
嵌入式linux核心啟動過程簡明描述
嵌入式linux核心啟動過程簡明描述
嵌入式linux核心啟動過程簡明描述
嵌入式linux核心啟動過程簡明描述

arm linux核心映像uImage生成過程圖解:

嵌入式linux核心啟動過程簡明描述
嵌入式linux核心啟動過程簡明描述
嵌入式linux核心啟動過程簡明描述

u-boot認為zImage為自解壓檔案

zImage:

* (decompress code) Head.s misc.s 

* compressed vmlinux

vmlinux:

* (vmlinux-init)arch/arm/kernel/head.o

* (vmlinux-main)driver/build-in.o mm/build-in.o ......

* kallsyms.o(符号)

linux核心的啟動大緻可以劃分為3個階段

1 解壓縮

2 初始化

3 啟動應用程式