擦鞋匠 发表于 2019-3-16 10:33:01

请教单片机程序升级中为什么需要定义用户中断向量表?

本帖最后由 擦鞋匠 于 2019-3-16 10:57 编辑

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

图1:


图2:


问题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:37

欢迎大家莅临指导,感谢!

CoolBird007 发表于 2019-3-18 20:03:55

本帖最后由 CoolBird007 于 2019-3-18 20:05 编辑

坐等高手回答。

tcm123 发表于 2019-3-18 20:20:44

BOOLOADER 要用中断,指定的地址就放了BOOLOADER中断代码了, APP中断代码不重新指定位置,那就把BOOLOAER的中断代码覆盖了

擦鞋匠 发表于 2019-3-18 21:50:12

tcm123 发表于 2019-3-18 20:20
BOOLOADER 要用中断,指定的地址就放了BOOLOADER中断代码了, APP中断代码不重新指定位置,那就把BOOLOAER ...

感谢阁下悉心指教!
我还是有点迷糊,难道是担心bootloader和app中相同的中断源会发生冲突?
那如果我bootloader和app中不存在相同的中断源(或者我在bootloader中根本就不使用中断),那是不是就可以不用额外定义用户中断了?

tcm123 发表于 2019-3-19 08:50:21

擦鞋匠 发表于 2019-3-18 21:50
感谢阁下悉心指教!
我还是有点迷糊,难道是担心bootloader和app中相同的中断源会发生冲突?
那如果我boo ...

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

这只是我的理解

cpumaker 发表于 2019-3-19 11:29:25

简单的说,bootloader不知道固件的中断处理函数地址,所以需要中断向量表转向

Ray______ 发表于 2019-3-19 11:34:04

我怎么记得430的16位MCU,中断向量位置是固定的?

cheungman 发表于 2019-3-19 12:55:54

可以把APP放在flash前半部分, BOOT放在flash后半部分, 那么APP就不需要处理中断向量重映射.
页: [1]
查看完整版本: 请教单片机程序升级中为什么需要定义用户中断向量表?