4回答

0收藏

[分享] GD32启动代码的分析

GD32 GD32 4145 人阅读 | 4 人回复 | 2015-07-01

大家都晒过板子了,我也就不再晒了,在这里送上对GD32启动代码的分析。
;/**
;  ******************************************************************************
;  * @file    startup_gd32f1x0.s
;  * @author  MCU SD
;  * @version V1.0.1   
;  * @date    6-Sep-2014
;  * @brief   GD32F1x0 startup code.
;  ******************************************************************************
;  */

;/* <<< Use Configuration Wizard in Context Menu >>>                                                        */

; Amount of memory (in bytes) allocated for Stack and Heap
; Tailor those values to your application needs
;// <h> Stack Configuration
;//   <o> Stack Size (in Bytes) <0-8192:8>
;// </h>
Stack_Size          EQU     0x400                                ;?¨???????????ó????0x400 = 1k byte

                    AREA    STACK, NOINIT, READWRITE, ALIGN = 3
Stack_Mem           SPACE   Stack_Size                           ;??±??????ó????Stack_Size??????????×÷????
__initial_sp                                                     ;±ê??__initial_sp??±í???????¨?ò???ú?¤???ú????????

;// <h> Heap Configuration
;//   <o>  Heap Size (in Bytes) <0-8192:8>
;// </h>
Heap_Size           EQU     0x400                                ;?¨???????????ó????0x400 = 1k byte     

                    AREA    HEAP, NOINIT, READWRITE, ALIGN = 3
__heap_base                                                      ;±ê??__heap_base??±í?????????????????·
Heap_Mem            SPACE   Heap_Size                            ;??±??????ó????Stack_Size??????????×÷????
__heap_limit                                                     ;±ê??__heap_limit??±í???????????á?????·


                    PRESERVE8                                    ;????±à???÷??8×???????
                    THUMB                                        ;????±à???÷????Thumb????

; Vector table entries with the exceptions ISR address
                    AREA    RESET, DATA, READONLY                ;?¨????????????????????CODE??
                    EXPORT  __Vectors                            ;??±ê??__Vectors?ù?÷??????±ê???????ù??????????????????????±ê??
                    EXPORT  __Vectors_End
                    EXPORT  __Vectors_Size
;±ê??__Vectors??±í???????ò??±í???????·
__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     LVD_IRQHandler                 ; LVD through EXTI Line detect
                    DCD     RTC_IRQHandler                 ; RTC through EXTI Line
                    DCD     FMC_IRQHandler                 ; FMC
                    DCD     RCC_IRQHandler                 ; RCC
                    DCD     EXTI0_1_IRQHandler             ; EXTI Line 0 and 1
                    DCD     EXTI2_3_IRQHandler             ; EXTI Line 2 and 3
                    DCD     EXTI4_15_IRQHandler            ; EXTI Line 4 to 15
                    DCD     TS_IRQHandler                  ; TS
                    DCD     DMA1_Channel1_IRQHandler       ; DMA1 Channel 1
                    DCD     DMA1_Channel2_3_IRQHandler     ; DMA1 Channel 2 and Channel 3
                    DCD     DMA1_Channel4_5_IRQHandler     ; DMA1 Channel 4 and Channel 5
                    DCD     ADC1_CMP_IRQHandler            ; ADC1, CMP1 and CMP2
                    DCD     TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
                    DCD     TIM1_CC_IRQHandler             ; TIM1 Capture Compare
                    DCD     TIM2_IRQHandler                ; TIM2
                    DCD     TIM3_IRQHandler                ; TIM3
                    DCD     TIM6_DAC_IRQHandler            ; TIM6 and DAC
                    DCD     0                              ; Reserved
                    DCD     TIM14_IRQHandler               ; TIM14
                    DCD     TIM15_IRQHandler               ; TIM15
                    DCD     TIM16_IRQHandler               ; TIM16
                    DCD     TIM17_IRQHandler               ; TIM17
                    DCD     I2C1_EV_IRQHandler             ; I2C1 Event
                    DCD     I2C2_EV_IRQHandler             ; I2C2 Event
                    DCD     SPI1_IRQHandler                ; SPI1
                    DCD     SPI2_IRQHandler                ; SPI2
                    DCD     USART1_IRQHandler              ; USART1
                    DCD     USART2_IRQHandler              ; USART2
                    DCD     0                              ; Reserved
                    DCD     CEC_IRQHandler                 ; CEC
                    DCD     0                              ; Reserved
                    DCD     I2C1_ER_IRQHandler             ; I2C1 Error
                    DCD     0                              ; Reserved
                    DCD     I2C2_ER_IRQHandler             ; I2C2 Error
                    DCD     I2C3_EV_IRQHandler             ; I2C3 Event
                    DCD     I2C3_ER_IRQHandler             ; I2C3 Error
                    DCD     USB_LP_IRQHandler              ; USB Low  Priority
                    DCD     USB_HP_IRQHandler              ; USB High Priority
                    DCD     0                              ; Reserved
                    DCD     0                              ; Reserved
                    DCD     0                              ; Reserved
                    DCD     USBWakeUp_IRQHandler           ; USB Wakeup from suspend
                    DCD     0                              ; Reserved
                    DCD     0                              ; Reserved
                    DCD     0                              ; Reserved
                    DCD     0                              ; Reserved
                    DCD     0                              ; Reserved
                    DCD     DMA1_Channel6_7_IRQHandler     ; DMA1 Channel 6 and Channel 7
                    DCD     0                              ; Reserved
                    DCD     0                              ; Reserved
                    DCD     SPI3_IRQHandler                ; SPI3

                    SPACE   0x4A



__Vectors_End

__Vectors_Size      EQU  __Vectors_End - __Vectors

                    AREA    |.text|, CODE, READONLY

; Reset handler routine
Reset_Handler       PROC                                   ;????????·??????ò??PROC????ENDP?á??±í?????ò?????????á??
                    EXPORT  Reset_Handler                   [WEAK]
                    IMPORT  __main                         ;IMPORT???????????ó??·????????????????¨??
                    IMPORT  System_Init  
                    LDR     R0, =System_Init
                    BLX     R0
                    LDR     R0, =__main
                    BX      R0
                    ENDP

; Dummy Exception Handlers
NMI_Handler         PROC
                    EXPORT  NMI_Handler                     [WEAK]
                    B       .
                    ENDP

HardFault_Handler   PROC
                    EXPORT  HardFault_Handler               [WEAK]
                    B       .
                    ENDP

MemManage_Handler   PROC
                    EXPORT  MemManage_Handler               [WEAK]
                    B       .
                    ENDP

BusFault_Handler    PROC
                    EXPORT  BusFault_Handler                [WEAK]
                    B       .
                    ENDP

UsageFault_Handler  PROC
                    EXPORT  UsageFault_Handler              [WEAK]
                    B       .
                    ENDP

SVC_Handler         PROC
                    EXPORT  SVC_Handler                     [WEAK]
                    B       .
                    ENDP

DebugMon_Handler    PROC
                    EXPORT  DebugMon_Handler                [WEAK]
                    B       .
                    ENDP

PendSV_Handler      PROC
                    EXPORT  PendSV_Handler                  [WEAK]
                    B       .
                    ENDP

SysTick_Handler     PROC
                    EXPORT  SysTick_Handler                 [WEAK]
                    B       .
                    ENDP

Default_Handler     PROC
                    EXPORT  WWDG_IRQHandler                 [WEAK]
                    EXPORT  LVD_IRQHandler                  [WEAK]
                    EXPORT  RTC_IRQHandler                  [WEAK]
                    EXPORT  FMC_IRQHandler                  [WEAK]
                    EXPORT  RCC_IRQHandler                  [WEAK]
                    EXPORT  EXTI0_1_IRQHandler              [WEAK]
                    EXPORT  EXTI2_3_IRQHandler              [WEAK]
                    EXPORT  EXTI4_15_IRQHandler             [WEAK]
                    EXPORT  TS_IRQHandler                   [WEAK]
                    EXPORT  DMA1_Channel1_IRQHandler        [WEAK]
                    EXPORT  DMA1_Channel2_3_IRQHandler      [WEAK]
                    EXPORT  DMA1_Channel4_5_IRQHandler      [WEAK]
                    EXPORT  DMA1_Channel6_7_IRQHandler      [WEAK]
                    EXPORT  ADC1_CMP_IRQHandler             [WEAK]
                    EXPORT  TIM1_BRK_UP_TRG_COM_IRQHandler  [WEAK]
                    EXPORT  TIM1_CC_IRQHandler              [WEAK]
                    EXPORT  TIM2_IRQHandler                 [WEAK]
                    EXPORT  TIM3_IRQHandler                 [WEAK]
                    EXPORT  TIM6_DAC_IRQHandler             [WEAK]
                    EXPORT  TIM14_IRQHandler                [WEAK]
                    EXPORT  TIM15_IRQHandler                [WEAK]
                    EXPORT  TIM16_IRQHandler                [WEAK]
                    EXPORT  TIM17_IRQHandler                [WEAK]
                    EXPORT  I2C1_EV_IRQHandler              [WEAK]
                    EXPORT  I2C2_EV_IRQHandler              [WEAK]
                    EXPORT  SPI1_IRQHandler                 [WEAK]
                    EXPORT  SPI2_IRQHandler                 [WEAK]
                    EXPORT  USART1_IRQHandler               [WEAK]
                    EXPORT  USART2_IRQHandler               [WEAK]
                    EXPORT  CEC_IRQHandler                  [WEAK]
                    EXPORT  I2C1_ER_IRQHandler              [WEAK]
                    EXPORT  I2C2_ER_IRQHandler              [WEAK]
                    EXPORT  I2C3_EV_IRQHandler              [WEAK]
                    EXPORT  I2C3_ER_IRQHandler              [WEAK]
                    EXPORT  SPI3_IRQHandler                 [WEAK]
                    EXPORT  USBWakeUp_IRQHandler            [WEAK]
                    EXPORT  USB_HP_IRQHandler               [WEAK]
                    EXPORT  USB_LP_IRQHandler               [WEAK]

WWDG_IRQHandler
LVD_IRQHandler
RTC_IRQHandler
FMC_IRQHandler
RCC_IRQHandler
EXTI0_1_IRQHandler
EXTI2_3_IRQHandler
EXTI4_15_IRQHandler
TS_IRQHandler
DMA1_Channel1_IRQHandler
DMA1_Channel2_3_IRQHandler
DMA1_Channel4_5_IRQHandler
DMA1_Channel6_7_IRQHandler
ADC1_CMP_IRQHandler
TIM1_BRK_UP_TRG_COM_IRQHandler
TIM1_CC_IRQHandler
TIM2_IRQHandler
TIM3_IRQHandler
TIM6_DAC_IRQHandler
TIM14_IRQHandler
TIM15_IRQHandler
TIM16_IRQHandler
TIM17_IRQHandler
I2C1_EV_IRQHandler
I2C2_EV_IRQHandler

SPI1_IRQHandler
SPI2_IRQHandler
USART1_IRQHandler
USART2_IRQHandler
CEC_IRQHandler   

I2C1_ER_IRQHandler
I2C2_ER_IRQHandler
I2C3_EV_IRQHandler
I2C3_ER_IRQHandler
SPI3_IRQHandler
USBWakeUp_IRQHandler
USB_HP_IRQHandler
USB_LP_IRQHandler
                B       .
                ENDP

                ALIGN

;*******************************************************************************
; User Stack and Heap initialization
;*******************************************************************************
                 IF      EF:__MICROLIB
               
                 EXPORT  __initial_sp
                 EXPORT  __heap_base
                 EXPORT  __heap_limit
               
                 ELSE
               
                 IMPORT  __use_two_region_memory
                 EXPORT  __user_initial_stackheap
                 
__user_initial_stackheap

                 LDR     R0, =  Heap_Mem
                 LDR     R1, =(Stack_Mem + Stack_Size)
                 LDR     R2, = (Heap_Mem +  Heap_Size)
                 LDR     R3, = Stack_Mem
                 BX      LR

                 ALIGN

                 ENDIF

                 END

;/******************* (C) COPYRIGHT 2014 GIGADEVICE *****END OF FILE****/
分享到:
回复

使用道具 举报

回答|共 4 个

倒序浏览

沙发

孤王-2030543

发表于 2015-7-1 21:28:49 | 只看该作者

额,乱码,我的错。keil直接辅助过来有乱码。下面我传个文件吧
板凳

孤王-2030543

发表于 2015-7-1 21:30:10 | 只看该作者

下面附件就是了,内容不多,但是看了之后对启动还是有帮助的。

startup_gd32f1x0.zip

2.57 KB, 下载次数: 13

地板

trochili

发表于 2015-7-1 21:54:31 | 只看该作者

乱码有点而烦人呢
eeboard大力支持的开源RTOS -- Trochili RTOS
5#

奋斗哥

发表于 2015-7-2 09:15:46 | 只看该作者

多谢楼主分享
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条