代码存放在NON_BANKED和默认存储区有多大区别?
- UID
- 124746
- 性别
- 男
|
代码存放在NON_BANKED和默认存储区有多大区别?
我听说中断服务程序存放在默认的存储段内会出问题,是这样么? |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
对,中断一定要放在非分页存储区里。因为中断矢量地址是16位的,放在分页地址中就无法映射了。 |
|
|
|
|
|
- UID
- 124746
- 性别
- 男
|
阿,明白了,dp256的中断向量是16位的,分页寻址还需要页码,所以没法寻址,是这个意思吧 |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
|
|
|
|
|
- UID
- 528917
- 性别
- 男
|
4# strongchen
应该也可以访问吧,用GPAGE |
|
|
|
|
|
- UID
- 522025
- 性别
- 男
|
进中断ISR前保存现场时硬件不会把PPAGE的值保存到堆栈,而离开ISR时需要恢复中断之前的现场,没有PPAGE程序就无法正常执行下去,而在NOBANKED区16位巡址不会改变中断前PPAGE的值,故能保证中断能正常返回。用GPAGE的话实际也是跟PPAGE关联的,PPAGE在ISR中被改变,必然导致不能恢复中断前的现场。如果你需要在芯片上移植UcOS的代码,这点会很重要。 |
|
|
|
|
|