amobbs.com 阿莫电子技术论坛

标题: 请教单片机程序升级中为什么需要定义用户中断向量表? [打印本页]

作者: 擦鞋匠    时间: 2019-3-16 10:33
标题: 请教单片机程序升级中为什么需要定义用户中断向量表?
本帖最后由 擦鞋匠 于 2019-3-16 10:57 编辑

额,我准备使用iar+msp430f5438a做个bootloader,实现串口程序升级。现有如下疑问,恳请各位不吝赐教!谢谢!

图1:
[attach]453776[/attach]

图2:
[attach]453772[/attach]

问题1:如图1,这是msp430f5438a标准.xcl文件,请问,针对constant-data,为什么10000-10039被故意漏掉?

问题2:如图2,程序code和常量数据constant-data是统一编址的,地址你范围是005C00h-045BFFh,但是中间需要“智能跳过”中断向量表00FF80h-00FFFFh,为什么不直接将中断向量表地址直接放在这段内存(005C00h-045BFFh)的开始位置或者结尾位置呢?

问题3:升级iap程序和应用app程序不能使用同一个中断向量表嘛,干嘛非要在应用app程序中额外定义用户中断向量表呢?如果非要定义用户中断向量表,那么这个用户中断向量表的地址可以任意指定嘛?

恳请各位指教,感谢!
作者: 擦鞋匠    时间: 2019-3-18 19:26
欢迎大家莅临指导,感谢!
作者: CoolBird007    时间: 2019-3-18 20:03
本帖最后由 CoolBird007 于 2019-3-18 20:05 编辑

坐等高手回答。

作者: tcm123    时间: 2019-3-18 20:20
BOOLOADER 要用中断,指定的地址就放了BOOLOADER中断代码了, APP中断代码不重新指定位置,那就把BOOLOAER的中断代码覆盖了
作者: 擦鞋匠    时间: 2019-3-18 21:50
tcm123 发表于 2019-3-18 20:20
BOOLOADER 要用中断,指定的地址就放了BOOLOADER中断代码了, APP中断代码不重新指定位置,那就把BOOLOAER ...

感谢阁下悉心指教!
我还是有点迷糊,难道是担心bootloader和app中相同的中断源会发生冲突?
那如果我bootloader和app中不存在相同的中断源(或者我在bootloader中根本就不使用中断),那是不是就可以不用额外定义用户中断了?
作者: tcm123    时间: 2019-3-19 08:50
擦鞋匠 发表于 2019-3-18 21:50
感谢阁下悉心指教!
我还是有点迷糊,难道是担心bootloader和app中相同的中断源会发生冲突?
那如果我boo ...

代码烧写时通常按页写了,就会覆盖BOOTLOADER除中断向量表外的其他代码,所以一般APP跟BOOTLOADER一般放在不同的地址区间

这只是我的理解

作者: cpumaker    时间: 2019-3-19 11:29
简单的说,bootloader不知道固件的中断处理函数地址,所以需要中断向量表转向
作者: Ray______    时间: 2019-3-19 11:34
我怎么记得430的16位MCU,中断向量位置是固定的?
作者: cheungman    时间: 2019-3-19 12:55
可以把APP放在flash前半部分, BOOT放在flash后半部分, 那么APP就不需要处理中断向量重映射.




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4