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

[求助]Banked/Non-Banked

[求助]Banked/Non-Banked

各位大虾:

请问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是为了寻址方便

中断矢量是16位的,它只能到非分页区寻址,所以中断函数必须放在非分页地址中。
海纳百川  有容乃大

只是强制性要求

谢谢各位的回答!

有问有答 ,彰显智慧
返回列表