keil环境下IAP使用中 stm32中M0 M3中断偏移对比

M3中断偏移:

当加入IAP 程序之后,程序运行流程如图所示:默认情况下,main flash memory(0x0800 0000) is selected boot space,即映射为 0x0000 0000。相当于从物理地址0x0800 0000启动程序。


00


在main函数的执行过程中如果出现中断请求,PC指针扔强制跳转到地址0x0800 0004的中断向量表处,而不是新程序的中断向量表,如图标号4所示。在通过VTOR的偏移地址再跳到新的偏移向量处(即APP的中断向量),执行APP的中断程序,如图标号5所示。中断程序执行完成后,返回main函数继续运行,如图标号6所示。

我们知道 IAP 程序必须满足两个要求:
1) 新程序必须在 IAP 程序之后的某个偏移量为 x的地址开始;
2) 必须将新程序的中断向量表相应移动,偏为 x;


M0中断偏移:


M0没有中断偏移寄存器,即VTOR。但是stm32f030的官方文档给出了其他的解决方案。将0x2000 0000映射为0x0000 0000,并将APP中断向量表(从0x0800 4000开始的48字,32bit)拷贝到0x2000 0000处。  APP里发生中断时,内核就从地址0x00处的向量表取相应中断的入口地址,即相当于从0x2000 0000处的向量表取中断入口地址,当然也相当于从0x0800 4000处的向量表取中断入口地址,然后去执行相应中断程序,执行完后跳转到main函数。


















  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值