您的位置:首页 > 编程语言

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: