1. Bootloader作用
PC機中的引導加載程序由BIOS(其本質(zhì)是一段固件程序)和GRUB或LILO一起組成。BIOS在完成硬件檢測和資源分配后,將硬盤中的引導程序讀到系統(tǒng)內(nèi)存中然后將控制權交給引導程序。引導程序的主要任務是將內(nèi)核從硬盤上讀到內(nèi)存中,然后跳轉到內(nèi)核的入口點去運行,即啟動操作系統(tǒng)。
簡單地說,BootLoader就是在操作系統(tǒng)運行之前運行的一段小程序。通過這段小程序,可以初始化硬件設備,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)做好準備。
系統(tǒng)加電或復位后,所有的CPU通常都從CPU制造商預先安排地址開始執(zhí)行。比如,S3C2410在復位后從地址0x00000000起開始執(zhí)行。而嵌入式系統(tǒng)則將固態(tài)存儲設備(比如:FLASH)安排在這個地址上,而bootloader程序又安排在固態(tài)存儲器的最前端,這樣就能保證在系統(tǒng)加電后,CPU首先執(zhí)行BootLoader程序。
2. Bootloader 移植
每種不同的CPU體系結構都有不同的BootLoader。除了依賴于CPU的體系結構外,BootLoader 還依賴于具體的嵌入式板級設備的配置,比如板卡的硬件地址分配,外設芯片的類型等。這也就是說,對于兩塊不同的開發(fā)板而言,即使它們是基于同一種CPU而構建的,但如果他們的硬件資源或配置不一致的話,要想在一塊開發(fā)板上運行的BootLoader程序也能在另一塊板子上運行,還是需要作修改。
3. 移植流程
BootLoader 的啟動過程可分為單階段(Single-Stage)和多階段(Multi-Stage)兩種。
BootLoader 大多采用兩階段,即啟動過程可以分為 stage1和 stage2:stage1完成初始化硬件,為stage2準備內(nèi)存空間,并將stage2復制到內(nèi)存中,設置堆棧,然后跳轉到stage2。
Stage1:(匯編編寫)
·硬件設備初始化(主要是CPU內(nèi)部器件)
·為加載 BootLoader 的 stage2 準備 RAM 空間
·拷貝 BootLoader 的 stage2 到 RAM 空間中
·設置好堆棧(why??)
·跳轉到 stage2 的 C 入口點
Stage2:(C編寫)
·初始化本階段要使用到的硬件設備(主要是外設)
·將內(nèi)核映像和根文件系統(tǒng)映像從 flash 上讀到RAM 中
·調(diào)用內(nèi)核
4. Uboot介紹
下載地址: ftp://ftp.denx.de/pub/u-boot/
文件目錄介紹
5. Uboot編譯
1. make mini6410_nand_config-ram256
2. make CROSS_COMPILE=arm-linux-
詳解:
mini6410_nand_config-ram256 : unconfig
@$(MKCONFIG) mini6410 arm s3c64xx mini6410 samsung s3c6410 NAND ram256
實際運行的是 ./mkconfig mini6410 arm s3c64xx mini6410 samsung s3c6410 NAND ram256 (8個參數(shù))
查看mkconfig源碼(實際為shell腳本), 配置成功后 在 ../include/ 下生成config.mk 和 config.h 為編譯時使用。
編譯注意兩步 :
a. 連接地址 ../board/samsung/mini6410/u-boot.lds(鏈接文件) + config.mk 里面的偏移地址(根據(jù)flash大小定地址)TEXT_BASE = 0xc7e00000
b. ../cpu/s3c64xx/start.S
命令實現(xiàn): ../common/main.c 目錄../common/ 有各種命令實現(xiàn)源碼。。。
u-boot終極目的就是啟動內(nèi)核 。。。。分兩步
a. 從flash讀出內(nèi)核UImage, 分區(qū)名不重要, 關鍵是代碼中寫死的 分區(qū)起始地址。。。
b. 啟動內(nèi)核, do_bootm_linux
do_bootm_linux又分兩步,設置啟動參數(shù),告訴內(nèi)核一些參數(shù)(有一個起始地址,按固定格式寫入),跳到內(nèi)核入口地址再啟動內(nèi)核,內(nèi)核啟動后要讀取設置的參數(shù)可以從起始地址讀取。。。
上一篇:wince bsp中的g_oalAddressTable表
下一篇:uboot啟動Linux內(nèi)核時undefined instruction錯誤
- 熱門資源推薦
- 熱門放大器推薦
設計資源 培訓 開發(fā)板 精華推薦
- Bosch_BME680
- 具有關斷功能的 LTC1407AIMSE 串行 14 位、3Msps 同時采樣 ADC 的典型應用
- 使用L6564H的25W寬范圍高功率因數(shù)降壓-升壓轉換器演示板
- AD5336 并行接口、四路電壓輸出、10 位 DAC 的典型應用
- FPC0.5-24P_Adapter-board
- LT1171HVCT、5V/2.5A 正向轉換器的典型應用
- 使用 MaxLinear, Inc 的 SPX29501 的參考設計
- KeyBoard.Juk.Mx.32.Rev.A
- PCF2127 TCXO RTC 的計時、CLKOUT 應用
- 用于IO-Link設備的STM32 Nucleo包與IO-Link v1.1(PHY和堆棧)完全兼容
- 英特爾發(fā)布全新GPU,AI和工作站迎來新選擇
- 重新思考數(shù)據(jù)中心架構,推進AI的規(guī)?;涞?/a>
- Samtec科普 | 一文入門射頻連接器
- 垂直農(nóng)業(yè)的挑戰(zhàn) | Samtec新型農(nóng)業(yè)漫談系列一
- 比克電池亮相CIBF 2025,全品類布局構建發(fā)展“芯”引擎
- 欣旺達閃耀CIBF 2025:以閃充/固態(tài)電池/逸風電池等五大技術矩陣,領航全球能源革命
- 全新智己L6要做「下一代產(chǎn)品」
- 2025《國產(chǎn)車規(guī)芯片可靠性分級目錄》全新發(fā)布,電子版對整車和零部件企業(yè)免費開放
- 寧德時代推重卡換電標準,計劃三年內(nèi)電動化滲透率達50%
- 特斯拉FSD系統(tǒng)全球測試成功,無人駕駛技術再突破
- 疫情后超60%中國企業(yè)加速數(shù)字化轉型,移動機器人潛力釋放
- 雙環(huán)傳動:數(shù)字化轉型浪潮下的工業(yè)供應商
- 選購聲波成像儀,這6大方面一定要考慮
- 貿(mào)澤電子開售Analog Devices AD9083模數(shù)轉換器
- IAR燒寫MSP430失敗的解決方法
- 華為移動路由器:插卡上網(wǎng) 一碰聯(lián)網(wǎng)
- 電力消耗越來越多,汽車需要什么樣的連接器
- iPhone 12系列全系配置、價格揭秘:Pro升級6GB內(nèi)存
- vivo新機外觀專利揭秘:極窄打孔前攝 背面垂直四攝
- 8848手機明天推出新品:超跑限量款,支持5G網(wǎng)絡