Board logo

标题: SMALL模式和BANKED模式的差异? [打印本页]

作者: johdon23    时间: 2008-9-9 13:18     标题: SMALL模式和BANKED模式的差异?

片子是9S12XDT512,同样一个程序,在SMALL模式下运行正常。然而如果选择了BANKED模式,则一旦产生了中断响应之后,程序就死掉了,用P&E调试,在“Assemble”框中看到,程序又跳回到了 0000 BGND 了。


作者: 康桥人    时间: 2008-9-10 08:44

SMALL是所有的程序都放在非分页的地址中,而BANKEN对于中断而言要加限制使其中断代码放在非分页地址中
作者: johdon23    时间: 2008-9-10 09:10

我在所有的中断部分都加了#pragma CODE_SEG NON_BANKED 了。

版主能再帮我分析下为什么会出现那样的情况吗?


作者: fayefayehoo    时间: 2008-9-10 09:37

DEFAULT_ROM, NON_BANKED, /* runtime routines which must not be banked */
COPY /* copy down information: how to initialize variables */
/* in case you want to use ROM_4000 here as well, make sure
that all files (incl. library files) are compiled with the
option: -OnB=b */
INTO ROM_C000/*, ROM_4000*/;

“#pragma CODE_SEG NON_BANKED”即使对中断进行了分配,仍然跟其他程序一起存放在NON_BANKED区域(0xC000)


作者: strongchen    时间: 2008-9-10 10:57

把你的project打包上传看看吧。
作者: johdon23    时间: 2008-9-10 11:31

麻烦版主帮我看下,非常感谢!
作者: johdon23    时间: 2008-9-10 11:32

[attach]5064[/attach]

汗,刚才忘记点“上传”了!


作者: 康桥人    时间: 2008-9-10 12:04

你的程序中断是怎么申明的,中断的入口地址没有找到,呵


作者: johdon23    时间: 2008-9-10 13:23

汗,可能我之前调的时候把它屏蔽掉了.
作者: 康桥人    时间: 2008-9-10 14:32

如果写了中断程序,没有入口,而且已经允许了中断,当发生中断后,中断找不到入口地址,这有可能导致程序的崩溃,
作者: johdon23    时间: 2008-9-10 14:51

是的,谢谢版主帮忙解答!




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