# Static Call Graph for image ..\OBJ\bootloader.axf

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Fri Aug 11 14:43:15 2023

### Maximum Stack Usage = 1088 bytes + Unknown(Cycles, Untraceable Function Pointers)

### Call chain for Maximum Stack Depth:

main ⇒ BootLoader_Brance ⇒ clear_ota_message_config_block ⇒ W25Q32_Erase64K ⇒ W25Q32_Enable ⇒ W25Q32_WaitBusy ⇒ SPI0_ReadWriteByte

### Mutually Recursive functions

- ADC0_1_IRQHandler ⇒ ADC0_1_IRQHandler

  ### Function Pointers

  - ADC0_1_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - ADC2_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - BusFault_Handler from gd32f10x_it.o(i.BusFault_Handler) referenced from startup_gd32f10x_xd.o(RESET)
  - CAN0_EWMC_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - CAN0_RX1_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - DMA0_Channel0_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - DMA0_Channel1_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - DMA0_Channel2_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - DMA0_Channel3_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - DMA0_Channel4_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - DMA0_Channel5_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - DMA0_Channel6_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - DMA1_Channel0_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - DMA1_Channel1_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - DMA1_Channel2_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - DMA1_Channel3_4_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - DebugMon_Handler from gd32f10x_it.o(i.DebugMon_Handler) referenced from startup_gd32f10x_xd.o(RESET)
  - EXMC_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - EXTI0_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - EXTI10_15_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - EXTI1_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - EXTI2_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - EXTI3_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - EXTI4_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - EXTI5_9_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - FMC_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - HardFault_Handler from gd32f10x_it.o(i.HardFault_Handler) referenced from startup_gd32f10x_xd.o(RESET)
  - I2C0_ER_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - I2C0_EV_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - I2C1_ER_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - I2C1_EV_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - LVD_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - MemManage_Handler from gd32f10x_it.o(i.MemManage_Handler) referenced from startup_gd32f10x_xd.o(RESET)
  - NMI_Handler from gd32f10x_it.o(i.NMI_Handler) referenced from startup_gd32f10x_xd.o(RESET)
  - PendSV_Handler from gd32f10x_it.o(i.PendSV_Handler) referenced from startup_gd32f10x_xd.o(RESET)
  - RCU_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - RTC_Alarm_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - RTC_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - Reset_Handler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - SDIO_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - SPI0_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - SPI1_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - SPI2_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - SVC_Handler from gd32f10x_it.o(i.SVC_Handler) referenced from startup_gd32f10x_xd.o(RESET)
  - SysTick_Handler from gd32f10x_it.o(i.SysTick_Handler) referenced from startup_gd32f10x_xd.o(RESET)
  - SystemInit from system_gd32f10x.o(i.SystemInit) referenced from startup_gd32f10x_xd.o(.text)
  - TAMPER_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - TIMER0_BRK_TIMER8_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - TIMER0_Channel_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - TIMER0_TRG_CMT_TIMER10_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - TIMER0_UP_TIMER9_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - TIMER1_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - TIMER2_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - TIMER3_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - TIMER4_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - TIMER5_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - TIMER6_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - TIMER7_BRK_TIMER11_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - TIMER7_Channel_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - TIMER7_TRG_CMT_TIMER13_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - TIMER7_UP_TIMER12_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - UART3_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - UART4_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - USART0_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - USART1_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - USART2_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - USBD_HP_CAN0_TX_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - USBD_LP_CAN0_RX0_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - USBD_WKUP_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - UsageFault_Handler from gd32f10x_it.o(i.UsageFault_Handler) referenced from startup_gd32f10x_xd.o(RESET)
  - WWDGT_IRQHandler from startup_gd32f10x_xd.o(.text) referenced from startup_gd32f10x_xd.o(RESET)
  - __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_gd32f10x_xd.o(.text)
  - main from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)

  ### Global Symbols

  __main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(.text)

  _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))

  _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
  [Calls]

  - >> __scatterload

  __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
  [Called By]

  - >> __scatterload

  _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))

  _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))

  _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))

  __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))

  __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))

  MSR_SP (Thumb, 6 bytes, Stack size 0 bytes, boot.o(.emb_text))
  [Called By]

  - >> LOAD_A

  Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  ADC0_1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Calls]

  - >> ADC0_1_IRQHandler
  [Called By]
  - >> ADC0_1_IRQHandler
  [Address Reference Count : 1]
  - startup_gd32f10x_xd.o(RESET)

  ADC2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  CAN0_EWMC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  CAN0_RX1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  DMA0_Channel0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  DMA0_Channel1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  DMA0_Channel2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  DMA0_Channel3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  DMA0_Channel4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  DMA0_Channel5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  DMA0_Channel6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  DMA1_Channel0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  DMA1_Channel1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  DMA1_Channel2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  DMA1_Channel3_4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  EXMC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  EXTI0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  EXTI10_15_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  EXTI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  EXTI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  EXTI3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  EXTI4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  EXTI5_9_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  FMC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  I2C0_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  I2C0_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  I2C1_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  I2C1_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  LVD_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  RCU_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  RTC_Alarm_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  RTC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  SDIO_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  SPI0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  SPI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  SPI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TAMPER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TIMER0_BRK_TIMER8_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TIMER0_Channel_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TIMER0_TRG_CMT_TIMER10_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TIMER0_UP_TIMER9_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TIMER1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TIMER2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TIMER3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TIMER4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TIMER5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TIMER6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TIMER7_BRK_TIMER11_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TIMER7_Channel_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TIMER7_TRG_CMT_TIMER13_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  TIMER7_UP_TIMER12_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  UART3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  UART4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  USART0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  USART1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  USART2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  USBD_HP_CAN0_TX_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  USBD_LP_CAN0_RX0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  USBD_WKUP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  WWDGT_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_gd32f10x_xd.o(.text))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
  [Called By]

  - >> _memset$wrapper
  - >> __aeabi_memclr

  __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

  __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

  __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_memset

  __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
  [Called By]

  - >> BootLoader_Brance

  __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

  _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_memset

  __scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text))
  [Calls]

  - >> __main_after_scatterload
  [Called By]
  - >> _main_scatterload

  __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)

  BootLoader_Brance (Thumb, 154 bytes, Stack size 1040 bytes, boot.o(i.BootLoader_Brance))
  [Stack]

  - Max Depth = 1088
  - Call Chain = BootLoader_Brance ⇒ clear_ota_message_config_block ⇒ W25Q32_Erase64K ⇒ W25Q32_Enable ⇒ W25Q32_WaitBusy ⇒ SPI0_ReadWriteByte
  [Calls]
  - >> task_fwdgt_reload
  - >> clear_ota_message_config_block
  - >> W25Q32_Read
  - >> GD32_WriteFlash
  - >> GD32_EraseFlash
  - >> LOAD_A
  - >> __aeabi_memclr4
  [Called By]
  - >> main

  BootLoader_Clear (Thumb, 16 bytes, Stack size 8 bytes, boot.o(i.BootLoader_Clear))
  [Stack]

  - Max Depth = 16
  - Call Chain = BootLoader_Clear ⇒ gpio_deinit
  [Calls]
  - >> gpio_deinit
  [Called By]
  - >> LOAD_A

  BusFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, gd32f10x_it.o(i.BusFault_Handler))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  DebugMon_Handler (Thumb, 2 bytes, Stack size 0 bytes, gd32f10x_it.o(i.DebugMon_Handler))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  Delay_Init (Thumb, 10 bytes, Stack size 8 bytes, delay.o(i.Delay_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = Delay_Init
  [Calls]
  - >> systick_clksource_set
  [Called By]
  - >> main

  GD32_EraseFlash (Thumb, 48 bytes, Stack size 16 bytes, fmc.o(i.GD32_EraseFlash))
  [Stack]

  - Max Depth = 32
  - Call Chain = GD32_EraseFlash ⇒ fmc_page_erase ⇒ fmc_bank1_ready_wait
  [Calls]
  - >> fmc_unlock
  - >> fmc_page_erase
  - >> fmc_lock
  [Called By]
  - >> BootLoader_Brance

  GD32_WriteFlash (Thumb, 38 bytes, Stack size 16 bytes, fmc.o(i.GD32_WriteFlash))
  [Stack]

  - Max Depth = 36
  - Call Chain = GD32_WriteFlash ⇒ fmc_word_program ⇒ fmc_bank1_ready_wait
  [Calls]
  - >> fmc_word_program
  - >> fmc_unlock
  - >> fmc_lock
  [Called By]
  - >> BootLoader_Brance

  HardFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, gd32f10x_it.o(i.HardFault_Handler))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  LOAD_A (Thumb, 44 bytes, Stack size 8 bytes, boot.o(i.LOAD_A))
  [Stack]

  - Max Depth = 24
  - Call Chain = LOAD_A ⇒ BootLoader_Clear ⇒ gpio_deinit
  [Calls]
  - >> BootLoader_Clear
  - >> MSR_SP
  [Called By]
  - >> BootLoader_Brance
  - >> main

  MemManage_Handler (Thumb, 4 bytes, Stack size 0 bytes, gd32f10x_it.o(i.MemManage_Handler))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  NMI_Handler (Thumb, 2 bytes, Stack size 0 bytes, gd32f10x_it.o(i.NMI_Handler))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, gd32f10x_it.o(i.PendSV_Handler))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  SPI0_Init (Thumb, 94 bytes, Stack size 32 bytes, spi.o(i.SPI0_Init))
  [Stack]

  - Max Depth = 52
  - Call Chain = SPI0_Init ⇒ gpio_init
  [Calls]
  - >> spi_init
  - >> spi_i2s_deinit
  - >> spi_enable
  - >> rcu_periph_clock_enable
  - >> gpio_init
  [Called By]
  - >> W25Q32_Init

  SPI0_Read (Thumb, 28 bytes, Stack size 16 bytes, spi.o(i.SPI0_Read))
  [Stack]

  - Max Depth = 24
  - Call Chain = SPI0_Read ⇒ SPI0_ReadWriteByte
  [Calls]
  - >> SPI0_ReadWriteByte
  [Called By]
  - >> W25Q32_Read

  SPI0_ReadWriteByte (Thumb, 50 bytes, Stack size 8 bytes, spi.o(i.SPI0_ReadWriteByte))
  [Stack]

  - Max Depth = 8
  - Call Chain = SPI0_ReadWriteByte
  [Calls]
  - >> spi_i2s_flag_get
  - >> spi_i2s_data_transmit
  - >> spi_i2s_data_receive
  [Called By]
  - >> W25Q32_WaitBusy
  - >> W25Q32_Enable
  - >> SPI0_Write
  - >> SPI0_Read

  SPI0_Write (Thumb, 26 bytes, Stack size 16 bytes, spi.o(i.SPI0_Write))
  [Stack]

  - Max Depth = 24
  - Call Chain = SPI0_Write ⇒ SPI0_ReadWriteByte
  [Calls]
  - >> SPI0_ReadWriteByte
  [Called By]
  - >> W25Q32_Erase64K
  - >> W25Q32_Read

  SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, gd32f10x_it.o(i.SVC_Handler))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  SysTick_Handler (Thumb, 2 bytes, Stack size 0 bytes, gd32f10x_it.o(i.SysTick_Handler))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  SystemInit (Thumb, 196 bytes, Stack size 8 bytes, system_gd32f10x.o(i.SystemInit))
  [Stack]

  - Max Depth = 16
  - Call Chain = SystemInit ⇒ system_clock_config
  [Calls]
  - >> nvic_vector_table_set
  - >> system_clock_config
  [Address Reference Count : 1]
  - startup_gd32f10x_xd.o(.text)

  UsageFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, gd32f10x_it.o(i.UsageFault_Handler))
  [Address Reference Count : 1]

  - startup_gd32f10x_xd.o(RESET)

  W25Q32_Enable (Thumb, 30 bytes, Stack size 8 bytes, w25q32.o(i.W25Q32_Enable))
  [Stack]

  - Max Depth = 24
  - Call Chain = W25Q32_Enable ⇒ W25Q32_WaitBusy ⇒ SPI0_ReadWriteByte
  [Calls]
  - >> gpio_bit_set
  - >> gpio_bit_reset
  - >> W25Q32_WaitBusy
  - >> SPI0_ReadWriteByte
  [Called By]
  - >> W25Q32_Erase64K

  W25Q32_Erase64K (Thumb, 70 bytes, Stack size 16 bytes, w25q32.o(i.W25Q32_Erase64K))
  [Stack]

  - Max Depth = 40
  - Call Chain = W25Q32_Erase64K ⇒ W25Q32_Enable ⇒ W25Q32_WaitBusy ⇒ SPI0_ReadWriteByte
  [Calls]
  - >> gpio_bit_set
  - >> gpio_bit_reset
  - >> W25Q32_WaitBusy
  - >> W25Q32_Enable
  - >> SPI0_Write
  [Called By]
  - >> clear_ota_message_config_block

  W25Q32_Init (Thumb, 36 bytes, Stack size 8 bytes, w25q32.o(i.W25Q32_Init))
  [Stack]

  - Max Depth = 60
  - Call Chain = W25Q32_Init ⇒ SPI0_Init ⇒ gpio_init
  [Calls]
  - >> gpio_bit_set
  - >> rcu_periph_clock_enable
  - >> gpio_init
  - >> SPI0_Init
  [Called By]
  - >> main

  W25Q32_Read (Thumb, 70 bytes, Stack size 24 bytes, w25q32.o(i.W25Q32_Read))
  [Stack]

  - Max Depth = 48
  - Call Chain = W25Q32_Read ⇒ SPI0_Write ⇒ SPI0_ReadWriteByte
  [Calls]
  - >> gpio_bit_set
  - >> gpio_bit_reset
  - >> W25Q32_WaitBusy
  - >> SPI0_Write
  - >> SPI0_Read
  [Called By]
  - >> load_ota_message_config_params
  - >> BootLoader_Brance

  W25Q32_WaitBusy (Thumb, 44 bytes, Stack size 8 bytes, w25q32.o(i.W25Q32_WaitBusy))
  [Stack]

  - Max Depth = 16
  - Call Chain = W25Q32_WaitBusy ⇒ SPI0_ReadWriteByte
  [Calls]
  - >> gpio_bit_set
  - >> gpio_bit_reset
  - >> SPI0_ReadWriteByte
  [Called By]
  - >> W25Q32_Erase64K
  - >> W25Q32_Enable
  - >> W25Q32_Read

  __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)

  __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)

  __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)

  clear_ota_message_config_block (Thumb, 10 bytes, Stack size 8 bytes, ota_message.o(i.clear_ota_message_config_block))
  [Stack]

  - Max Depth = 48
  - Call Chain = clear_ota_message_config_block ⇒ W25Q32_Erase64K ⇒ W25Q32_Enable ⇒ W25Q32_WaitBusy ⇒ SPI0_ReadWriteByte
  [Calls]
  - >> W25Q32_Erase64K
  [Called By]
  - >> BootLoader_Brance

  fmc_bank0_ready_wait (Thumb, 34 bytes, Stack size 4 bytes, gd32f10x_fmc.o(i.fmc_bank0_ready_wait))
  [Stack]

  - Max Depth = 4
  - Call Chain = fmc_bank0_ready_wait
  [Calls]
  - >> fmc_bank0_state_get
  [Called By]
  - >> fmc_word_program
  - >> fmc_page_erase

  fmc_bank0_state_get (Thumb, 44 bytes, Stack size 0 bytes, gd32f10x_fmc.o(i.fmc_bank0_state_get))
  [Called By]

  - >> fmc_bank0_ready_wait

  fmc_bank1_ready_wait (Thumb, 34 bytes, Stack size 4 bytes, gd32f10x_fmc.o(i.fmc_bank1_ready_wait))
  [Stack]

  - Max Depth = 4
  - Call Chain = fmc_bank1_ready_wait
  [Calls]
  - >> fmc_bank1_state_get
  [Called By]
  - >> fmc_word_program
  - >> fmc_page_erase

  fmc_bank1_state_get (Thumb, 44 bytes, Stack size 0 bytes, gd32f10x_fmc.o(i.fmc_bank1_state_get))
  [Called By]

  - >> fmc_bank1_ready_wait

  fmc_lock (Thumb, 34 bytes, Stack size 0 bytes, gd32f10x_fmc.o(i.fmc_lock))
  [Called By]

  - >> GD32_WriteFlash
  - >> GD32_EraseFlash

  fmc_page_erase (Thumb, 222 bytes, Stack size 12 bytes, gd32f10x_fmc.o(i.fmc_page_erase))
  [Stack]

  - Max Depth = 16
  - Call Chain = fmc_page_erase ⇒ fmc_bank1_ready_wait
  [Calls]
  - >> fmc_bank1_ready_wait
  - >> fmc_bank0_ready_wait
  [Called By]
  - >> GD32_EraseFlash

  fmc_unlock (Thumb, 52 bytes, Stack size 0 bytes, gd32f10x_fmc.o(i.fmc_unlock))
  [Called By]

  - >> GD32_WriteFlash
  - >> GD32_EraseFlash

  fmc_word_program (Thumb, 178 bytes, Stack size 16 bytes, gd32f10x_fmc.o(i.fmc_word_program))
  [Stack]

  - Max Depth = 20
  - Call Chain = fmc_word_program ⇒ fmc_bank1_ready_wait
  [Calls]
  - >> fmc_bank1_ready_wait
  - >> fmc_bank0_ready_wait
  [Called By]
  - >> GD32_WriteFlash

  fwdgt_counter_reload (Thumb, 10 bytes, Stack size 0 bytes, gd32f10x_fwdgt.o(i.fwdgt_counter_reload))
  [Called By]

  - >> task_fwdgt_reload

  fwdgt_write_enable (Thumb, 10 bytes, Stack size 0 bytes, gd32f10x_fwdgt.o(i.fwdgt_write_enable))
  [Called By]

  - >> task_fwdgt_reload

  get_config_params (Thumb, 4 bytes, Stack size 0 bytes, ota_message.o(i.get_config_params))
  [Called By]

  - >> main

  gpio_bit_reset (Thumb, 4 bytes, Stack size 0 bytes, gd32f10x_gpio.o(i.gpio_bit_reset))
  [Called By]

  - >> W25Q32_WaitBusy
  - >> W25Q32_Erase64K
  - >> W25Q32_Enable
  - >> W25Q32_Read

  gpio_bit_set (Thumb, 4 bytes, Stack size 0 bytes, gd32f10x_gpio.o(i.gpio_bit_set))
  [Called By]

  - >> W25Q32_WaitBusy
  - >> W25Q32_Init
  - >> W25Q32_Erase64K
  - >> W25Q32_Enable
  - >> W25Q32_Read

  gpio_deinit (Thumb, 186 bytes, Stack size 8 bytes, gd32f10x_gpio.o(i.gpio_deinit))
  [Stack]

  - Max Depth = 8
  - Call Chain = gpio_deinit
  [Calls]
  - >> rcu_periph_reset_enable
  - >> rcu_periph_reset_disable
  [Called By]
  - >> BootLoader_Clear

  gpio_init (Thumb, 172 bytes, Stack size 20 bytes, gd32f10x_gpio.o(i.gpio_init))
  [Stack]

  - Max Depth = 20
  - Call Chain = gpio_init
  [Called By]
  - >> W25Q32_Init
  - >> SPI0_Init

  load_ota_message_config_params (Thumb, 36 bytes, Stack size 8 bytes, ota_message.o(i.load_ota_message_config_params))
  [Stack]

  - Max Depth = 56
  - Call Chain = load_ota_message_config_params ⇒ W25Q32_Read ⇒ SPI0_Write ⇒ SPI0_ReadWriteByte
  [Calls]
  - >> W25Q32_Read
  [Called By]
  - >> main

  main (Thumb, 42 bytes, Stack size 0 bytes, main.o(i.main))
  [Stack]

  - Max Depth = 1088
  - Call Chain = main ⇒ BootLoader_Brance ⇒ clear_ota_message_config_block ⇒ W25Q32_Erase64K ⇒ W25Q32_Enable ⇒ W25Q32_WaitBusy ⇒ SPI0_ReadWriteByte
  [Calls]
  - >> load_ota_message_config_params
  - >> get_config_params
  - >> W25Q32_Init
  - >> Delay_Init
  - >> task_fwdgt_reload
  - >> LOAD_A
  - >> BootLoader_Brance
  [Address Reference Count : 1]
  - entry9a.o(.ARM.Collect$$$$0000000B)

  nvic_vector_table_set (Thumb, 16 bytes, Stack size 0 bytes, gd32f10x_misc.o(i.nvic_vector_table_set))
  [Called By]

  - >> SystemInit

  rcu_periph_clock_enable (Thumb, 28 bytes, Stack size 0 bytes, gd32f10x_rcu.o(i.rcu_periph_clock_enable))
  [Called By]

  - >> W25Q32_Init
  - >> SPI0_Init

  rcu_periph_reset_disable (Thumb, 28 bytes, Stack size 0 bytes, gd32f10x_rcu.o(i.rcu_periph_reset_disable))
  [Called By]

  - >> spi_i2s_deinit
  - >> gpio_deinit

  rcu_periph_reset_enable (Thumb, 28 bytes, Stack size 0 bytes, gd32f10x_rcu.o(i.rcu_periph_reset_enable))
  [Called By]

  - >> spi_i2s_deinit
  - >> gpio_deinit

  spi_enable (Thumb, 10 bytes, Stack size 0 bytes, gd32f10x_spi.o(i.spi_enable))
  [Called By]

  - >> SPI0_Init

  spi_i2s_data_receive (Thumb, 8 bytes, Stack size 0 bytes, gd32f10x_spi.o(i.spi_i2s_data_receive))
  [Called By]

  - >> SPI0_ReadWriteByte

  spi_i2s_data_transmit (Thumb, 4 bytes, Stack size 0 bytes, gd32f10x_spi.o(i.spi_i2s_data_transmit))
  [Called By]

  - >> SPI0_ReadWriteByte

  spi_i2s_deinit (Thumb, 82 bytes, Stack size 8 bytes, gd32f10x_spi.o(i.spi_i2s_deinit))
  [Stack]

  - Max Depth = 8
  - Call Chain = spi_i2s_deinit
  [Calls]
  - >> rcu_periph_reset_enable
  - >> rcu_periph_reset_disable
  [Called By]
  - >> SPI0_Init

  spi_i2s_flag_get (Thumb, 16 bytes, Stack size 0 bytes, gd32f10x_spi.o(i.spi_i2s_flag_get))
  [Called By]

  - >> SPI0_ReadWriteByte

  spi_init (Thumb, 50 bytes, Stack size 0 bytes, gd32f10x_spi.o(i.spi_init))
  [Called By]

  - >> SPI0_Init

  systick_clksource_set (Thumb, 40 bytes, Stack size 0 bytes, gd32f10x_misc.o(i.systick_clksource_set))
  [Called By]

  - >> Delay_Init

  task_fwdgt_reload (Thumb, 12 bytes, Stack size 8 bytes, main.o(i.task_fwdgt_reload))
  [Stack]

  - Max Depth = 8
  - Call Chain = task_fwdgt_reload
  [Calls]
  - >> fwdgt_write_enable
  - >> fwdgt_counter_reload
  [Called By]
  - >> BootLoader_Brance
  - >> main

  ### Local Symbols

  system_clock_108m_hxtal (Thumb, 182 bytes, Stack size 0 bytes, system_gd32f10x.o(i.system_clock_108m_hxtal))
  [Called By]

  - >> system_clock_config

  system_clock_config (Thumb, 8 bytes, Stack size 8 bytes, system_gd32f10x.o(i.system_clock_config))
  [Stack]

  - Max Depth = 8
  - Call Chain = system_clock_config
  [Calls]
  - >> system_clock_108m_hxtal
  [Called By]
  - >> SystemInit

  ### Undefined Global Symbols