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

#<CALLGRAPH># ARM Linker, 5060020: Last Updated: Thu Nov 14 17:42:27 2019

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

### Call chain for Maximum Stack Depth:

main ⇒ s600_can_poll ⇒ s600_can_process_command ⇒ s600_can_send_response ⇒ s600_can_send_packet ⇒ s600_can_transmit ⇒ byte_queue_free ⇒ byte_queue_write ⇒ byte_queue_tail_add ⇒ byte_queue_add

### Mutually Recursive functions

- NMI_Handler ⇒ NMI_Handler
- HardFault_Handler ⇒ HardFault_Handler
- MemManage_Handler ⇒ MemManage_Handler
- BusFault_Handler ⇒ BusFault_Handler
- UsageFault_Handler ⇒ UsageFault_Handler
- SVC_Handler ⇒ SVC_Handler
- DebugMon_Handler ⇒ DebugMon_Handler
- PendSV_Handler ⇒ PendSV_Handler
- ADC0_1_IRQHandler ⇒ ADC0_1_IRQHandler

  ### Function Pointers

  - ADC0_1_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - BusFault_Handler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - CAN0_EWMC_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - CAN0_RX1_IRQHandler from s600_can.o(i.CAN0_RX1_IRQHandler) referenced from startup_gd32f10x_md.o(RESET)
  - DMA0_Channel0_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - DMA0_Channel1_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - DMA0_Channel2_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - DMA0_Channel3_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - DMA0_Channel4_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - DMA0_Channel5_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - DMA0_Channel6_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - DebugMon_Handler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - EXMC_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - EXTI0_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - EXTI10_15_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - EXTI1_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - EXTI2_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - EXTI3_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - EXTI4_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - EXTI5_9_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - FMC_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - HardFault_Handler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - I2C0_ER_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - I2C0_EV_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - I2C1_ER_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - I2C1_EV_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - LVD_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - MemManage_Handler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - NMI_Handler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - PendSV_Handler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - RCU_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - RTC_Alarm_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - RTC_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - Reset_Handler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - SPI0_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - SPI1_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - SVC_Handler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - SysTick_Handler from main.o(i.SysTick_Handler) referenced from startup_gd32f10x_md.o(RESET)
  - SystemInit from system_gd32f10x.o(i.SystemInit) referenced from startup_gd32f10x_md.o(.text)
  - TAMPER_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - TIMER0_BRK_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - TIMER0_Channel_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - TIMER0_TRG_CMT_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - TIMER0_UP_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - TIMER1_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - TIMER2_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - TIMER3_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - USART0_IRQHandler from bl_drv_usart.o(i.USART0_IRQHandler) referenced from startup_gd32f10x_md.o(RESET)
  - USART1_IRQHandler from bl_drv_usart_2.o(i.USART1_IRQHandler) referenced from startup_gd32f10x_md.o(RESET)
  - USART2_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - USBD_HP_CAN0_TX_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - USBD_LP_CAN0_RX0_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - USBD_WKUP_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - UsageFault_Handler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - WWDGT_IRQHandler from startup_gd32f10x_md.o(.text) referenced from startup_gd32f10x_md.o(RESET)
  - __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_gd32f10x_md.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_md.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))

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

  - startup_gd32f10x_md.o(RESET)

  NMI_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_gd32f10x_md.o(.text))
  [Calls]

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

  HardFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_gd32f10x_md.o(.text))
  [Calls]

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

  MemManage_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_gd32f10x_md.o(.text))
  [Calls]

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

  BusFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_gd32f10x_md.o(.text))
  [Calls]

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

  UsageFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_gd32f10x_md.o(.text))
  [Calls]

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

  SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_gd32f10x_md.o(.text))
  [Calls]

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

  DebugMon_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_gd32f10x_md.o(.text))
  [Calls]

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

  PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_gd32f10x_md.o(.text))
  [Calls]

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

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

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

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

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

  - startup_gd32f10x_md.o(RESET)

  __aeabi_memcpy (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text))
  [Called By]

  - >> Send_Data_RS485
  - >> Send_Data_2_RS485
  - >> s600_iap_write
  - >> s600_can_send_packet

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

  strcmp (Thumb, 28 bytes, Stack size 8 bytes, strcmp.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = strcmp
  [Called By]
  - >> s600_iap_boot

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

  CAN0_RX1_IRQHandler (Thumb, 22 bytes, Stack size 8 bytes, s600_can.o(i.CAN0_RX1_IRQHandler))
  [Stack]

  - Max Depth = 140
  - Call Chain = CAN0_RX1_IRQHandler ⇒ s600_can_rx_packet ⇒ s600_can_rx_front_get ⇒ byte_queue_alloc ⇒ byte_queue_read ⇒ byte_queue_head_add ⇒ byte_queue_add
  [Calls]
  - >> s600_can_rx_packet
  [Address Reference Count : 1]
  - startup_gd32f10x_md.o(RESET)

  Enable_Uart1_Timer (Thumb, 22 bytes, Stack size 0 bytes, bl_drv_usart.o(i.Enable_Uart1_Timer))
  [Called By]

  - >> USART0_IRQHandler

  Enable_Uart2_Timer (Thumb, 22 bytes, Stack size 0 bytes, bl_drv_usart_2.o(i.Enable_Uart2_Timer))
  [Called By]

  - >> USART1_IRQHandler

  Send_Data_2_RS485 (Thumb, 52 bytes, Stack size 16 bytes, bl_drv_usart_2.o(i.Send_Data_2_RS485))
  [Stack]

  - Max Depth = 24
  - Call Chain = Send_Data_2_RS485 ⇒ usart_interrupt_enable
  [Calls]
  - >> usart_interrupt_enable
  - >> __aeabi_memcpy
  [Called By]
  - >> main

  Send_Data_RS485 (Thumb, 62 bytes, Stack size 16 bytes, bl_drv_usart.o(i.Send_Data_RS485))
  [Stack]

  - Max Depth = 32
  - Call Chain = Send_Data_RS485 ⇒ usart_interrupt_flag_get
  [Calls]
  - >> usart_interrupt_flag_get
  - >> usart_interrupt_enable
  - >> __aeabi_memcpy
  [Called By]
  - >> main

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

  - startup_gd32f10x_md.o(RESET)

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

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

  USART0_IRQHandler (Thumb, 126 bytes, Stack size 8 bytes, bl_drv_usart.o(i.USART0_IRQHandler))
  [Stack]

  - Max Depth = 16
  - Call Chain = USART0_IRQHandler ⇒ usart_interrupt_disable
  [Calls]
  - >> usart_interrupt_disable
  - >> usart_flag_get
  - >> usart_data_transmit
  - >> usart_data_receive
  - >> Enable_Uart1_Timer
  [Address Reference Count : 1]
  - startup_gd32f10x_md.o(RESET)

  USART1_IRQHandler (Thumb, 126 bytes, Stack size 8 bytes, bl_drv_usart_2.o(i.USART1_IRQHandler))
  [Stack]

  - Max Depth = 16
  - Call Chain = USART1_IRQHandler ⇒ usart_interrupt_disable
  [Calls]
  - >> usart_interrupt_disable
  - >> usart_flag_get
  - >> usart_data_transmit
  - >> usart_data_receive
  - >> Enable_Uart2_Timer
  [Address Reference Count : 1]
  - startup_gd32f10x_md.o(RESET)

  Usart1_Initial (Thumb, 152 bytes, Stack size 8 bytes, bl_drv_usart.o(i.Usart1_Initial))
  [Stack]

  - Max Depth = 120
  - Call Chain = Usart1_Initial ⇒ usart_baudrate_set ⇒ rcu_clock_freq_get
  [Calls]
  - >> rcu_periph_clock_enable
  - >> nvic_priority_group_set
  - >> nvic_irq_enable
  - >> gpio_init
  - >> usart_word_length_set
  - >> usart_transmit_config
  - >> usart_stop_bit_set
  - >> usart_receive_config
  - >> usart_parity_config
  - >> usart_hardware_flow_rts_config
  - >> usart_hardware_flow_cts_config
  - >> usart_enable
  - >> usart_deinit
  - >> usart_baudrate_set
  [Called By]
  - >> main

  Usart2_Initial (Thumb, 148 bytes, Stack size 8 bytes, bl_drv_usart_2.o(i.Usart2_Initial))
  [Stack]

  - Max Depth = 120
  - Call Chain = Usart2_Initial ⇒ usart_baudrate_set ⇒ rcu_clock_freq_get
  [Calls]
  - >> rcu_periph_clock_enable
  - >> nvic_priority_group_set
  - >> nvic_irq_enable
  - >> gpio_init
  - >> usart_word_length_set
  - >> usart_transmit_config
  - >> usart_stop_bit_set
  - >> usart_receive_config
  - >> usart_parity_config
  - >> usart_hardware_flow_rts_config
  - >> usart_hardware_flow_cts_config
  - >> usart_enable
  - >> usart_deinit
  - >> usart_baudrate_set
  [Called By]
  - >> main

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

  byte_queue_alloc (Thumb, 28 bytes, Stack size 16 bytes, byte_queue.o(i.byte_queue_alloc))
  [Stack]

  - Max Depth = 68
  - Call Chain = byte_queue_alloc ⇒ byte_queue_read ⇒ byte_queue_head_add ⇒ byte_queue_add
  [Calls]
  - >> byte_queue_read
  [Called By]
  - >> s600_can_send_packet
  - >> s600_can_rx_front_get

  byte_queue_alloc_init (Thumb, 20 bytes, Stack size 16 bytes, byte_queue.o(i.byte_queue_alloc_init))
  [Stack]

  - Max Depth = 24
  - Call Chain = byte_queue_alloc_init ⇒ byte_queue_alloc_reset
  [Calls]
  - >> byte_queue_alloc_reset
  [Called By]
  - >> s600_can_device_config

  byte_queue_alloc_reset (Thumb, 30 bytes, Stack size 8 bytes, byte_queue.o(i.byte_queue_alloc_reset))
  [Stack]

  - Max Depth = 8
  - Call Chain = byte_queue_alloc_reset
  [Called By]
  - >> byte_queue_alloc_init

  byte_queue_free (Thumb, 16 bytes, Stack size 16 bytes, byte_queue.o(i.byte_queue_free))
  [Stack]

  - Max Depth = 76
  - Call Chain = byte_queue_free ⇒ byte_queue_write ⇒ byte_queue_tail_add ⇒ byte_queue_add
  [Calls]
  - >> byte_queue_write
  [Called By]
  - >> s600_can_poll
  - >> s600_can_transmit

  byte_queue_read (Thumb, 62 bytes, Stack size 24 bytes, byte_queue.o(i.byte_queue_read))
  [Stack]

  - Max Depth = 52
  - Call Chain = byte_queue_read ⇒ byte_queue_head_add ⇒ byte_queue_add
  [Calls]
  - >> byte_queue_head_add
  [Called By]
  - >> s600_can_poll
  - >> byte_queue_alloc
  - >> s600_can_transmit

  byte_queue_write (Thumb, 64 bytes, Stack size 32 bytes, byte_queue.o(i.byte_queue_write))
  [Stack]

  - Max Depth = 60
  - Call Chain = byte_queue_write ⇒ byte_queue_tail_add ⇒ byte_queue_add
  [Calls]
  - >> byte_queue_tail_add
  [Called By]
  - >> byte_queue_write_byte
  - >> byte_queue_free

  byte_queue_write_byte (Thumb, 16 bytes, Stack size 16 bytes, byte_queue.o(i.byte_queue_write_byte))
  [Stack]

  - Max Depth = 76
  - Call Chain = byte_queue_write_byte ⇒ byte_queue_write ⇒ byte_queue_tail_add ⇒ byte_queue_add
  [Calls]
  - >> byte_queue_write
  [Called By]
  - >> s600_can_send_packet
  - >> s600_can_rx_packet

  can_deinit (Thumb, 28 bytes, Stack size 8 bytes, gd32f10x_can.o(i.can_deinit))
  [Stack]

  - Max Depth = 8
  - Call Chain = can_deinit
  [Calls]
  - >> rcu_periph_reset_enable
  - >> rcu_periph_reset_disable
  [Called By]
  - >> s600_can_device_config
  - >> s600_can_device_deinit

  can_filter_init (Thumb, 262 bytes, Stack size 8 bytes, gd32f10x_can.o(i.can_filter_init))
  [Stack]

  - Max Depth = 8
  - Call Chain = can_filter_init
  [Called By]
  - >> s600_can_device_config

  can_init (Thumb, 290 bytes, Stack size 16 bytes, gd32f10x_can.o(i.can_init))
  [Stack]

  - Max Depth = 16
  - Call Chain = can_init
  [Called By]
  - >> s600_can_device_config

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

  - >> s600_can_device_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_flag_clear (Thumb, 28 bytes, Stack size 0 bytes, gd32f10x_fmc.o(i.fmc_flag_clear))
  [Called By]

  - >> s600_iap_flag_clear

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

  - >> s600_iap_write_page

  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_bank0_ready_wait
  [Calls]
  - >> fmc_bank0_ready_wait
  - >> fmc_bank1_ready_wait
  [Called By]
  - >> s600_iap_write_page

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

  - >> s600_iap_write_page

  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_bank0_ready_wait
  [Calls]
  - >> fmc_bank0_ready_wait
  - >> fmc_bank1_ready_wait
  [Called By]
  - >> s600_iap_write_page

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

  - >> main

  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]
  - >> s600_can_device_config
  - >> Usart2_Initial
  - >> Usart1_Initial
  - >> main

  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]
  - >> s600_can_device_config

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

  - Max Depth = 228
  - Call Chain = main ⇒ s600_can_poll ⇒ s600_can_process_command ⇒ s600_can_send_response ⇒ s600_can_send_packet ⇒ s600_can_transmit ⇒ byte_queue_free ⇒ byte_queue_write ⇒ byte_queue_tail_add ⇒ byte_queue_add
  [Calls]
  - >> rcu_periph_clock_enable
  - >> gpio_init
  - >> gpio_bit_reset
  - >> s600_can_send_command
  - >> s600_can_poll
  - >> s600_can_device_config
  - >> Usart2_Initial
  - >> Usart1_Initial
  - >> Send_Data_RS485
  - >> Send_Data_2_RS485
  - >> NVIC_SetPriority
  - >> s600_iap_boot
  [Address Reference Count : 1]
  - entry9a.o(.ARM.Collect$$$$0000000B)

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

  - >> s600_can_device_deinit
  - >> s600_iap_boot

  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]
  - >> s600_can_device_config
  - >> Usart2_Initial
  - >> Usart1_Initial

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

  - >> nvic_irq_enable
  - >> Usart2_Initial
  - >> Usart1_Initial

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

  - >> s600_iap_boot

  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]

  - >> s600_can_device_config
  - >> Usart2_Initial
  - >> Usart1_Initial
  - >> main

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

  - >> can_deinit
  - >> usart_deinit

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

  - >> can_deinit
  - >> usart_deinit

  s600_can_device_config (Thumb, 248 bytes, Stack size 40 bytes, s600_can.o(i.s600_can_device_config))
  [Stack]

  - Max Depth = 64
  - Call Chain = s600_can_device_config ⇒ nvic_irq_enable
  [Calls]
  - >> can_interrupt_enable
  - >> can_init
  - >> can_filter_init
  - >> can_deinit
  - >> rcu_periph_clock_enable
  - >> nvic_irq_enable
  - >> gpio_pin_remap_config
  - >> gpio_init
  - >> byte_queue_alloc_init
  [Called By]
  - >> main

  s600_can_device_deinit (Thumb, 16 bytes, Stack size 8 bytes, s600_can.o(i.s600_can_device_deinit))
  [Stack]

  - Max Depth = 16
  - Call Chain = s600_can_device_deinit ⇒ can_deinit
  [Calls]
  - >> can_deinit
  - >> nvic_irq_disable
  [Called By]
  - >> s600_iap_boot

  s600_can_find_mailbox (Thumb, 38 bytes, Stack size 0 bytes, s600_can.o(i.s600_can_find_mailbox))
  [Called By]

  - >> s600_can_tx_packet

  s600_can_poll (Thumb, 62 bytes, Stack size 16 bytes, s600_can.o(i.s600_can_poll))
  [Stack]

  - Max Depth = 220
  - Call Chain = s600_can_poll ⇒ s600_can_process_command ⇒ s600_can_send_response ⇒ s600_can_send_packet ⇒ s600_can_transmit ⇒ byte_queue_free ⇒ byte_queue_write ⇒ byte_queue_tail_add ⇒ byte_queue_add
  [Calls]
  - >> byte_queue_read
  - >> byte_queue_free
  - >> s600_can_transmit
  - >> s600_can_process_command
  [Called By]
  - >> main

  s600_can_rx_packet (Thumb, 200 bytes, Stack size 40 bytes, s600_can.o(i.s600_can_rx_packet))
  [Stack]

  - Max Depth = 132
  - Call Chain = s600_can_rx_packet ⇒ s600_can_rx_front_get ⇒ byte_queue_alloc ⇒ byte_queue_read ⇒ byte_queue_head_add ⇒ byte_queue_add
  [Calls]
  - >> byte_queue_write_byte
  - >> s600_can_rx_front_put
  - >> s600_can_rx_front_get
  [Called By]
  - >> CAN0_RX1_IRQHandler

  s600_can_send_command (Thumb, 24 bytes, Stack size 24 bytes, s600_can.o(i.s600_can_send_command))
  [Stack]

  - Max Depth = 148
  - Call Chain = s600_can_send_command ⇒ s600_can_send_packet ⇒ s600_can_transmit ⇒ byte_queue_free ⇒ byte_queue_write ⇒ byte_queue_tail_add ⇒ byte_queue_add
  [Calls]
  - >> s600_can_send_packet
  [Called By]
  - >> main

  s600_can_send_frame (Thumb, 92 bytes, Stack size 16 bytes, s600_can.o(i.s600_can_send_frame))
  [Stack]

  - Max Depth = 16
  - Call Chain = s600_can_send_frame
  [Called By]
  - >> s600_can_tx_packet

  s600_can_send_packet (Thumb, 88 bytes, Stack size 32 bytes, s600_can.o(i.s600_can_send_packet))
  [Stack]

  - Max Depth = 124
  - Call Chain = s600_can_send_packet ⇒ s600_can_transmit ⇒ byte_queue_free ⇒ byte_queue_write ⇒ byte_queue_tail_add ⇒ byte_queue_add
  [Calls]
  - >> byte_queue_write_byte
  - >> byte_queue_alloc
  - >> __aeabi_memcpy
  - >> s600_can_transmit
  [Called By]
  - >> s600_can_send_command
  - >> s600_can_send_response

  s600_can_send_response (Thumb, 24 bytes, Stack size 24 bytes, s600_can.o(i.s600_can_send_response))
  [Stack]

  - Max Depth = 148
  - Call Chain = s600_can_send_response ⇒ s600_can_send_packet ⇒ s600_can_transmit ⇒ byte_queue_free ⇒ byte_queue_write ⇒ byte_queue_tail_add ⇒ byte_queue_add
  [Calls]
  - >> s600_can_send_packet
  [Called By]
  - >> s600_can_process_command

  s600_can_transmit (Thumb, 112 bytes, Stack size 16 bytes, s600_can.o(i.s600_can_transmit))
  [Stack]

  - Max Depth = 92
  - Call Chain = s600_can_transmit ⇒ byte_queue_free ⇒ byte_queue_write ⇒ byte_queue_tail_add ⇒ byte_queue_add
  [Calls]
  - >> byte_queue_read
  - >> byte_queue_free
  - >> s600_can_tx_packet
  [Called By]
  - >> s600_can_poll
  - >> s600_can_send_packet

  s600_can_tx_packet (Thumb, 130 bytes, Stack size 28 bytes, s600_can.o(i.s600_can_tx_packet))
  [Stack]

  - Max Depth = 44
  - Call Chain = s600_can_tx_packet ⇒ s600_can_send_frame
  [Calls]
  - >> s600_can_send_frame
  - >> s600_can_find_mailbox
  [Called By]
  - >> s600_can_transmit

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

  - >> s600_can_process_command

  s600_decode_u32 (Thumb, 24 bytes, Stack size 0 bytes, s600.o(i.s600_decode_u32))
  [Called By]

  - >> s600_can_process_command

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

  - >> s600_encode_u24

  s600_encode_u24 (Thumb, 20 bytes, Stack size 8 bytes, s600.o(i.s600_encode_u24))
  [Stack]

  - Max Depth = 8
  - Call Chain = s600_encode_u24
  [Calls]
  - >> s600_encode_u16
  [Called By]
  - >> s600_can_process_command

  s600_iap_boot (Thumb, 180 bytes, Stack size 24 bytes, s600_iap.o(i.s600_iap_boot))
  [Stack]

  - Max Depth = 76
  - Call Chain = s600_iap_boot ⇒ s600_iap_write_page ⇒ fmc_word_program ⇒ fmc_bank0_ready_wait
  [Calls]
  - >> nvic_vector_table_set
  - >> nvic_irq_disable
  - >> s600_can_device_deinit
  - >> s600_iap_write_page
  - >> s600_iap_checksum
  - >> s600_iap_last_page
  - >> s600_iap_capacity
  - >> strcmp
  [Called By]
  - >> main
  - >> s600_can_process_command

  s600_iap_checksum (Thumb, 62 bytes, Stack size 20 bytes, s600_iap.o(i.s600_iap_checksum))
  [Stack]

  - Max Depth = 20
  - Call Chain = s600_iap_checksum
  [Called By]
  - >> s600_iap_write_end
  - >> s600_iap_boot

  s600_iap_flush (Thumb, 44 bytes, Stack size 8 bytes, s600_iap.o(i.s600_iap_flush))
  [Stack]

  - Max Depth = 60
  - Call Chain = s600_iap_flush ⇒ s600_iap_write_page ⇒ fmc_word_program ⇒ fmc_bank0_ready_wait
  [Calls]
  - >> s600_iap_write_page
  [Called By]
  - >> s600_iap_write_end
  - >> s600_iap_write

  s600_iap_write (Thumb, 96 bytes, Stack size 16 bytes, s600_iap.o(i.s600_iap_write))
  [Stack]

  - Max Depth = 76
  - Call Chain = s600_iap_write ⇒ s600_iap_flush ⇒ s600_iap_write_page ⇒ fmc_word_program ⇒ fmc_bank0_ready_wait
  [Calls]
  - >> s600_iap_flush
  - >> __aeabi_memcpy
  [Called By]
  - >> s600_can_process_command

  s600_iap_write_begin (Thumb, 14 bytes, Stack size 0 bytes, s600_iap.o(i.s600_iap_write_begin))
  [Called By]

  - >> s600_can_process_command

  s600_iap_write_end (Thumb, 58 bytes, Stack size 24 bytes, s600_iap.o(i.s600_iap_write_end))
  [Stack]

  - Max Depth = 84
  - Call Chain = s600_iap_write_end ⇒ s600_iap_flush ⇒ s600_iap_write_page ⇒ fmc_word_program ⇒ fmc_bank0_ready_wait
  [Calls]
  - >> s600_iap_write_page
  - >> s600_iap_flush
  - >> s600_iap_checksum
  - >> s600_iap_last_page
  [Called By]
  - >> s600_can_process_command

  s600_iap_write_page (Thumb, 92 bytes, Stack size 32 bytes, s600_iap.o(i.s600_iap_write_page))
  [Stack]

  - Max Depth = 52
  - Call Chain = s600_iap_write_page ⇒ fmc_word_program ⇒ fmc_bank0_ready_wait
  [Calls]
  - >> fmc_word_program
  - >> fmc_unlock
  - >> fmc_page_erase
  - >> fmc_lock
  - >> s600_iap_flag_clear
  [Called By]
  - >> s600_iap_write_end
  - >> s600_iap_flush
  - >> s600_iap_boot

  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]
  - >> Usart2_Initial
  - >> Usart1_Initial

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

  - >> USART0_IRQHandler
  - >> USART1_IRQHandler

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

  - >> USART0_IRQHandler
  - >> USART1_IRQHandler

  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]
  - >> Usart2_Initial
  - >> Usart1_Initial

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

  - >> Usart2_Initial
  - >> Usart1_Initial

  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]
  - >> USART0_IRQHandler
  - >> USART1_IRQHandler

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

  - >> Usart2_Initial
  - >> Usart1_Initial

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

  - >> Usart2_Initial
  - >> Usart1_Initial

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

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

  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]
  - >> Send_Data_RS485
  - >> Send_Data_2_RS485

  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]
  - >> Send_Data_RS485

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

  - >> Usart2_Initial
  - >> Usart1_Initial

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

  - >> Usart2_Initial
  - >> Usart1_Initial

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

  - >> Usart2_Initial
  - >> Usart1_Initial

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

  - >> Usart2_Initial
  - >> Usart1_Initial

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

  - >> Usart2_Initial
  - >> Usart1_Initial

  ### Local Symbols

  system_clock_108m_irc8m (Thumb, 160 bytes, Stack size 0 bytes, system_gd32f10x.o(i.system_clock_108m_irc8m))
  [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_irc8m
  [Called By]
  - >> SystemInit

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

  - >> s600_iap_boot
  - >> s600_iap_last_page

  s600_iap_flag_clear (Thumb, 12 bytes, Stack size 8 bytes, s600_iap.o(i.s600_iap_flag_clear))
  [Stack]

  - Max Depth = 8
  - Call Chain = s600_iap_flag_clear
  [Calls]
  - >> fmc_flag_clear
  [Called By]
  - >> s600_iap_write_page

  s600_iap_last_page (Thumb, 18 bytes, Stack size 8 bytes, s600_iap.o(i.s600_iap_last_page))
  [Stack]

  - Max Depth = 8
  - Call Chain = s600_iap_last_page
  [Calls]
  - >> s600_iap_capacity
  [Called By]
  - >> s600_iap_write_end
  - >> s600_iap_boot

  byte_queue_add (Thumb, 20 bytes, Stack size 12 bytes, byte_queue.o(i.byte_queue_add))
  [Stack]

  - Max Depth = 12
  - Call Chain = byte_queue_add
  [Called By]
  - >> byte_queue_tail_add
  - >> byte_queue_head_add

  byte_queue_head_add (Thumb, 18 bytes, Stack size 16 bytes, byte_queue.o(i.byte_queue_head_add))
  [Stack]

  - Max Depth = 28
  - Call Chain = byte_queue_head_add ⇒ byte_queue_add
  [Calls]
  - >> byte_queue_add
  [Called By]
  - >> byte_queue_read

  byte_queue_tail_add (Thumb, 18 bytes, Stack size 16 bytes, byte_queue.o(i.byte_queue_tail_add))
  [Stack]

  - Max Depth = 28
  - Call Chain = byte_queue_tail_add ⇒ byte_queue_add
  [Calls]
  - >> byte_queue_add
  [Called By]
  - >> byte_queue_write

  NVIC_SetPriority (Thumb, 32 bytes, Stack size 8 bytes, main.o(i.NVIC_SetPriority))
  [Stack]

  - Max Depth = 8
  - Call Chain = NVIC_SetPriority
  [Called By]
  - >> main

  s600_can_process_command (Thumb, 286 bytes, Stack size 56 bytes, s600_can.o(i.s600_can_process_command))
  [Stack]

  - Max Depth = 204
  - Call Chain = s600_can_process_command ⇒ s600_can_send_response ⇒ s600_can_send_packet ⇒ s600_can_transmit ⇒ byte_queue_free ⇒ byte_queue_write ⇒ byte_queue_tail_add ⇒ byte_queue_add
  [Calls]
  - >> s600_iap_write_end
  - >> s600_iap_write_begin
  - >> s600_iap_write
  - >> s600_iap_boot
  - >> s600_can_send_response
  - >> s600_encode_u24
  - >> s600_decode_u32
  - >> s600_decode_u24
  [Called By]
  - >> s600_can_poll

  s600_can_rx_front_get (Thumb, 106 bytes, Stack size 24 bytes, s600_can.o(i.s600_can_rx_front_get))
  [Stack]

  - Max Depth = 92
  - Call Chain = s600_can_rx_front_get ⇒ byte_queue_alloc ⇒ byte_queue_read ⇒ byte_queue_head_add ⇒ byte_queue_add
  [Calls]
  - >> byte_queue_alloc
  [Called By]
  - >> s600_can_rx_packet

  s600_can_rx_front_put (Thumb, 72 bytes, Stack size 0 bytes, s600_can.o(i.s600_can_rx_front_put))
  [Called By]

  - >> s600_can_rx_packet

  ### Undefined Global Symbols