bootloader啟動過程:
系統加電後,先執行第一階段彙編**,進行相應的內部硬體初始化(暫存器、記憶體等),將第二階段c**複製到ram位址bloc_abs_base,然後跳轉到第二階段開始執行,在第二階段中,從彙編**跳轉到c 的main()函式,繼續如下工作:
外圍硬體初始化(串列埠、usb等);
將flash中的kernel載入到sdram的kernel區域;
將flash中的ramdisk載入到sdram的ramdisk區域;
根據使用者選擇,進入命令模組或啟動kernel
還可以根據需要新增協議實現更複雜的功能如tftp,當然要有相關硬體支援
常用的bootloader:
1:blob
是一款功能強大的bootloader,源**開放
2:armboot
是基於arm的嵌入式系統設計的,它支援多種flash
3:redboot
redboot是由redhat公司開發的
4:vivi
vivi是開發源**的,適用於用於arm9,主要用於s3c2410,並且它的**組織形式類似於linux,所以熟悉linux核心**結構的人會很容易理解vivi的構造
5:u-boot
u-boot是遵循gpl條款的開發源**專案,其源**目錄、編譯形式與linux核心很相似
其特點:
(1) 支援多協議,scc/fec乙太網、ootp/tftp引導、ip和mac的預置功能
(4) 識別二進位制、elf32、uimage格式的image,對linux引導有獨特的支援。u-boot對linux核心進一步封裝為uimage
u-boot**目錄結構:
board:
commom:
cpu:
disk:
doc:
drivers:
fs:include:
net:
lib_arm:
tools: 建立s-record格式檔案和u-boot的工具
examples:
lib_***:處理器體系相關的檔案目錄
post:上電自檢檔案目錄
rtc:rtc驅動程式
Boot Loader啟動過程
由於boot loader的實現依賴與cpu的體系結構,因此大多數的boot loader都分為stage1和stage2兩個階段 1,bootloader 的第一階段 stage1 工作流程 1.1,硬體裝置初始化通常包括如下步驟 按先後順序執行 復位 reset 設定cpu為超級保護模式 svc...
bootloader啟動過程詳細說明
今天早上看了一上午的bootloader簡單原始碼,終於捋順了bootloader的執行過程,之前只是知道bootloader 會先被irom中的 拷貝到iram中一部分,然後執行這部分 會把整個bootloader 拷貝到sdram中,最終在sdram執行剩下的 而這段 會把kernel拷貝到sd...
bootloader 啟動過程詳細說明
今天早上看了一上午的bootloader簡單原始碼,終於捋順了bootloader的執行過程,之前只是知道bootloader 會先被irom中的 拷貝到iram中一部分,然後執行這部分 會把整個bootloader 拷貝到sdram中,最終在sdram執行剩下的 而這段 會把kernel拷貝到sd...