u-boot1.1.6代码分析
arm920t启动流程
第一阶段启动过程
start.S
1、设置cpu为管理这个模式
mrs r0,cpsr
bic r0,r0,#0x1f
orr r0,r0,#0xd3
msr cpsr,r0
2、关闭看门狗
# define pWTCON 0x53000000
ldr r0, =pWTCON
ldr r1, =0
str r1, [r0]
3、设置时钟分频系数
FCLK:HCLK:PCLK = 1:2:4 400 200 100
# define CLKDIVN 0x4C000014 /* clock divisor register */
ldr r0, =CLKDIVN
mov r1, #3
str r1, [r0]
4、cpu初始化
1)初始化缓存
2)去使能mmu
3)初始化sdram
5、代码重定位 从U-boot 到 ram(内存)
设置栈 //调用c语言时都要先设置栈
拷贝u-boot代码到内存
6、清除bss段
设置为0
ldr r0, _bss_start /* find start of bss segment */
ldr r1, _bss_end /* stop here */
mov r2, #0x00000000 /* clear */
7、跳转执行
进行第二部分引导程序
ldr pc, _start_armboot
第二阶段启动过程:
u-boot-1.1.6\lib_arm\board.c
入口函数:start_armboot