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

HCS12 分页区常量该如何读取呢?

HCS12 分页区常量该如何读取呢?

硬件平台:MC9SHY64   
开发环境: CODEWARRIOR V5.0

编译模式是 BANK模式,  代码如下:
const  UINT8  __far  fardata @0xe8000 = 0xaa;  //分页区的数据
const  UINT8 *__far  farpt;  //指向分页区的指针
UINT8  a;

void read_far(void)
{

farpt = &fardata;
a = *farpt; //这里始终都不能正确读到数据

}
调试的时候,分析了一下,是因为PPAGE的值没有改变或者说是内核内部没有进行PPAGE的切换。
假如read_far函数在另一个分页区,比如0x0C,而不是0xe8000中的0x0E区,这样读取的值,就是0XC8000的值
相当于PPAGE没有切换,而直接读到了当前PPAGE页的8000地址的值。
如果read_far函数也在0X0E区,则可以正确读取到,因为本身的PPAGE就是0x0e。
我想问的是,在一个分区中用什么办法可以读取到另一个分区的常量呢?
Freescale芯片真好用
这种方式应该没有问题的,我在S12XET的片子上都是这么用的。你最好把你的prm贴上来看一下。还有就是确认一下fardata常量有没有真正放到flash的分页去了,指针farpt本身是否在RAM的分页中等等。建议先disassemble一下,看一下编译的汇编代码,中间是否有"#GLOBAL(fardata)"标号等等,然后再做进一步分析。
返回列表