+ -
当前位置:首页 → 问答吧 → 【求助】u-boot for 44b0 的疑问

【求助】u-boot for 44b0 的疑问

时间:2006-09-29

来源:互联网

[求助]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怎么弄到裸板里去?怎么调试?

以上问题,恳请大虾不吝赐教。      

作者: Nurv   发布时间: 2006-09-29

??你的?铨,??我的想法,并不一定对啊.
1. 0X00地址是映射的,TEXT_BASE就是你的代瘁段地址,具篦睫?地址得看你板子的地址儋源??(FLASH,RAM)
2. u-boot.lds应该是加载时的
3. 运行代码 一般有两种做法:一种从FLASH依次执行,另一种是初始化完后拷贝到RAM上执行,这样速度快并可对FLASH擦写
 
u-boot.bin用JTAG烧写,或有些CPU可以支持串口写入......      

作者: bass339   发布时间: 2006-10-08

热门下载

更多