| 
在线时间37 小时
UID2024419
注册时间2015-3-2
NXP金币0 
 该用户从未签到 中级会员  
 
 
	积分484 
最后登录2016-3-28 | 
 
| 当异常发生时,ARM处理器自动将PC更新为向量表中的中断入口地址。处理器挂起正常的指令执行,将流水线重新刷新,并开始装载异常处理指令进行执行。 
 向量表保存的一般为跳转地址。
 Each vector table entry contains a form of branch instruction pointing to the start of a specific routine:
 
 
 复位向量    处理器上电时第一条需要执行的指令的位置,该指令将跳转至初始化代码段,执行系统初始化功能。
 
 
 软件中断向量     当处理器执行SWI指令时,SWI指令常用于调用操作系统API,由用户态切换至内核态时。
 
 预取终止向量    当处理器试图从一个未授权的地址取指令时,实际的异常在流水线解码阶段发生。
 
 数据终止向量   当处理器试图从一个未授权的地址取数据时。与预取终止类似。
 
 中断请求向量   当外设发出请求并中断处理器正常执行流程时,仅在CPSR中I标志位未屏蔽时。
 
 快速中断请求向量  与中断请求类似,保留给需要快速响应的硬件外设,仅在CPSR中F标志位未屏蔽时。
 
   
 示例:CMSIS Cortex-M0P Core Device Startup File,摘自KSDK 1.3
 
 ; The modules in this file are included in the libraries, and may be replaced
 ; by any user-defined modules that define the PUBLIC symbol _program_start or
 ; a user defined start symbol.
 ; To override the cstartup defined in the library, simply add your modified
 ; version to the workbench project.
 ;
 ; The vector table is normally located at address 0.
 ; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
 ; The name "__vector_table" has special meaning for C-SPY:
 ; it is where the SP start value is found, and the NVIC vector
 ; table register (VTOR) is initialized to this address if != 0.
 ;
 ; Cortex-M version
 ;
 
 MODULE  ?cstartup
 
 ;; Forward declaration of sections.
 SECTION CSTACK
  ATA:NOROOT(3) 
 SECTION .intvec:CODE:NOROOT(2)
 
 EXTERN  __iar_program_start
 EXTERN  SystemInit
 EXTERN  init_data_bss
 PUBLIC  __vector_table
 PUBLIC  __vector_table_0x1c
 PUBLIC  __Vectors
 PUBLIC  __Vectors_End
 PUBLIC  __Vectors_Size
 
 DATA
 
 __vector_table
 DCD     sfe(CSTACK)
 DCD     Reset_Handler
 
 DCD     NMI_Handler                                   ;NMI Handler
 DCD     HardFault_Handler                             ;Hard Fault Handler
 DCD     0                                             ;Reserved
 DCD     0                                             ;Reserved
 DCD     0                                             ;Reserved
 __vector_table_0x1c
 DCD     0                                             ;Reserved
 DCD     0                                             ;Reserved
 DCD     0                                             ;Reserved
 DCD     0                                             ;Reserved
 DCD     SVC_Handler                                   ;SVCall Handler
 DCD     0                                             ;Reserved
 DCD     0                                             ;Reserved
 DCD     PendSV_Handler
  endSV Handler DCD     SysTick_Handler                               ;SysTick Handler
 
 ;External Interrupts
 DCD     DMA0_IRQHandler                               ;DMA channel 0 transfer complete
 DCD     DMA1_IRQHandler                               ;DMA channel 1 transfer complete
 DCD     DMA2_IRQHandler                               ;DMA channel 2 transfer complete
 DCD     DMA3_IRQHandler                               ;DMA channel 3 transfer complete
 DCD     Reserved20_IRQHandler                         ;Reserved interrupt
 DCD     FTFA_IRQHandler                               ;Command complete and read collision
 DCD     PMC_IRQHandler                                ;Low-voltage detect, low-voltage warning
 DCD     LLWU_IRQHandler                               ;Low leakage wakeup
 DCD     I2C0_IRQHandler                               ;I2C0 interrupt
 DCD     I2C1_IRQHandler                               ;I2C1 interrupt
 DCD     SPI0_IRQHandler                               ;SPI0 single interrupt vector for all sources
 DCD     SPI1_IRQHandler                               ;SPI1 single interrupt vector for all sources
 DCD     LPUART0_IRQHandler                            ;LPUART0 status and error
 DCD     LPUART1_IRQHandler                            ;LPUART1 status and error
 DCD     UART2_FLEXIO_IRQHandler                       ;UART2 or FLEXIO
 DCD     ADC0_IRQHandler                               ;ADC0 interrupt
 DCD     CMP0_IRQHandler                               ;CMP0 interrupt
 DCD     TPM0_IRQHandler                               ;TPM0 single interrupt vector for all sources
 DCD     TPM1_IRQHandler                               ;TPM1 single interrupt vector for all sources
 DCD     TPM2_IRQHandler                               ;TPM2 single interrupt vector for all sources
 DCD     RTC_IRQHandler                                ;RTC alarm
 DCD     RTC_Seconds_IRQHandler                        ;RTC seconds
 DCD     PIT_IRQHandler
  IT interrupt DCD     Reserved39_IRQHandler                         ;Reserved interrupt
 DCD     Reserved40_IRQHandler                         ;Reserved interrupt
 DCD     Reserved41_IRQHandler                         ;Reserved interrupt
 DCD     Reserved42_IRQHandler                         ;Reserved interrupt
 DCD     Reserved43_IRQHandler                         ;Reserved interrupt
 DCD     LPTMR0_IRQHandler                             ;LPTMR0 interrupt
 DCD     Reserved45_IRQHandler                         ;Reserved interrupt
 DCD     PORTA_IRQHandler
  ORTA Pin detect DCD     PORTBCDE_IRQHandler                           ;Single interrupt vector for PORTB,PORTC,PORTD,PORTE
 __Vectors_End
 
 SECTION FlashConfig:CODE
 __FlashConfig
 DCD        0xFFFFFFFF
 DCD        0xFFFFFFFF
 DCD        0xFFFFFFFF
 DCD        0xFFFF3DFE
 __FlashConfig_End
 
 __Vectors       EQU   __vector_table
 __Vectors_Size         EQU   __Vectors_End - __Vectors
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; Default interrupt handlers.
 ;;
 THUMB
 
 PUBWEAK Reset_Handler
 SECTION .text:CODE:REORDER:NOROOT(2)
 Reset_Handler
 CPSID   I               ; Mask interrupts
 LDR     R0, =SystemInit
 BLX     R0
 LDR     R0, =init_data_bss
 BLX     R0
 CPSIE   I               ; Unmask interrupts
 LDR     R0, =__iar_program_start
 BX      R0
 
 PUBWEAK NMI_Handler
 SECTION .text:CODE:REORDER:NOROOT(1)
 NMI_Handler
 B .
 
 PUBWEAK HardFault_Handler
 SECTION .text:CODE:REORDER:NOROOT(1)
 HardFault_Handler
 B .
 
 PUBWEAK SVC_Handler
 SECTION .text:CODE:REORDER:NOROOT(1)
 SVC_Handler
 B .
 
 PUBWEAK PendSV_Handler
 SECTION .text:CODE:REORDER:NOROOT(1)
 PendSV_Handler
 B .
 
 PUBWEAK SysTick_Handler
 SECTION .text:CODE:REORDER:NOROOT(1)
 SysTick_Handler
 B .
 
 PUBWEAK DMA0_IRQHandler
 PUBWEAK DMA1_IRQHandler
 PUBWEAK DMA2_IRQHandler
 PUBWEAK DMA3_IRQHandler
 PUBWEAK Reserved20_IRQHandler
 PUBWEAK FTFA_IRQHandler
 PUBWEAK PMC_IRQHandler
 PUBWEAK LLWU_IRQHandler
 PUBWEAK I2C0_IRQHandler
 PUBWEAK I2C1_IRQHandler
 PUBWEAK SPI0_IRQHandler
 PUBWEAK SPI1_IRQHandler
 PUBWEAK LPUART0_IRQHandler
 PUBWEAK LPUART1_IRQHandler
 PUBWEAK UART2_FLEXIO_IRQHandler
 PUBWEAK ADC0_IRQHandler
 PUBWEAK CMP0_IRQHandler
 PUBWEAK TPM0_IRQHandler
 PUBWEAK TPM1_IRQHandler
 PUBWEAK TPM2_IRQHandler
 PUBWEAK RTC_IRQHandler
 PUBWEAK RTC_Seconds_IRQHandler
 PUBWEAK PIT_IRQHandler
 PUBWEAK Reserved39_IRQHandler
 PUBWEAK Reserved40_IRQHandler
 PUBWEAK Reserved41_IRQHandler
 PUBWEAK Reserved42_IRQHandler
 PUBWEAK Reserved43_IRQHandler
 PUBWEAK LPTMR0_IRQHandler
 PUBWEAK Reserved45_IRQHandler
 PUBWEAK PORTA_IRQHandler
 PUBWEAK PORTBCDE_IRQHandler
 PUBWEAK DefaultISR
 SECTION .text:CODE:REORDER:NOROOT(2)
 DMA0_IRQHandler
 DMA1_IRQHandler
 DMA2_IRQHandler
 DMA3_IRQHandler
 Reserved20_IRQHandler
 FTFA_IRQHandler
 PMC_IRQHandler
 LLWU_IRQHandler
 I2C0_IRQHandler
 I2C1_IRQHandler
 SPI0_IRQHandler
 SPI1_IRQHandler
 LPUART0_IRQHandler
 LPUART1_IRQHandler
 UART2_FLEXIO_IRQHandler
 ADC0_IRQHandler
 CMP0_IRQHandler
 TPM0_IRQHandler
 TPM1_IRQHandler
 TPM2_IRQHandler
 RTC_IRQHandler
 RTC_Seconds_IRQHandler
 PIT_IRQHandler
 Reserved39_IRQHandler
 Reserved40_IRQHandler
 Reserved41_IRQHandler
 Reserved42_IRQHandler
 Reserved43_IRQHandler
 LPTMR0_IRQHandler
 Reserved45_IRQHandler
 PORTA_IRQHandler
 PORTBCDE_IRQHandler
 DefaultISR
 LDR R0, =DefaultISR
 BX R0
 
 END
 
 
 
 
 
 
 
 
 
 | 
 |