Linux啟動過程分析

2021-06-18 04:02:10 字數 1743 閱讀 8354

boot loader

當cpu一上電,此時cpu必須從nor flash或者nand flash中取指令 , 直接從 nand flash取指令的ap為支援nand 啟動 。

nand boot ,其實原理就是ap 內部的rom裡有一小段**,包括nand flash驅動,它啟動從nand flash中讀取一段(比如4kb)到內部的sram中,

然後跳轉到sram起始位置,執行sram中的**。sram中的**中包括初始化sdram,nand flash driver等,它的第一件事情就是初始化sdram,

然後把nand flash中的更多的東西(整個boot loader)搬到sdram中,然後執行uboot

nor boot : **就在nor flash中,直接執行,初始化cpu ,sdram 等, 把整個uboot 搬到sdram中 ,然後執行uboot,在uboot中把kernel從

nand flash中讀出。

對於常用的cpu , u boot 都支援, 這塊不需要改什麼

對於u boot不支援的cpu , 需要寫彙編,初始化cpu ,sdram ,nand flash驅動,nor flash驅動 (setenv命令需要)等

在boot loader 中,還需要uart驅動,以支援列印資訊。

另外 要加上lcd 驅動 ,以支援splash ,否則在uboot階段,沒有任何顯示。

正常啟動 uboot,以引導linux  這些就夠了。

但是對於乙個產品:

它在研發階段,uboot 必須支援tftp , 需要網絡卡驅動 (在boot loader中)

同時對於生產ate,把它放在uboot階段對生產比較好,否則要等到整個系統起來,kernel+小測試檔案系統也要10多妙 。

這樣的話,在ate中需要加上  memory test ,lcd test, 音效卡測試,需要加上i2c驅動,key test,rtc test,。

kernel:  

在kernel中 , 不需要對sdram初始化了。 但必須對記憶體進行分配,也就是物理起始位址是多少? 共有多少記憶體,

虛擬位址空間的分配,  io 位址空間 ,平台初始化。。。。

linux 系統需要click , 需要用到ap的timer ,

對uart初始化,以列印資訊

對網絡卡初始化,以支援nfs除錯

必須要有nor ,nand驅動 ,以支援檔案系統

必須要有lcd 驅動 ,以支援顯示 , framebuffer

必須支援key ,以支援輸入

必須 支援 i2c ,spi 介面 ,以支援在上面的裝置 , i2c 時鐘, touchpad 這些裝置需要驅動 , mmc over spi

sd card

usb device , 需要裝置驅動  , 以支援u盤

usb host , 需要host 驅動

自帶wifi嗎? wifi驅動

alsa 驅動以支援 音效卡 (i2s)

gpio 本身的驅動

watchdog ?

有dsp嗎 ? dsp驅動

rtc 自帶的嗎? 不自帶的話,外接乙個rtc (是否加鈕扣電池還是用大電容來保持時間?)

power managerment

dma ? 這個主要在其他驅動中,啟動它來傳輸資料

移植檔案系統 yaffs ,以提高效能。

還有就是對核心配置,比如eabi ,效能方面,開機進度顯示psplash .

我們發現 對於成熟平台,很多驅動都有了,驅動人員只需要改改lcd,新增一些外設。

Linux 啟動過程分析

runlevel 命令 可以檢視當前的執行級別 linux 系統啟動過程如下 1 bios自檢 2 啟動grub lilo 3 執行linux 核心並檢測硬體 4 執行系統的第乙個程序init 5 init 讀取到系統引導配置檔案 etc inittab中的資訊進行初始化 6 etc rc.d rc...

Linux核心啟動過程分析

本文永久更新鏈結位址 日期 2014 10 14 字型 大中小 下面給出核心映像完整的啟動過程 注意kernel evecve呼叫的是與具體體系平台相關的實現,但它是乙個通用的系統呼叫,在linux syscalls.h中宣告,這個標頭檔案中宣告了與體系結構無關的所有系統呼叫介面。只不過kernel...

Linux啟動過程

1 開啟 pc電源 pc加電後,乙個特殊的硬體電路會觸發 cpu 的 reset 腳的邏輯值,然後一些 cpu 暫存器,如 cs eip 等被給定乙個值,接著 cpu 跳轉到乙個固定位址開始執行 bios 2 bios 自檢,按設定的裝置啟動 bios 對硬體進行一系列徹底的檢查,如 cpu 型別 ...