u boot啟動過程 1

2021-05-22 08:01:02 字數 986 閱讀 3273

u-boot的啟動過程

1.start.s檔案

此彙編檔案是u-boot啟動的第乙個檔案,首先確定是冷啟動還是熱啟動,boot_cold or boot_warm

通過對r21寫0x01(cold) or ox02(warm)完成。

接著在boot_warm中:

(1)判斷是否定義config_cogent,若定義 則跳轉到cogent_init_8260。

lis r4, (cfg_immr+im_regbase)@h

lis r3, cfg_immr@h

stw r3, im_immr@l(r4)

lwz r3, im_immr@l(r4)

stw r3, 0(r0)

lis r3, cfg_sypcr@h

ori r3, r3, cfg_sypcr@l

stw r3, im_sypcr@l(r4)

lwz r3, im_sypcr@l(r4)

stw r3, 4(r0)

lis r3, cfg_sccr@h

ori r3, r3, cfg_sccr@l

stw r3, im_sccr@l(r4)

lwz r3, im_sccr@l(r4)

stw r3, 8(r0)                                     實際上就是對一系列的暫存器初始化,其中的巨集定義在對應的/include/config/xx.h對應的處理器的標頭檔案中定義。

(2)如果定義cfg_default_immr,將cfg_immr寫入到immr中對應的immr基位址暫存器的位置,即0x01a8

(3)bl init_8260_core 跳轉,初始化核心

這部分完成核心中大部分硬體狀態和中斷的出示化

(4)如果沒有定義cfg_ramboot,清除or0,計算在flash中跳轉的絕對位址。

(5)緊接著會跳轉到c語言部分

cpu_init_f   board_init_f

u boot 啟動過程

u boot 分為兩個階段第一階段是彙編,入口是 arch arm cpu armv7 start.s,第二階段是 c 語言,入 口是 board.c 第一階段 1.異常向量表定義 2.設定 svc32 模式 arm 七種工作模式 3.呼叫 cpu init crit 進行 cpu 相關初始化 1 ...

u boot啟動過程分析

備註 本文中使用的u boot版本是2010.3第一階段 初始化soc相關的配置,例如 系統時鐘 mmu 看門狗等 並為c語言提供執行環境1 第一階段 組合語言階段.globl start start b reset 復位異常 進入管理模式 復位電平有效時觸發 ldr pc,undefined in...

u boot 原始碼分析 1 啟動過程分析

kbuild 啟動過程 第二階段 總結參考 對於uboot,我一直是雲裡霧裡的乙個狀態,這部分讓我感到自己很菜,不用縱向深入地掌握uboot整個細節,但是相對它有乙個整體流程上的把握,包括uboot的啟動啟動過程,在整個啟動過程中會涉及到哪些檔案,以此的呼叫過程是什麼?抱著這幾個問題,大量蒐集資料,...