1. 程式人生 > 實用技巧 >u-boot1.1.6程式碼分析

u-boot1.1.6程式碼分析

arm920t啟動流程

第一階段啟動過程

start.S
1、設定cpu為管理這個模式
mrsr0,cpsr
bicr0,r0,#0x1f
orrr0,r0,#0xd3
msrcpsr,r0
2、關閉看門狗
# define pWTCON0x53000000
ldr r0, =pWTCON
ldr r1, =0
str r1, [r0]
3、設定時鐘分頻係數

FCLK:HCLK:PCLK = 1:2:4 400 200 100
# define CLKDIVN0x4C000014
/* clock divisor register */

ldrr0, =CLKDIVN
movr1, #3
strr1, [r0]
4、cpu初始化
1)初始化快取
2)去使能mmu

3)初始化sdram
5、程式碼重定位 從U-boot 到 ram(記憶體)

設定棧 //呼叫c語言時都要先設定棧
拷貝u-boot程式碼到記憶體
6、清除bss段
設定為0
ldrr0, _bss_start /* find start of bss segment */
ldrr1, _bss_end/* stop here */
mov r2, #0x00000000/* clear */

7、跳轉執行
進行第二部分載入程式
ldrpc, _start_armboot


第二階段啟動過程:

u-boot-1.1.6\lib_arm\board.c

入口函式:start_armboot