码迷,mamicode.com
首页 > 其他好文 > 详细

u-boot-2014.10移植第11天----深入分析代码(六)

时间:2015-01-31 08:21:13      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:u-boot   arm   移植   arm汇编   cpu   

硬件平台:tq2440

开发环境:Ubuntu-3.11

u-boot版本:2014.10

本文允许转载,请注明出处:http://blog.csdn.net/fulinus


“从relocate_code回到_main中,接下来是main最后一段代码”也就是arch/arm/lib/crt0.S文件中:

    b   relocate_code
here:
//
从这里开始u-boot已经在重定位的地方运行了

/* Set up final (full) environment */


    bl  c_runtime_cpu_setup /* we still call old routine here */ 但是这里还需要调用一下重定位之前的代码。??为什么呢?难道这个函数值没有被修改吗?估计是,rel.dyn段中放着的应该是C函数中用到的一些变量,而汇编中用到的地址没有改变吧?(有待进一步研究),我们进入c_runtime_cpu_setup函数中去。明天继续。


    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
    bl red_led_on


    /* call board_init_r(gd_t *id, ulong dest_addr) */
    mov     r0, r9                  /* gd_t */
    ldr r1, [r9, #GD_RELOCADDR] /* dest_addr */
    /* call board_init_r */
    ldr pc, =board_init_r   /* this is auto-relocated! */


    /* we should not return here. */


#endif


ENDPROC(_main)


u-boot-2014.10移植第11天----深入分析代码(六)

标签:u-boot   arm   移植   arm汇编   cpu   

原文地址:http://blog.csdn.net/fulinus/article/details/40792065

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!