主题 : uboot 启动代码的疑惑,希望知道的帮帮下忙!! 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 25552
精华: 0
发帖: 64
金钱: 320 两
威望: 64 点
综合积分: 128 分
注册时间: 2010-07-26
最后登录: 2011-01-04
楼主  发表于: 2010-09-29 15:15

 uboot 启动代码的疑惑,希望知道的帮帮下忙!!

最近在看uboot的启动代码,一些问题比较疑惑!
1.
    ldr    r2, _armboot_start
    ldr    r3, _bss_start
    sub    r2, r3, r2        /* r2 <- size of armboot            */
    add    r2, r0, r2        /* r2 <- source end address         */

copy_loop:
    ldmia    r0!, {r3-r10}        /* copy from source address [r0]    */
    stmia    r1!, {r3-r10}        /* copy to   target address [r1]    */
    cmp    r0, r2            /* until source end addreee [r2]    */
    ble    copy_loop
对于这段代码,问下_armboot_start和_bss_start在哪里定义了他们的值?
[ 此帖被0o龙i魂o0在2010-09-29 15:26重新编辑 ]
级别: 侠客
UID: 25552
精华: 0
发帖: 64
金钱: 320 两
威望: 64 点
综合积分: 128 分
注册时间: 2010-07-26
最后登录: 2011-01-04
1楼  发表于: 2010-09-29 19:58
顶下!!
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
2楼  发表于: 2010-09-29 22:13
源代码里通常是这么写的(cpu/arm920t/start.S)

复制代码
  1. .globl _start
  2. _start: b       start_code
  3.          ldr     pc, _undefined_instruction
  4.          ldr     pc, _software_interrupt
  5. ...
  6. .globl _armboot_start
  7. _armboot_start:
  8.          .word _start
  9. /*
  10.   * These are defined in the board-specific linker script.
  11.   */
  12. .globl _bss_start
  13. _bss_start:
  14.          .word __bss_start

所以, _armboot_start和 _bss_start其实只是两个地址,而真正有用的是放在这两个地址上的数据的值,也就是_start和__bss_start。从上面的代码看,_start是整个程序text段的起始地址,__bss_start是bss段的起始地址。对于uboot来说,text段的起始地址是由TEXT_BASE决定的,这个Makefile变量通常定义在board目录下的config.mk里;而__bss_start则是在链接的时候动态地由链接脚本决定的。链接脚本是board目录下的u-boot.lds。__bss_start实际的值要在链接后才能决定。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 25552
精华: 0
发帖: 64
金钱: 320 两
威望: 64 点
综合积分: 128 分
注册时间: 2010-07-26
最后登录: 2011-01-04
3楼  发表于: 2010-09-30 13:21
版主犀利啊!
级别: 侠客
UID: 25552
精华: 0
发帖: 64
金钱: 320 两
威望: 64 点
综合积分: 128 分
注册时间: 2010-07-26
最后登录: 2011-01-04
4楼  发表于: 2010-09-30 13:59

 回 2楼(kasim) 的帖子

版主,首先先谢谢你的帮忙!在别人移植uboot到2440板时,那个分频系数是怎么确定的啊?
     FCLK:HCLK:PCLK==1:4:8
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
5楼  发表于: 2010-09-30 21:19

 回 4楼(0o龙i魂o0) 的帖子

"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."