[AVR单片机] ATMEGA64换成ATMEGA128的困惑

[复制链接]
 楼主| liulx14 发表于 2013-5-28 14:24 | 显示全部楼层 |阅读模式
大家好,我现在用的是ATMEGA64的片子,程序已经到了62K了,所以想换成ATMEGA128的片子,程序中有这样一条语句让我困惑,__root unsigned long __flash g_ulGuid @ 0xfffc = 0xffffffff;意思好像是地址0xfffc处开始的值为0xff 0xff 0xff 0xff,我在ATMEGA128中想改写成
,__root unsigned long __flash g_ulGuid @ 0x1fffc = 0xffffffff;为何提示不能访问到这个空间,我改怎么办,谢谢,用的开发环境是IAR
huangxz 发表于 2013-5-28 17:57 | 显示全部楼层
没用过IAR,帮顶一个了:lol
gdxizhilang 发表于 2013-5-29 08:08 | 显示全部楼层
貌似atmega64和128的程序可以移植,如你所说的0xfffc的数值还未到64K,可以先烧录进去试试,访问64K以上的程序和访问64k以下的程序处理方式不同。

评分

参与人数 1威望 +6 收起 理由
qin552011373 + 6 很给力!

查看全部评分

gdxizhilang 发表于 2013-5-29 08:14 | 显示全部楼层
以上个人看法。
 楼主| liulx14 发表于 2013-5-29 14:37 | 显示全部楼层
谢谢楼上给我的帮助,只是问题依然得不到实质性的解决
 楼主| liulx14 发表于 2013-6-3 17:24 | 显示全部楼层
请问用过IAR 的朋友能看看这个问题吗,小弟有些急,呵呵
 楼主| liulx14 发表于 2013-6-6 11:06 | 显示全部楼层
Error[Ta038]: Location out of range for an '__flash' declared variable (0x00 .. 0xFFFF).提示这样的错误,可是128K的地址空间是0X0000 - 0XFFFF
gdxizhilang 发表于 2013-6-7 10:03 | 显示全部楼层
上面的帖子中我说过,atmega64是64K的flash,16位的地址线寻址0x0000-0xFFFF是没有问题的,但是atmega128使用16位地址线只能到0xFFFF,也就是低64K,要寻址高64K,就要换页,也就是RAMPZ寄存器要置1才可以,也就是先Z寄存器归零后,再将RAMPZ寄存器置1,这时将从flash的高64K的0x0000开始执行程序。
gdxizhilang 发表于 2013-6-7 10:05 | 显示全部楼层
我对GCC比较熟,IAR不熟悉,但原理是一样的,楼主可以根据我所说的改一改,应该就可以了。
528388812 发表于 2013-6-7 11:11 | 显示全部楼层
ATMEGA64换成ATMEGA128的困惑
 楼主| liulx14 发表于 2013-6-14 11:06 | 显示全部楼层
gdxizhilang大哥你好,还是先谢谢你,我试过,可是这个是静止编译都不能通过,你说的改寄存器方式在IAR里行不通
lion1899 发表于 2013-6-17 19:35 | 显示全部楼层
不明白 帮忙顶!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

294

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

17

主题

294

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部