这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » ARM连接器问题,高手请进

共27条 3/3 1 2 3 跳转至
菜鸟
2006-03-30 23:04:00     打赏
21楼

写错了。

还是用不使用SCATTER的程序为例。

源地址是Image$$RO$$Limit,目的地址是Image$$RW$$Base,拷贝长度是Image$$ZI$$Base - Image$$RW$$Base。这是将RW段从FLASH拷贝到SDRAM。

然后把Image$$ZI$$Base到Image$$ZI$$Limit清0.


菜鸟
2006-03-30 23:15:00     打赏
22楼

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放一起的方式,程序还是跑不起来


菜鸟
2006-03-30 23:16:00     打赏
23楼

是不是链接参数要有所改变?

我的链接参数是

-info totals -entry 0x350000 -map -symbols -list product.map -scatter scat_d.scf


菜鸟
2006-03-30 23:28:00     打赏
24楼

这样试试:

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


菜鸟
2006-03-30 23:38:00     打赏
25楼

我的参数是:

-info totals -symbols -scatter E:\liuyan\prj\cache_sram2\scatter.scf -list E:\liuyan\prj\cache_sram2\symbol

系统不一样,我不清楚-entry 0x350000 的用途。

我是用AXD调试运行的。RO被AXD加载到SDRAM并在SDRAM执行,地址是0x0c008000.


菜鸟
2006-03-31 00:01:00     打赏
26楼

-entry 0x350000 是指明程序的入口地址,就是AppInit这个函数的地址,所以要把这个函数放到RO段的最前面。

非常感谢dld2,按照你说的方法可以。


菜鸟
2006-03-31 00:09:00     打赏
27楼
不客气,今天闲得狠。不过RW和ZI分开应该也是可以的,书上都是分开的。

共27条 3/3 1 2 3 跳转至

回复

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