写错了。
还是用不使用SCATTER的程序为例。
源地址是Image$$RO$$Limit,目的地址是Image$$RW$$Base,拷贝长度是Image$$ZI$$Base - Image$$RW$$Base。这是将RW段从FLASH拷贝到SDRAM。
然后把Image$$ZI$$Base到Image$$ZI$$Limit清0.
LD_ROM 0x350000 0x2a0000
{
ER_RO 0x350000 0x2a0000
{
start.o (AppInit +FIRST)
*(+RO)
}
ER_RW 0x20f0000 0x10000
{
*(+RW,+ZI)
}
ER_ZI +0
{
start.o(+RO)
}
}
为什么我按照你的方法改为上面这种scatter文件链接后也只有四个标识符
Image$$ER_RO$$Limit
Image$$ER_RW$$Base
Image$$ER_ZI$$Base
Image$$ER_ZI$$Limit
没有出现像你那样的Image$$SDRAM2$$ZI$$Base标识符
关键是即使我改成这种将RW和ZI放一起的方式,程序还是跑不起来
这样试试:
LD_ROM 0x350000
{
ER_RO 0x350000 0x2a0000
{
start.o (AppInit +FIRST)
*(+RO)
}
ER_RW 0x20f0000 0x10000
{
*(+RW,+ZI)
}
}
然后,在初始化程序中用
Image$$ER_RO$$Limit替代Image$$RO$$Limit,
Image$$ER_RW$$Base替代Image$$RW$$Base
Image$$ER_RW$$ZI$$Base替代Image$$ZI$$Base,
Image$$ER_RW$$ZI$$Limit替代Image$$ZI$$Limit