原创 关于STM32的中断向量表的重映射的问题

2019-10-18 08:41 1161 12 2 分类: MCU/ 嵌入式 文集: 程序设计
为什么要对中断向量表进行重新映射?COREM3权威指南上讲“然而,为了动态重分发中断,CM3允许向量表重定位——从其它地址处开始定位各异常向量。这些地址对应的区域可以是代码区,但也可以是RAM区。在RAM区就可以修改向量的入口地址了。”。疑惑:1.如果不重新映射的话,中断向量表的地址应该是这样的:0X00000000是SP;0X00000004是复位向量;0X00000008是NMI;后面按照中断编号的顺序依次按4递增。这样的话,不也能存得下中断向量表吗?反正存的是一些函数指针,占不了多少空间干嘛还要重新映射到其他的地方呢?2.如果重新映射的话,中断向量表的入口地址就变成0x08000000了。但是一开始已经开辟的那部分空间(0x00000000......)存放的中断向量表不是就等于没用吗?问题一:想要解释你的疑惑先要明白几个道理1、无论向量表是否重映射过,复位后都是从0地址的向量表处获取SP和复位入口。2、0地址处的中断向量表,通常是ROM地址。通常只能通过指定链接地址,然后烧录改写。3、在一些带升级功能的产品中,通常分为boot和app两部分。boot通常出产以后就不再变化,使用0地址向量表,必须通过Jtag之类的工具才能改写。而boot中带有下载功能个(USB、串口或SPI),用户可以根据需要下载APP。4、注意第2条,APP通常需要自己设计中断服务。如果不重映射,只能再boot处设计查表程序,通过boot跳转,效率不高。而擦写0地址向量,如果在升级过程中掉电,则boot也无法启动。因此,需要进入APP后,重映射向量表。问题二:你的理解的对的。然而,0地址处的中断向量表区域通常不放代码。芯片在FLASH地址分配上,也很少有将FLASH地址紧密的排在向量表之后的。因此,并不影响。


    PARTNER CONTENT

    文章评论1条评论)

    登录后参与讨论

    curton 2019-10-18 21:25

    学习
    相关推荐阅读
    minicaihong 2020-10-22 16:44
    场效应管放大电路的直流偏置电路详解
    什么是偏置电路晶体管构成的放大器要做到不失真地将信号电压放大,就必须保证晶体管的发射结正偏、集电结反偏。即应该设置它的工作点。所谓工作点就是通过外部电路的设置使晶体管的基极、发射极和集电极处于所要求的...
    minicaihong 2020-10-22 16:37
    场效应管偏置电路-场效应管偏置电路的工作原理及作用分析
    什么是偏置电路晶体管构成的放大器要做到不失真地将信号电压放大,就必须保证晶体管的发射结正偏、集电结反偏。即应该设置它的工作点。所谓工作点就是通过外部电路的设置使晶体管的基极、发射极和集电极处于所要求的...
    minicaihong 2020-10-22 16:27
    MOS管偏置电路-MOS管直流、恒流等偏置电路图文及方程详解
    MOS管偏置电路MOS管直流偏置电路MOS管的单电源直流偏置电路有两种:1、只能用于结型和耗尽型MOS管的自给偏置电路。2、可用于各种MOS管的分压式偏置电路自给MOS管偏置电路(1)图解法根据图中电...
    minicaihong 2020-05-27 09:50
    sprintf 格式化字符串
    sprintf 格式化字符串好久没写博客了,又遇到自己觉得很傻的问题,格式化字符串还要找下定义和用法sprintf() 函数把格式化的字符串写入变量中。arg1、arg2、++ 参数将被插入...
    minicaihong 2020-05-25 15:07
    12T和1T的单片机
    标准51是12T的,就是说12个时钟周期(晶振周期,例如12M的,周期是1/12M,单位秒),机器做一个指令度周期,刚好就是1/12M*12=1uS,常见指令例如nop就是一个周期,刚好1uS,其他的...
    minicaihong 2020-05-23 16:22
    4HC595驱动8*8点阵屏
    74HC595驱动8*8点阵屏置顶 菜袅1号 2020-05-19 10:00:03   52   收藏展开该项目使用国产M0核单片机,驱动方式类似于stm32平台;点阵驱动芯片:...
    EE直播间
    更多
    我要评论
    1
    12
    关闭 站长推荐上一条 /1 下一条