Nurv 发表于 2006-9-29 14:42:08

[求助]u-boot for 44b0疑问

lds中这么写的:

. = 0x00000000;

       
. = ALIGN(4);
       
.text      :

{
          
        cpu/s3c44b0/start.o        (.text)
          
        *(.text)
       
}
……



start.S中有这么一段:

adr        r0, _start                /* r0 <- current position of code   */
       
ldr        r1, _TEXT_BASE                /* test if we run from flash or RAM */
        cmp   r0, r1                  /* don't reloc during debug         */
       
beq   stack_setup

注释中说根据_start与_TEXT_BASE相等与否来判断是从flash还是ram启动。TEXT_BASE默认设为0x0c100000。看lds中写的难道_start不是0吗?难道还会跟着变动?
我理解是lds中的都是output section,所以描述的是运行时的分布情况。
如果是这样,那岂不是所有代码数据都在flash中?因为从0开始依次放置。如果要在ram中运行,至少有一段要写成类似的:

.=RAM_BASE
.data:
{
}
……

莫非lds描述的是加载时的分布情况?

可能有点乱,我整理下我的问题:
1. 为什么map中的_start是从TEXT_BASE开始的而不是从0开始?
2. u-boot.lds中描述的是运行时还是加载时的分布情况?
3. start.S中有relocate代码,也就是说flash和ram中有两份代码。运行的时候到底跑的是哪个?按照lds的写法,难道在flash中跑不成?

还有一个土问:u-boot.bin怎么弄到裸板里去?
以上问题,恳请大虾不吝赐教。

lumit-support-1 发表于 2006-9-29 23:20:01

u-boot没仔细研究过
裸板以前用过flashpgm,可以烧写到flash
页: [1]
查看完整版本: [求助]u-boot for 44b0疑问