uboot 启动流程:
|
设置cpu--》关闭看门狗--》屏蔽中断--》设置时钟频率--》设置堆栈--》清除bss段--》 |
设置cpu为svc32模式:
|
mrs r0,cpsr //mrs:将cpsr中的内容读进r0中 |
该段指令通过设置cpsr中的cpu工作模式位来设定其工作模式,svc32是超级保护模式
关闭看门狗,中断,设置时钟频率
|
#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410)//注意一些符号:=,#,[] /* /* FCLK:HCLK:PCLK = 1:2:4 */ |
如果是重启,执行下边部分,正常启动,则不执行
|
#ifndef CONFIG_SKIP_LOWLEVEL_INIT 跳转到下边部分,执行:清零cache,关闭mmu及caches, #ifndef CONFIG_SKIP_LOWLEVEL_INIT /* /* |
判断是否要重新加载uboot:判断r0与r1中的值是否相等,相等执行stack_setup,不等,执行下边的直到相等
|
#ifndef CONFIG_SKIP_RELOCATE_UBOOT ldr r2, _armboot_start copy_loop: |
设置堆栈
|
/* Set up the stack */ clear_bss: clbss_l:str r2, [r0] /* clear loop... */ |

进入step2:board.c
|
ldr pc, _start_armboot _start_armboot: .word start_armboot |

被折叠的 条评论
为什么被折叠?



