这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [求助]u-boot for 44b0 疑问

共2条 1/1 1 跳转至

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

菜鸟
2006-10-01 18:26:43     打赏

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

lds中这么写的:
[code]
. = 0x00000000;


. = ALIGN(4);

.text :

{

cpu/s3c44b0/start.o (.text)

*(.text)

}
……
[/code]


start.S中有这么一段:
[code]
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
[/code]
注释中说根据_start与_TEXT_BASE相等与否来判断是从flash还是ram启动。TEXT_BASE默认设为0x0c100000。看lds中写的难道_start不是0吗?难道还会跟着变动?
我理解是lds中的都是output section,所以描述的是运行时的分布情况。
如果是这样,那岂不是所有代码数据都在flash中?因为从0开始依次放置。如果要在ram中运行,至少有一段要写成类似的:
[code]
.=RAM_BASE
.data:
{
}
……
[/code]
莫非lds描述的是加载时的分布情况?

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

还有一个土问:u-boot.bin怎么弄到裸板里去?elf格式的调试环境怎么搭?

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




关键词: 求助     u-boot     疑问    

菜鸟
2006-10-08 17:35:00     打赏
2楼
运行时是先从Flash启动,relocate代码到ram,然后再跳转过去的。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]