uboot工作流程分析
程序入口
1.打開(kāi)頂層目錄的Makefile,找到目標(biāo)smdk2440_config的命令中的第三項(xiàng)(smdk2440)
2.進(jìn)入目錄board/samsung/smdk2440/,找到u-boot.lds文件。uboot的鏈接都是由這個(gè)鏈接器腳本來(lái)控制的
3.打開(kāi)u-boot.lds文件,找到.text(代碼段)的第一個(gè)文件cup/s3c24xx/start.o,該文件就是uboot的入口代碼。鏈接器腳本中的ENTRY用來(lái)表明整個(gè)程序的入口,那么標(biāo)號(hào)_start就是整個(gè)程序的入口
4.第一階段入口在cup/s3c24xx/start.S文件的_start處
5.第二階段入口在lib_arm/board.c文件的start_armboot處
第一階段(BL1)代碼分析
1.打開(kāi)source insight工程,并打開(kāi)start.S文件,[shift]+F8高亮顯示
2.分析代碼是只關(guān)心做了什么,不關(guān)怎么做??梢酝ㄟ^(guò)注釋找到做了什么。邊分析邊通過(guò)思維導(dǎo)圖記錄下來(lái)。
3.通過(guò)make smdk2440_config執(zhí)行相應(yīng)的配置項(xiàng)
4.執(zhí)行make,編譯uboot。在頂層目錄下會(huì)產(chǎn)生u-boot(elf)文件和u-boot.bin(二進(jìn)制)文件
5.通過(guò)反匯編u-boot(elf)文件可以查看相關(guān)信息
arm-linux-objdump -D -S u-boot >dump
搜索start_armboot可以找到start_armboot的地址為0x30001100, 在內(nèi)存中。說(shuō)明在這個(gè)時(shí)候BL1會(huì)跳轉(zhuǎn)到內(nèi)存中執(zhí)行BL2
6.打開(kāi)頂層目錄下的config.mk文件,config.mk文件會(huì)由Makefile 包含進(jìn)去。搜索TEXT_BASE(代碼段的基地址),會(huì)找到 -T(LDSCRIPT) -Ttext $(TEXT_BASE) 表示指定鏈接器腳本的地址由TEXT_BASE覆蓋掉。TEXT_BASE變量在boot/samsung/smdk2440/config.mk文件中定義,該值為0x30000000
7.b指令相對(duì)跳轉(zhuǎn),只會(huì)在SteppingStone中跳轉(zhuǎn),不會(huì)跳轉(zhuǎn)到內(nèi)存中。ldr pc, start_armboot會(huì)修改pc指針的值,使跳轉(zhuǎn)到內(nèi)存中運(yùn)行
8.2440、6410和210的第二階段執(zhí)行的代碼都相同
9.2440和6410的BL1和BL2產(chǎn)生的是一個(gè)bin文件,210的BL1和BL2產(chǎn)生的是兩個(gè)bin文件
10.210的BL1的鏈接腳本位于spl/u-boot-spl.lds。入口程序在arch/arm/cpu/armv7/start.S
11.BL1會(huì)把BL2復(fù)制到內(nèi)存中的0x23E00000處。BL1(16KB)與BL2之間有8KB的填空,所以BL2的地址在BL1后24KB處
12.210的BL2的鏈接器腳本位于arch/arm/cpu/armv7/u-boot.lds。程序入口同樣在arch/arm/cpu/armv7/start.S中
2440第一階段啟動(dòng)流程分析
1.設(shè)置中斷向量表
2.設(shè)置處理器為svc模式
3.刷新I/D cache
4.關(guān)閉mmu和cache
5.關(guān)閉看門(mén)狗
6.關(guān)閉所有中斷
7.初始化時(shí)鐘
8.初始化串口
9.簡(jiǎn)單初始化nand flash
10.內(nèi)存初始化
11.復(fù)制nand flash中的bl2到內(nèi)存中
12.設(shè)置堆棧,為C語(yǔ)言做準(zhǔn)備
13.清除bss段
14.跳轉(zhuǎn)到BL2
2440第二階段啟動(dòng)流程分析
1.分析時(shí),只關(guān)心硬件的初始化,不關(guān)心軟件的初始化
2.初始化串口
3.初始化LCD
4.初始化網(wǎng)卡
5.初始化LED
6.執(zhí)行用戶輸入的命令
上一篇:[國(guó)嵌筆記](méi)[029][ARM處理器啟動(dòng)流程分析v2]
下一篇:[國(guó)嵌筆記](méi)[032][異常向量表]
推薦閱讀最新更新時(shí)間:2025-06-06 11:18

設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無(wú)線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開(kāi)發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹(shù)莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- ZSR800GTA 8 伏正電流調(diào)節(jié)器的典型應(yīng)用
- #第七屆立創(chuàng)電賽#電流電壓表
- 5050LED驅(qū)動(dòng)
- 具有串行控制功能的 LTC4556 智能卡接口的典型應(yīng)用
- LTC2946IMS 雙電源、電荷和能量監(jiān)視器的典型應(yīng)用,使用單個(gè)光耦合器進(jìn)行電流隔離,并在任一電源出現(xiàn)故障時(shí)使用阻塞二極管來(lái)保持?jǐn)?shù)據(jù)
- 征集令 |物聯(lián)網(wǎng)之光——學(xué)習(xí)陪伴小夜燈
- lm3886-singel
- AM3GW-2405DZ ±5V 3 瓦 DC-DC 轉(zhuǎn)換器的典型應(yīng)用
- 使用 LT1054IN8 數(shù)字可編程負(fù)電源的典型應(yīng)用
- TRK-KEA8、Kinetis KEA8 StarterTRAK 用于低端汽車應(yīng)用
- 樂(lè)鑫科技打造藍(lán)牙 Mesh 解決方案,釋放IoT無(wú)限潛能
- STM32入門(mén)學(xué)習(xí)之USART(STM32F030F4P6基于CooCox IDE)
- STM8S自學(xué)筆記-006 GPIO輸入:按鍵輸入 與 按鍵濾波
- STM32系列單片機(jī)在進(jìn)入main函數(shù)前都在干些什么?
- vivo Y32發(fā)布 搭載驍龍680 SoC 售價(jià)1399元
- 騰訊大手筆收購(gòu)黑鯊科技,進(jìn)軍元宇宙領(lǐng)域
- 蘋(píng)果Apple支持應(yīng)用4.4.2版更新,可顯示AirPods為第幾代
- 工信部回應(yīng)部分網(wǎng)站強(qiáng)制要求下載App:將深入研究
- 上汽大眾:汽車網(wǎng)絡(luò)安全漏洞防護(hù)
- 恩智浦推出全新電池控制IC系列 助力新能源解決方案發(fā)展
- 全球首條GWh級(jí)新型固態(tài)電池生產(chǎn)線樣件下線
- 總投資455億元!三大動(dòng)力電池項(xiàng)目齊刷進(jìn)度條
- 現(xiàn)代汽車韓國(guó)建氫燃料電池廠,2028年投產(chǎn)
- 6月融資一覽:智能汽車芯片、第三代半導(dǎo)體、機(jī)器人成資本焦點(diǎn)
- 艙駕一體“點(diǎn)燃”新戰(zhàn)事
- 汽車智能化2.0引爆「萬(wàn)億蛋糕」,誰(shuí)在改寫(xiě)游戲規(guī)則?
- 2025研華智能系統(tǒng)產(chǎn)業(yè)伙伴峰會(huì)成功舉辦
- 意法半導(dǎo)體公布2025年第二季度財(cái)報(bào)和電話會(huì)議時(shí)間安排
- 特種電子展首次登陸中國(guó)(西部)電子信息博覽會(huì)
- 重回臺(tái)積電代工!消息稱高通驍龍 895+ 將采用臺(tái)積電 4nm
- 中德智能網(wǎng)聯(lián)汽車、車聯(lián)網(wǎng)四川試驗(yàn)基地即將投入運(yùn)行
- 銀隆集裝箱儲(chǔ)能系統(tǒng)落地內(nèi)蒙古烏拉特
- 泛林集團(tuán):到2030年100%使用可再生能源,到2050年實(shí)現(xiàn)零碳排放
- 寧夏銀和半導(dǎo)體大硅片項(xiàng)目開(kāi)工 “中國(guó)芯”向高端領(lǐng)域延伸
- 蘋(píng)果2018年研發(fā)費(fèi)用高達(dá)140億美元,為野心、競(jìng)爭(zhēng)還是實(shí)驗(yàn)?
- 臺(tái)基股份今年Q1凈利超2000萬(wàn)元 ,2017年凈利潤(rùn)為5339萬(wàn)元
- 軟銀考慮將購(gòu)并的ARM重新上市
- 安全承諾進(jìn)行到底,英特爾下代新品從硬件層面防御漏洞