首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于分页重叠问题

对0x8000-0xBFFF这页写的时候,PPAGE寄存器的值为多少?你可以做一个简单的project贴出来看看。
海纳百川  有容乃大
看到了你的project。能不能描述一下你的具体调试过程。程序在哪里写0x8000-0xBFFF这页,在哪里退出,在哪里又发现数据被覆盖?
海纳百川  有容乃大
首先,你可以参考下图的提示,设置编译器中PPAGE的设置:
[upload=image/pjpeg]uploadImages/PPAGE_Setting.jpg[/upload]
海纳百川  有容乃大
其次,关于扩展地址及其指针的使用,可以参考这两个帖子:

http://bbs.eccn.com/dispbbs.asp?boardID=3&RootID=104072&ID=104072

http://bbs.eccn.com/dispbbs.asp?boardID=3&RootID=104163&ID=104163

[此贴子已经被strongchen于2007-4-27 16:28:56编辑过]

海纳百川  有容乃大
就是要设成RUMTIME!不过你的问题还是在于对16位地址与分页地址的使用上。请参考我提供的那2个帖子。
海纳百川  有容乃大
你把这一句
ulong goption@0x8001;
改成
ulong goption;
试试。
海纳百川  有容乃大
不会吧,我试过的,应该不一样了。
海纳百川  有容乃大
如果你不改这一句的话,执行goption = 0x12345678;指令时,其实它是试图往0x208001里写的;改过之后,它就往0x008001里写了。但是,你的问题还在,就是p = &goption这一句:p只是一个16位的地址。在这里执行*p = 0x11;时,PPAGE的值为当前的0x20,而不会自动改成0x00。结果是往ROM里写数据,当然不对。
海纳百川  有容乃大
我的邮箱:
strongchen_free@yahoo.com.cn
海纳百川  有容乃大
对呀,现在这没错。问题是你读RAM的值时,也应该看到类似的操作,PPAGE的值变为0x00才行。此时Memory窗口的值要与PPAGE联系起来看。
海纳百川  有容乃大
应该不用了。
海纳百川  有容乃大
你是对的,在声明外部变量的同时,也要声明它是PPAGE控制的外部变量。
海纳百川  有容乃大
返回列表