Bootloader啟動流程分析

來源:互聯網
上載者:User

Bootloader的啟動流程一般分為兩個階段:stage1和stage2,下面分別對這兩個階段進行講解:

1.stage1

(1)完成基本的硬體初始化。初始化的工作主要包括屏蔽所有的中斷、設定CPU的速度和時鐘頻率、RAM初始化、初始化LED、關閉CPU內部指令和資料cache等。

(2)為載入stage2準備RAM空間。為了更快執行速度,通常把stage2載入到RAM空間中來執行,因此必須為載入Bootloader的stage2準備一段可用的RAM空間範圍。

(3)拷貝stage2到RAM中。確定stage2的可執行映像在固態存放裝置的存放起始地址和終止地址以及RAM空間的起始地址。

(4)設定堆棧指標sp。這是為執行stage2的C語言代碼做好準備。

 

2.stage2

(1)用組合語言跳轉到main入口函數

(2)為了實現更複雜的功能和取得更好的代碼可讀性和可移植性,stage2的代碼通常用C語言來實現。在編譯和連結bootloader時,不能使用glibc庫中的任何支援函數。

(3)初始化串口、初始化計時器等硬體裝置。在初始化這些裝置之前、可以輸出一些列印資訊。

(4)檢測系統的記憶體映射,所謂記憶體映射就是指在整個4GB物理地址空間中有指出哪些位址範圍被分配用來定址系統的RAM單元。

(5)載入核心映像和根檔案系統映像,這裡包括規劃記憶體佔用的布局和從Flash上拷貝資料。

(6)設定核心的啟動參數。

 

U-Boot的目錄及存放原則

board

和一些已有開發板有關的檔案,比如Makefile和U-Boot.lds等都和具體開發板的硬體和地址分配有關。

 

common

與體繫結構無關的檔案,實現各種命令的C檔案

 

cpu

CPU相關的檔案,其中的子目錄都是以U-Boot所支援的CPU為名,比如有子目錄arm926ejs、mips、mpc8260和nios等,每個特定的子目錄都包括cpu.c和interrupt.c,start.S。其中cpu.c初始化CPU、設定指令Cache和資料Cache等;interrupt.c設定系統的各種中斷和異常,比如開關中斷、時鐘中斷、軟體中斷、預取中止和未定義指令等;start.S是U-Boot啟動時執行的第一個檔案,它主要設定系統堆棧和工作方式,為i進入C程式奠定基礎。

 

disk

disk驅動的分區處理代碼

 

doc

文檔

 

drivers

通用裝置驅動程式,比如各種網卡,支援CFI的Flash,串口和USB匯流排等

 

fs

支援檔案系統的檔案,U-Boot現在支援cramfs、fat、fdos、jffs2和registerfs

 

include

標頭檔、對各種硬體平台支援的彙編檔案、系統的設定檔和對檔案系統支援的檔案

 

net

與網路有關的代碼,如BOOTP協議,TFTP協議、RARP協議和NFS檔案系統的實現

 

lib_arm

與ARM體繫結構相關的代碼

 

tools

建立S-Record格式檔案和U-Boot images的工具

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.