u-boot 第一階段
**位置 cpu/arm920t/start.s
流程分析:
1.儲存一些全域性變數,用於啟動程式將**從flash拷貝到ram或其他使用。有一些變數的值是通過鏈結指令碼得到的,如
text_base 位於board\2440\config.mk 中
__bss_start、_end 位於board\2440\u-boot.lds 中
2.設定cpu保護模式
3.關閉看門狗
4.遮蔽所有中斷
5. 執行cpu_init_crit 關閉 i/d cache 、mmu
呼叫lowlevel_init 位置 :board\2440\lowlevel_init.s
功能 :初始化sdram 為複製flash中**到ram做準備,flash中執行慢,但掉電不丟失,u-boot 就儲存在flash中
we do sys-critical inits only at reboot, not when booting from ram! 意思說 cpu_init_crit 只在上電時執行,而在**除錯時,**是由**器寫到sdram中,說明
sdram已被初始化,則不需要重複執行!
6. 設定棧 為了能呼叫c函式clock_init 初始化時鐘
7. 初始化時鐘 clock_init 仿照 board\2440\smdk2440.c board_init 為了由12m轉化為400m 加快執行速度
8.把flash中的u-boot**移到ram中
9.初始化記憶體中bss段中資料為0 bss段儲存 靜態變數、全域性變數
10.跳轉到 _start_armboot u-boot 第二階段初始化燒寫flash、串列埠、網絡卡、usb等裝置以方便開發及啟動核心。
UBOOT第一階段分析
感覺不錯的乙個圖就轉過來了!u boot第一階段的啟動流程。這個階段主要是初始化硬體裝置,為載入u boot的第二階段 準備ram空間最後跳轉到lib arm board.c中start armboot函式,這是第二階段的入口點。u boot第一階段的儲存器布局。上圖中u boot安裝在nand f...
u boot啟動流程 第一階段
具體分析參見另一篇blog 第一階段的啟動在.cpu arm920t start.s檔案中完成,之後執行c程式,對硬體進行更細緻的初始化操作 硬體初始化 設定svc模式 關閉watch dog 禁止irq 設定時鐘 fclk hclk pclk 禁止i cache d cache 禁止mmu和cac...
u boot 第一階段學習筆記
一 cpu訪問晶元時需要的條件 1.位址線 2.資料線 8 16 32位寬 3.訪問速度 即時鐘相關 由儲存管理器負責管理 二 為什麼從addr2連線a0?因為arm是32位處理器,所以它一次處理資料都是以32位為單位的,也就是說它讀或者寫資料時,位址只能為 0x0 0x04 0x08 即4位元組對...