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

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Thu Nov 02 10:30:45 2023

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

### Call chain for Maximum Stack Depth:

main ⇒ BootLoader_Brance ⇒ WaitForReadData ⇒ find_string ⇒ strstr

### 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 gd32f10x_it.o(i.DMA0_Channel4_IRQHandler) 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 gd32f10x_it.o(i.USART0_IRQHandler) 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)
  - _sbackspace from _sgetc.o(.text) referenced from __0sscanf.o(.text)
  - _scanf_char_input from scanf_char.o(.text) referenced from scanf_char.o(.text)
  - _sgetc from _sgetc.o(.text) referenced from __0sscanf.o(.text)
  - isspace from isspace_c.o(.text) referenced from scanf_char.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_lib_shutdown_fini (Thumb, 0 bytes, Stack size unknown bytes, entry12b.o(.ARM.Collect$$$$0000000E))

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

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

  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_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)

  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_memcpy (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text))
  [Called By]

  - >> WaitForReadData

  __aeabi_memcpy4 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)

  __aeabi_memcpy8 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)

  __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text))
  [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))
  [Calls]

  - >> __aeabi_memset
  [Called By]
  - >> load_ota_message_config_params
  - >> Clear_DMA_Buffer

  __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

  strstr (Thumb, 36 bytes, Stack size 12 bytes, strstr.o(.text))
  [Stack]

  - Max Depth = 12
  - Call Chain = strstr
  [Called By]
  - >> find_string
  - >> WaitResponse
  - >> find_string

  strchr (Thumb, 20 bytes, Stack size 0 bytes, strchr.o(.text))
  [Called By]

  - >> extract_data_from_buffer

  __0sscanf (Thumb, 48 bytes, Stack size 72 bytes, __0sscanf.o(.text))
  [Stack]

  - Max Depth = 216
  - Call Chain = __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int
  [Calls]
  - >> __vfscanf_char
  [Called By]
  - >> extract_data_from_buffer

  _scanf_int (Thumb, 332 bytes, Stack size 56 bytes, _scanf_int.o(.text))
  [Stack]

  - Max Depth = 56
  - Call Chain = _scanf_int
  [Calls]
  - >> _chval
  [Called By]
  - >> __vfscanf

  _chval (Thumb, 28 bytes, Stack size 0 bytes, _chval.o(.text))
  [Called By]

  - >> _scanf_int

  __vfscanf_char (Thumb, 20 bytes, Stack size 0 bytes, scanf_char.o(.text))
  [Stack]

  - Max Depth = 144
  - Call Chain = __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int
  [Calls]
  - >> __vfscanf
  [Called By]
  - >> __0sscanf

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

  - __0sscanf.o(.text)

  _sbackspace (Thumb, 34 bytes, Stack size 0 bytes, _sgetc.o(.text))
  [Address Reference Count : 1]

  - __0sscanf.o(.text)

  __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)

  isspace (Thumb, 10 bytes, Stack size 0 bytes, isspace_c.o(.text))
  [Calls]

  - >> __ctype_lookup
  [Address Reference Count : 1]
  - scanf_char.o(.text)

  __vfscanf (Thumb, 810 bytes, Stack size 88 bytes, _scanf.o(.text))
  [Stack]

  - Max Depth = 144
  - Call Chain = __vfscanf ⇒ _scanf_int
  [Calls]
  - >> _scanf_int
  [Called By]
  - >> __vfscanf_char

  __ctype_lookup (Thumb, 34 bytes, Stack size 0 bytes, ctype_c.o(.text))
  [Called By]

  - >> isspace

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

  - Max Depth = 1108
  - Call Chain = BootLoader_Brance ⇒ WaitForReadData ⇒ find_string ⇒ strstr
  [Calls]
  - >> task_fwdgt_reload
  - >> clear_ota_message_config_block
  - >> WaitResponse
  - >> GD32_WriteFlash
  - >> GD32_EraseFlash
  - >> EC800MSendCmd
  - >> Delay_Ms
  - >> WaitForReadData
  - >> 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)

  Clear_DMA_Buffer (Thumb, 20 bytes, Stack size 8 bytes, usart.o(i.Clear_DMA_Buffer))
  [Stack]

  - Max Depth = 8
  - Call Chain = Clear_DMA_Buffer
  [Calls]
  - >> __aeabi_memclr
  [Called By]
  - >> WaitResponse
  - >> WaitForReadData

  DMA0_Channel4_IRQHandler (Thumb, 14 bytes, Stack size 8 bytes, gd32f10x_it.o(i.DMA0_Channel4_IRQHandler))
  [Stack]

  - Max Depth = 16
  - Call Chain = DMA0_Channel4_IRQHandler ⇒ dma_interrupt_flag_clear
  [Calls]
  - >> dma_interrupt_flag_clear
  [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

  Delay_Ms (Thumb, 26 bytes, Stack size 4 bytes, delay.o(i.Delay_Ms))
  [Stack]

  - Max Depth = 4
  - Call Chain = Delay_Ms
  [Calls]
  - >> Delay_Us
  [Called By]
  - >> EC800MPwoerOn
  - >> load_ota_message_config_params
  - >> WaitResponse
  - >> WaitForReadData
  - >> BootLoader_Brance

  Delay_Us (Thumb, 58 bytes, Stack size 0 bytes, delay.o(i.Delay_Us))
  [Called By]

  - >> Delay_Ms

  EC800MPwoerOn (Thumb, 82 bytes, Stack size 8 bytes, ec800m.o(i.EC800MPwoerOn))
  [Stack]

  - Max Depth = 28
  - Call Chain = EC800MPwoerOn ⇒ gpio_init
  [Calls]
  - >> gd_pull_EC800M_rst_up
  - >> gd_pull_EC800M_rst_down
  - >> gd_pull_EC800M_pwr_up
  - >> gd_pull_EC800M_pwr_down
  - >> gpio_bit_set
  - >> rcu_periph_clock_enable
  - >> gpio_init
  - >> Delay_Ms
  [Called By]
  - >> main

  EC800MSendCmd (Thumb, 48 bytes, Stack size 24 bytes, ec800m.o(i.EC800MSendCmd))
  [Stack]

  - Max Depth = 32
  - Call Chain = EC800MSendCmd ⇒ usart_flag_get
  [Calls]
  - >> usart_flag_get
  - >> usart_data_transmit
  [Called By]
  - >> load_ota_message_config_params
  - >> clear_ota_message_config_block
  - >> BootLoader_Brance

  EC800MWaitReady (Thumb, 14 bytes, Stack size 8 bytes, ec800m.o(i.EC800MWaitReady))
  [Stack]

  - Max Depth = 44
  - Call Chain = EC800MWaitReady ⇒ WaitResponse ⇒ strstr
  [Calls]
  - >> WaitResponse
  [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)

  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)

  USART0_IRQHandler (Thumb, 50 bytes, Stack size 8 bytes, gd32f10x_it.o(i.USART0_IRQHandler))
  [Stack]

  - Max Depth = 24
  - Call Chain = USART0_IRQHandler ⇒ usart_interrupt_flag_get
  [Calls]
  - >> usart_interrupt_flag_get
  - >> usart_interrupt_flag_clear
  - >> usart_data_receive
  - >> dma_channel_enable
  - >> dma_channel_disable
  [Address Reference Count : 1]
  - startup_gd32f10x_xd.o(RESET)

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

  - startup_gd32f10x_xd.o(RESET)

  WaitForReadData (Thumb, 100 bytes, Stack size 24 bytes, boot.o(i.WaitForReadData))
  [Stack]

  - Max Depth = 68
  - Call Chain = WaitForReadData ⇒ find_string ⇒ strstr
  [Calls]
  - >> Delay_Ms
  - >> Clear_DMA_Buffer
  - >> find_string
  - >> __aeabi_memcpy
  [Called By]
  - >> BootLoader_Brance

  WaitForUpData (Thumb, 60 bytes, Stack size 24 bytes, ota_message.o(i.WaitForUpData))
  [Stack]

  - Max Depth = 272
  - Call Chain = WaitForUpData ⇒ extract_data_from_buffer ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int
  [Calls]
  - >> extract_data_from_buffer
  - >> checksum
  [Called By]
  - >> load_ota_message_config_params

  WaitResponse (Thumb, 82 bytes, Stack size 24 bytes, ec800m.o(i.WaitResponse))
  [Stack]

  - Max Depth = 36
  - Call Chain = WaitResponse ⇒ strstr
  [Calls]
  - >> Delay_Ms
  - >> Clear_DMA_Buffer
  - >> strstr
  [Called By]
  - >> EC800MWaitReady
  - >> clear_ota_message_config_block
  - >> BootLoader_Brance

  __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, 116 bytes, Stack size 8 bytes, ota_message.o(i.clear_ota_message_config_block))
  [Stack]

  - Max Depth = 44
  - Call Chain = clear_ota_message_config_block ⇒ WaitResponse ⇒ strstr
  [Calls]
  - >> WaitResponse
  - >> EC800MSendCmd
  [Called By]
  - >> BootLoader_Brance

  dma_channel_disable (Thumb, 50 bytes, Stack size 16 bytes, gd32f10x_dma.o(i.dma_channel_disable))
  [Stack]

  - Max Depth = 16
  - Call Chain = dma_channel_disable
  [Calls]
  - >> dma_periph_and_channel_check
  [Called By]
  - >> USART0_IRQHandler

  dma_channel_enable (Thumb, 50 bytes, Stack size 16 bytes, gd32f10x_dma.o(i.dma_channel_enable))
  [Stack]

  - Max Depth = 16
  - Call Chain = dma_channel_enable
  [Calls]
  - >> dma_periph_and_channel_check
  [Called By]
  - >> dma_config_change
  - >> dma_config
  - >> USART0_IRQHandler

  dma_circulation_disable (Thumb, 50 bytes, Stack size 16 bytes, gd32f10x_dma.o(i.dma_circulation_disable))
  [Stack]

  - Max Depth = 16
  - Call Chain = dma_circulation_disable
  [Calls]
  - >> dma_periph_and_channel_check
  [Called By]
  - >> dma_config_change
  - >> dma_config

  dma_config (Thumb, 122 bytes, Stack size 32 bytes, usart.o(i.dma_config))
  [Stack]

  - Max Depth = 56
  - Call Chain = dma_config ⇒ dma_init
  [Calls]
  - >> usart_dma_transmit_config
  - >> dma_memory_to_memory_disable
  - >> dma_interrupt_enable
  - >> dma_init
  - >> dma_deinit
  - >> dma_circulation_disable
  - >> rcu_periph_clock_enable
  - >> dma_channel_enable
  [Called By]
  - >> load_ota_message_config_params
  - >> main

  dma_config_change (Thumb, 120 bytes, Stack size 40 bytes, usart.o(i.dma_config_change))
  [Stack]

  - Max Depth = 64
  - Call Chain = dma_config_change ⇒ dma_init
  [Calls]
  - >> usart_dma_transmit_config
  - >> dma_memory_to_memory_disable
  - >> dma_interrupt_enable
  - >> dma_init
  - >> dma_deinit
  - >> dma_circulation_disable
  - >> rcu_periph_clock_enable
  - >> dma_channel_enable
  [Called By]
  - >> load_ota_message_config_params

  dma_deinit (Thumb, 112 bytes, Stack size 16 bytes, gd32f10x_dma.o(i.dma_deinit))
  [Stack]

  - Max Depth = 16
  - Call Chain = dma_deinit
  [Calls]
  - >> dma_periph_and_channel_check
  [Called By]
  - >> dma_config_change
  - >> dma_config

  dma_init (Thumb, 302 bytes, Stack size 24 bytes, gd32f10x_dma.o(i.dma_init))
  [Stack]

  - Max Depth = 24
  - Call Chain = dma_init
  [Calls]
  - >> dma_periph_and_channel_check
  [Called By]
  - >> dma_config_change
  - >> dma_config

  dma_interrupt_enable (Thumb, 50 bytes, Stack size 16 bytes, gd32f10x_dma.o(i.dma_interrupt_enable))
  [Stack]

  - Max Depth = 16
  - Call Chain = dma_interrupt_enable
  [Calls]
  - >> dma_periph_and_channel_check
  [Called By]
  - >> dma_config_change
  - >> dma_config

  dma_interrupt_flag_clear (Thumb, 16 bytes, Stack size 8 bytes, gd32f10x_dma.o(i.dma_interrupt_flag_clear))
  [Stack]

  - Max Depth = 8
  - Call Chain = dma_interrupt_flag_clear
  [Called By]
  - >> DMA0_Channel4_IRQHandler

  dma_memory_to_memory_disable (Thumb, 50 bytes, Stack size 16 bytes, gd32f10x_dma.o(i.dma_memory_to_memory_disable))
  [Stack]

  - Max Depth = 16
  - Call Chain = dma_memory_to_memory_disable
  [Calls]
  - >> dma_periph_and_channel_check
  [Called By]
  - >> dma_config_change
  - >> dma_config

  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

  free (Thumb, 76 bytes, Stack size 8 bytes, malloc.o(i.free))
  [Stack]

  - Max Depth = 8
  - Call Chain = free
  [Called By]
  - >> load_ota_message_config_params

  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

  gd_EC800M_pin_init (Thumb, 62 bytes, Stack size 8 bytes, usart.o(i.gd_EC800M_pin_init))
  [Stack]

  - Max Depth = 28
  - Call Chain = gd_EC800M_pin_init ⇒ gpio_init
  [Calls]
  - >> rcu_periph_clock_enable
  - >> gpio_init
  [Called By]
  - >> main

  gd_com_init (Thumb, 210 bytes, Stack size 16 bytes, usart.o(i.gd_com_init))
  [Stack]

  - Max Depth = 128
  - Call Chain = gd_com_init ⇒ usart_baudrate_set ⇒ rcu_clock_freq_get
  [Calls]
  - >> usart_word_length_set
  - >> usart_transmit_config
  - >> usart_stop_bit_set
  - >> usart_receive_config
  - >> usart_parity_config
  - >> usart_interrupt_enable
  - >> usart_hardware_flow_rts_config
  - >> usart_hardware_flow_cts_config
  - >> usart_enable
  - >> usart_deinit
  - >> usart_baudrate_set
  - >> gpio_pin_remap_config
  - >> rcu_periph_clock_enable
  - >> gpio_init
  [Called By]
  - >> main

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

  - >> EC800MPwoerOn

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

  - >> EC800MPwoerOn

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

  - >> EC800MPwoerOn

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

  - >> EC800MPwoerOn

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

  - >> main

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

  - >> EC800MPwoerOn

  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]
  - >> gd_com_init
  - >> gd_EC800M_pin_init
  - >> EC800MPwoerOn

  gpio_pin_remap_config (Thumb, 138 bytes, Stack size 20 bytes, gd32f10x_gpio.o(i.gpio_pin_remap_config))
  [Stack]

  - Max Depth = 20
  - Call Chain = gpio_pin_remap_config
  [Called By]
  - >> gd_com_init

  load_ota_message_config_params (Thumb, 122 bytes, Stack size 16 bytes, ota_message.o(i.load_ota_message_config_params))
  [Stack]

  - Max Depth = 288
  - Call Chain = load_ota_message_config_params ⇒ WaitForUpData ⇒ extract_data_from_buffer ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int
  [Calls]
  - >> dma_config_change
  - >> dma_config
  - >> WaitForUpData
  - >> EC800MSendCmd
  - >> Delay_Ms
  - >> malloc
  - >> free
  - >> __aeabi_memclr
  [Called By]
  - >> main

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

  - Max Depth = 1108
  - Call Chain = main ⇒ BootLoader_Brance ⇒ WaitForReadData ⇒ find_string ⇒ strstr
  [Calls]
  - >> nvic_config
  - >> gd_com_init
  - >> gd_EC800M_pin_init
  - >> EC800MWaitReady
  - >> EC800MPwoerOn
  - >> dma_config
  - >> load_ota_message_config_params
  - >> get_config_params
  - >> Delay_Init
  - >> task_fwdgt_reload
  - >> LOAD_A
  - >> BootLoader_Brance
  [Address Reference Count : 1]
  - entry9a.o(.ARM.Collect$$$$0000000B)

  malloc (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))
  [Stack]

  - Max Depth = 20
  - Call Chain = malloc
  [Called By]
  - >> load_ota_message_config_params

  nvic_config (Thumb, 32 bytes, Stack size 8 bytes, usart.o(i.nvic_config))
  [Stack]

  - Max Depth = 32
  - Call Chain = nvic_config ⇒ nvic_irq_enable
  [Calls]
  - >> nvic_priority_group_set
  - >> nvic_irq_enable
  [Called By]
  - >> main

  nvic_irq_enable (Thumb, 162 bytes, Stack size 24 bytes, gd32f10x_misc.o(i.nvic_irq_enable))
  [Stack]

  - Max Depth = 24
  - Call Chain = nvic_irq_enable
  [Calls]
  - >> nvic_priority_group_set
  [Called By]
  - >> nvic_config

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

  - >> nvic_irq_enable
  - >> nvic_config

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

  - >> SystemInit

  rcu_clock_freq_get (Thumb, 264 bytes, Stack size 80 bytes, gd32f10x_rcu.o(i.rcu_clock_freq_get))
  [Stack]

  - Max Depth = 80
  - Call Chain = rcu_clock_freq_get
  [Called By]
  - >> usart_baudrate_set

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

  - >> gd_com_init
  - >> gd_EC800M_pin_init
  - >> EC800MPwoerOn
  - >> dma_config_change
  - >> dma_config

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

  - >> usart_deinit
  - >> gpio_deinit

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

  - >> usart_deinit
  - >> gpio_deinit

  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

  usart_baudrate_set (Thumb, 136 bytes, Stack size 32 bytes, gd32f10x_usart.o(i.usart_baudrate_set))
  [Stack]

  - Max Depth = 112
  - Call Chain = usart_baudrate_set ⇒ rcu_clock_freq_get
  [Calls]
  - >> rcu_clock_freq_get
  [Called By]
  - >> gd_com_init

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

  - >> USART0_IRQHandler

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

  - >> EC800MSendCmd

  usart_deinit (Thumb, 136 bytes, Stack size 8 bytes, gd32f10x_usart.o(i.usart_deinit))
  [Stack]

  - Max Depth = 8
  - Call Chain = usart_deinit
  [Calls]
  - >> rcu_periph_reset_enable
  - >> rcu_periph_reset_disable
  [Called By]
  - >> gd_com_init

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

  - >> dma_config_change
  - >> dma_config

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

  - >> gd_com_init

  usart_flag_get (Thumb, 30 bytes, Stack size 8 bytes, gd32f10x_usart.o(i.usart_flag_get))
  [Stack]

  - Max Depth = 8
  - Call Chain = usart_flag_get
  [Called By]
  - >> EC800MSendCmd

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

  - >> gd_com_init

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

  - >> gd_com_init

  usart_interrupt_enable (Thumb, 26 bytes, Stack size 8 bytes, gd32f10x_usart.o(i.usart_interrupt_enable))
  [Stack]

  - Max Depth = 8
  - Call Chain = usart_interrupt_enable
  [Called By]
  - >> gd_com_init

  usart_interrupt_flag_clear (Thumb, 26 bytes, Stack size 8 bytes, gd32f10x_usart.o(i.usart_interrupt_flag_clear))
  [Stack]

  - Max Depth = 8
  - Call Chain = usart_interrupt_flag_clear
  [Called By]
  - >> USART0_IRQHandler

  usart_interrupt_flag_get (Thumb, 56 bytes, Stack size 16 bytes, gd32f10x_usart.o(i.usart_interrupt_flag_get))
  [Stack]

  - Max Depth = 16
  - Call Chain = usart_interrupt_flag_get
  [Called By]
  - >> USART0_IRQHandler

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

  - >> gd_com_init

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

  - >> gd_com_init

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

  - >> gd_com_init

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

  - >> gd_com_init

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

  - >> gd_com_init

  ### 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

  find_string (Thumb, 64 bytes, Stack size 32 bytes, boot.o(i.find_string))
  [Stack]

  - Max Depth = 44
  - Call Chain = find_string ⇒ strstr
  [Calls]
  - >> strstr
  [Called By]
  - >> WaitForReadData

  checksum (Thumb, 66 bytes, Stack size 16 bytes, ota_message.o(i.checksum))
  [Stack]

  - Max Depth = 16
  - Call Chain = checksum
  [Called By]
  - >> WaitForUpData

  extract_data_from_buffer (Thumb, 80 bytes, Stack size 32 bytes, ota_message.o(i.extract_data_from_buffer))
  [Stack]

  - Max Depth = 248
  - Call Chain = extract_data_from_buffer ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int
  [Calls]
  - >> find_string
  - >> __0sscanf
  - >> strchr
  [Called By]
  - >> WaitForUpData

  find_string (Thumb, 56 bytes, Stack size 24 bytes, ota_message.o(i.find_string))
  [Stack]

  - Max Depth = 36
  - Call Chain = find_string ⇒ strstr
  [Calls]
  - >> strstr
  [Called By]
  - >> extract_data_from_buffer

  dma_periph_and_channel_check (Thumb, 18 bytes, Stack size 0 bytes, gd32f10x_dma.o(i.dma_periph_and_channel_check))
  [Called By]

  - >> dma_memory_to_memory_disable
  - >> dma_interrupt_enable
  - >> dma_init
  - >> dma_deinit
  - >> dma_circulation_disable
  - >> dma_channel_enable
  - >> dma_channel_disable

  _scanf_char_input (Thumb, 12 bytes, Stack size 0 bytes, scanf_char.o(.text))
  [Address Reference Count : 1]

  - scanf_char.o(.text)

  ### Undefined Global Symbols