Board logo

标题: 我又有新问题了:关于FLASH页寻址 [打印本页]

作者: johdon23    时间: 2008-9-10 14:03     标题: 我又有新问题了:关于FLASH页寻址

oCgyITrH.rar (534.88 KB)

片子是9S12XDT512,SMALL模式。

在prm文件中,我定义了一个空间 MySection INTO PAGE_FE;

而 PAGE_FE = READ_ONLY 0xFE8000 TO 0xFEBFFF;

然后在main,c里,我将一个延时程序放到了自定义的这个空间里

#pragma CODE_SEG MySection
void delay(void)
{
int Loop1,Loop2;
for(Loop2=0;Loop2<1000;Loop2++)
for(Loop1=0;Loop1<400;Loop1++);
}
#pragma CODE_SEG DEFAULT

现在的问题是,当我将这个空间定义到PAGE_FE,程序可以正常运行,而定义到其它可页寻址的空间,如PAGE_FC等的时候,程序就不跑了!并且在memory窗口的对应地址上,可以看到我定义的这个程序的代码!但程序好象不能调用一样。

PAGE_FE对应的是线性地址0x8000~0xc000的全局地址空间,所以将程序放到这里面能够正常运行是可以理解的。但为什么定义到其它的可页寻址空间时,程序就不跑了。难道在SMALL模式下,不能对可页寻址空间进行访问?



附件: [我又有新问题了:关于FLASH页寻址] oCgyITrH.rar (2008-9-10 13:37, 534.88 KB) / 下载次数 275
http://bbs.eccn.com/attachment.php?aid=5066&k=a073406a3e8bb6a2e874fed86c5247eb&t=1732676594&sid=TuMTLZ
作者: johdon23    时间: 2008-9-10 14:16

我刚刚试了下,在BANKED模式下,定义到任何可页寻址空间都没问题!
作者: johdon23    时间: 2008-9-10 14:51

为什么在SMALL模式下就不行呢?[em06]
作者: 康桥人    时间: 2008-9-10 17:27

small时,只能寻址64KB的空间,
作者: GaoTristone    时间: 2008-9-13 01:33

在small模式下,调用函数时编译器不会自动修改PPAGE寄存器,所以只能访问FF,FE,FD三个FLASH页面,亦即供48K的P_FLASH。访问变量时编译器也不会自动修改RPAGE和EPAGE寄存器,所以只能访问12K的RAM和2K的EEPROM,当然还有2K的寄存器空间,共64K空间。相信你把代码放到FD和FF空间也是没有问题的。

另外,在small模式下只是编译器不替你管理页面寄存器,如果你自己来控制页面寄存器仍然可以访问所有的空间。






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0