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

SMALL模式和BANKED模式的差异?

SMALL模式和BANKED模式的差异?

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

SMALL是所有的程序都放在非分页的地址中,而BANKEN对于中断而言要加限制使其中断代码放在非分页地址中
个人BLOG:http://blog.eccn.com/u/107300/index.htm

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

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

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)

把你的project打包上传看看吧。
海纳百川  有容乃大
麻烦版主帮我看下,非常感谢!

[attach]5064[/attach]

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

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

个人BLOG:http://blog.eccn.com/u/107300/index.htm
汗,可能我之前调的时候把它屏蔽掉了.
如果写了中断程序,没有入口,而且已经允许了中断,当发生中断后,中断找不到入口地址,这有可能导致程序的崩溃,
个人BLOG:http://blog.eccn.com/u/107300/index.htm
是的,谢谢版主帮忙解答!
返回列表