单片机启动流程文件startup_device.s

        MODULE  ?cstartup
        ;; Forward declaration of sections.
        SECTION CSTACK:DATA:NOROOT(3)

        SECTION .intvec:CODE:NOROOT(2)

        EXTERN  __iar_program_start
        EXTERN  SystemInit
        EXTERN  g_bootloaderTree
        PUBLIC  __vector_table
        PUBLIC  __vector_table_0x1c
        PUBLIC  __Vectors
        PUBLIC  __Vectors_End
        PUBLIC  __Vectors_Size   

【1】MODULE 控制指令是用来标记 modules 源码的开始和结束,后边的 ?cstartup 是模块的名字,此文档的最后的 END 表明模块的结束
【2】SECTION 指令是声明段,一个段不能同时包含 public symbol 和 pubweak symbol ,模块只有在相同的名字的模块没有被链接进来的时候才会被链接进来。
    语法格式:SECTION section:type [flag] [(align)]
        align,是用于指定地址对齐到 2^align,他的取值是 0 到 30
        flag,取值NOROOT、ROOT、REORDER、NOREORDER,默认是ROOT,NOROOT表示如果这个段中的符号没有被引用,将会被连接器舍弃,即可被优化。ROOT表示不可被优化。REORDER表示开始一个新的名字是 section 的段(section),NOREORDER表示开始一个新的名字为 section 的片段(fragment),多个片段组成一个段(section)
        type,memory 的类型,取值是 CODE、CONST、DATA
        section,段的名字
【3】EXTERN 用导入其他模块的 symbol(符号)
【4】PUBLIC 导出 symbol(符号)

【1】MODULE 控制指令是用来标记 modules 源码的开始和结束,后边的 ?cstartup 是模块的名字,此文档的最后的 END 表明模块的结束

【2】SECTION 指令是声明段,一个段不能同时包含 public symbol 和 pubweak symbol ,模块只有在相同的名字的模块没有被链接进来的时候才会被链接进来。

    语法格式:SECTION section:type [flag] [(align)]

        align,是用于指定地址对齐到 2^align,他的取值是 0 到 30

        flag,取值NOROOT、ROOT、REORDER、NOREORDER,默认是ROOT,NOROOT表示如果这个段中的符号没有被引用,将会被连接器舍弃,即可被优化。ROOT表示不可被优化。REORDER表示开始一个新的名字是 section 的段(section),NOREORDER表示开始一个新的名字为 section 的片段(fragment),多个片段组成一个段(section)

        type,memory 的类型,取值是 CODE、CONST、DATA

        section,段的名字

【3】EXTERN 用导入其他模块的 symbol(符号)

【4】PUBLIC 导出 symbol(符号)

  

      DATA                    ; DATA 表示下边中的标签是 32 位的标签

__vector_table
        DCD     sfe(CSTACK)                         ; sfe 指令作用是返回栈的结尾
        DCD     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
__vector_table_0x1c
        DCD     g_bootloaderTree                               ;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     DMA0_DMA16_IRQHandler                         ;DMA Channel 0, 16 Transfer Complete
        DCD     DMA1_DMA17_IRQHandler                         ;DMA Channel 1, 17 Transfer Complete
        DCD     DMA2_DMA18_IRQHandler                         ;DMA Channel 2, 18 Transfer Complete
        DCD     DMA3_DMA19_IRQHandler                         ;DMA Channel 3, 19 Transfer Complete
        DCD     DMA4_DMA20_IRQHandler                         ;DMA Channel 4, 20 Transfer Complete
        DCD     DMA5_DMA21_IRQHandler                         ;DMA Channel 5, 21 Transfer Complete
        DCD     DMA6_DMA22_IRQHandler                         ;DMA Channel 6, 22 Transfer Complete
        DCD     DMA7_DMA23_IRQHandler                         ;DMA Channel 7, 23 Transfer Complete
        DCD     DMA8_DMA24_IRQHandler                         ;DMA Channel 8, 24 Transfer Complete
        DCD     DMA9_DMA25_IRQHandler                         ;DMA Channel 9, 25 Transfer Complete
        DCD     DMA10_DMA26_IRQHandler                        ;DMA Channel 10, 26 Transfer Complete
        DCD     DMA11_DMA27_IRQHandler                        ;DMA Channel 11, 27 Transfer Complete
        DCD     DMA12_DMA28_IRQHandler                        ;DMA Channel 12, 28 Transfer Complete
        DCD     DMA13_DMA29_IRQHandler                        ;DMA Channel 13, 29 Transfer Complete
        DCD     DMA14_DMA30_IRQHandler                        ;DMA Channel 14, 30 Transfer Complete
        DCD     DMA15_DMA31_IRQHandler                        ;DMA Channel 15, 31 Transfer Complete
        DCD     DMA_Error_IRQHandler                          ;DMA Error Interrupt
        DCD     MCM_IRQHandler                                ;Normal Interrupt
        DCD     FTFE_IRQHandler                               ;FTFE Command complete interrupt
        DCD     Read_Collision_IRQHandler                     ;Read Collision Interrupt
        DCD     LVD_LVW_IRQHandler                            ;Low Voltage Detect, Low Voltage Warning
        DCD     LLW_IRQHandler                                ;Low Leakage Wakeup
        DCD     WDOG_EWM_IRQHandler                           ;WDOG Interrupt
        DCD     RNG_IRQHandler                                ;RNG Interrupt
        DCD     I2C0_IRQHandler                               ;I2C0 interrupt
        DCD     I2C1_IRQHandler                               ;I2C1 interrupt
        DCD     SPI0_IRQHandler                               ;SPI0 Interrupt
        DCD     SPI1_IRQHandler                               ;SPI1 Interrupt
        DCD     I2S0_Tx_IRQHandler                            ;I2S0 transmit interrupt
        DCD     I2S0_Rx_IRQHandler                            ;I2S0 receive interrupt
        DCD     Reserved46_IRQHandler                         ;Reserved interrupt 46
        DCD     UART0_RX_TX_IRQHandler                        ;UART0 Receive/Transmit interrupt
        DCD     UART0_ERR_IRQHandler                          ;UART0 Error interrupt
        DCD     UART1_RX_TX_IRQHandler                        ;UART1 Receive/Transmit interrupt
        DCD     UART1_ERR_IRQHandler                          ;UART1 Error interrupt
        DCD     UART2_RX_TX_IRQHandler                        ;UART2 Receive/Transmit interrupt
        DCD     UART2_ERR_IRQHandler                          ;UART2 Error interrupt
        DCD     UART3_RX_TX_IRQHandler                        ;UART3 Receive/Transmit interrupt
        DCD     UART3_ERR_IRQHandler                          ;UART3 Error interrupt
                             ...........
        DCD     PORTA_IRQHandler                              ;Port A interrupt
        DCD     PORTB_IRQHandler                              ;Port B interrupt
        DCD     PORTC_IRQHandler                              ;Port C interrupt
        DCD     PORTD_IRQHandler                              ;Port D interrupt
        DCD     PORTE_IRQHandler                              ;Port E interrupt
        DCD     SWI_IRQHandler                                ;Software interrupt
        DCD     SPI2_IRQHandler                               ;SPI2 Interrupt
        DCD     UART4_RX_TX_IRQHandler                        ;UART4 Receive/Transmit interrupt
        DCD     UART4_ERR_IRQHandler                          ;UART4 Error interrupt
        DCD     Reserved84_IRQHandler                         ;Reserved interrupt 84
        DCD     Reserved85_IRQHandler                         ;Reserved interrupt 85
        DCD     CMP2_IRQHandler                               ;CMP2 interrupt
        DCD     FTM3_IRQHandler                               ;FTM3 fault, overflow and channels interrupt
        DCD     DAC1_IRQHandler                               ;DAC1 interrupt
        DCD     ADC1_IRQHandler                               ;ADC1 interrupt
        DCD     I2C2_IRQHandler                               ;I2C2 interrupt
        DCD     CAN0_ORed_Message_buffer_IRQHandler           ;CAN0 OR'd message buffers interrupt
        DCD     CAN0_Bus_Off_IRQHandler                       ;CAN0 bus off interrupt
        DCD     CAN0_Error_IRQHandler                         ;CAN0 error interrupt
        DCD     CAN0_Tx_Warning_IRQHandler                    ;CAN0 Tx warning interrupt
        DCD     CAN0_Rx_Warning_IRQHandler                    ;CAN0 Rx warning interrupt
        DCD     CAN0_Wake_Up_IRQHandler                       ;CAN0 wake up interrupt
        DCD     SDHC_IRQHandler                               ;SDHC interrupt
        DCD     ENET_1588_Timer_IRQHandler                    ;Ethernet MAC IEEE 1588 Timer Interrupt
        DCD     ENET_Transmit_IRQHandler                      ;Ethernet MAC Transmit Interrupt
        DCD     ENET_Receive_IRQHandler                       ;Ethernet MAC Receive Interrupt
        DCD     ENET_Error_IRQHandler                         ;Ethernet MAC Error and miscelaneous Interrupt
        DCD     LPUART0_IRQHandler                            ;LPUART0 status/error interrupt
        DCD     TSI0_IRQHandler                               ;TSI0 interrupt
        DCD     TPM1_IRQHandler                               ;TPM1 fault, overflow and channels interrupt
        DCD     TPM2_IRQHandler                               ;TPM2 fault, overflow and channels interrupt
        DCD     USBHSDCD_IRQHandler                           ;USBHSDCD, USBHS Phy Interrupt
        DCD     I2C3_IRQHandler                               ;I2C3 interrupt
        DCD     CMP3_IRQHandler                               ;CMP3 interrupt
        DCD     USBHS_IRQHandler                              ;USB high speed OTG interrupt
        DCD     CAN1_ORed_Message_buffer_IRQHandler           ;CAN1 OR'd message buffers interrupt
        DCD     CAN1_Bus_Off_IRQHandler                       ;CAN1 bus off interrupt
        DCD     CAN1_Error_IRQHandler                         ;CAN1 error interrupt
        DCD     CAN1_Tx_Warning_IRQHandler                    ;CAN1 Tx warning interrupt
        DCD     CAN1_Rx_Warning_IRQHandler                    ;CAN1 Rx warning interrupt
        DCD     CAN1_Wake_Up_IRQHandler                       ;CAN1 wake up interrupt
        DCD     DefaultISR                                    ;116
                    ........
        DCD     DefaultISR                                    ;232
        DCD     DefaultISR                                    ;233
        DCD     DefaultISR                                    ;234
        DCD     DefaultISR                                    ;235
        DCD     DefaultISR                                    ;236
        DCD     DefaultISR                                    ;237
        DCD     DefaultISR                                    ;238
        DCD     DefaultISR                                    ;239
__Vectors_End

【1】DATA 表示下边中的标签是 32 位的标签,THUMB 表示下边的标签是 16 位的标签,所谓的标签是 地址的别名,不占用代码空间,给编译器看的.

【2】 DCD 是数据定义或者 重定位指令,为的是定义一个值,或者保留 memory,DCD 别名是 DC32,用于声明一个 32 位的常量,这部分是中断向量表的内容,需要注意的是,他们的顺序不能改变,此部分会放到 flash 的最开始部分,当系统启动的时候会加载前另个地址,第一个地址是 c 程序的栈的栈顶地址,第二个地址是向量表的开始地址,中断发生时会根据向量表的首地址和偏移量来找到程序的入口

【3】sfe 指令作用是返回栈的结尾,因为栈的增长方向是反方向的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值