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

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Tue Aug 22 14:52:47 2023

### Maximum Stack Usage = 2512 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)

### Call chain for Maximum Stack Depth:

data_task ⇒ read_file ⇒ f_open ⇒ dir_register ⇒ dir_find ⇒ dir_next ⇒ create_chain ⇒ put_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage

### Functions with no stack information

- OS_CPU_SR_Save
- OS_CPU_SR_Restore
- OSStartHighRdy
- OSCtxSw
- OSIntCtxSw
- PendSV_Handler

### Mutually Recursive functions

- ADC_IRQHandler ⇒ ADC_IRQHandler

  ### Function Pointers

  - ADC_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - BusFault_Handler from stm32f2xx_it.o(i.BusFault_Handler) referenced from startup_stm32f2xx.o(RESET)
  - CAN1_RX0_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - CAN1_RX1_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - CAN1_SCE_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - CAN1_TX_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - CAN2_RX0_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - CAN2_RX1_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - CAN2_SCE_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - CAN2_TX_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - CRYP_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DCMI_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA1_Stream0_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA1_Stream1_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA1_Stream2_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA1_Stream3_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA1_Stream4_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA1_Stream5_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA1_Stream6_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA1_Stream7_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA2_Stream0_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA2_Stream1_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA2_Stream2_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA2_Stream3_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA2_Stream4_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA2_Stream5_IRQHandler from usart.o(i.DMA2_Stream5_IRQHandler) referenced from startup_stm32f2xx.o(RESET)
  - DMA2_Stream6_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DMA2_Stream7_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - DebugMon_Handler from stm32f2xx_it.o(i.DebugMon_Handler) referenced from startup_stm32f2xx.o(RESET)
  - ETH_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - ETH_WKUP_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - EXTI0_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - EXTI15_10_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - EXTI1_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - EXTI2_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - EXTI3_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - EXTI4_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - EXTI9_5_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - FLASH_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - FSMC_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - HASH_RNG_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - HardFault_Handler from stm32f2xx_it.o(i.HardFault_Handler) referenced from startup_stm32f2xx.o(RESET)
  - I2C1_ER_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - I2C1_EV_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - I2C2_ER_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - I2C2_EV_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - I2C3_ER_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - I2C3_EV_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - MemManage_Handler from stm32f2xx_it.o(i.MemManage_Handler) referenced from startup_stm32f2xx.o(RESET)
  - NMI_Handler from stm32f2xx_it.o(i.NMI_Handler) referenced from startup_stm32f2xx.o(RESET)
  - OSTaskSwHook from os_cpu_c.o(i.OSTaskSwHook) referenced from os_cpu_a.o(.text)
  - OSTmr_Task from os_tmr.o(i.OSTmr_Task) referenced from os_tmr.o(i.OSTmr_InitTask)
  - OS_TaskIdle from os_core.o(i.OS_TaskIdle) referenced from os_core.o(i.OS_InitTaskIdle)
  - OS_TaskReturn from os_task.o(i.OS_TaskReturn) referenced from os_cpu_c.o(i.OSTaskStkInit)
  - OS_TaskStat from os_core.o(i.OS_TaskStat) referenced from os_core.o(i.OS_InitTaskStat)
  - OTG_FS_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - OTG_FS_WKUP_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - OTG_HS_EP1_IN_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - OTG_HS_EP1_OUT_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - OTG_HS_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - OTG_HS_WKUP_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - PVD_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - PendSV_Handler from os_cpu_a.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - RCC_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - RTC_Alarm_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - RTC_WKUP_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - Reset_Handler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - SDIO_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - SPI1_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - SPI2_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - SPI3_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - SVC_Handler from stm32f2xx_it.o(i.SVC_Handler) referenced from startup_stm32f2xx.o(RESET)
  - SX1276GetRxPacket from sx1276.o(i.SX1276GetRxPacket) referenced from radio.o(i.RadioDriverInit)
  - SX1276Init from sx1276.o(i.SX1276Init) referenced from radio.o(i.RadioDriverInit)
  - SX1276Process from sx1276.o(i.SX1276Process) referenced from radio.o(i.RadioDriverInit)
  - SX1276Reset from sx1276.o(i.SX1276Reset) referenced from radio.o(i.RadioDriverInit)
  - SX1276SetTxPacket from sx1276.o(i.SX1276SetTxPacket) referenced from radio.o(i.RadioDriverInit)
  - SX1276StartRx from sx1276.o(i.SX1276StartRx) referenced from radio.o(i.RadioDriverInit)
  - SysTick_Handler from delay.o(i.SysTick_Handler) referenced from startup_stm32f2xx.o(RESET)
  - SystemInit from system_stm32f2xx.o(i.SystemInit) referenced from startup_stm32f2xx.o(.text)
  - TAMP_STAMP_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - TIM1_BRK_TIM9_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - TIM1_CC_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - TIM1_TRG_COM_TIM11_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - TIM1_UP_TIM10_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - TIM2_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - TIM3_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - TIM4_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - TIM5_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - TIM6_DAC_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - TIM7_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - TIM8_BRK_TIM12_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - TIM8_CC_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - TIM8_TRG_COM_TIM14_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - TIM8_UP_TIM13_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - UART4_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - UART5_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - USART1_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - USART2_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - USART3_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - USART6_IRQHandler from usart.o(i.USART6_IRQHandler) referenced from startup_stm32f2xx.o(RESET)
  - UsageFault_Handler from stm32f2xx_it.o(i.UsageFault_Handler) referenced from startup_stm32f2xx.o(RESET)
  - WWDG_IRQHandler from startup_stm32f2xx.o(.text) referenced from startup_stm32f2xx.o(RESET)
  - __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32f2xx.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)
  - _sputc from printfa.o(i._sputc) referenced from printfa.o(i.__0sprintf)
  - data_task from task.o(i.data_task) referenced from main.o(i.start_task)
  - dlt645_hw_read from dlt645_port.o(i.dlt645_hw_read) referenced 2 times from dlt645_port.o(.data)
  - dlt645_hw_write from dlt645_port.o(i.dlt645_hw_write) referenced 2 times from dlt645_port.o(.data)
  - fputc from log.o(i.fputc) referenced from printfa.o(i.__0printf)
  - isspace from isspace_o.o(.text) referenced from scanf_char.o(.text)
  - led_task from main.o(i.led_task) referenced from main.o(i.start_task)
  - main from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)
  - my_mem_init from malloc.o(i.my_mem_init) referenced 2 times from malloc.o(.data)
  - my_mem_perused from malloc.o(i.my_mem_perused) referenced 2 times from malloc.o(.data)
  - net_status_led_task from main.o(i.net_status_led_task) referenced from main.o(i.start_task)
  - start_task from main.o(i.start_task) referenced from main.o(i.main)

  ### Global Symbols

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

  - startup_stm32f2xx.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_stm32f2xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f2xx.o(RESET)

  ADC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f2xx.o(.text))
  [Calls]

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

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

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

  - startup_stm32f2xx.o(RESET)

  OS_CPU_SR_Save (Thumb, 0 bytes, Stack size unknown bytes, os_cpu_a.o(.text))
  [Called By]

  - >> OSTimeGet
  - >> OSTaskSuspend
  - >> OSTaskCreate
  - >> OSStatInit
  - >> start_task
  - >> OSTimeTick
  - >> OSTimeDly
  - >> OSSchedUnlock
  - >> OSSchedLock
  - >> OSIntExit
  - >> OSTaskDel
  - >> OSSemPost
  - >> OSSemPend
  - >> OSSemCreate
  - >> OSTaskStkChk
  - >> OSTaskNameSet
  - >> OSTaskCreateExt
  - >> OS_TaskStat
  - >> OS_TaskIdle
  - >> OS_TCBInit
  - >> OS_Sched
  - >> OSEventNameSet

  OS_CPU_SR_Restore (Thumb, 0 bytes, Stack size unknown bytes, os_cpu_a.o(.text))
  [Called By]

  - >> OSTimeGet
  - >> OSTaskSuspend
  - >> OSTaskCreate
  - >> OSStatInit
  - >> start_task
  - >> OSTimeTick
  - >> OSTimeDly
  - >> OSSchedUnlock
  - >> OSSchedLock
  - >> OSIntExit
  - >> OSTaskDel
  - >> OSSemPost
  - >> OSSemPend
  - >> OSSemCreate
  - >> OSTaskStkChk
  - >> OSTaskNameSet
  - >> OSTaskCreateExt
  - >> OS_TaskStat
  - >> OS_TaskIdle
  - >> OS_TCBInit
  - >> OS_Sched
  - >> OSEventNameSet

  OSStartHighRdy (Thumb, 0 bytes, Stack size unknown bytes, os_cpu_a.o(.text))
  [Called By]

  - >> OSStart

  OSCtxSw (Thumb, 0 bytes, Stack size unknown bytes, os_cpu_a.o(.text))
  [Called By]

  - >> OS_Sched

  OSIntCtxSw (Thumb, 0 bytes, Stack size unknown bytes, os_cpu_a.o(.text))
  [Called By]

  - >> OSIntExit

  PendSV_Handler (Thumb, 0 bytes, Stack size unknown bytes, os_cpu_a.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f2xx.o(RESET)

  __aeabi_uldivmod (Thumb, 98 bytes, Stack size 40 bytes, uldiv.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = __aeabi_uldivmod
  [Calls]
  - >> __aeabi_llsr
  - >> __aeabi_llsl
  [Called By]
  - >> NAND_ReadMultiSectors
  - >> _printf_core
  - >> _fp_digits

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

  - >> insertHexData
  - >> SX1276LoRaSetTxPacket
  - >> SX1276LoRaGetRxPacket
  - >> SX1276FskSetTxPacket
  - >> SX1276FskGetRxPacket
  - >> mmodbus_readHoldingRegisters8i
  - >> dlt645_hw_read
  - >> internal_alloc

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

  - >> NAND_WriteMultiSectors
  - >> _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]
  - >> masterSendNodeString
  - >> SX1276LoRaProcess
  - >> SX1276FskProcess
  - >> mmodbus_sendRaw

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

  - >> mmodbus_init
  - >> dlt645_2007_read_data
  - >> dlt645_1997_read_data
  - >> dlt645_hw_write

  __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]
  - >> parseStringField
  - >> parseIntField
  - >> extract_substring
  - >> addNode
  - >> addDevice

  strncpy (Thumb, 24 bytes, Stack size 8 bytes, strncpy.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = strncpy
  [Called By]
  - >> extract_substring

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

  - >> parseStringField
  - >> parseIntField
  - >> extract_substring
  - >> masterSendNodeString
  - >> dlt645_data_parse_by_format_to_float

  memcmp (Thumb, 26 bytes, Stack size 12 bytes, memcmp.o(.text))
  [Stack]

  - Max Depth = 12
  - Call Chain = memcmp
  [Called By]
  - >> FSMC_NAND_WritePage
  - >> dlt645_common_check

  strcpy (Thumb, 18 bytes, Stack size 0 bytes, strcpy.o(.text))
  [Called By]

  - >> extract_substring

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

  - Max Depth = 216
  - Call Chain = __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_string
  [Calls]
  - >> __vfscanf_char
  [Called By]
  - >> parseStringField
  - >> addSensorListParams
  - >> addNode

  _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

  _scanf_string (Thumb, 224 bytes, Stack size 56 bytes, _scanf_str.o(.text))
  [Stack]

  - Max Depth = 56
  - Call Chain = _scanf_string
  [Called By]
  - >> __vfscanf

  strtol (Thumb, 112 bytes, Stack size 32 bytes, strtol.o(.text))
  [Stack]

  - Max Depth = 72
  - Call Chain = strtol ⇒ _strtoul
  [Calls]
  - >> _strtoul
  - >> __aeabi_errno_addr
  - >> __rt_ctype_table
  [Called By]
  - >> parseIntField

  __aeabi_dadd (Thumb, 322 bytes, Stack size 48 bytes, dadd.o(.text))
  [Stack]

  - Max Depth = 88
  - Call Chain = __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_lasr
  - >> __aeabi_llsl
  - >> _double_round
  - >> _double_epilogue
  [Called By]
  - >> __aeabi_drsub
  - >> SX1276LoRaProcess
  - >> SX1276FskProcess
  - >> __aeabi_dsub
  - >> round
  - >> pow
  - >> data_package_translate_to_int
  - >> __kernel_poly
  - >> __mathlib_dbl_infnan2
  - >> _fp_digits

  __aeabi_dsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text))
  [Stack]

  - Max Depth = 88
  - Call Chain = __aeabi_dsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dadd
  [Called By]
  - >> round
  - >> pow

  __aeabi_drsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text))
  [Stack]

  - Max Depth = 88
  - Call Chain = __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dadd
  [Called By]
  - >> round
  - >> pow

  __aeabi_dmul (Thumb, 228 bytes, Stack size 48 bytes, dmul.o(.text))
  [Stack]

  - Max Depth = 88
  - Call Chain = __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> _double_epilogue
  [Called By]
  - >> SX1276FskReadAfc
  - >> SX1276LoRaProcess
  - >> SX1276FskProcess
  - >> pow
  - >> data_package_translate_to_int
  - >> __kernel_poly
  - >> _fp_digits

  __aeabi_ddiv (Thumb, 222 bytes, Stack size 32 bytes, ddiv.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = __aeabi_ddiv ⇒ _double_round
  [Calls]
  - >> _double_round
  [Called By]
  - >> data_acquisition
  - >> SX1276LoRaSetRFFrequency
  - >> SX1276FskReadRssi
  - >> SX1276FskProcess
  - >> dlt645_data_parse_by_format_to_float
  - >> pow
  - >> __mathlib_dbl_invalid
  - >> __mathlib_dbl_divzero
  - >> _fp_digits

  __aeabi_ui2f (Thumb, 10 bytes, Stack size 0 bytes, ffltui.o(.text))
  [Stack]

  - Max Depth = 4
  - Call Chain = __aeabi_ui2f ⇒ _float_epilogue
  [Calls]
  - >> _float_epilogue
  [Called By]
  - >> data_acquisition

  __aeabi_i2d (Thumb, 34 bytes, Stack size 16 bytes, dflti.o(.text))
  [Stack]

  - Max Depth = 56
  - Call Chain = __aeabi_i2d ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> _double_epilogue
  [Called By]
  - >> SX1276FskReadAfc
  - >> SX1276LoRaProcess
  - >> dlt645_data_parse_by_format_to_float
  - >> pow
  - >> data_package_translate_to_int

  __aeabi_ui2d (Thumb, 26 bytes, Stack size 16 bytes, dfltui.o(.text))
  [Stack]

  - Max Depth = 56
  - Call Chain = __aeabi_ui2d ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> _double_epilogue
  [Called By]
  - >> data_acquisition
  - >> SX1276LoRaSetRFFrequency
  - >> SX1276LoRaProcess
  - >> SX1276FskReadRssi
  - >> SX1276FskProcess
  - >> data_package_translate_to_int

  __aeabi_d2iz (Thumb, 62 bytes, Stack size 16 bytes, dfixi.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = __aeabi_d2iz
  [Calls]
  - >> __aeabi_llsr
  [Called By]
  - >> SX1276FskReadAfc
  - >> data_package_translate_to_int

  __aeabi_d2uiz (Thumb, 50 bytes, Stack size 8 bytes, dfixui.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_d2uiz
  [Calls]
  - >> __aeabi_llsr
  [Called By]
  - >> SX1276LoRaSetRFFrequency
  - >> SX1276FskProcess

  __aeabi_f2d (Thumb, 38 bytes, Stack size 0 bytes, f2d.o(.text))
  [Called By]

  - >> data_acquisition

  __aeabi_cdcmpeq (Thumb, 0 bytes, Stack size 0 bytes, cdcmple.o(.text), UNUSED)

  __aeabi_cdcmple (Thumb, 48 bytes, Stack size 0 bytes, cdcmple.o(.text))
  [Called By]

  - >> round

  __aeabi_cdrcmple (Thumb, 48 bytes, Stack size 0 bytes, cdrcmple.o(.text))
  [Called By]

  - >> round
  - >> pow
  - >> _fp_digits

  __aeabi_d2f (Thumb, 56 bytes, Stack size 8 bytes, d2f.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_d2f
  [Calls]
  - >> _float_round
  [Called By]
  - >> data_acquisition
  - >> dlt645_data_parse_by_format_to_float

  __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)

  __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)
  [Called By]

  - >> _printf_core

  __aeabi_llsl (Thumb, 30 bytes, Stack size 0 bytes, llshl.o(.text))
  [Called By]

  - >> __aeabi_dadd
  - >> __aeabi_uldivmod
  - >> _drnd
  - >> _double_epilogue
  - >> __aeabi_d2ulz

  _ll_shift_l (Thumb, 0 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED)

  __aeabi_llsr (Thumb, 32 bytes, Stack size 0 bytes, llushr.o(.text))
  [Called By]

  - >> __aeabi_d2uiz
  - >> __aeabi_d2iz
  - >> __aeabi_uldivmod
  - >> _drnd
  - >> _dsqrt
  - >> _double_epilogue
  - >> __aeabi_d2ulz

  _ll_ushift_r (Thumb, 0 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED)

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

  - >> __aeabi_dadd

  _ll_sshift_r (Thumb, 0 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED)

  __rt_ctype_table (Thumb, 4 bytes, Stack size 0 bytes, ctype_o.o(.text))
  [Called By]

  - >> isspace
  - >> strtol

  isspace (Thumb, 18 bytes, Stack size 8 bytes, isspace_o.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = isspace
  [Calls]
  - >> __rt_ctype_table
  [Address Reference Count : 1]
  - scanf_char.o(.text)

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

  - >> _strtoul
  - >> _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_string
  [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)

  _strtoul (Thumb, 158 bytes, Stack size 40 bytes, _strtoul.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = _strtoul
  [Calls]
  - >> _chval
  - >> __aeabi_errno_addr
  [Called By]
  - >> strtol

  __I$use$fp (Thumb, 0 bytes, Stack size 0 bytes, iusefp.o(.text), UNUSED)

  _float_round (Thumb, 18 bytes, Stack size 0 bytes, fepilogue.o(.text))
  [Called By]

  - >> __aeabi_d2f

  _float_epilogue (Thumb, 92 bytes, Stack size 4 bytes, fepilogue.o(.text))
  [Stack]

  - Max Depth = 4
  - Call Chain = _float_epilogue
  [Called By]
  - >> __aeabi_ui2f

  _double_round (Thumb, 30 bytes, Stack size 8 bytes, depilogue.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = _double_round
  [Called By]
  - >> __aeabi_ddiv
  - >> __aeabi_dadd
  - >> _drnd
  - >> _dsqrt
  - >> _double_epilogue

  _double_epilogue (Thumb, 156 bytes, Stack size 32 bytes, depilogue.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_llsr
  - >> __aeabi_llsl
  - >> _double_round
  [Called By]
  - >> __aeabi_ui2d
  - >> __aeabi_dadd
  - >> __aeabi_i2d
  - >> __aeabi_dmul

  __ARM_scalbn (Thumb, 46 bytes, Stack size 16 bytes, dscalb.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = __ARM_scalbn
  [Called By]
  - >> pow
  - >> __mathlib_dbl_underflow
  - >> __mathlib_dbl_overflow

  scalbn (Thumb, 0 bytes, Stack size 16 bytes, dscalb.o(.text), UNUSED)

  _drnd (Thumb, 132 bytes, Stack size 24 bytes, drnd.o(.text))
  [Stack]

  - Max Depth = 32
  - Call Chain = _drnd ⇒ _double_round
  [Calls]
  - >> __aeabi_llsr
  - >> __aeabi_llsl
  - >> _double_round
  [Called By]
  - >> round

  __aeabi_d2ulz (Thumb, 48 bytes, Stack size 0 bytes, dfixul.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_llsr
  - >> __aeabi_llsl
  [Called By]
  - >> _fp_digits

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

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

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

  _dsqrt (Thumb, 162 bytes, Stack size 32 bytes, dsqrt.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = _dsqrt ⇒ _double_round
  [Calls]
  - >> __aeabi_llsr
  - >> _double_round
  [Called By]
  - >> sqrt

  __decompress (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED)

  __decompress1 (Thumb, 86 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED)

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

  - startup_stm32f2xx.o(RESET)

  DMA2_Stream5_IRQHandler (Thumb, 22 bytes, Stack size 8 bytes, usart.o(i.DMA2_Stream5_IRQHandler))
  [Stack]

  - Max Depth = 24
  - Call Chain = DMA2_Stream5_IRQHandler ⇒ DMA_GetITStatus
  [Calls]
  - >> DMA_GetITStatus
  - >> DMA_ClearITPendingBit
  [Address Reference Count : 1]
  - startup_stm32f2xx.o(RESET)

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

  - >> USART6_IRQHandler

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

  - >> DMA2_Stream5_IRQHandler

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

  - >> USART6_IRQHandler

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

  - >> USART6_IRQHandler

  DMA_GetITStatus (Thumb, 82 bytes, Stack size 16 bytes, stm32f2xx_dma.o(i.DMA_GetITStatus))
  [Stack]

  - Max Depth = 16
  - Call Chain = DMA_GetITStatus
  [Called By]
  - >> DMA2_Stream5_IRQHandler

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

  - startup_stm32f2xx.o(RESET)

  FSMC_NANDCmd (Thumb, 82 bytes, Stack size 0 bytes, stm32f2xx_fsmc.o(i.FSMC_NANDCmd))
  [Called By]

  - >> FSMC_NAND_Init

  FSMC_NANDInit (Thumb, 132 bytes, Stack size 12 bytes, stm32f2xx_fsmc.o(i.FSMC_NANDInit))
  [Stack]

  - Max Depth = 12
  - Call Chain = FSMC_NANDInit
  [Called By]
  - >> FSMC_NAND_Init

  FSMC_NORSRAMCmd (Thumb, 46 bytes, Stack size 0 bytes, stm32f2xx_fsmc.o(i.FSMC_NORSRAMCmd))
  [Called By]

  - >> FSMC_SRAM_Init

  FSMC_NORSRAMInit (Thumb, 230 bytes, Stack size 0 bytes, stm32f2xx_fsmc.o(i.FSMC_NORSRAMInit))
  [Called By]

  - >> FSMC_SRAM_Init

  FSMC_SRAM_Init (Thumb, 106 bytes, Stack size 96 bytes, sram.o(i.FSMC_SRAM_Init))
  [Stack]

  - Max Depth = 132
  - Call Chain = FSMC_SRAM_Init ⇒ SRAM_GPIO_Config ⇒ GPIO_PinAFConfig
  [Calls]
  - >> FSMC_NORSRAMInit
  - >> FSMC_NORSRAMCmd
  - >> RCC_AHB3PeriphClockCmd
  - >> SRAM_GPIO_Config
  [Called By]
  - >> SystemInit_ExtMemCtl

  GPIO_Init (Thumb, 144 bytes, Stack size 20 bytes, stm32f2xx_gpio.o(i.GPIO_Init))
  [Stack]

  - Max Depth = 20
  - Call Chain = GPIO_Init
  [Called By]
  - >> USART_485_config
  - >> USART_232_config
  - >> NET_STATUS_LED_Config
  - >> LED_GPIO_Config
  - >> FSMC_NAND_Init
  - >> USART_485_DE_init
  - >> SRAM_GPIO_Config
  - >> SX1276InitIo
  - >> SPI2_GPIO_Config

  GPIO_PinAFConfig (Thumb, 70 bytes, Stack size 20 bytes, stm32f2xx_gpio.o(i.GPIO_PinAFConfig))
  [Stack]

  - Max Depth = 20
  - Call Chain = GPIO_PinAFConfig
  [Called By]
  - >> USART_485_config
  - >> USART_232_config
  - >> FSMC_NAND_Init
  - >> SRAM_GPIO_Config
  - >> SPI2_GPIO_Config

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

  - >> FSMC_NAND_WritePage
  - >> FSMC_NAND_ReadPage
  - >> FSMC_NAND_PageCopyBackEx
  - >> FSMC_NAND_PageCopyBack
  - >> FSMC_NAND_CompPage
  - >> SX1276ReadDio0

  GPIO_ResetBits (Thumb, 6 bytes, Stack size 0 bytes, stm32f2xx_gpio.o(i.GPIO_ResetBits))
  [Called By]

  - >> net_status_led_task
  - >> led_task

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

  - >> net_status_led_task
  - >> led_task

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

  - >> mmodbus_init
  - >> dlt645_init
  - >> SX1276SetReset
  - >> SpiNSSEnable
  - >> mmodbus_sendRaw
  - >> dlt645_hw_write

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

  - startup_stm32f2xx.o(RESET)

  LED_GPIO_Config (Thumb, 48 bytes, Stack size 16 bytes, led.o(i.LED_GPIO_Config))
  [Stack]

  - Max Depth = 36
  - Call Chain = LED_GPIO_Config ⇒ GPIO_Init
  [Calls]
  - >> GPIO_Init
  - >> RCC_AHB1PeriphClockCmd
  [Called By]
  - >> main

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

  - startup_stm32f2xx.o(RESET)

  NAND_Format (Thumb, 136 bytes, Stack size 16 bytes, nandflash.o(i.NAND_Format))
  [Stack]

  - Max Depth = 88
  - Call Chain = NAND_Format ⇒ FSMC_NAND_WriteSpare ⇒ FSMC_NAND_WritePage ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> NAND_BuildLUT
  - >> FSMC_NAND_WriteSpare
  - >> FSMC_NAND_EraseBlock
  - >> NAND_IsBadBlock
  [Called By]
  - >> NAND_Init

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

  - >> disk_ioctl

  NAND_Init (Thumb, 32 bytes, Stack size 8 bytes, nandflash.o(i.NAND_Init))
  [Stack]

  - Max Depth = 96
  - Call Chain = NAND_Init ⇒ NAND_Format ⇒ FSMC_NAND_WriteSpare ⇒ FSMC_NAND_WritePage ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> NAND_Format
  - >> NAND_BuildLUT
  - >> FSMC_NAND_Reset
  - >> FSMC_NAND_Init
  - >> NAND_ReadID
  [Called By]
  - >> disk_initialize

  NAND_IsBadBlock (Thumb, 60 bytes, Stack size 16 bytes, nandflash.o(i.NAND_IsBadBlock))
  [Stack]

  - Max Depth = 64
  - Call Chain = NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> FSMC_NAND_ReadSpare
  [Called By]
  - >> NAND_Format
  - >> NAND_IsFreeBlock

  NAND_MarkBadBlock (Thumb, 48 bytes, Stack size 16 bytes, nandflash.o(i.NAND_MarkBadBlock))
  [Stack]

  - Max Depth = 88
  - Call Chain = NAND_MarkBadBlock ⇒ FSMC_NAND_WriteSpare ⇒ FSMC_NAND_WritePage ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> FSMC_NAND_WriteSpare
  - >> __2printf
  [Called By]
  - >> NAND_WriteToNewBlock
  - >> NAND_WriteMultiSectors

  NAND_ReadID (Thumb, 54 bytes, Stack size 0 bytes, nandflash.o(i.NAND_ReadID))
  [Called By]

  - >> NAND_Init

  NAND_ReadMultiSectors (Thumb, 144 bytes, Stack size 56 bytes, nandflash.o(i.NAND_ReadMultiSectors))
  [Stack]

  - Max Depth = 104
  - Call Chain = NAND_ReadMultiSectors ⇒ FSMC_NAND_ReadData ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> NAND_LBNtoPBN
  - >> FSMC_NAND_ReadData
  - >> __aeabi_uldivmod
  - >> __2printf
  [Called By]
  - >> disk_read

  NAND_WriteMultiSectors (Thumb, 280 bytes, Stack size 64 bytes, nandflash.o(i.NAND_WriteMultiSectors))
  [Stack]

  - Max Depth = 208
  - Call Chain = NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> NAND_MarkUsedBlock
  - >> NAND_LBNtoPBN
  - >> FSMC_NAND_WriteData
  - >> FSMC_NAND_CompPage
  - >> NAND_WriteToNewBlock
  - >> NAND_MarkBadBlock
  - >> __aeabi_memset
  - >> __2printf
  [Called By]
  - >> disk_write

  NAND_WriteToNewBlock (Thumb, 248 bytes, Stack size 48 bytes, nandflash.o(i.NAND_WriteToNewBlock))
  [Stack]

  - Max Depth = 144
  - Call Chain = NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> NAND_MarkUsedBlock
  - >> NAND_FindFreeBlock
  - >> NAND_BuildLUT
  - >> FSMC_NAND_PageCopyBackEx
  - >> FSMC_NAND_PageCopyBack
  - >> FSMC_NAND_EraseBlock
  - >> NAND_MarkBadBlock
  - >> __2printf
  [Called By]
  - >> NAND_WriteMultiSectors

  NET_STATUS_LED_Config (Thumb, 50 bytes, Stack size 16 bytes, led.o(i.NET_STATUS_LED_Config))
  [Stack]

  - Max Depth = 36
  - Call Chain = NET_STATUS_LED_Config ⇒ GPIO_Init
  [Calls]
  - >> GPIO_Init
  - >> RCC_AHB1PeriphClockCmd
  [Called By]
  - >> main

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

  - startup_stm32f2xx.o(RESET)

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

  - Max Depth = 8
  - Call Chain = NVIC_Configuration
  [Calls]
  - >> NVIC_PriorityGroupConfig
  [Called By]
  - >> main

  NVIC_Init (Thumb, 106 bytes, Stack size 16 bytes, misc.o(i.NVIC_Init))
  [Stack]

  - Max Depth = 16
  - Call Chain = NVIC_Init
  [Called By]
  - >> USART_485_config
  - >> USART_232_config

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

  - >> NVIC_Configuration

  OSEventNameSet (Thumb, 84 bytes, Stack size 24 bytes, os_core.o(i.OSEventNameSet))
  [Stack]

  - Max Depth = 24 + Unknown Stack Size
  - Call Chain = OSEventNameSet
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  [Called By]
  - >> OSTmr_Init

  OSInit (Thumb, 52 bytes, Stack size 8 bytes, os_core.o(i.OSInit))
  [Stack]

  - Max Depth = 160 + Unknown Stack Size
  - Call Chain = OSInit ⇒ OSTmr_Init ⇒ OSTmr_InitTask ⇒ OSTaskCreateExt ⇒ OS_TCBInit
  [Calls]
  - >> OS_QInit
  - >> OS_MemInit
  - >> OS_FlagInit
  - >> OSTmr_Init
  - >> OSInitHookEnd
  - >> OSInitHookBegin
  - >> OS_InitTaskStat
  - >> OS_InitTaskIdle
  - >> OS_InitTCBList
  - >> OS_InitRdyList
  - >> OS_InitMisc
  - >> OS_InitEventList
  [Called By]
  - >> main

  OSInitHookBegin (Thumb, 30 bytes, Stack size 0 bytes, os_cpu_c.o(i.OSInitHookBegin))
  [Called By]

  - >> OSInit

  OSInitHookEnd (Thumb, 2 bytes, Stack size 0 bytes, os_cpu_c.o(i.OSInitHookEnd))
  [Called By]

  - >> OSInit

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

  - >> SysTick_Handler
  - >> dlt645_hw_write

  OSIntExit (Thumb, 112 bytes, Stack size 8 bytes, os_core.o(i.OSIntExit))
  [Stack]

  - Max Depth = 8 + Unknown Stack Size
  - Call Chain = OSIntExit
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OSIntCtxSw
  - >> OS_SchedNew
  [Called By]
  - >> SysTick_Handler
  - >> dlt645_hw_write

  OSSchedLock (Thumb, 50 bytes, Stack size 8 bytes, os_core.o(i.OSSchedLock))
  [Stack]

  - Max Depth = 8 + Unknown Stack Size
  - Call Chain = OSSchedLock
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  [Called By]
  - >> delay_osschedlock
  - >> OSTmr_Task

  OSSchedUnlock (Thumb, 82 bytes, Stack size 8 bytes, os_core.o(i.OSSchedUnlock))
  [Stack]

  - Max Depth = 16 + Unknown Stack Size
  - Call Chain = OSSchedUnlock ⇒ OS_Sched
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OS_Sched
  [Called By]
  - >> delay_osschedunlock
  - >> OSTmr_Task

  OSSemCreate (Thumb, 72 bytes, Stack size 16 bytes, os_sem.o(i.OSSemCreate))
  [Stack]

  - Max Depth = 16 + Unknown Stack Size
  - Call Chain = OSSemCreate
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OS_EventWaitListInit
  [Called By]
  - >> OSTmr_Init

  OSSemPend (Thumb, 222 bytes, Stack size 24 bytes, os_sem.o(i.OSSemPend))
  [Stack]

  - Max Depth = 32 + Unknown Stack Size
  - Call Chain = OSSemPend ⇒ OS_Sched
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OS_Sched
  - >> OS_EventTaskWait
  - >> OS_EventTaskRemove
  [Called By]
  - >> OSTmr_Task

  OSSemPost (Thumb, 88 bytes, Stack size 16 bytes, os_sem.o(i.OSSemPost))
  [Stack]

  - Max Depth = 60 + Unknown Stack Size
  - Call Chain = OSSemPost ⇒ OS_EventTaskRdy ⇒ OS_EventTaskRemove
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OS_Sched
  - >> OS_EventTaskRdy
  [Called By]
  - >> OSTmrSignal

  OSStart (Thumb, 48 bytes, Stack size 8 bytes, os_core.o(i.OSStart))
  [Stack]

  - Max Depth = 8 + Unknown Stack Size
  - Call Chain = OSStart
  [Calls]
  - >> OSStartHighRdy
  - >> OS_SchedNew
  [Called By]
  - >> main

  OSStatInit (Thumb, 62 bytes, Stack size 8 bytes, os_core.o(i.OSStatInit))
  [Stack]

  - Max Depth = 32 + Unknown Stack Size
  - Call Chain = OSStatInit ⇒ OSTimeDly ⇒ OS_Sched
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OSTimeDly
  [Called By]
  - >> start_task

  OSTCBInitHook (Thumb, 2 bytes, Stack size 0 bytes, os_cpu_c.o(i.OSTCBInitHook))
  [Called By]

  - >> OS_TCBInit

  OSTaskCreate (Thumb, 148 bytes, Stack size 48 bytes, os_task.o(i.OSTaskCreate))
  [Stack]

  - Max Depth = 88 + Unknown Stack Size
  - Call Chain = OSTaskCreate ⇒ OS_TCBInit
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OSTaskStkInit
  - >> OS_TCBInit
  - >> OS_Sched
  [Called By]
  - >> start_task
  - >> main

  OSTaskCreateExt (Thumb, 170 bytes, Stack size 56 bytes, os_task.o(i.OSTaskCreateExt))
  [Stack]

  - Max Depth = 96 + Unknown Stack Size
  - Call Chain = OSTaskCreateExt ⇒ OS_TCBInit
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OSTaskStkInit
  - >> OS_TaskStkClr
  - >> OS_TCBInit
  - >> OS_Sched
  [Called By]
  - >> OSTmr_InitTask
  - >> OS_InitTaskStat
  - >> OS_InitTaskIdle

  OSTaskCreateHook (Thumb, 2 bytes, Stack size 0 bytes, os_cpu_c.o(i.OSTaskCreateHook))
  [Called By]

  - >> OS_TCBInit

  OSTaskDel (Thumb, 294 bytes, Stack size 24 bytes, os_task.o(i.OSTaskDel))
  [Stack]

  - Max Depth = 36 + Unknown Stack Size
  - Call Chain = OSTaskDel ⇒ OS_FlagUnlink
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OSTaskDelHook
  - >> OS_FlagUnlink
  - >> OS_Sched
  - >> OS_EventTaskRemove
  - >> OS_Dummy
  [Called By]
  - >> OS_TaskReturn

  OSTaskDelHook (Thumb, 2 bytes, Stack size 0 bytes, os_cpu_c.o(i.OSTaskDelHook))
  [Called By]

  - >> OSTaskDel

  OSTaskIdleHook (Thumb, 2 bytes, Stack size 0 bytes, os_cpu_c.o(i.OSTaskIdleHook))
  [Called By]

  - >> OS_TaskIdle

  OSTaskNameSet (Thumb, 98 bytes, Stack size 24 bytes, os_task.o(i.OSTaskNameSet))
  [Stack]

  - Max Depth = 24 + Unknown Stack Size
  - Call Chain = OSTaskNameSet
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  [Called By]
  - >> OSTmr_InitTask
  - >> OS_InitTaskStat
  - >> OS_InitTaskIdle

  OSTaskReturnHook (Thumb, 2 bytes, Stack size 0 bytes, os_cpu_c.o(i.OSTaskReturnHook))
  [Called By]

  - >> OS_TaskReturn

  OSTaskStatHook (Thumb, 2 bytes, Stack size 0 bytes, os_cpu_c.o(i.OSTaskStatHook))
  [Called By]

  - >> OS_TaskStat

  OSTaskStkChk (Thumb, 132 bytes, Stack size 32 bytes, os_task.o(i.OSTaskStkChk))
  [Stack]

  - Max Depth = 32 + Unknown Stack Size
  - Call Chain = OSTaskStkChk
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  [Called By]
  - >> OS_TaskStatStkChk

  OSTaskStkInit (Thumb, 152 bytes, Stack size 16 bytes, os_cpu_c.o(i.OSTaskStkInit))
  [Stack]

  - Max Depth = 16
  - Call Chain = OSTaskStkInit
  [Called By]
  - >> OSTaskCreate
  - >> OSTaskCreateExt

  OSTaskSuspend (Thumb, 152 bytes, Stack size 24 bytes, os_task.o(i.OSTaskSuspend))
  [Stack]

  - Max Depth = 32 + Unknown Stack Size
  - Call Chain = OSTaskSuspend ⇒ OS_Sched
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OS_Sched
  [Called By]
  - >> start_task
  - >> OS_TaskStat

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

  - os_cpu_a.o(.text)

  OSTimeDly (Thumb, 100 bytes, Stack size 16 bytes, os_time.o(i.OSTimeDly))
  [Stack]

  - Max Depth = 24 + Unknown Stack Size
  - Call Chain = OSTimeDly ⇒ OS_Sched
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OS_Sched
  [Called By]
  - >> OSTimeDlyHMSM
  - >> OSStatInit
  - >> delay_ostimedly
  - >> OS_TaskStat

  OSTimeDlyHMSM (Thumb, 86 bytes, Stack size 24 bytes, os_time.o(i.OSTimeDlyHMSM))
  [Stack]

  - Max Depth = 48 + Unknown Stack Size
  - Call Chain = OSTimeDlyHMSM ⇒ OSTimeDly ⇒ OS_Sched
  [Calls]
  - >> OSTimeDly
  [Called By]
  - >> net_status_led_task
  - >> led_task

  OSTimeGet (Thumb, 24 bytes, Stack size 16 bytes, os_time.o(i.OSTimeGet))
  [Stack]

  - Max Depth = 16 + Unknown Stack Size
  - Call Chain = OSTimeGet
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  [Called By]
  - >> SX1276LoRaProcess
  - >> SX1276FskProcess
  - >> mmodbus_sendRaw
  - >> mmodbus_receiveRaw
  - >> dlt645_hw_read

  OSTimeTick (Thumb, 210 bytes, Stack size 16 bytes, os_core.o(i.OSTimeTick))
  [Stack]

  - Max Depth = 92 + Unknown Stack Size
  - Call Chain = OSTimeTick ⇒ OSTimeTickHook ⇒ OSTmrSignal ⇒ OSSemPost ⇒ OS_EventTaskRdy ⇒ OS_EventTaskRemove
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OSTimeTickHook
  [Called By]
  - >> SysTick_Handler

  OSTimeTickHook (Thumb, 30 bytes, Stack size 8 bytes, os_cpu_c.o(i.OSTimeTickHook))
  [Stack]

  - Max Depth = 76 + Unknown Stack Size
  - Call Chain = OSTimeTickHook ⇒ OSTmrSignal ⇒ OSSemPost ⇒ OS_EventTaskRdy ⇒ OS_EventTaskRemove
  [Calls]
  - >> OSTmrSignal
  [Called By]
  - >> OSTimeTick

  OSTmrSignal (Thumb, 16 bytes, Stack size 8 bytes, os_tmr.o(i.OSTmrSignal))
  [Stack]

  - Max Depth = 68 + Unknown Stack Size
  - Call Chain = OSTmrSignal ⇒ OSSemPost ⇒ OS_EventTaskRdy ⇒ OS_EventTaskRemove
  [Calls]
  - >> OSSemPost
  [Called By]
  - >> OSTimeTickHook

  OSTmr_Init (Thumb, 168 bytes, Stack size 24 bytes, os_tmr.o(i.OSTmr_Init))
  [Stack]

  - Max Depth = 152 + Unknown Stack Size
  - Call Chain = OSTmr_Init ⇒ OSTmr_InitTask ⇒ OSTaskCreateExt ⇒ OS_TCBInit
  [Calls]
  - >> OSTmr_InitTask
  - >> OSSemCreate
  - >> OS_MemClr
  - >> OSEventNameSet
  [Called By]
  - >> OSInit

  OS_Dummy (Thumb, 2 bytes, Stack size 0 bytes, os_core.o(i.OS_Dummy))
  [Called By]

  - >> OSTaskDel

  OS_EventTaskRdy (Thumb, 114 bytes, Stack size 36 bytes, os_core.o(i.OS_EventTaskRdy))
  [Stack]

  - Max Depth = 44
  - Call Chain = OS_EventTaskRdy ⇒ OS_EventTaskRemove
  [Calls]
  - >> OS_EventTaskRemove
  [Called By]
  - >> OSSemPost

  OS_EventTaskRemove (Thumb, 42 bytes, Stack size 8 bytes, os_core.o(i.OS_EventTaskRemove))
  [Stack]

  - Max Depth = 8
  - Call Chain = OS_EventTaskRemove
  [Called By]
  - >> OSTaskDel
  - >> OSSemPend
  - >> OS_EventTaskRdy

  OS_EventTaskWait (Thumb, 112 bytes, Stack size 8 bytes, os_core.o(i.OS_EventTaskWait))
  [Stack]

  - Max Depth = 8
  - Call Chain = OS_EventTaskWait
  [Called By]
  - >> OSSemPend

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

  - >> OSSemCreate

  OS_FlagInit (Thumb, 74 bytes, Stack size 24 bytes, os_flag.o(i.OS_FlagInit))
  [Stack]

  - Max Depth = 24
  - Call Chain = OS_FlagInit
  [Calls]
  - >> OS_MemClr
  [Called By]
  - >> OSInit

  OS_FlagUnlink (Thumb, 36 bytes, Stack size 12 bytes, os_flag.o(i.OS_FlagUnlink))
  [Stack]

  - Max Depth = 12
  - Call Chain = OS_FlagUnlink
  [Called By]
  - >> OSTaskDel

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

  - >> OS_QInit
  - >> OS_MemInit
  - >> OS_FlagInit
  - >> OSTmr_Init
  - >> OS_InitTCBList
  - >> OS_InitEventList

  OS_MemInit (Thumb, 74 bytes, Stack size 16 bytes, os_mem.o(i.OS_MemInit))
  [Stack]

  - Max Depth = 16
  - Call Chain = OS_MemInit
  [Calls]
  - >> OS_MemClr
  [Called By]
  - >> OSInit

  OS_QInit (Thumb, 72 bytes, Stack size 24 bytes, os_q.o(i.OS_QInit))
  [Stack]

  - Max Depth = 24
  - Call Chain = OS_QInit
  [Calls]
  - >> OS_MemClr
  [Called By]
  - >> OSInit

  OS_Sched (Thumb, 88 bytes, Stack size 8 bytes, os_core.o(i.OS_Sched))
  [Stack]

  - Max Depth = 8 + Unknown Stack Size
  - Call Chain = OS_Sched
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OSCtxSw
  - >> OS_SchedNew
  [Called By]
  - >> OSTaskSuspend
  - >> OSTaskCreate
  - >> OSTimeDly
  - >> OSSchedUnlock
  - >> OSTaskDel
  - >> OSSemPost
  - >> OSSemPend
  - >> OSTaskCreateExt

  OS_TCBInit (Thumb, 278 bytes, Stack size 40 bytes, os_core.o(i.OS_TCBInit))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = OS_TCBInit
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OSTaskCreateHook
  - >> OSTCBInitHook
  [Called By]
  - >> OSTaskCreate
  - >> OSTaskCreateExt

  OS_TaskIdle (Thumb, 34 bytes, Stack size 0 bytes, os_core.o(i.OS_TaskIdle))
  [Calls]

  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OSTaskIdleHook
  [Address Reference Count : 1]
  - os_core.o(i.OS_InitTaskIdle)

  OS_TaskReturn (Thumb, 18 bytes, Stack size 8 bytes, os_task.o(i.OS_TaskReturn))
  [Stack]

  - Max Depth = 44 + Unknown Stack Size
  - Call Chain = OS_TaskReturn ⇒ OSTaskDel ⇒ OS_FlagUnlink
  [Calls]
  - >> OSTaskReturnHook
  - >> OSTaskDel
  [Address Reference Count : 1]
  - os_cpu_c.o(i.OSTaskStkInit)

  OS_TaskStat (Thumb, 116 bytes, Stack size 0 bytes, os_core.o(i.OS_TaskStat))
  [Stack]

  - Max Depth = 56 + Unknown Stack Size
  - Call Chain = OS_TaskStat ⇒ OS_TaskStatStkChk ⇒ OSTaskStkChk
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OSTaskSuspend
  - >> OSTimeDly
  - >> OSTaskStatHook
  - >> OS_TaskStatStkChk
  [Address Reference Count : 1]
  - os_core.o(i.OS_InitTaskStat)

  OS_TaskStatStkChk (Thumb, 54 bytes, Stack size 24 bytes, os_core.o(i.OS_TaskStatStkChk))
  [Stack]

  - Max Depth = 56 + Unknown Stack Size
  - Call Chain = OS_TaskStatStkChk ⇒ OSTaskStkChk
  [Calls]
  - >> OSTaskStkChk
  [Called By]
  - >> OS_TaskStat

  OS_TaskStkClr (Thumb, 26 bytes, Stack size 0 bytes, os_task.o(i.OS_TaskStkClr))
  [Called By]

  - >> OSTaskCreateExt

  RCC_AHB1PeriphClockCmd (Thumb, 26 bytes, Stack size 0 bytes, stm32f2xx_rcc.o(i.RCC_AHB1PeriphClockCmd))
  [Called By]

  - >> USART_485_config
  - >> USART_232_config
  - >> NET_STATUS_LED_Config
  - >> LED_GPIO_Config
  - >> FSMC_NAND_Init
  - >> USART_485_DE_init
  - >> SRAM_GPIO_Config
  - >> SX1276InitIo
  - >> SPI2_GPIO_Config

  RCC_AHB3PeriphClockCmd (Thumb, 26 bytes, Stack size 0 bytes, stm32f2xx_rcc.o(i.RCC_AHB3PeriphClockCmd))
  [Called By]

  - >> FSMC_SRAM_Init
  - >> FSMC_NAND_Init

  RCC_APB1PeriphClockCmd (Thumb, 26 bytes, Stack size 0 bytes, stm32f2xx_rcc.o(i.RCC_APB1PeriphClockCmd))
  [Called By]

  - >> USART_485_config
  - >> SPI2_GPIO_Config

  RCC_APB2PeriphClockCmd (Thumb, 26 bytes, Stack size 0 bytes, stm32f2xx_rcc.o(i.RCC_APB2PeriphClockCmd))
  [Called By]

  - >> USART_232_config

  RCC_GetClocksFreq (Thumb, 214 bytes, Stack size 20 bytes, stm32f2xx_rcc.o(i.RCC_GetClocksFreq))
  [Stack]

  - Max Depth = 20
  - Call Chain = RCC_GetClocksFreq
  [Called By]
  - >> USART_Init

  RadioDriverInit (Thumb, 30 bytes, Stack size 0 bytes, radio.o(i.RadioDriverInit))
  [Called By]

  - >> data_task

  SPI2_GPIO_Config (Thumb, 122 bytes, Stack size 16 bytes, spi.o(i.SPI2_GPIO_Config))
  [Stack]

  - Max Depth = 36
  - Call Chain = SPI2_GPIO_Config ⇒ GPIO_PinAFConfig
  [Calls]
  - >> GPIO_PinAFConfig
  - >> GPIO_Init
  - >> RCC_APB1PeriphClockCmd
  - >> RCC_AHB1PeriphClockCmd
  [Called By]
  - >> spi_config

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

  - Max Depth = 8
  - Call Chain = SPI2_ReadWriteByte
  [Calls]
  - >> SPI_I2S_SendData
  - >> SPI_I2S_ReceiveData
  - >> SPI_I2S_GetFlagStatus
  [Called By]
  - >> SX1276WriteBuffer
  - >> SX1276ReadBuffer

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

  - >> spi_config

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

  - >> SPI2_ReadWriteByte

  SPI_I2S_ReceiveData (Thumb, 6 bytes, Stack size 0 bytes, stm32f2xx_spi.o(i.SPI_I2S_ReceiveData))
  [Called By]

  - >> SPI2_ReadWriteByte

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

  - >> SPI2_ReadWriteByte

  SPI_Init (Thumb, 60 bytes, Stack size 8 bytes, stm32f2xx_spi.o(i.SPI_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = SPI_Init
  [Called By]
  - >> spi_config

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

  - startup_stm32f2xx.o(RESET)

  SX1276FskGetPacketPayloadSize (Thumb, 92 bytes, Stack size 12 bytes, sx1276-fsk.o(i.SX1276FskGetPacketPayloadSize))
  [Stack]

  - Max Depth = 12
  - Call Chain = SX1276FskGetPacketPayloadSize
  [Called By]
  - >> SX1276FskProcess

  SX1276FskGetRxPacket (Thumb, 30 bytes, Stack size 16 bytes, sx1276-fsk.o(i.SX1276FskGetRxPacket))
  [Stack]

  - Max Depth = 16
  - Call Chain = SX1276FskGetRxPacket
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> SX1276GetRxPacket

  SX1276FskProcess (Thumb, 1450 bytes, Stack size 72 bytes, sx1276-fsk.o(i.SX1276FskProcess))
  [Stack]

  - Max Depth = 192 + Unknown Stack Size
  - Call Chain = SX1276FskProcess ⇒ SX1276FskReadAfc ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_ui2d
  - >> __aeabi_ddiv
  - >> OSTimeGet
  - >> __aeabi_dadd
  - >> __aeabi_d2uiz
  - >> SX1276WriteFifo
  - >> SX1276ReadFifo
  - >> SX1276ReadDio4
  - >> SX1276ReadDio3
  - >> SX1276ReadDio2
  - >> SX1276ReadDio1
  - >> SX1276ReadDio0
  - >> SX1276FskReadAfc
  - >> SX1276FskGetPacketPayloadSize
  - >> SX1276WriteBuffer
  - >> SX1276Write
  - >> SX1276FskSetOpMode
  - >> SX1276FskReadRxGain
  - >> SX1276FskReadRssi
  - >> __aeabi_dmul
  - >> __aeabi_memclr
  - >> round
  [Called By]
  - >> SX1276Process

  SX1276FskReadAfc (Thumb, 70 bytes, Stack size 32 bytes, sx1276-fsk.o(i.SX1276FskReadAfc))
  [Stack]

  - Max Depth = 120
  - Call Chain = SX1276FskReadAfc ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> SX1276ReadBuffer
  - >> __aeabi_i2d
  - >> __aeabi_dmul
  - >> __aeabi_d2iz
  [Called By]
  - >> SX1276FskProcess

  SX1276FskReadRssi (Thumb, 42 bytes, Stack size 16 bytes, sx1276-fsk.o(i.SX1276FskReadRssi))
  [Stack]

  - Max Depth = 72
  - Call Chain = SX1276FskReadRssi ⇒ __aeabi_ui2d ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_ui2d
  - >> __aeabi_ddiv
  - >> SX1276Read
  [Called By]
  - >> SX1276FskProcess

  SX1276FskReadRxGain (Thumb, 24 bytes, Stack size 8 bytes, sx1276-fsk.o(i.SX1276FskReadRxGain))
  [Stack]

  - Max Depth = 56
  - Call Chain = SX1276FskReadRxGain ⇒ SX1276Read ⇒ SX1276ReadBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276Read
  [Called By]
  - >> SX1276FskProcess

  SX1276FskSetOpMode (Thumb, 88 bytes, Stack size 16 bytes, sx1276-fsk.o(i.SX1276FskSetOpMode))
  [Stack]

  - Max Depth = 64
  - Call Chain = SX1276FskSetOpMode ⇒ SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276WriteRxTx
  - >> SX1276Write
  [Called By]
  - >> SX1276FskProcess

  SX1276FskSetRFState (Thumb, 6 bytes, Stack size 0 bytes, sx1276-fsk.o(i.SX1276FskSetRFState))
  [Called By]

  - >> SX1276StartRx

  SX1276FskSetTxPacket (Thumb, 28 bytes, Stack size 16 bytes, sx1276-fsk.o(i.SX1276FskSetTxPacket))
  [Stack]

  - Max Depth = 16
  - Call Chain = SX1276FskSetTxPacket
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> SX1276SetTxPacket

  SX1276GetRxPacket (Thumb, 32 bytes, Stack size 16 bytes, sx1276.o(i.SX1276GetRxPacket))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX1276GetRxPacket ⇒ SX1276LoRaGetRxPacket
  [Calls]
  - >> SX1276LoRaGetRxPacket
  - >> SX1276FskGetRxPacket
  [Address Reference Count : 1]
  - radio.o(i.RadioDriverInit)

  SX1276Init (Thumb, 94 bytes, Stack size 8 bytes, sx1276.o(i.SX1276Init))
  [Stack]

  - Max Depth = 96 + Unknown Stack Size
  - Call Chain = SX1276Init ⇒ SX1276LoRaInit ⇒ SX1276LoRaSetRFFrequency ⇒ __aeabi_ui2d ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> SX1276Read
  - >> SX1276LoRaInit
  - >> SX1276InitIo
  - >> SX1276SetLoRaOn
  - >> SX1276Reset
  - >> __2printf
  [Address Reference Count : 1]
  - radio.o(i.RadioDriverInit)

  SX1276InitIo (Thumb, 82 bytes, Stack size 16 bytes, sx1276-hal.o(i.SX1276InitIo))
  [Stack]

  - Max Depth = 76
  - Call Chain = SX1276InitIo ⇒ spi_config ⇒ SPI2_GPIO_Config ⇒ GPIO_PinAFConfig
  [Calls]
  - >> GPIO_Init
  - >> RCC_AHB1PeriphClockCmd
  - >> spi_config
  [Called By]
  - >> SX1276Init

  SX1276LoRaGetRxPacket (Thumb, 30 bytes, Stack size 16 bytes, sx1276-lora.o(i.SX1276LoRaGetRxPacket))
  [Stack]

  - Max Depth = 16
  - Call Chain = SX1276LoRaGetRxPacket
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> SX1276GetRxPacket

  SX1276LoRaInit (Thumb, 182 bytes, Stack size 8 bytes, sx1276-lora.o(i.SX1276LoRaInit))
  [Stack]

  - Max Depth = 88
  - Call Chain = SX1276LoRaInit ⇒ SX1276LoRaSetRFFrequency ⇒ __aeabi_ui2d ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> SX1276LoRaSetSymbTimeout
  - >> SX1276LoRaSetSpreadingFactor
  - >> SX1276LoRaSetSignalBandwidth
  - >> SX1276LoRaSetRFPower
  - >> SX1276LoRaSetRFFrequency
  - >> SX1276LoRaSetPayloadLength
  - >> SX1276LoRaSetPacketCrcOn
  - >> SX1276LoRaSetPa20dBm
  - >> SX1276LoRaSetPAOutput
  - >> SX1276LoRaSetLowDatarateOptimize
  - >> SX1276LoRaSetImplicitHeaderOn
  - >> SX1276LoRaSetErrorCoding
  - >> SX1276LoRaSetDefaults
  - >> SX1276WriteBuffer
  - >> SX1276ReadBuffer
  - >> SX1276LoRaSetOpMode
  [Called By]
  - >> SX1276Init

  SX1276LoRaProcess (Thumb, 1454 bytes, Stack size 40 bytes, sx1276-lora.o(i.SX1276LoRaProcess))
  [Stack]

  - Max Depth = 128 + Unknown Stack Size
  - Call Chain = SX1276LoRaProcess ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_ui2d
  - >> OSTimeGet
  - >> SX1276LoRaSetRFFrequency
  - >> __aeabi_dadd
  - >> SX1276WriteFifo
  - >> SX1276ReadFifo
  - >> SX1276ReadDio4
  - >> SX1276ReadDio3
  - >> SX1276ReadDio0
  - >> SX1276WriteBuffer
  - >> SX1276Write
  - >> SX1276Read
  - >> SX1276LoRaSetOpMode
  - >> __aeabi_i2d
  - >> __aeabi_dmul
  - >> __aeabi_memclr
  [Called By]
  - >> SX1276Process

  SX1276LoRaSetDefaults (Thumb, 16 bytes, Stack size 8 bytes, sx1276-lora.o(i.SX1276LoRaSetDefaults))
  [Stack]

  - Max Depth = 56
  - Call Chain = SX1276LoRaSetDefaults ⇒ SX1276Read ⇒ SX1276ReadBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276Read
  [Called By]
  - >> SX1276LoRaInit

  SX1276LoRaSetErrorCoding (Thumb, 54 bytes, Stack size 8 bytes, sx1276-loramisc.o(i.SX1276LoRaSetErrorCoding))
  [Stack]

  - Max Depth = 56
  - Call Chain = SX1276LoRaSetErrorCoding ⇒ SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276Write
  - >> SX1276Read
  [Called By]
  - >> SX1276LoRaInit

  SX1276LoRaSetImplicitHeaderOn (Thumb, 52 bytes, Stack size 8 bytes, sx1276-loramisc.o(i.SX1276LoRaSetImplicitHeaderOn))
  [Stack]

  - Max Depth = 56
  - Call Chain = SX1276LoRaSetImplicitHeaderOn ⇒ SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276Write
  - >> SX1276Read
  [Called By]
  - >> SX1276LoRaInit

  SX1276LoRaSetLowDatarateOptimize (Thumb, 56 bytes, Stack size 8 bytes, sx1276-loramisc.o(i.SX1276LoRaSetLowDatarateOptimize))
  [Stack]

  - Max Depth = 56
  - Call Chain = SX1276LoRaSetLowDatarateOptimize ⇒ SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276Write
  - >> SX1276Read
  [Called By]
  - >> SX1276LoRaInit

  SX1276LoRaSetNbTrigPeaks (Thumb, 54 bytes, Stack size 8 bytes, sx1276-loramisc.o(i.SX1276LoRaSetNbTrigPeaks))
  [Stack]

  - Max Depth = 56
  - Call Chain = SX1276LoRaSetNbTrigPeaks ⇒ SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276Write
  - >> SX1276Read
  [Called By]
  - >> SX1276LoRaSetSpreadingFactor

  SX1276LoRaSetOpMode (Thumb, 88 bytes, Stack size 16 bytes, sx1276-lora.o(i.SX1276LoRaSetOpMode))
  [Stack]

  - Max Depth = 64
  - Call Chain = SX1276LoRaSetOpMode ⇒ SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276WriteRxTx
  - >> SX1276Write
  [Called By]
  - >> SX1276LoRaProcess
  - >> SX1276LoRaInit
  - >> SX1276SetLoRaOn

  SX1276LoRaSetPAOutput (Thumb, 48 bytes, Stack size 8 bytes, sx1276-loramisc.o(i.SX1276LoRaSetPAOutput))
  [Stack]

  - Max Depth = 56
  - Call Chain = SX1276LoRaSetPAOutput ⇒ SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276Write
  - >> SX1276Read
  [Called By]
  - >> SX1276LoRaInit

  SX1276LoRaSetPa20dBm (Thumb, 84 bytes, Stack size 8 bytes, sx1276-loramisc.o(i.SX1276LoRaSetPa20dBm))
  [Stack]

  - Max Depth = 56
  - Call Chain = SX1276LoRaSetPa20dBm ⇒ SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276Write
  - >> SX1276Read
  [Called By]
  - >> SX1276LoRaInit

  SX1276LoRaSetPacketCrcOn (Thumb, 54 bytes, Stack size 8 bytes, sx1276-loramisc.o(i.SX1276LoRaSetPacketCrcOn))
  [Stack]

  - Max Depth = 56
  - Call Chain = SX1276LoRaSetPacketCrcOn ⇒ SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276Write
  - >> SX1276Read
  [Called By]
  - >> SX1276LoRaInit

  SX1276LoRaSetPayloadLength (Thumb, 32 bytes, Stack size 8 bytes, sx1276-loramisc.o(i.SX1276LoRaSetPayloadLength))
  [Stack]

  - Max Depth = 56
  - Call Chain = SX1276LoRaSetPayloadLength ⇒ SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276Write
  [Called By]
  - >> SX1276LoRaInit

  SX1276LoRaSetRFFrequency (Thumb, 74 bytes, Stack size 24 bytes, sx1276-loramisc.o(i.SX1276LoRaSetRFFrequency))
  [Stack]

  - Max Depth = 80
  - Call Chain = SX1276LoRaSetRFFrequency ⇒ __aeabi_ui2d ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_ui2d
  - >> __aeabi_ddiv
  - >> __aeabi_d2uiz
  - >> SX1276WriteBuffer
  [Called By]
  - >> SX1276LoRaProcess
  - >> SX1276LoRaInit

  SX1276LoRaSetRFPower (Thumb, 252 bytes, Stack size 8 bytes, sx1276-loramisc.o(i.SX1276LoRaSetRFPower))
  [Stack]

  - Max Depth = 56
  - Call Chain = SX1276LoRaSetRFPower ⇒ SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276Write
  - >> SX1276Read
  [Called By]
  - >> SX1276LoRaInit

  SX1276LoRaSetRFState (Thumb, 6 bytes, Stack size 0 bytes, sx1276-lora.o(i.SX1276LoRaSetRFState))
  [Called By]

  - >> SX1276StartRx

  SX1276LoRaSetSignalBandwidth (Thumb, 50 bytes, Stack size 8 bytes, sx1276-loramisc.o(i.SX1276LoRaSetSignalBandwidth))
  [Stack]

  - Max Depth = 56
  - Call Chain = SX1276LoRaSetSignalBandwidth ⇒ SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276Write
  - >> SX1276Read
  [Called By]
  - >> SX1276LoRaInit

  SX1276LoRaSetSpreadingFactor (Thumb, 82 bytes, Stack size 8 bytes, sx1276-loramisc.o(i.SX1276LoRaSetSpreadingFactor))
  [Stack]

  - Max Depth = 64
  - Call Chain = SX1276LoRaSetSpreadingFactor ⇒ SX1276LoRaSetNbTrigPeaks ⇒ SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276LoRaSetNbTrigPeaks
  - >> SX1276Write
  - >> SX1276Read
  [Called By]
  - >> SX1276LoRaInit

  SX1276LoRaSetSymbTimeout (Thumb, 66 bytes, Stack size 8 bytes, sx1276-loramisc.o(i.SX1276LoRaSetSymbTimeout))
  [Stack]

  - Max Depth = 40
  - Call Chain = SX1276LoRaSetSymbTimeout ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276WriteBuffer
  - >> SX1276ReadBuffer
  [Called By]
  - >> SX1276LoRaInit

  SX1276LoRaSetTxPacket (Thumb, 28 bytes, Stack size 16 bytes, sx1276-lora.o(i.SX1276LoRaSetTxPacket))
  [Stack]

  - Max Depth = 16
  - Call Chain = SX1276LoRaSetTxPacket
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> SX1276SetTxPacket

  SX1276Process (Thumb, 20 bytes, Stack size 8 bytes, sx1276.o(i.SX1276Process))
  [Stack]

  - Max Depth = 200 + Unknown Stack Size
  - Call Chain = SX1276Process ⇒ SX1276FskProcess ⇒ SX1276FskReadAfc ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> SX1276LoRaProcess
  - >> SX1276FskProcess
  [Address Reference Count : 1]
  - radio.o(i.RadioDriverInit)

  SX1276Read (Thumb, 18 bytes, Stack size 16 bytes, sx1276-hal.o(i.SX1276Read))
  [Stack]

  - Max Depth = 48
  - Call Chain = SX1276Read ⇒ SX1276ReadBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276ReadBuffer
  [Called By]
  - >> SX1276LoRaSetNbTrigPeaks
  - >> SX1276LoRaSetSpreadingFactor
  - >> SX1276LoRaSetSignalBandwidth
  - >> SX1276LoRaSetRFPower
  - >> SX1276LoRaSetPacketCrcOn
  - >> SX1276LoRaSetPa20dBm
  - >> SX1276LoRaSetPAOutput
  - >> SX1276LoRaSetLowDatarateOptimize
  - >> SX1276LoRaSetImplicitHeaderOn
  - >> SX1276LoRaSetErrorCoding
  - >> SX1276LoRaSetDefaults
  - >> SX1276LoRaProcess
  - >> SX1276FskReadRxGain
  - >> SX1276FskReadRssi
  - >> SX1276Init

  SX1276ReadBuffer (Thumb, 54 bytes, Stack size 24 bytes, sx1276-hal.o(i.SX1276ReadBuffer))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX1276ReadBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SpiNSSEnable
  - >> SPI2_ReadWriteByte
  [Called By]
  - >> SX1276LoRaSetSymbTimeout
  - >> SX1276ReadFifo
  - >> SX1276FskReadAfc
  - >> SX1276Read
  - >> SX1276LoRaInit
  - >> SX1276SetLoRaOn

  SX1276ReadDio0 (Thumb, 12 bytes, Stack size 8 bytes, sx1276-hal.o(i.SX1276ReadDio0))
  [Stack]

  - Max Depth = 8
  - Call Chain = SX1276ReadDio0
  [Calls]
  - >> GPIO_ReadInputDataBit
  [Called By]
  - >> SX1276LoRaProcess
  - >> SX1276FskProcess

  SX1276ReadDio1 (Thumb, 4 bytes, Stack size 0 bytes, sx1276-hal.o(i.SX1276ReadDio1))
  [Called By]

  - >> SX1276FskProcess

  SX1276ReadDio2 (Thumb, 4 bytes, Stack size 0 bytes, sx1276-hal.o(i.SX1276ReadDio2))
  [Called By]

  - >> SX1276FskProcess

  SX1276ReadDio3 (Thumb, 4 bytes, Stack size 0 bytes, sx1276-hal.o(i.SX1276ReadDio3))
  [Called By]

  - >> SX1276LoRaProcess
  - >> SX1276FskProcess

  SX1276ReadDio4 (Thumb, 4 bytes, Stack size 0 bytes, sx1276-hal.o(i.SX1276ReadDio4))
  [Called By]

  - >> SX1276LoRaProcess
  - >> SX1276FskProcess

  SX1276ReadFifo (Thumb, 18 bytes, Stack size 16 bytes, sx1276-hal.o(i.SX1276ReadFifo))
  [Stack]

  - Max Depth = 48
  - Call Chain = SX1276ReadFifo ⇒ SX1276ReadBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276ReadBuffer
  [Called By]
  - >> SX1276LoRaProcess
  - >> SX1276FskProcess

  SX1276Reset (Thumb, 28 bytes, Stack size 8 bytes, sx1276.o(i.SX1276Reset))
  [Stack]

  - Max Depth = 80 + Unknown Stack Size
  - Call Chain = SX1276Reset ⇒ delay_ms ⇒ delay_us ⇒ delay_osschedunlock ⇒ OSSchedUnlock ⇒ OS_Sched
  [Calls]
  - >> delay_ms
  - >> SX1276SetReset
  [Called By]
  - >> SX1276Init
  [Address Reference Count : 1]
  - radio.o(i.RadioDriverInit)

  SX1276SetLoRaOn (Thumb, 170 bytes, Stack size 8 bytes, sx1276.o(i.SX1276SetLoRaOn))
  [Stack]

  - Max Depth = 72
  - Call Chain = SX1276SetLoRaOn ⇒ SX1276LoRaSetOpMode ⇒ SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276WriteBuffer
  - >> SX1276Write
  - >> SX1276ReadBuffer
  - >> SX1276LoRaSetOpMode
  [Called By]
  - >> SX1276Init

  SX1276SetReset (Thumb, 18 bytes, Stack size 8 bytes, sx1276-hal.o(i.SX1276SetReset))
  [Stack]

  - Max Depth = 8
  - Call Chain = SX1276SetReset
  [Calls]
  - >> GPIO_WriteBit
  [Called By]
  - >> SX1276Reset

  SX1276SetTxPacket (Thumb, 32 bytes, Stack size 16 bytes, sx1276.o(i.SX1276SetTxPacket))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX1276SetTxPacket ⇒ SX1276LoRaSetTxPacket
  [Calls]
  - >> SX1276LoRaSetTxPacket
  - >> SX1276FskSetTxPacket
  [Address Reference Count : 1]
  - radio.o(i.RadioDriverInit)

  SX1276StartRx (Thumb, 24 bytes, Stack size 8 bytes, sx1276.o(i.SX1276StartRx))
  [Stack]

  - Max Depth = 8
  - Call Chain = SX1276StartRx
  [Calls]
  - >> SX1276LoRaSetRFState
  - >> SX1276FskSetRFState
  [Address Reference Count : 1]
  - radio.o(i.RadioDriverInit)

  SX1276Write (Thumb, 16 bytes, Stack size 16 bytes, sx1276-hal.o(i.SX1276Write))
  [Stack]

  - Max Depth = 48
  - Call Chain = SX1276Write ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276WriteBuffer
  [Called By]
  - >> SX1276LoRaSetNbTrigPeaks
  - >> SX1276LoRaSetSpreadingFactor
  - >> SX1276LoRaSetSignalBandwidth
  - >> SX1276LoRaSetRFPower
  - >> SX1276LoRaSetPayloadLength
  - >> SX1276LoRaSetPacketCrcOn
  - >> SX1276LoRaSetPa20dBm
  - >> SX1276LoRaSetPAOutput
  - >> SX1276LoRaSetLowDatarateOptimize
  - >> SX1276LoRaSetImplicitHeaderOn
  - >> SX1276LoRaSetErrorCoding
  - >> SX1276LoRaSetOpMode
  - >> SX1276LoRaProcess
  - >> SX1276FskSetOpMode
  - >> SX1276FskProcess
  - >> SX1276SetLoRaOn

  SX1276WriteBuffer (Thumb, 52 bytes, Stack size 24 bytes, sx1276-hal.o(i.SX1276WriteBuffer))
  [Stack]

  - Max Depth = 32
  - Call Chain = SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SpiNSSEnable
  - >> SPI2_ReadWriteByte
  [Called By]
  - >> SX1276LoRaSetSymbTimeout
  - >> SX1276LoRaSetRFFrequency
  - >> SX1276WriteFifo
  - >> SX1276Write
  - >> SX1276LoRaProcess
  - >> SX1276LoRaInit
  - >> SX1276FskProcess
  - >> SX1276SetLoRaOn

  SX1276WriteFifo (Thumb, 18 bytes, Stack size 16 bytes, sx1276-hal.o(i.SX1276WriteFifo))
  [Stack]

  - Max Depth = 48
  - Call Chain = SX1276WriteFifo ⇒ SX1276WriteBuffer ⇒ SpiNSSEnable
  [Calls]
  - >> SX1276WriteBuffer
  [Called By]
  - >> SX1276LoRaProcess
  - >> SX1276FskProcess

  SX1276WriteRxTx (Thumb, 2 bytes, Stack size 0 bytes, sx1276-hal.o(i.SX1276WriteRxTx))
  [Called By]

  - >> SX1276LoRaSetOpMode
  - >> SX1276FskSetOpMode

  SlaveProtocolAnalysis (Thumb, 434 bytes, Stack size 32 bytes, protocol.o(i.SlaveProtocolAnalysis))
  [Stack]

  - Max Depth = 88
  - Call Chain = SlaveProtocolAnalysis ⇒ malloc ⇒ internal_alloc
  [Calls]
  - >> get_node_receive_params
  - >> malloc
  [Called By]
  - >> data_task

  SpiNSSEnable (Thumb, 18 bytes, Stack size 8 bytes, spi.o(i.SpiNSSEnable))
  [Stack]

  - Max Depth = 8
  - Call Chain = SpiNSSEnable
  [Calls]
  - >> GPIO_WriteBit
  [Called By]
  - >> SX1276WriteBuffer
  - >> SX1276ReadBuffer

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

  - >> delay_init

  SysTick_Handler (Thumb, 24 bytes, Stack size 8 bytes, delay.o(i.SysTick_Handler))
  [Stack]

  - Max Depth = 100 + Unknown Stack Size
  - Call Chain = SysTick_Handler ⇒ OSTimeTick ⇒ OSTimeTickHook ⇒ OSTmrSignal ⇒ OSSemPost ⇒ OS_EventTaskRdy ⇒ OS_EventTaskRemove
  [Calls]
  - >> OSTimeTick
  - >> OSIntExit
  - >> OSIntEnter
  [Address Reference Count : 1]
  - startup_stm32f2xx.o(RESET)

  SystemInit (Thumb, 78 bytes, Stack size 8 bytes, system_stm32f2xx.o(i.SystemInit))
  [Stack]

  - Max Depth = 148
  - Call Chain = SystemInit ⇒ SystemInit_ExtMemCtl ⇒ FSMC_SRAM_Init ⇒ SRAM_GPIO_Config ⇒ GPIO_PinAFConfig
  [Calls]
  - >> SystemInit_ExtMemCtl
  - >> SetSysClock
  [Address Reference Count : 1]
  - startup_stm32f2xx.o(.text)

  USART6_IRQHandler (Thumb, 70 bytes, Stack size 8 bytes, usart.o(i.USART6_IRQHandler))
  [Stack]

  - Max Depth = 24
  - Call Chain = USART6_IRQHandler ⇒ USART_GetITStatus
  [Calls]
  - >> DMA_GetCurrDataCounter
  - >> DMA_Cmd
  - >> DMA_ClearFlag
  - >> USART_GetITStatus
  [Address Reference Count : 1]
  - startup_stm32f2xx.o(RESET)

  USART_232_config (Thumb, 190 bytes, Stack size 32 bytes, usart.o(i.USART_232_config))
  [Stack]

  - Max Depth = 100
  - Call Chain = USART_232_config ⇒ USART_Init ⇒ RCC_GetClocksFreq
  [Calls]
  - >> NVIC_Init
  - >> GPIO_PinAFConfig
  - >> GPIO_Init
  - >> RCC_APB2PeriphClockCmd
  - >> RCC_AHB1PeriphClockCmd
  - >> USART_Init
  - >> USART_ITConfig
  - >> USART_Cmd
  - >> USART_ClearFlag
  [Called By]
  - >> main

  USART_485_DE_init (Thumb, 48 bytes, Stack size 16 bytes, usart.o(i.USART_485_DE_init))
  [Stack]

  - Max Depth = 36
  - Call Chain = USART_485_DE_init ⇒ GPIO_Init
  [Calls]
  - >> GPIO_Init
  - >> RCC_AHB1PeriphClockCmd
  [Called By]
  - >> USART_485_config

  USART_485_config (Thumb, 212 bytes, Stack size 32 bytes, usart.o(i.USART_485_config))
  [Stack]

  - Max Depth = 100
  - Call Chain = USART_485_config ⇒ USART_Init ⇒ RCC_GetClocksFreq
  [Calls]
  - >> NVIC_Init
  - >> GPIO_PinAFConfig
  - >> GPIO_Init
  - >> RCC_APB1PeriphClockCmd
  - >> RCC_AHB1PeriphClockCmd
  - >> USART_485_DE_init
  - >> USART_Init
  - >> USART_ITConfig
  - >> USART_Cmd
  - >> USART_ClearFlag
  [Called By]
  - >> main

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

  - >> USART_485_config
  - >> USART_232_config

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

  - >> USART_485_config
  - >> USART_232_config

  USART_GetFlagStatus (Thumb, 26 bytes, Stack size 0 bytes, stm32f2xx_usart.o(i.USART_GetFlagStatus))
  [Called By]

  - >> fputc
  - >> mmodbus_sendRaw
  - >> mmodbus_receiveRaw
  - >> dlt645_hw_write

  USART_GetITStatus (Thumb, 84 bytes, Stack size 16 bytes, stm32f2xx_usart.o(i.USART_GetITStatus))
  [Stack]

  - Max Depth = 16
  - Call Chain = USART_GetITStatus
  [Called By]
  - >> USART6_IRQHandler

  USART_ITConfig (Thumb, 74 bytes, Stack size 20 bytes, stm32f2xx_usart.o(i.USART_ITConfig))
  [Stack]

  - Max Depth = 20
  - Call Chain = USART_ITConfig
  [Called By]
  - >> USART_485_config
  - >> USART_232_config

  USART_Init (Thumb, 204 bytes, Stack size 48 bytes, stm32f2xx_usart.o(i.USART_Init))
  [Stack]

  - Max Depth = 68
  - Call Chain = USART_Init ⇒ RCC_GetClocksFreq
  [Calls]
  - >> RCC_GetClocksFreq
  [Called By]
  - >> USART_485_config
  - >> USART_232_config

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

  - >> mmodbus_receiveRaw

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

  - >> fputc
  - >> mmodbus_sendRaw
  - >> dlt645_hw_write

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

  - startup_stm32f2xx.o(RESET)

  __0printf (Thumb, 22 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)
  [Calls]

  - >> _printf_core

  __1printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)

  __2printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf))
  [Stack]

  - Max Depth = 24
  - Call Chain = __2printf
  [Called By]
  - >> read_file
  - >> FSMC_NAND_WriteSpare
  - >> FSMC_NAND_WritePage
  - >> FSMC_NAND_WriteData
  - >> FSMC_NAND_ReadSpare
  - >> FSMC_NAND_ReadData
  - >> FSMC_NAND_PageCopyBackEx
  - >> FSMC_NAND_PageCopyBack
  - >> NAND_WriteToNewBlock
  - >> NAND_WriteMultiSectors
  - >> NAND_ReadMultiSectors
  - >> NAND_MarkBadBlock
  - >> SX1276Init
  - >> disk_write

  __c89printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)

  printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)

  __0sprintf (Thumb, 34 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED)
  [Calls]

  - >> _sputc
  - >> _printf_core

  __1sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED)

  __2sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf))
  [Stack]

  - Max Depth = 24
  - Call Chain = __2sprintf
  [Called By]
  - >> addNode
  - >> read_file
  - >> addGatewayParams

  __c89sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED)

  sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED)

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

  - >> pow

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

  - >> _strtoul
  - >> strtol

  __rt_errno_addr (Thumb, 0 bytes, Stack size 0 bytes, errno.o(i.__aeabi_errno_addr), UNUSED)

  free (Thumb, 88 bytes, Stack size 12 bytes, mallocr.o(i.__free$realloc))
  [Stack]

  - Max Depth = 12
  - Call Chain = free
  [Called By]
  - >> data_acquisition

  __kernel_poly (Thumb, 170 bytes, Stack size 24 bytes, poly.o(i.__kernel_poly))
  [Stack]

  - Max Depth = 112
  - Call Chain = __kernel_poly ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dadd
  - >> __aeabi_dmul
  [Called By]
  - >> pow

  malloc (Thumb, 64 bytes, Stack size 32 bytes, mallocr.o(i.__malloc$realloc))
  [Stack]

  - Max Depth = 56
  - Call Chain = malloc ⇒ internal_alloc
  [Calls]
  - >> internal_alloc
  [Called By]
  - >> addSensorListParams
  - >> addNode
  - >> addDevice
  - >> data_acquisition
  - >> SlaveProtocolAnalysis

  __mathlib_dbl_divzero (Thumb, 12 bytes, Stack size 0 bytes, dunder.o(i.__mathlib_dbl_divzero))
  [Stack]

  - Max Depth = 40
  - Call Chain = __mathlib_dbl_divzero ⇒ __aeabi_ddiv ⇒ _double_round
  [Calls]
  - >> __aeabi_ddiv
  [Called By]
  - >> pow

  __mathlib_dbl_infnan2 (Thumb, 4 bytes, Stack size 0 bytes, dunder.o(i.__mathlib_dbl_infnan2))
  [Stack]

  - Max Depth = 88
  - Call Chain = __mathlib_dbl_infnan2 ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_dadd
  [Called By]
  - >> pow

  __mathlib_dbl_invalid (Thumb, 12 bytes, Stack size 0 bytes, dunder.o(i.__mathlib_dbl_invalid))
  [Stack]

  - Max Depth = 40
  - Call Chain = __mathlib_dbl_invalid ⇒ __aeabi_ddiv ⇒ _double_round
  [Calls]
  - >> __aeabi_ddiv
  [Called By]
  - >> pow

  __mathlib_dbl_overflow (Thumb, 14 bytes, Stack size 0 bytes, dunder.o(i.__mathlib_dbl_overflow))
  [Stack]

  - Max Depth = 16
  - Call Chain = __mathlib_dbl_overflow ⇒ __ARM_scalbn
  [Calls]
  - >> __ARM_scalbn
  [Called By]
  - >> pow

  __mathlib_dbl_underflow (Thumb, 10 bytes, Stack size 0 bytes, dunder.o(i.__mathlib_dbl_underflow))
  [Stack]

  - Max Depth = 16
  - Call Chain = __mathlib_dbl_underflow ⇒ __ARM_scalbn
  [Calls]
  - >> __ARM_scalbn
  [Called By]
  - >> pow

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

  __set_errno (Thumb, 6 bytes, Stack size 0 bytes, errno.o(i.__set_errno))
  [Called By]

  - >> pow
  - >> sqrt

  _crc (Thumb, 26 bytes, Stack size 8 bytes, dlt645_data.o(i._crc))
  [Stack]

  - Max Depth = 8
  - Call Chain = _crc
  [Called By]
  - >> dlt645_common_check
  - >> dlt645_send_msg

  addDevice (Thumb, 124 bytes, Stack size 24 bytes, gateway_message.o(i.addDevice))
  [Stack]

  - Max Depth = 296
  - Call Chain = addDevice ⇒ addSensorListParams ⇒ parseStringField ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_string
  [Calls]
  - >> parseStringField
  - >> parseIntField
  - >> addSensorListParams
  - >> strstr
  - >> malloc
  [Called By]
  - >> addNode

  addGatewayParams (Thumb, 162 bytes, Stack size 32 bytes, gateway_message.o(i.addGatewayParams))
  [Stack]

  - Max Depth = 368
  - Call Chain = addGatewayParams ⇒ addNode ⇒ addDevice ⇒ addSensorListParams ⇒ parseStringField ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_string
  [Calls]
  - >> parseStringField
  - >> parseIntField
  - >> extract_substring
  - >> addNode
  - >> mymalloc
  - >> myfree
  - >> __2sprintf
  [Called By]
  - >> data_task

  addNode (Thumb, 208 bytes, Stack size 40 bytes, gateway_message.o(i.addNode))
  [Stack]

  - Max Depth = 336
  - Call Chain = addNode ⇒ addDevice ⇒ addSensorListParams ⇒ parseStringField ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_string
  [Calls]
  - >> parseStringField
  - >> parseIntField
  - >> addDevice
  - >> mymalloc
  - >> myfree
  - >> strstr
  - >> __0sscanf
  - >> malloc
  - >> __2sprintf
  [Called By]
  - >> addGatewayParams

  addSensorListParams (Thumb, 274 bytes, Stack size 32 bytes, gateway_message.o(i.addSensorListParams))
  [Stack]

  - Max Depth = 272
  - Call Chain = addSensorListParams ⇒ parseStringField ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_string
  [Calls]
  - >> parseStringField
  - >> parseIntField
  - >> mymalloc
  - >> myfree
  - >> __0sscanf
  - >> malloc
  [Called By]
  - >> addDevice

  clust2sect (Thumb, 26 bytes, Stack size 0 bytes, ff.o(i.clust2sect))
  [Called By]

  - >> f_read
  - >> dir_sdi
  - >> dir_next

  data_acquisition (Thumb, 750 bytes, Stack size 64 bytes, node_data_acquisition.o(i.data_acquisition))
  [Stack]

  - Max Depth = 608 + Unknown Stack Size
  - Call Chain = data_acquisition ⇒ dlt645_read_data ⇒ dlt645_2007_read_data ⇒ dlt645_2007_parsing_data ⇒ dlt645_data_parse_by_format_to_float ⇒ data_package_translate_to_int ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> mmodbus_set16bitOrder
  - >> mmodbus_readHoldingRegisters16i
  - >> dlt645_set_addr
  - >> dlt645_read_data
  - >> __aeabi_ui2f
  - >> __aeabi_ui2d
  - >> __aeabi_f2d
  - >> __aeabi_ddiv
  - >> __aeabi_d2f
  - >> get_node_receive_params
  - >> pow
  - >> malloc
  - >> free
  [Called By]
  - >> data_task

  data_package_translate_to_int (Thumb, 254 bytes, Stack size 80 bytes, dlt645_data.o(i.data_package_translate_to_int))
  [Stack]

  - Max Depth = 320
  - Call Chain = data_package_translate_to_int ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_ui2d
  - >> __aeabi_dadd
  - >> __aeabi_i2d
  - >> __aeabi_dmul
  - >> __aeabi_d2iz
  - >> pow
  [Called By]
  - >> dlt645_data_parse_by_format_to_float

  data_task (Thumb, 132 bytes, Stack size 264 bytes, task.o(i.data_task))
  [Stack]

  - Max Depth = 2512 + Unknown Stack Size
  - Call Chain = data_task ⇒ read_file ⇒ f_open ⇒ dir_register ⇒ dir_find ⇒ dir_next ⇒ create_chain ⇒ put_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> read_file
  - >> mymalloc
  - >> myfree
  - >> mmodbus_init
  - >> masterSendNodeString
  - >> get_gateway_config_params
  - >> dlt645_init
  - >> data_acquisition
  - >> addGatewayParams
  - >> SlaveProtocolAnalysis
  - >> RadioDriverInit
  [Address Reference Count : 1]
  - main.o(i.start_task)

  delay_init (Thumb, 76 bytes, Stack size 8 bytes, delay.o(i.delay_init))
  [Stack]

  - Max Depth = 8
  - Call Chain = delay_init
  [Calls]
  - >> SysTick_CLKSourceConfig
  [Called By]
  - >> main

  delay_ms (Thumb, 66 bytes, Stack size 16 bytes, delay.o(i.delay_ms))
  [Stack]

  - Max Depth = 72 + Unknown Stack Size
  - Call Chain = delay_ms ⇒ delay_us ⇒ delay_osschedunlock ⇒ OSSchedUnlock ⇒ OS_Sched
  [Calls]
  - >> delay_us
  - >> delay_ostimedly
  [Called By]
  - >> SX1276Reset
  - >> mmodbus_sendRaw
  - >> mmodbus_receiveRaw
  - >> dlt645_hw_write

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

  - Max Depth = 16 + Unknown Stack Size
  - Call Chain = delay_osschedlock ⇒ OSSchedLock
  [Calls]
  - >> OSSchedLock
  [Called By]
  - >> delay_us

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

  - Max Depth = 24 + Unknown Stack Size
  - Call Chain = delay_osschedunlock ⇒ OSSchedUnlock ⇒ OS_Sched
  [Calls]
  - >> OSSchedUnlock
  [Called By]
  - >> delay_us

  delay_ostimedly (Thumb, 12 bytes, Stack size 8 bytes, delay.o(i.delay_ostimedly))
  [Stack]

  - Max Depth = 32 + Unknown Stack Size
  - Call Chain = delay_ostimedly ⇒ OSTimeDly ⇒ OS_Sched
  [Calls]
  - >> OSTimeDly
  [Called By]
  - >> delay_ms

  delay_us (Thumb, 86 bytes, Stack size 32 bytes, delay.o(i.delay_us))
  [Stack]

  - Max Depth = 56 + Unknown Stack Size
  - Call Chain = delay_us ⇒ delay_osschedunlock ⇒ OSSchedUnlock ⇒ OS_Sched
  [Calls]
  - >> delay_osschedunlock
  - >> delay_osschedlock
  [Called By]
  - >> delay_ms

  disk_initialize (Thumb, 30 bytes, Stack size 16 bytes, diskio.o(i.disk_initialize))
  [Stack]

  - Max Depth = 112
  - Call Chain = disk_initialize ⇒ NAND_Init ⇒ NAND_Format ⇒ FSMC_NAND_WriteSpare ⇒ FSMC_NAND_WritePage ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> NAND_Init
  [Called By]
  - >> f_mkfs
  - >> find_volume

  disk_ioctl (Thumb, 88 bytes, Stack size 24 bytes, diskio.o(i.disk_ioctl))
  [Stack]

  - Max Depth = 24
  - Call Chain = disk_ioctl
  [Calls]
  - >> NAND_FormatCapacity
  [Called By]
  - >> f_mkfs
  - >> sync_fs

  disk_read (Thumb, 56 bytes, Stack size 24 bytes, diskio.o(i.disk_read))
  [Stack]

  - Max Depth = 128
  - Call Chain = disk_read ⇒ NAND_ReadMultiSectors ⇒ FSMC_NAND_ReadData ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> NAND_ReadMultiSectors
  [Called By]
  - >> f_read
  - >> move_window

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

  - >> validate
  - >> find_volume

  disk_write (Thumb, 66 bytes, Stack size 24 bytes, diskio.o(i.disk_write))
  [Stack]

  - Max Depth = 232
  - Call Chain = disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> NAND_WriteMultiSectors
  - >> __2printf
  [Called By]
  - >> f_read
  - >> f_mkfs
  - >> f_sync
  - >> sync_window
  - >> sync_fs

  dlt645_1997_read_data (Thumb, 152 bytes, Stack size 104 bytes, dlt645_1997.o(i.dlt645_1997_read_data))
  [Stack]

  - Max Depth = 520
  - Call Chain = dlt645_1997_read_data ⇒ dlt645_1997_parsing_data ⇒ dlt645_data_parse_by_format_to_float ⇒ data_package_translate_to_int ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> dlt645_1997_parsing_data
  - >> dlt645_send_msg
  - >> dlt645_receive_msg
  - >> __aeabi_memclr4
  [Called By]
  - >> dlt645_read_data

  dlt645_1997_recv_check (Thumb, 82 bytes, Stack size 40 bytes, dlt645_1997.o(i.dlt645_1997_recv_check))
  [Stack]

  - Max Depth = 76
  - Call Chain = dlt645_1997_recv_check ⇒ dlt645_common_check ⇒ memcmp
  [Calls]
  - >> dlt645_common_check
  [Called By]
  - >> dlt645_receive_msg

  dlt645_2007_parsing_data (Thumb, 888 bytes, Stack size 24 bytes, dlt645_2007.o(i.dlt645_2007_parsing_data))
  [Stack]

  - Max Depth = 416
  - Call Chain = dlt645_2007_parsing_data ⇒ dlt645_data_parse_by_format_to_float ⇒ data_package_translate_to_int ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> dlt645_data_parse_by_format_to_float
  [Called By]
  - >> dlt645_2007_read_data

  dlt645_2007_read_data (Thumb, 174 bytes, Stack size 104 bytes, dlt645_2007.o(i.dlt645_2007_read_data))
  [Stack]

  - Max Depth = 520
  - Call Chain = dlt645_2007_read_data ⇒ dlt645_2007_parsing_data ⇒ dlt645_data_parse_by_format_to_float ⇒ data_package_translate_to_int ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> dlt645_send_msg
  - >> dlt645_receive_msg
  - >> __aeabi_memclr4
  - >> dlt645_2007_parsing_data
  [Called By]
  - >> dlt645_read_data

  dlt645_2007_recv_check (Thumb, 84 bytes, Stack size 40 bytes, dlt645_2007.o(i.dlt645_2007_recv_check))
  [Stack]

  - Max Depth = 76
  - Call Chain = dlt645_2007_recv_check ⇒ dlt645_common_check ⇒ memcmp
  [Calls]
  - >> dlt645_common_check
  [Called By]
  - >> dlt645_receive_msg

  dlt645_common_check (Thumb, 124 bytes, Stack size 24 bytes, dlt645_data.o(i.dlt645_common_check))
  [Stack]

  - Max Depth = 36
  - Call Chain = dlt645_common_check ⇒ memcmp
  [Calls]
  - >> _crc
  - >> memcmp
  [Called By]
  - >> dlt645_2007_recv_check
  - >> dlt645_1997_recv_check

  dlt645_data_parse_by_format_to_float (Thumb, 136 bytes, Stack size 72 bytes, dlt645_data.o(i.dlt645_data_parse_by_format_to_float))
  [Stack]

  - Max Depth = 392
  - Call Chain = dlt645_data_parse_by_format_to_float ⇒ data_package_translate_to_int ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_ddiv
  - >> __aeabi_d2f
  - >> __aeabi_i2d
  - >> strlen
  - >> pow
  - >> data_package_translate_to_int
  [Called By]
  - >> dlt645_1997_parsing_data
  - >> dlt645_2007_parsing_data

  dlt645_init (Thumb, 30 bytes, Stack size 8 bytes, dlt645_port.o(i.dlt645_init))
  [Stack]

  - Max Depth = 8
  - Call Chain = dlt645_init
  [Calls]
  - >> GPIO_WriteBit
  [Called By]
  - >> data_task

  dlt645_read_data (Thumb, 62 bytes, Stack size 24 bytes, dlt645.o(i.dlt645_read_data))
  [Stack]

  - Max Depth = 544
  - Call Chain = dlt645_read_data ⇒ dlt645_2007_read_data ⇒ dlt645_2007_parsing_data ⇒ dlt645_data_parse_by_format_to_float ⇒ data_package_translate_to_int ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> dlt645_2007_read_data
  - >> dlt645_1997_read_data
  [Called By]
  - >> data_acquisition

  dlt645_receive_msg (Thumb, 70 bytes, Stack size 32 bytes, dlt645.o(i.dlt645_receive_msg))
  [Stack]

  - Max Depth = 108
  - Call Chain = dlt645_receive_msg ⇒ dlt645_2007_recv_check ⇒ dlt645_common_check ⇒ memcmp
  [Calls]
  - >> dlt645_2007_recv_check
  - >> dlt645_1997_recv_check
  [Called By]
  - >> dlt645_2007_read_data
  - >> dlt645_1997_read_data

  dlt645_send_msg (Thumb, 46 bytes, Stack size 16 bytes, dlt645.o(i.dlt645_send_msg))
  [Stack]

  - Max Depth = 24
  - Call Chain = dlt645_send_msg ⇒ _crc
  [Calls]
  - >> _crc
  [Called By]
  - >> dlt645_2007_read_data
  - >> dlt645_1997_read_data

  dlt645_set_addr (Thumb, 42 bytes, Stack size 20 bytes, dlt645.o(i.dlt645_set_addr))
  [Stack]

  - Max Depth = 20
  - Call Chain = dlt645_set_addr
  [Called By]
  - >> data_acquisition

  extract_substring (Thumb, 86 bytes, Stack size 32 bytes, gateway_message.o(i.extract_substring))
  [Stack]

  - Max Depth = 44
  - Call Chain = extract_substring ⇒ strstr
  [Calls]
  - >> strcpy
  - >> strlen
  - >> strncpy
  - >> strstr
  [Called By]
  - >> addGatewayParams

  f_close (Thumb, 42 bytes, Stack size 16 bytes, ff.o(i.f_close))
  [Stack]

  - Max Depth = 304
  - Call Chain = f_close ⇒ f_sync ⇒ sync_fs ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> f_sync
  - >> validate
  - >> dec_lock
  [Called By]
  - >> read_file

  f_mkfs (Thumb, 1594 bytes, Stack size 112 bytes, ff.o(i.f_mkfs))
  [Stack]

  - Max Depth = 344
  - Call Chain = f_mkfs ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> mem_set
  - >> mem_cpy
  - >> get_ldnumber
  - >> get_fattime
  - >> disk_write
  - >> disk_ioctl
  - >> disk_initialize
  [Called By]
  - >> read_file

  f_mount (Thumb, 92 bytes, Stack size 40 bytes, ff.o(i.f_mount))
  [Stack]

  - Max Depth = 400
  - Call Chain = f_mount ⇒ find_volume ⇒ check_fs ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> get_ldnumber
  - >> find_volume
  - >> clear_lock
  [Called By]
  - >> read_file

  f_open (Thumb, 420 bytes, Stack size 608 bytes, ff.o(i.f_open))
  [Stack]

  - Max Depth = 1040
  - Call Chain = f_open ⇒ dir_register ⇒ dir_find ⇒ dir_next ⇒ create_chain ⇒ put_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> st_clust
  - >> remove_chain
  - >> move_window
  - >> ld_clust
  - >> inc_lock
  - >> follow_path
  - >> find_volume
  - >> enq_lock
  - >> dir_register
  - >> chk_lock
  - >> get_fattime
  [Called By]
  - >> read_file

  f_opendir (Thumb, 148 bytes, Stack size 552 bytes, ff.o(i.f_opendir))
  [Stack]

  - Max Depth = 968
  - Call Chain = f_opendir ⇒ follow_path ⇒ dir_find ⇒ dir_next ⇒ create_chain ⇒ put_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> ld_clust
  - >> inc_lock
  - >> follow_path
  - >> find_volume
  - >> dir_sdi
  [Called By]
  - >> read_file

  f_read (Thumb, 416 bytes, Stack size 64 bytes, ff.o(i.f_read))
  [Stack]

  - Max Depth = 352
  - Call Chain = f_read ⇒ get_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> get_fat
  - >> clust2sect
  - >> validate
  - >> mem_cpy
  - >> disk_write
  - >> disk_read
  [Called By]
  - >> read_file

  f_sync (Thumb, 176 bytes, Stack size 24 bytes, ff.o(i.f_sync))
  [Stack]

  - Max Depth = 288
  - Call Chain = f_sync ⇒ sync_fs ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> validate
  - >> sync_fs
  - >> st_clust
  - >> move_window
  - >> get_fattime
  - >> disk_write
  [Called By]
  - >> f_close

  ff_convert (Thumb, 116 bytes, Stack size 24 bytes, cc936.o(i.ff_convert))
  [Stack]

  - Max Depth = 24
  - Call Chain = ff_convert
  [Called By]
  - >> create_name

  ff_wtoupper (Thumb, 46 bytes, Stack size 0 bytes, cc936.o(i.ff_wtoupper))
  [Called By]

  - >> create_name
  - >> cmp_lfn

  fputc (Thumb, 32 bytes, Stack size 16 bytes, log.o(i.fputc))
  [Stack]

  - Max Depth = 16
  - Call Chain = fputc
  [Calls]
  - >> USART_SendData
  - >> USART_GetFlagStatus
  [Address Reference Count : 1]
  - printfa.o(i.__0printf)

  get_fat (Thumb, 232 bytes, Stack size 24 bytes, ff.o(i.get_fat))
  [Stack]

  - Max Depth = 288
  - Call Chain = get_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> move_window
  [Called By]
  - >> f_read
  - >> remove_chain
  - >> dir_sdi
  - >> dir_next
  - >> create_chain

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

  - >> f_open
  - >> f_mkfs
  - >> f_sync

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

  - >> masterSendNodeString
  - >> data_task

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

  - >> data_acquisition
  - >> SlaveProtocolAnalysis

  insertHexData (Thumb, 26 bytes, Stack size 24 bytes, protocol.o(i.insertHexData))
  [Stack]

  - Max Depth = 24
  - Call Chain = insertHexData
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> masterSendNodeString

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

  - Max Depth = 48 + Unknown Stack Size
  - Call Chain = led_task ⇒ OSTimeDlyHMSM ⇒ OSTimeDly ⇒ OS_Sched
  [Calls]
  - >> OSTimeDlyHMSM
  - >> GPIO_SetBits
  - >> GPIO_ResetBits
  [Address Reference Count : 1]
  - main.o(i.start_task)

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

  - Max Depth = 160 + Unknown Stack Size
  - Call Chain = main ⇒ OSInit ⇒ OSTmr_Init ⇒ OSTmr_InitTask ⇒ OSTaskCreateExt ⇒ OS_TCBInit
  [Calls]
  - >> my_mem_init
  - >> delay_init
  - >> USART_485_config
  - >> USART_232_config
  - >> OSTaskCreate
  - >> OSStart
  - >> OSInit
  - >> NET_STATUS_LED_Config
  - >> LED_GPIO_Config
  - >> NVIC_Configuration
  [Address Reference Count : 1]
  - entry9a.o(.ARM.Collect$$$$0000000B)

  masterSendNodeString (Thumb, 620 bytes, Stack size 64 bytes, protocol.o(i.masterSendNodeString))
  [Stack]

  - Max Depth = 88
  - Call Chain = masterSendNodeString ⇒ insertHexData
  [Calls]
  - >> insertHexData
  - >> get_gateway_config_params
  - >> strlen
  - >> __aeabi_memclr
  [Called By]
  - >> data_task

  mmodbus_crc16 (Thumb, 42 bytes, Stack size 12 bytes, mmodbus.o(i.mmodbus_crc16))
  [Stack]

  - Max Depth = 12
  - Call Chain = mmodbus_crc16
  [Called By]
  - >> mmodbus_readHoldingRegisters8i

  mmodbus_init (Thumb, 32 bytes, Stack size 8 bytes, mmodbus.o(i.mmodbus_init))
  [Stack]

  - Max Depth = 8
  - Call Chain = mmodbus_init
  [Calls]
  - >> GPIO_WriteBit
  - >> __aeabi_memclr4
  [Called By]
  - >> data_task

  mmodbus_readHoldingRegisters16i (Thumb, 138 bytes, Stack size 32 bytes, mmodbus.o(i.mmodbus_readHoldingRegisters16i))
  [Stack]

  - Max Depth = 160 + Unknown Stack Size
  - Call Chain = mmodbus_readHoldingRegisters16i ⇒ mmodbus_readHoldingRegisters8i ⇒ mmodbus_sendRaw ⇒ delay_ms ⇒ delay_us ⇒ delay_osschedunlock ⇒ OSSchedUnlock ⇒ OS_Sched
  [Calls]
  - >> mmodbus_readHoldingRegisters8i
  [Called By]
  - >> data_acquisition

  mmodbus_readHoldingRegisters8i (Thumb, 256 bytes, Stack size 32 bytes, mmodbus.o(i.mmodbus_readHoldingRegisters8i))
  [Stack]

  - Max Depth = 128 + Unknown Stack Size
  - Call Chain = mmodbus_readHoldingRegisters8i ⇒ mmodbus_sendRaw ⇒ delay_ms ⇒ delay_us ⇒ delay_osschedunlock ⇒ OSSchedUnlock ⇒ OS_Sched
  [Calls]
  - >> __aeabi_memcpy
  - >> mmodbus_sendRaw
  - >> mmodbus_receiveRaw
  - >> mmodbus_crc16
  [Called By]
  - >> mmodbus_readHoldingRegisters16i

  mmodbus_receiveRaw (Thumb, 90 bytes, Stack size 16 bytes, mmodbus.o(i.mmodbus_receiveRaw))
  [Stack]

  - Max Depth = 88 + Unknown Stack Size
  - Call Chain = mmodbus_receiveRaw ⇒ delay_ms ⇒ delay_us ⇒ delay_osschedunlock ⇒ OSSchedUnlock ⇒ OS_Sched
  [Calls]
  - >> OSTimeGet
  - >> USART_ReceiveData
  - >> USART_GetFlagStatus
  - >> delay_ms
  [Called By]
  - >> mmodbus_readHoldingRegisters8i

  mmodbus_sendRaw (Thumb, 138 bytes, Stack size 24 bytes, mmodbus.o(i.mmodbus_sendRaw))
  [Stack]

  - Max Depth = 96 + Unknown Stack Size
  - Call Chain = mmodbus_sendRaw ⇒ delay_ms ⇒ delay_us ⇒ delay_osschedunlock ⇒ OSSchedUnlock ⇒ OS_Sched
  [Calls]
  - >> OSTimeGet
  - >> GPIO_WriteBit
  - >> USART_SendData
  - >> USART_GetFlagStatus
  - >> delay_ms
  - >> __aeabi_memclr
  [Called By]
  - >> mmodbus_readHoldingRegisters8i

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

  - >> data_acquisition

  my_mem_free (Thumb, 96 bytes, Stack size 24 bytes, malloc.o(i.my_mem_free))
  [Stack]

  - Max Depth = 24
  - Call Chain = my_mem_free
  [Called By]
  - >> myfree

  my_mem_init (Thumb, 54 bytes, Stack size 8 bytes, malloc.o(i.my_mem_init))
  [Stack]

  - Max Depth = 20
  - Call Chain = my_mem_init ⇒ mymemset
  [Calls]
  - >> mymemset
  [Called By]
  - >> main
  [Address Reference Count : 1]
  - malloc.o(.data)

  my_mem_malloc (Thumb, 156 bytes, Stack size 32 bytes, malloc.o(i.my_mem_malloc))
  [Stack]

  - Max Depth = 32
  - Call Chain = my_mem_malloc
  [Called By]
  - >> mymalloc

  my_mem_perused (Thumb, 54 bytes, Stack size 8 bytes, malloc.o(i.my_mem_perused))
  [Stack]

  - Max Depth = 8
  - Call Chain = my_mem_perused
  [Address Reference Count : 1]
  - malloc.o(.data)

  myfree (Thumb, 30 bytes, Stack size 16 bytes, malloc.o(i.myfree))
  [Stack]

  - Max Depth = 40
  - Call Chain = myfree ⇒ my_mem_free
  [Calls]
  - >> my_mem_free
  [Called By]
  - >> addSensorListParams
  - >> addNode
  - >> addGatewayParams
  - >> data_task

  mymalloc (Thumb, 34 bytes, Stack size 16 bytes, malloc.o(i.mymalloc))
  [Stack]

  - Max Depth = 48
  - Call Chain = mymalloc ⇒ my_mem_malloc
  [Calls]
  - >> my_mem_malloc
  [Called By]
  - >> addSensorListParams
  - >> addNode
  - >> addGatewayParams
  - >> data_task

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

  - Max Depth = 12
  - Call Chain = mymemset
  [Called By]
  - >> my_mem_init

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

  - Max Depth = 48 + Unknown Stack Size
  - Call Chain = net_status_led_task ⇒ OSTimeDlyHMSM ⇒ OSTimeDly ⇒ OS_Sched
  [Calls]
  - >> OSTimeDlyHMSM
  - >> GPIO_SetBits
  - >> GPIO_ResetBits
  [Address Reference Count : 1]
  - main.o(i.start_task)

  parseIntField (Thumb, 42 bytes, Stack size 24 bytes, gateway_message.o(i.parseIntField))
  [Stack]

  - Max Depth = 96
  - Call Chain = parseIntField ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> strlen
  - >> strstr
  - >> strtol
  [Called By]
  - >> addSensorListParams
  - >> addNode
  - >> addDevice
  - >> addGatewayParams

  parseStringField (Thumb, 44 bytes, Stack size 24 bytes, gateway_message.o(i.parseStringField))
  [Stack]

  - Max Depth = 240
  - Call Chain = parseStringField ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_string
  [Calls]
  - >> strlen
  - >> strstr
  - >> __0sscanf
  [Called By]
  - >> addSensorListParams
  - >> addNode
  - >> addDevice
  - >> addGatewayParams

  pow (Thumb, 2512 bytes, Stack size 128 bytes, pow.o(i.pow))
  [Stack]

  - Max Depth = 240
  - Call Chain = pow ⇒ __kernel_poly ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_ddiv
  - >> __aeabi_drsub
  - >> __aeabi_dadd
  - >> __aeabi_i2d
  - >> __aeabi_dsub
  - >> __aeabi_dmul
  - >> __aeabi_cdrcmple
  - >> __ARM_scalbn
  - >> __set_errno
  - >> sqrt
  - >> __kernel_poly
  - >> __ARM_fpclassify
  - >> __mathlib_dbl_underflow
  - >> __mathlib_dbl_overflow
  - >> __mathlib_dbl_invalid
  - >> __mathlib_dbl_infnan2
  - >> __mathlib_dbl_divzero
  [Called By]
  - >> data_acquisition
  - >> dlt645_data_parse_by_format_to_float
  - >> data_package_translate_to_int

  put_fat (Thumb, 310 bytes, Stack size 32 bytes, ff.o(i.put_fat))
  [Stack]

  - Max Depth = 296
  - Call Chain = put_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> move_window
  [Called By]
  - >> remove_chain
  - >> create_chain

  read_file (Thumb, 162 bytes, Stack size 1208 bytes, myfile.o(i.read_file))
  [Stack]

  - Max Depth = 2248
  - Call Chain = read_file ⇒ f_open ⇒ dir_register ⇒ dir_find ⇒ dir_next ⇒ create_chain ⇒ put_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> f_read
  - >> f_opendir
  - >> f_open
  - >> f_mount
  - >> f_mkfs
  - >> f_close
  - >> __2sprintf
  - >> __2printf
  [Called By]
  - >> data_task

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

  - Max Depth = 120
  - Call Chain = round ⇒ __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_drsub
  - >> __aeabi_dadd
  - >> __aeabi_dsub
  - >> __aeabi_cdrcmple
  - >> __aeabi_cdcmple
  - >> _drnd
  [Called By]
  - >> SX1276FskProcess

  spi_config (Thumb, 82 bytes, Stack size 24 bytes, spi.o(i.spi_config))
  [Stack]

  - Max Depth = 60
  - Call Chain = spi_config ⇒ SPI2_GPIO_Config ⇒ GPIO_PinAFConfig
  [Calls]
  - >> SPI_Init
  - >> SPI_Cmd
  - >> SPI2_GPIO_Config
  [Called By]
  - >> SX1276InitIo

  sqrt (Thumb, 76 bytes, Stack size 24 bytes, sqrt.o(i.sqrt))
  [Stack]

  - Max Depth = 64
  - Call Chain = sqrt ⇒ _dsqrt ⇒ _double_round
  [Calls]
  - >> __set_errno
  - >> _dsqrt
  [Called By]
  - >> pow

  start_task (Thumb, 66 bytes, Stack size 16 bytes, main.o(i.start_task))
  [Stack]

  - Max Depth = 104 + Unknown Stack Size
  - Call Chain = start_task ⇒ OSTaskCreate ⇒ OS_TCBInit
  [Calls]
  - >> OS_CPU_SR_Save
  - >> OS_CPU_SR_Restore
  - >> OSTaskSuspend
  - >> OSTaskCreate
  - >> OSStatInit
  [Address Reference Count : 1]
  - main.o(i.main)

  ### Local Symbols

  SetSysClock (Thumb, 192 bytes, Stack size 12 bytes, system_stm32f2xx.o(i.SetSysClock))
  [Stack]

  - Max Depth = 12
  - Call Chain = SetSysClock
  [Called By]
  - >> SystemInit

  SystemInit_ExtMemCtl (Thumb, 8 bytes, Stack size 8 bytes, system_stm32f2xx.o(i.SystemInit_ExtMemCtl))
  [Stack]

  - Max Depth = 140
  - Call Chain = SystemInit_ExtMemCtl ⇒ FSMC_SRAM_Init ⇒ SRAM_GPIO_Config ⇒ GPIO_PinAFConfig
  [Calls]
  - >> FSMC_SRAM_Init
  [Called By]
  - >> SystemInit

  SRAM_GPIO_Config (Thumb, 956 bytes, Stack size 16 bytes, sram.o(i.SRAM_GPIO_Config))
  [Stack]

  - Max Depth = 36
  - Call Chain = SRAM_GPIO_Config ⇒ GPIO_PinAFConfig
  [Calls]
  - >> GPIO_PinAFConfig
  - >> GPIO_Init
  - >> RCC_AHB1PeriphClockCmd
  [Called By]
  - >> FSMC_SRAM_Init

  FSMC_NAND_CompPage (Thumb, 102 bytes, Stack size 24 bytes, nandflash.o(i.FSMC_NAND_CompPage))
  [Stack]

  - Max Depth = 24
  - Call Chain = FSMC_NAND_CompPage
  [Calls]
  - >> GPIO_ReadInputDataBit
  [Called By]
  - >> NAND_WriteMultiSectors

  FSMC_NAND_EraseBlock (Thumb, 36 bytes, Stack size 8 bytes, nandflash.o(i.FSMC_NAND_EraseBlock))
  [Stack]

  - Max Depth = 24
  - Call Chain = FSMC_NAND_EraseBlock ⇒ FSMC_NAND_GetStatus
  [Calls]
  - >> FSMC_NAND_GetStatus
  [Called By]
  - >> NAND_Format
  - >> NAND_WriteToNewBlock

  FSMC_NAND_GetStatus (Thumb, 40 bytes, Stack size 16 bytes, nandflash.o(i.FSMC_NAND_GetStatus))
  [Stack]

  - Max Depth = 16
  - Call Chain = FSMC_NAND_GetStatus
  [Calls]
  - >> FSMC_NAND_ReadStatus
  [Called By]
  - >> FSMC_NAND_WritePage
  - >> FSMC_NAND_Reset
  - >> FSMC_NAND_PageCopyBackEx
  - >> FSMC_NAND_PageCopyBack
  - >> FSMC_NAND_EraseBlock

  FSMC_NAND_Init (Thumb, 280 bytes, Stack size 64 bytes, nandflash.o(i.FSMC_NAND_Init))
  [Stack]

  - Max Depth = 84
  - Call Chain = FSMC_NAND_Init ⇒ GPIO_PinAFConfig
  [Calls]
  - >> GPIO_PinAFConfig
  - >> GPIO_Init
  - >> FSMC_NANDInit
  - >> FSMC_NANDCmd
  - >> RCC_AHB3PeriphClockCmd
  - >> RCC_AHB1PeriphClockCmd
  [Called By]
  - >> NAND_Init

  FSMC_NAND_PageCopyBack (Thumb, 142 bytes, Stack size 16 bytes, nandflash.o(i.FSMC_NAND_PageCopyBack))
  [Stack]

  - Max Depth = 40
  - Call Chain = FSMC_NAND_PageCopyBack ⇒ __2printf
  [Calls]
  - >> GPIO_ReadInputDataBit
  - >> FSMC_NAND_GetStatus
  - >> __2printf
  [Called By]
  - >> NAND_WriteToNewBlock

  FSMC_NAND_PageCopyBackEx (Thumb, 196 bytes, Stack size 32 bytes, nandflash.o(i.FSMC_NAND_PageCopyBackEx))
  [Stack]

  - Max Depth = 56
  - Call Chain = FSMC_NAND_PageCopyBackEx ⇒ __2printf
  [Calls]
  - >> GPIO_ReadInputDataBit
  - >> FSMC_NAND_GetStatus
  - >> __2printf
  [Called By]
  - >> NAND_WriteToNewBlock

  FSMC_NAND_ReadData (Thumb, 46 bytes, Stack size 24 bytes, nandflash.o(i.FSMC_NAND_ReadData))
  [Stack]

  - Max Depth = 48
  - Call Chain = FSMC_NAND_ReadData ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> FSMC_NAND_ReadPage
  - >> __2printf
  [Called By]
  - >> NAND_ReadMultiSectors

  FSMC_NAND_ReadPage (Thumb, 94 bytes, Stack size 24 bytes, nandflash.o(i.FSMC_NAND_ReadPage))
  [Stack]

  - Max Depth = 24
  - Call Chain = FSMC_NAND_ReadPage
  [Calls]
  - >> GPIO_ReadInputDataBit
  [Called By]
  - >> FSMC_NAND_WritePage
  - >> FSMC_NAND_ReadSpare
  - >> FSMC_NAND_ReadData

  FSMC_NAND_ReadSpare (Thumb, 48 bytes, Stack size 24 bytes, nandflash.o(i.FSMC_NAND_ReadSpare))
  [Stack]

  - Max Depth = 48
  - Call Chain = FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> FSMC_NAND_ReadPage
  - >> __2printf
  [Called By]
  - >> NAND_IsFreeBlock
  - >> NAND_BuildLUT
  - >> NAND_IsBadBlock

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

  - >> FSMC_NAND_GetStatus

  FSMC_NAND_Reset (Thumb, 24 bytes, Stack size 8 bytes, nandflash.o(i.FSMC_NAND_Reset))
  [Stack]

  - Max Depth = 24
  - Call Chain = FSMC_NAND_Reset ⇒ FSMC_NAND_GetStatus
  [Calls]
  - >> FSMC_NAND_GetStatus
  [Called By]
  - >> NAND_Init

  FSMC_NAND_WriteData (Thumb, 46 bytes, Stack size 24 bytes, nandflash.o(i.FSMC_NAND_WriteData))
  [Stack]

  - Max Depth = 72
  - Call Chain = FSMC_NAND_WriteData ⇒ FSMC_NAND_WritePage ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> FSMC_NAND_WritePage
  - >> __2printf
  [Called By]
  - >> NAND_WriteMultiSectors

  FSMC_NAND_WritePage (Thumb, 170 bytes, Stack size 24 bytes, nandflash.o(i.FSMC_NAND_WritePage))
  [Stack]

  - Max Depth = 48
  - Call Chain = FSMC_NAND_WritePage ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> GPIO_ReadInputDataBit
  - >> FSMC_NAND_ReadPage
  - >> FSMC_NAND_GetStatus
  - >> memcmp
  - >> __2printf
  [Called By]
  - >> FSMC_NAND_WriteSpare
  - >> FSMC_NAND_WriteData

  FSMC_NAND_WriteSpare (Thumb, 48 bytes, Stack size 24 bytes, nandflash.o(i.FSMC_NAND_WriteSpare))
  [Stack]

  - Max Depth = 72
  - Call Chain = FSMC_NAND_WriteSpare ⇒ FSMC_NAND_WritePage ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> FSMC_NAND_WritePage
  - >> __2printf
  [Called By]
  - >> NAND_Format
  - >> NAND_MarkUsedBlock
  - >> NAND_MarkBadBlock

  NAND_BuildLUT (Thumb, 186 bytes, Stack size 16 bytes, nandflash.o(i.NAND_BuildLUT))
  [Stack]

  - Max Depth = 64
  - Call Chain = NAND_BuildLUT ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> FSMC_NAND_ReadSpare
  [Called By]
  - >> NAND_Format
  - >> NAND_WriteToNewBlock
  - >> NAND_Init

  NAND_FindFreeBlock (Thumb, 66 bytes, Stack size 16 bytes, nandflash.o(i.NAND_FindFreeBlock))
  [Stack]

  - Max Depth = 96
  - Call Chain = NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> NAND_IsFreeBlock
  [Called By]
  - >> NAND_WriteToNewBlock

  NAND_IsFreeBlock (Thumb, 44 bytes, Stack size 16 bytes, nandflash.o(i.NAND_IsFreeBlock))
  [Stack]

  - Max Depth = 80
  - Call Chain = NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> FSMC_NAND_ReadSpare
  - >> NAND_IsBadBlock
  [Called By]
  - >> NAND_FindFreeBlock

  NAND_LBNtoPBN (Thumb, 26 bytes, Stack size 0 bytes, nandflash.o(i.NAND_LBNtoPBN))
  [Called By]

  - >> NAND_WriteMultiSectors
  - >> NAND_ReadMultiSectors

  NAND_MarkUsedBlock (Thumb, 32 bytes, Stack size 16 bytes, nandflash.o(i.NAND_MarkUsedBlock))
  [Stack]

  - Max Depth = 88
  - Call Chain = NAND_MarkUsedBlock ⇒ FSMC_NAND_WriteSpare ⇒ FSMC_NAND_WritePage ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> FSMC_NAND_WriteSpare
  [Called By]
  - >> NAND_WriteToNewBlock
  - >> NAND_WriteMultiSectors

  check_fs (Thumb, 140 bytes, Stack size 16 bytes, ff.o(i.check_fs))
  [Stack]

  - Max Depth = 280
  - Call Chain = check_fs ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> move_window
  [Called By]
  - >> find_volume

  chk_chr (Thumb, 20 bytes, Stack size 0 bytes, ff.o(i.chk_chr))
  [Called By]

  - >> create_name

  chk_lock (Thumb, 134 bytes, Stack size 12 bytes, ff.o(i.chk_lock))
  [Stack]

  - Max Depth = 12
  - Call Chain = chk_lock
  [Called By]
  - >> f_open

  clear_lock (Thumb, 42 bytes, Stack size 8 bytes, ff.o(i.clear_lock))
  [Stack]

  - Max Depth = 8
  - Call Chain = clear_lock
  [Called By]
  - >> f_mount
  - >> find_volume

  cmp_lfn (Thumb, 138 bytes, Stack size 32 bytes, ff.o(i.cmp_lfn))
  [Stack]

  - Max Depth = 32
  - Call Chain = cmp_lfn
  [Calls]
  - >> ff_wtoupper
  [Called By]
  - >> dir_find

  create_chain (Thumb, 214 bytes, Stack size 32 bytes, ff.o(i.create_chain))
  [Stack]

  - Max Depth = 328
  - Call Chain = create_chain ⇒ put_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> put_fat
  - >> get_fat
  [Called By]
  - >> dir_next

  create_name (Thumb, 604 bytes, Stack size 56 bytes, ff.o(i.create_name))
  [Stack]

  - Max Depth = 80
  - Call Chain = create_name ⇒ ff_convert
  [Calls]
  - >> mem_set
  - >> chk_chr
  - >> ff_wtoupper
  - >> ff_convert
  [Called By]
  - >> follow_path

  dec_lock (Thumb, 72 bytes, Stack size 12 bytes, ff.o(i.dec_lock))
  [Stack]

  - Max Depth = 12
  - Call Chain = dec_lock
  [Called By]
  - >> f_close

  dir_alloc (Thumb, 92 bytes, Stack size 24 bytes, ff.o(i.dir_alloc))
  [Stack]

  - Max Depth = 376
  - Call Chain = dir_alloc ⇒ dir_next ⇒ create_chain ⇒ put_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> move_window
  - >> dir_sdi
  - >> dir_next
  [Called By]
  - >> dir_register

  dir_find (Thumb, 234 bytes, Stack size 32 bytes, ff.o(i.dir_find))
  [Stack]

  - Max Depth = 384
  - Call Chain = dir_find ⇒ dir_next ⇒ create_chain ⇒ put_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> sum_sfn
  - >> move_window
  - >> mem_cmp
  - >> dir_sdi
  - >> dir_next
  - >> cmp_lfn
  [Called By]
  - >> follow_path
  - >> dir_register

  dir_next (Thumb, 272 bytes, Stack size 24 bytes, ff.o(i.dir_next))
  [Stack]

  - Max Depth = 352
  - Call Chain = dir_next ⇒ create_chain ⇒ put_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> get_fat
  - >> clust2sect
  - >> sync_window
  - >> mem_set
  - >> create_chain
  [Called By]
  - >> dir_register
  - >> dir_find
  - >> dir_alloc

  dir_register (Thumb, 298 bytes, Stack size 48 bytes, ff.o(i.dir_register))
  [Stack]

  - Max Depth = 432
  - Call Chain = dir_register ⇒ dir_find ⇒ dir_next ⇒ create_chain ⇒ put_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> sum_sfn
  - >> move_window
  - >> mem_set
  - >> mem_cpy
  - >> gen_numname
  - >> fit_lfn
  - >> dir_sdi
  - >> dir_next
  - >> dir_find
  - >> dir_alloc
  [Called By]
  - >> f_open

  dir_sdi (Thumb, 158 bytes, Stack size 24 bytes, ff.o(i.dir_sdi))
  [Stack]

  - Max Depth = 312
  - Call Chain = dir_sdi ⇒ get_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> get_fat
  - >> clust2sect
  [Called By]
  - >> f_opendir
  - >> follow_path
  - >> dir_register
  - >> dir_find
  - >> dir_alloc

  enq_lock (Thumb, 36 bytes, Stack size 0 bytes, ff.o(i.enq_lock))
  [Called By]

  - >> f_open

  find_volume (Thumb, 892 bytes, Stack size 80 bytes, ff.o(i.find_volume))
  [Stack]

  - Max Depth = 360
  - Call Chain = find_volume ⇒ check_fs ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> move_window
  - >> get_ldnumber
  - >> clear_lock
  - >> check_fs
  - >> disk_status
  - >> disk_initialize
  [Called By]
  - >> f_opendir
  - >> f_open
  - >> f_mount

  fit_lfn (Thumb, 122 bytes, Stack size 20 bytes, ff.o(i.fit_lfn))
  [Stack]

  - Max Depth = 20
  - Call Chain = fit_lfn
  [Called By]
  - >> dir_register

  follow_path (Thumb, 144 bytes, Stack size 32 bytes, ff.o(i.follow_path))
  [Stack]

  - Max Depth = 416
  - Call Chain = follow_path ⇒ dir_find ⇒ dir_next ⇒ create_chain ⇒ put_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> ld_clust
  - >> dir_sdi
  - >> dir_find
  - >> create_name
  [Called By]
  - >> f_opendir
  - >> f_open

  gen_numname (Thumb, 194 bytes, Stack size 40 bytes, ff.o(i.gen_numname))
  [Stack]

  - Max Depth = 56
  - Call Chain = gen_numname ⇒ mem_cpy
  [Calls]
  - >> mem_cpy
  [Called By]
  - >> dir_register

  get_ldnumber (Thumb, 74 bytes, Stack size 16 bytes, ff.o(i.get_ldnumber))
  [Stack]

  - Max Depth = 16
  - Call Chain = get_ldnumber
  [Called By]
  - >> f_mount
  - >> f_mkfs
  - >> find_volume

  inc_lock (Thumb, 214 bytes, Stack size 12 bytes, ff.o(i.inc_lock))
  [Stack]

  - Max Depth = 12
  - Call Chain = inc_lock
  [Called By]
  - >> f_opendir
  - >> f_open

  ld_clust (Thumb, 32 bytes, Stack size 8 bytes, ff.o(i.ld_clust))
  [Stack]

  - Max Depth = 8
  - Call Chain = ld_clust
  [Called By]
  - >> f_opendir
  - >> f_open
  - >> follow_path

  mem_cmp (Thumb, 38 bytes, Stack size 20 bytes, ff.o(i.mem_cmp))
  [Stack]

  - Max Depth = 20
  - Call Chain = mem_cmp
  [Called By]
  - >> dir_find

  mem_cpy (Thumb, 26 bytes, Stack size 16 bytes, ff.o(i.mem_cpy))
  [Stack]

  - Max Depth = 16
  - Call Chain = mem_cpy
  [Called By]
  - >> f_read
  - >> f_mkfs
  - >> gen_numname
  - >> dir_register

  mem_set (Thumb, 20 bytes, Stack size 12 bytes, ff.o(i.mem_set))
  [Stack]

  - Max Depth = 12
  - Call Chain = mem_set
  [Called By]
  - >> f_mkfs
  - >> sync_fs
  - >> dir_register
  - >> dir_next
  - >> create_name

  move_window (Thumb, 50 bytes, Stack size 16 bytes, ff.o(i.move_window))
  [Stack]

  - Max Depth = 264
  - Call Chain = move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> sync_window
  - >> disk_read
  [Called By]
  - >> f_open
  - >> put_fat
  - >> get_fat
  - >> f_sync
  - >> find_volume
  - >> dir_register
  - >> dir_find
  - >> dir_alloc
  - >> check_fs

  remove_chain (Thumb, 108 bytes, Stack size 24 bytes, ff.o(i.remove_chain))
  [Stack]

  - Max Depth = 320
  - Call Chain = remove_chain ⇒ put_fat ⇒ move_window ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> put_fat
  - >> get_fat
  [Called By]
  - >> f_open

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

  - >> f_open
  - >> f_sync

  sum_sfn (Thumb, 32 bytes, Stack size 12 bytes, ff.o(i.sum_sfn))
  [Stack]

  - Max Depth = 12
  - Call Chain = sum_sfn
  [Called By]
  - >> dir_register
  - >> dir_find

  sync_fs (Thumb, 200 bytes, Stack size 16 bytes, ff.o(i.sync_fs))
  [Stack]

  - Max Depth = 264
  - Call Chain = sync_fs ⇒ sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> sync_window
  - >> mem_set
  - >> disk_write
  - >> disk_ioctl
  [Called By]
  - >> f_sync

  sync_window (Thumb, 76 bytes, Stack size 16 bytes, ff.o(i.sync_window))
  [Stack]

  - Max Depth = 248
  - Call Chain = sync_window ⇒ disk_write ⇒ NAND_WriteMultiSectors ⇒ NAND_WriteToNewBlock ⇒ NAND_FindFreeBlock ⇒ NAND_IsFreeBlock ⇒ NAND_IsBadBlock ⇒ FSMC_NAND_ReadSpare ⇒ FSMC_NAND_ReadPage
  [Calls]
  - >> disk_write
  [Called By]
  - >> sync_fs
  - >> move_window
  - >> dir_next

  validate (Thumb, 54 bytes, Stack size 16 bytes, ff.o(i.validate))
  [Stack]

  - Max Depth = 16
  - Call Chain = validate
  [Calls]
  - >> disk_status
  [Called By]
  - >> f_read
  - >> f_close
  - >> f_sync

  OS_InitEventList (Thumb, 82 bytes, Stack size 16 bytes, os_core.o(i.OS_InitEventList))
  [Stack]

  - Max Depth = 16
  - Call Chain = OS_InitEventList
  [Calls]
  - >> OS_MemClr
  [Called By]
  - >> OSInit

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

  - >> OSInit

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

  - >> OSInit

  OS_InitTCBList (Thumb, 106 bytes, Stack size 16 bytes, os_core.o(i.OS_InitTCBList))
  [Stack]

  - Max Depth = 16
  - Call Chain = OS_InitTCBList
  [Calls]
  - >> OS_MemClr
  [Called By]
  - >> OSInit

  OS_InitTaskIdle (Thumb, 50 bytes, Stack size 32 bytes, os_core.o(i.OS_InitTaskIdle))
  [Stack]

  - Max Depth = 128 + Unknown Stack Size
  - Call Chain = OS_InitTaskIdle ⇒ OSTaskCreateExt ⇒ OS_TCBInit
  [Calls]
  - >> OSTaskNameSet
  - >> OSTaskCreateExt
  [Called By]
  - >> OSInit

  OS_InitTaskStat (Thumb, 50 bytes, Stack size 32 bytes, os_core.o(i.OS_InitTaskStat))
  [Stack]

  - Max Depth = 128 + Unknown Stack Size
  - Call Chain = OS_InitTaskStat ⇒ OSTaskCreateExt ⇒ OS_TCBInit
  [Calls]
  - >> OSTaskNameSet
  - >> OSTaskCreateExt
  [Called By]
  - >> OSInit

  OS_SchedNew (Thumb, 26 bytes, Stack size 0 bytes, os_core.o(i.OS_SchedNew))
  [Called By]

  - >> OSStart
  - >> OSIntExit
  - >> OS_Sched

  OSTmr_InitTask (Thumb, 50 bytes, Stack size 32 bytes, os_tmr.o(i.OSTmr_InitTask))
  [Stack]

  - Max Depth = 128 + Unknown Stack Size
  - Call Chain = OSTmr_InitTask ⇒ OSTaskCreateExt ⇒ OS_TCBInit
  [Calls]
  - >> OSTaskNameSet
  - >> OSTaskCreateExt
  [Called By]
  - >> OSTmr_Init

  OSTmr_Link (Thumb, 100 bytes, Stack size 16 bytes, os_tmr.o(i.OSTmr_Link))
  [Stack]

  - Max Depth = 16
  - Call Chain = OSTmr_Link
  [Called By]
  - >> OSTmr_Task

  OSTmr_Task (Thumb, 114 bytes, Stack size 8 bytes, os_tmr.o(i.OSTmr_Task))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = OSTmr_Task ⇒ OSSemPend ⇒ OS_Sched
  [Calls]
  - >> OSSchedUnlock
  - >> OSSchedLock
  - >> OSTmr_Unlink
  - >> OSTmr_Link
  - >> OSSemPend
  [Address Reference Count : 1]
  - os_tmr.o(i.OSTmr_InitTask)

  OSTmr_Unlink (Thumb, 62 bytes, Stack size 12 bytes, os_tmr.o(i.OSTmr_Unlink))
  [Stack]

  - Max Depth = 12
  - Call Chain = OSTmr_Unlink
  [Called By]
  - >> OSTmr_Task

  dlt645_1997_parsing_data (Thumb, 206 bytes, Stack size 24 bytes, dlt645_1997.o(i.dlt645_1997_parsing_data))
  [Stack]

  - Max Depth = 416
  - Call Chain = dlt645_1997_parsing_data ⇒ dlt645_data_parse_by_format_to_float ⇒ data_package_translate_to_int ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> dlt645_data_parse_by_format_to_float
  [Called By]
  - >> dlt645_1997_read_data

  dlt645_hw_read (Thumb, 92 bytes, Stack size 24 bytes, dlt645_port.o(i.dlt645_hw_read))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = dlt645_hw_read ⇒ OSTimeGet
  [Calls]
  - >> OSTimeGet
  - >> __aeabi_memcpy
  [Address Reference Count : 1]
  - dlt645_port.o(.data)

  dlt645_hw_write (Thumb, 108 bytes, Stack size 24 bytes, dlt645_port.o(i.dlt645_hw_write))
  [Stack]

  - Max Depth = 96 + Unknown Stack Size
  - Call Chain = dlt645_hw_write ⇒ delay_ms ⇒ delay_us ⇒ delay_osschedunlock ⇒ OSSchedUnlock ⇒ OS_Sched
  [Calls]
  - >> GPIO_WriteBit
  - >> USART_SendData
  - >> USART_GetFlagStatus
  - >> OSIntExit
  - >> OSIntEnter
  - >> delay_ms
  - >> __aeabi_memclr4
  [Address Reference Count : 1]
  - dlt645_port.o(.data)

  _fp_digits (Thumb, 366 bytes, Stack size 64 bytes, printfa.o(i._fp_digits), UNUSED)
  [Calls]

  - >> __aeabi_ddiv
  - >> __aeabi_dadd
  - >> __aeabi_dmul
  - >> __aeabi_cdrcmple
  - >> __aeabi_uldivmod
  - >> __aeabi_d2ulz
  [Called By]
  - >> _printf_core

  _printf_core (Thumb, 1744 bytes, Stack size 136 bytes, printfa.o(i._printf_core), UNUSED)
  [Calls]

  - >> __aeabi_uldivmod
  - >> __aeabi_uidivmod
  - >> _printf_pre_padding
  - >> _printf_post_padding
  - >> _fp_digits
  [Called By]
  - >> __0sprintf
  - >> __0printf

  _printf_post_padding (Thumb, 36 bytes, Stack size 24 bytes, printfa.o(i._printf_post_padding), UNUSED)
  [Called By]

  - >> _printf_core

  _printf_pre_padding (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i._printf_pre_padding), UNUSED)
  [Called By]

  - >> _printf_core

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

  - >> __0sprintf
  [Address Reference Count : 1]
  - printfa.o(i.__0sprintf)

  internal_alloc (Thumb, 76 bytes, Stack size 24 bytes, mallocr.o(i.internal_alloc))
  [Stack]

  - Max Depth = 24
  - Call Chain = internal_alloc
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> malloc

  _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