u-boot1.1.6程式碼分析
阿新 • • 發佈:2020-10-13
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