Board logo

标题: [求助]Banked/Non-Banked [打印本页]

作者: gs090608    时间: 2009-2-9 14:49     标题: [求助]Banked/Non-Banked

各位大虾:

请问Banked/Non-Banked是对什么来说的?为什么中断一定要放在Non-Banked区域?

谢谢啦!


作者: fayefayehoo    时间: 2009-2-9 15:22

简单的说,NON-BANKED的地址是唯一的,BANKED的地址是复用的。

举个例子,程序Fun1()存在BANKED区,PPAGE = 0xFC, Address = 0x8000

程序Fun2()存在BANKED区,PPAGE = 0xFC, Address = 0xA000

中断程序Fun3()存在BANKED区,PPAGE0 = 0xFB, Address = 0x8000

当在执行Fun2()时,中断产生要调用Fun3(),PC指向0x8000,这个时候执行的程序就变成Fun1()


作者: zd270    时间: 2009-2-9 15:40

为什么是 fun1()?执行哪个要根据PPAGE寄存器 的值吧。

个人认为,non_banked 是两个固定 的16K的flash

banked 就是分页flash

把中断服务函数定义在non_banked是为了寻址方便


作者: strongchen    时间: 2009-2-10 11:17

中断矢量是16位的,它只能到非分页区寻址,所以中断函数必须放在非分页地址中。
作者: fjczd    时间: 2009-2-10 17:12

只是强制性要求


作者: gs090608    时间: 2009-2-11 13:01

谢谢各位的回答!


作者: fjczd    时间: 2009-2-12 16:31

有问有答 ,彰显智慧




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