z4grubby 发表于 2010-5-10 11:26:10

ADS分散加载请教

我有两个文件head.s和led.c,想把head.s加载到0x00,led.c加载到2048处,我不太会写scatter文件,请高手赐教,我写的如下
load1 0
{
RO 0
{
    head.o(STARTUP,+First)
    *(+RO)
}
}
load2 2048
{
RO2 0xB0004000
{
    led.o        (*)
}
}
编译后,提示错误:L6224E: Could not place libspace.o(.bss) in any Execution region.
请问怎么回事,我错在哪里?应该怎么修改?关于分散加载文件有什么资料可以学习?
谢谢各位!

dr2001 发表于 2010-5-10 13:03:33

Scatter文件看编译器的手册,以及动手测试。所有的信息就这两个来源。

出错主要在于 libspace.o(.bss) 这个C RuntimeLib没有地方加载。
*(+RO) -> *(+RW, +RO)这样就行了。

z4grubby 发表于 2010-5-10 14:39:23

回复【1楼】dr2001
-----------------------------------------------------------------------

非常感谢dr2001的解答,但是我修改后这个错误仍然存在。
其实我根本不知道*(+RO)的意思,我是仿照别人的,我是要看看ADS1.2的手册吧?

122402902 发表于 2010-10-24 03:22:12

回复【2楼】z4grubby
-----------------------------------------------------------------------

*(+RO) 是你的固定属性输入段
*通配符 RO readonly

cyytz5021 发表于 2010-11-28 21:34:20

load1 0
{
RO 0
{
    head.o(STARTUP,+First)
    *(+RO)
}
}
load2 2048
{
RO2 0x2048
{
    led.o (*)
}
}
页: [1]
查看完整版本: ADS分散加载请教