各位大虾:
请问Banked/Non-Banked是对什么来说的?为什么中断一定要放在Non-Banked区域?
谢谢啦!
简单的说,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()
为什么是 fun1()?执行哪个要根据PPAGE寄存器 的值吧。
个人认为,non_banked 是两个固定 的16K的flash
banked 就是分页flash
把中断服务函数定义在non_banked是为了寻址方便
只是强制性要求
谢谢各位的回答!
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |