gs090608 当前离线
注册会员
各位大虾:
请问Banked/Non-Banked是对什么来说的?为什么中断一定要放在Non-Banked区域?
谢谢啦!
订阅 TOP
fayefayehoo 当前离线
高级会员
简单的说,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()
TOP
zd270 当前离线
中级会员
为什么是 fun1()?执行哪个要根据PPAGE寄存器 的值吧。
个人认为,non_banked 是两个固定 的16K的flash
banked 就是分页flash
把中断服务函数定义在non_banked是为了寻址方便
strongchen 当前离线
版主
论坛元老
fjczd 当前离线
金牌会员
只是强制性要求
谢谢各位的回答!