LOAD_ROM 0X40000000
{
RO 0X40000000
{
71x_vect.o(Vect,+FIRST)
*( +RO )
}
RW 0X20000a00
{
*( +RW )
}
ZI +0
{
*( +ZI )
}
EXEC_RAM 0X20000000 0XA00
{ abc.o(foo)
}
}
这是我写的scatter文件,为什么我在启动代码中调用abc.c中的函数会跳到ram中运行,在启动代码中使用BL 不是不能长跳转吗?如果代码没有复制就会出错。 当不使用scatter时候,我设置ro 0x20000000,此时在启动代码中调用c程序中的函数又不会出错,而且是启动代码一直在FLASH中运行。。 这两种情况有什么不同呢?它们的链接地址不都是在ram里吗?可结果为什么会不同呢? |