u-boot-2014.10移植第12天----深入分析代码(七)
2015-02-02 08:15
417 查看
c_runtime_cpu_setup函数在arch/arm/cpu/arm920t/start.S文件中:
.globl c_runtime_cpu_setup
c_runtime_cpu_setup:
mov pc, lr //没做什么就返回了
回到arch/arm/lib/crt0.S文件中:
bl c_runtime_cpu_setup /* we still call old routine here */
//bss段清零
ldr r0, =__bss_start /* this is auto-relocated! */
ldr r1, =__bss_end /* this is auto-relocated! */
mov r2, #0x00000000 /* prepare zero to clear BSS */
clbss_l:cmp r0, r1 /* while not at end of BSS */
strlo r2, [r0] /* clear 32-bit BSS word */
addlo r0, r0, #4 /* move to next */
blo clbss_l
bl coloured_LED_init
//coloured_LED_init函数在文件common/board_f.c中
/*
* sjg: IMO this code should be
* refactored to a single function, something like:
*
* void led_set_state(enum led_colour_t colour, int on);
*/
/************************************************************************
* Coloured LED functionality
************************************************************************
* May be supplied by boards if desired
*/
__weak void coloured_LED_init(void) {}
__weak void red_led_on(void) {}
应该是没有实现的。
bl red_led_on
/* call board_init_r(gd_t *id, ulong dest_addr) */
mov r0, r9 /* gd_t */ //r0 放GD头指针
ldr r1, [r9, #GD_RELOCADDR] /* dest_addr */ r1放目的地址
/* call board_init_r */
ldr pc, =board_init_r /* this is auto-relocated! */
board_init_r 函数在arch/arm/lib/board.c中,明天继续
/* we should not return here. */
#endif
ENDPROC(_main)
.globl c_runtime_cpu_setup
c_runtime_cpu_setup:
mov pc, lr //没做什么就返回了
回到arch/arm/lib/crt0.S文件中:
bl c_runtime_cpu_setup /* we still call old routine here */
//bss段清零
ldr r0, =__bss_start /* this is auto-relocated! */
ldr r1, =__bss_end /* this is auto-relocated! */
mov r2, #0x00000000 /* prepare zero to clear BSS */
clbss_l:cmp r0, r1 /* while not at end of BSS */
strlo r2, [r0] /* clear 32-bit BSS word */
addlo r0, r0, #4 /* move to next */
blo clbss_l
bl coloured_LED_init
//coloured_LED_init函数在文件common/board_f.c中
/*
* sjg: IMO this code should be
* refactored to a single function, something like:
*
* void led_set_state(enum led_colour_t colour, int on);
*/
/************************************************************************
* Coloured LED functionality
************************************************************************
* May be supplied by boards if desired
*/
__weak void coloured_LED_init(void) {}
__weak void red_led_on(void) {}
应该是没有实现的。
bl red_led_on
/* call board_init_r(gd_t *id, ulong dest_addr) */
mov r0, r9 /* gd_t */ //r0 放GD头指针
ldr r1, [r9, #GD_RELOCADDR] /* dest_addr */ r1放目的地址
/* call board_init_r */
ldr pc, =board_init_r /* this is auto-relocated! */
board_init_r 函数在arch/arm/lib/board.c中,明天继续
/* we should not return here. */
#endif
ENDPROC(_main)
相关文章推荐
- u-boot-2014.10移植第8天----深入分析代码(三)
- u-boot-2014.10移植第9天----深入分析代码(四)
- u-boot-2014.10移植第6天----深入分析代码(一)
- u-boot-2014.10移植第10天----深入分析代码(五)
- u-boot-2014.10移植第7天----深入分析代码(二)
- u-boot-2014.10移植第11天----深入分析代码(六)
- 手机开发之二:Boot代码深入分析
- U-Boot 在44B0X 开发板上的移植以及代码分析
- u-boot移植(四)---修改前工作:代码流程分析3---代码重定位
- S3c2440 Uboot移植-BootLoader-Stage0代码分析
- U-Boot在GOLD44B0X开发板上的移植以及代码分析
- u-boot移植(二)---修改前工作:代码流程分析1
- 《linux是这样“被”移植的》新书试读之U-Boot启动代码分析
- U-Boot代码分析与移植
- U-Boot在44B0X开发板上的移植以及代码分析
- U-Boot在44B0X开发板上的移植以及代码分析
- U-Boot 在44B0X 开发板上的移植以及代码分析
- 《linux是这样“被”移植的》新书试读之U-Boot启动代码分析
- 完整UBOOT移植及代码分析
- U-Boot 在44B0X 开发板上的移植以及代码分析