细心的小伙伴肯定能发现,前几篇文章中频繁出现一个名词 —— 向量表。这到底是个什么东西?
今天我们就来深入了解一下向量表以及向量表的重定位。
当 Cortex-M 处理器接受了某个异常请求后,处理器需要确定该异常处理(若为中断则是 ISR)的起始地址。而这个信息就存储在存储器的向量表中。
向量表默认从地址 0 开始,向量地址则为异常编号乘 4 ,如下图所示:

向量表一般被定义在微控制器供应商提供的启动代码中,以 STM32F4 为例,在其 startup_stm32f407xx.s 中有如下一段代码:
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
DCD MemManage_Handler ; MPU Fault Handler
DCD BusFault_Handler ; Bus Fault Handler
DCD UsageFault_Handler ; Usage Fault Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD SVC_Handler ; SVCall Handler
DCD DebugMon_Handler ; Debug Monitor Handler
DCD 0 ; Reserved
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
; External Interrupts
DCD WWDG_IRQHandler ; Window WatchDog
DCD PVD_IRQHandler ; PVD through EXTI Line detection
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
DCD FLASH_IRQHandler ; FLASH
DCD RCC_IRQHandler ; RCC
DCD EXTI0_IRQHandler ; EXTI Line0
DCD EXTI1_IRQHandler ; EXTI Line1
DCD EXTI2_IRQHandler ; EXTI Line2
DCD EXTI3_IRQHandler

最低0.47元/天 解锁文章
3984

被折叠的 条评论
为什么被折叠?



