这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 下面编译错误,怎样解决

共9条 1/1 1 跳转至

下面编译错误,怎样解决

菜鸟
2008-09-10 16:29:55     打赏
'ROMDATA' section 'vector' is overlapped on the 'interrupt' from FEDCH to FEE6H



关键词: 下面     编译     错误     怎样     解决    

助工
2008-09-11 09:00:19     打赏
2楼
请检查你程序的中断向量区间的定义,FEDCH 到 FEE6H段重复定义了。
也可以把你的工程传上来看看。

菜鸟
2008-09-11 10:46:45     打赏
3楼

原来我有用的是R8C2A7(48KB),程序超过48KB时,会出现上面那个错误,
现在我改用R8C2A8(64KB),但程序超过48KB时,还是会出现下面这个错误:
D:\R8C_WORKING\R8C2A_T118\T118\Debug\ncrt0.r30 : 'ROMDATA' section 'vector' is overlapped on the 'interrupt' from FEDCH to FEE0HR8C2A_T118.rar
请问换芯片后,存储空间需要改什么地方


菜鸟
2008-09-11 11:07:17     打赏
4楼

可能是起始地址没有改吧,就是说虽然你换了芯片,但是起始地址和上一款芯片的起始地址相同,因此到复位向量区的可用地址相同,编译时还会覆盖中断向量区的。
根据启动文件,你可以设置程序开始的地址。
如果是汇编启动文件,就在“nc_define.inc”中修改“__ROM_TOPADR__”的值,当然也可以根据你自己的需要修改其它的值。
如果是C启动文件,就在build->Standard Toolchain->Link->Category:Section Order->Address中点击地址信息,在右面的界面上选择“Edit”进行修改。
我先看看程序吧,也许还不是我说的这个问题呢,你也可以先试试看:)


菜鸟
2008-09-11 11:17:06     打赏
5楼
知道了,我看了一下手册,R8C2A8是64K的,但是用户所使用的程序去被分成了两部分,中断向量前边可以写一部分(从0x4000开始),中断向量后面,也就是从10000~13FFF也是一部分,我觉得在写程序的时候,应该把程序分为两部分,分别存于中断向量前和中断向量后,也就是说你还需要再分配一个Section,这样可以把存放中断部分的程序避开,也就不会产生覆盖的问题了。

菜鸟
2008-09-11 11:21:02     打赏
6楼

我的程序是用汇编启动文件,从R8C2A的资料是看,“__ROM_TOPADR__"的值不是定死不能变的吗,从4000H开始,
我试过改成2000H能通过,这会带来什么影响吗?


菜鸟
2008-09-11 11:30:20     打赏
7楼
既然手册上说是从4000H开始的,那就不要改了,还是把程序拆成两部分比较好。从4000H之前的那部分区域应该是调试器使用的吧,我这么猜想。如果真是调试器使用的话,在你调试的时候就会出问题了。

菜鸟
2008-09-11 12:05:17     打赏
8楼
怎么进行分区,有没有例程,拿来参考一下.谢谢!

菜鸟
2008-09-11 14:39:45     打赏
9楼
问题已解决
将build->renesas m16c standard toolchain->CPU->Generates code for R8C/Ting series 
改为Generates code for R8C/Ting(R8C/2X) series 之后,
系统能自动分配空间地址,但相同程序在不同的选择时,后者比前者编译出来要大4KB左右,不知道是怎么回事

共9条 1/1 1 跳转至

回复

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