Static Call Graph - [.\Objects\Module 6.axf]

# Static Call Graph for image .\Objects\Module 6.axf

#<CALLGRAPH># ARM Linker, 5060422: Last Updated: Sun Sep 30 10:14:34 2018

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

### Call chain for Maximum Stack Depth:

PxMessagingTask ⇒ remoteBootloaderUpdate ⇒ StartScastDMAStream ⇒ SendMessageToModule ⇒ BroadcastMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)

### Mutually Recursive functions

- NMI_Handler ⇒ NMI_Handler
- ADC1_COMP_IRQHandler ⇒ ADC1_COMP_IRQHandler
- SendMessageFromPort ⇒ SendMessageFromPort

  ### Function Pointers

  - ADC1_COMP_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - CEC_CAN_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - DMA1_Ch1_IRQHandler from h01r0_it.o(i.DMA1_Ch1_IRQHandler) referenced from startup_stm32f091xc.o(RESET)
  - DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler from h01r0_it.o(i.DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler) referenced from startup_stm32f091xc.o(RESET)
  - DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler from h01r0_it.o(i.DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler) referenced from startup_stm32f091xc.o(RESET)
  - EXTI0_1_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - EXTI2_3_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - EXTI4_15_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - FLASH_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - FrontEndTask from main.o(i.FrontEndTask) referenced from bos_freertos.o(i.MX_FREERTOS_Init)
  - HardFault_Handler from h01r0_it.o(i.HardFault_Handler) referenced from startup_stm32f091xc.o(RESET)
  - I2C1_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - I2C2_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - NMI_Handler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - PVD_VDDIO2_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - PendSV_Handler from port.o(.emb_text) referenced from startup_stm32f091xc.o(RESET)
  - PxMessagingTask from bos.o(i.PxMessagingTask) referenced from bos_freertos.o(i.MX_FREERTOS_Init)
  - RCC_CRS_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - RGBCommand from h01r0.o(i.RGBCommand) referenced from h01r0.o(.constdata)
  - RGBledTask from h01r0.o(i.RGBledTask) referenced from h01r0.o(i.Module_Init)
  - RTC_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - Reset_Handler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - SPI1_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - SPI2_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - SVC_Handler from port.o(i.SVC_Handler) referenced from startup_stm32f091xc.o(RESET)
  - StartDefaultTask from bos_freertos.o(i.StartDefaultTask) referenced from bos_freertos.o(i.MX_FREERTOS_Init)
  - StreamTimerCallback from bos.o(i.StreamTimerCallback) referenced from bos.o(i.SetupDMAStreamsFromMessage)
  - StreamTimerCallback from bos.o(i.StreamTimerCallback) referenced from bos.o(i.StartScastDMAStream)
  - SysTick_Handler from h01r0_it.o(i.SysTick_Handler) referenced from startup_stm32f091xc.o(RESET)
  - SystemInit from system_stm32f0xx.o(i.SystemInit) referenced from startup_stm32f091xc.o(.text)
  - TIM14_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - TIM15_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - TIM16_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - TIM17_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - TIM1_BRK_UP_TRG_COM_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - TIM1_CC_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - TIM2_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - TIM3_IRQHandler from h01r0_it.o(i.TIM3_IRQHandler) referenced from startup_stm32f091xc.o(RESET)
  - TIM6_DAC_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - TIM7_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - TSC_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - UART_DMAError from stm32f0xx_hal_uart.o(i.UART_DMAError) referenced from stm32f0xx_hal_uart.o(i.HAL_UART_Receive_DMA)
  - UART_DMAReceiveCplt from stm32f0xx_hal_uart.o(i.UART_DMAReceiveCplt) referenced from stm32f0xx_hal_uart.o(i.HAL_UART_Receive_DMA)
  - UART_DMARxHalfCplt from stm32f0xx_hal_uart.o(i.UART_DMARxHalfCplt) referenced from stm32f0xx_hal_uart.o(i.HAL_UART_Receive_DMA)
  - USART1_IRQHandler from h01r0_it.o(i.USART1_IRQHandler) referenced from startup_stm32f091xc.o(RESET)
  - USART2_IRQHandler from h01r0_it.o(i.USART2_IRQHandler) referenced from startup_stm32f091xc.o(RESET)
  - USART3_8_IRQHandler from h01r0_it.o(i.USART3_8_IRQHandler) referenced from startup_stm32f091xc.o(RESET)
  - WWDG_IRQHandler from startup_stm32f091xc.o(.text) referenced from startup_stm32f091xc.o(RESET)
  - __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32f091xc.o(.text)
  - _sputc from printf8.o(i._sputc) referenced from printf8.o(i.__0sprintf$8)
  - addbuttonCommand from bos.o(i.addbuttonCommand) referenced from bos.o(.constdata)
  - bootloaderUpdateCommand from bos.o(i.bootloaderUpdateCommand) referenced from bos.o(.constdata)
  - colorCommand from h01r0.o(i.colorCommand) referenced from h01r0.o(.constdata)
  - dateCommand from bos.o(i.dateCommand) referenced from bos.o(.constdata)
  - defaultCommand from bos.o(i.defaultCommand) referenced from bos.o(.constdata)
  - demoCommand from h01r0.o(i.demoCommand) referenced from h01r0.o(.constdata)
  - dimCommand from h01r0.o(i.dimCommand) referenced from h01r0.o(.constdata)
  - exploreCommand from bos.o(i.exploreCommand) referenced from bos.o(.constdata)
  - flashsizeCommand from bos.o(i.flashsizeCommand) referenced from bos.o(.constdata)
  - getCommand from bos.o(i.getCommand) referenced from bos.o(.constdata)
  - groupCommand from bos.o(i.groupCommand) referenced from bos.o(.constdata)
  - idcodeCommand from bos.o(i.idcodeCommand) referenced from bos.o(.constdata)
  - infoCommand from bos.o(i.infoCommand) referenced from bos.o(.constdata)
  - main from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)
  - nameCommand from bos.o(i.nameCommand) referenced from bos.o(.constdata)
  - offCommand from h01r0.o(i.offCommand) referenced from h01r0.o(.constdata)
  - onCommand from h01r0.o(i.onCommand) referenced from h01r0.o(.constdata)
  - pingCommand from bos.o(i.pingCommand) referenced from bos.o(.constdata)
  - prvHelpCommand from freertos_cli.o(i.prvHelpCommand) referenced from freertos_cli.o(.constdata)
  - prvIdleTask from tasks.o(i.prvIdleTask) referenced from tasks.o(privileged_functions)
  - prvRunTimeStatsCommand from bos.o(i.prvRunTimeStatsCommand) referenced from bos.o(.constdata)
  - prvTaskExitError from port.o(i.prvTaskExitError) referenced from port.o(privileged_functions)
  - prvTaskStatsCommand from bos.o(i.prvTaskStatsCommand) referenced from bos.o(.constdata)
  - prvTimerTask from timers.o(privileged_functions) referenced from timers.o(privileged_functions)
  - prvUARTCommandConsoleTask from bos_cli.o(i.prvUARTCommandConsoleTask) referenced from bos_freertos.o(i.MX_FREERTOS_Init)
  - pulseColorCommand from h01r0.o(i.pulseColorCommand) referenced from h01r0.o(.constdata)
  - pulseRGBCommand from h01r0.o(i.pulseRGBCommand) referenced from h01r0.o(.constdata)
  - removebuttonCommand from bos.o(i.removebuttonCommand) referenced from bos.o(.constdata)
  - resetCommand from bos.o(i.resetCommand) referenced from bos.o(.constdata)
  - scastCommand from bos.o(i.scastCommand) referenced from bos.o(.constdata)
  - setBaudrateCommand from bos.o(i.setBaudrateCommand) referenced from bos.o(.constdata)
  - setCommand from bos.o(i.setCommand) referenced from bos.o(.constdata)
  - statusCommand from bos.o(i.statusCommand) referenced from bos.o(.constdata)
  - sweepCommand from h01r0.o(i.sweepCommand) referenced from h01r0.o(.constdata)
  - timeCommand from bos.o(i.timeCommand) referenced from bos.o(.constdata)
  - toggleCommand from h01r0.o(i.toggleCommand) referenced from h01r0.o(.constdata)
  - uuidCommand from bos.o(i.uuidCommand) referenced from bos.o(.constdata)

  ### Global Symbols

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

  - startup_stm32f091xc.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))

  __asm___6_port_c_39a90d8d__prvPortStartFirstTask (Thumb, 28 bytes, Stack size 0 bytes, port.o(.emb_text))
  [Called By]

  - >> xPortStartScheduler

  ulSetInterruptMaskFromISR (Thumb, 8 bytes, Stack size 0 bytes, port.o(.emb_text))
  [Called By]

  - >> xPortSysTickHandler
  - >> xTaskResumeFromISR
  - >> uxTaskPriorityGetFromISR
  - >> xQueuePeekFromISR
  - >> xQueueReceiveFromISR
  - >> xQueueGenericSendFromISR
  - >> xQueueGiveFromISR
  - >> vTaskNotifyGiveFromISR

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

  - >> xPortSysTickHandler
  - >> xTaskResumeFromISR
  - >> uxTaskPriorityGetFromISR
  - >> xQueuePeekFromISR
  - >> xQueueReceiveFromISR
  - >> xQueueGenericSendFromISR
  - >> xQueueGiveFromISR
  - >> vTaskNotifyGiveFromISR

  PendSV_Handler (Thumb, 62 bytes, Stack size 0 bytes, port.o(.emb_text))
  [Stack]

  - Max Depth = 44
  - Call Chain = PendSV_Handler ⇒ vTaskSwitchContext ⇒ ulMainGetRunTimeCounterValue ⇒ __aeabi_uidivmod
  [Calls]
  - >> vTaskSwitchContext
  [Address Reference Count : 1]
  - startup_stm32f091xc.o(RESET)

  Reset_Handler (Thumb, 20 bytes, Stack size 0 bytes, startup_stm32f091xc.o(.text))
  [Calls]

  - >> Reboot_Loader
  [Address Reference Count : 1]
  - startup_stm32f091xc.o(RESET)

  Reboot_Loader (Thumb, 22 bytes, Stack size 0 bytes, startup_stm32f091xc.o(.text))
  [Called By]

  - >> Reset_Handler

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

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

  ADC1_COMP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f091xc.o(.text))
  [Calls]

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

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

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

  - startup_stm32f091xc.o(RESET)

  __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))
  [Stack]

  - Max Depth = 12
  - Call Chain = __aeabi_uidivmod
  [Called By]
  - >> HAL_InitTick
  - >> SystemClock_Config
  - >> HAL_RCC_GetSysClockFreq
  - >> UART_SetConfig
  - >> prvSetupTimerInterrupt
  - >> TIM3_Init
  - >> RGBsweepFine
  - >> RGBsweepBasic
  - >> RGBdim
  - >> vMainConfigureTimerForRunTimeStats
  - >> ulMainGetRunTimeCounterValue
  - >> vTaskGetRunTimeStats
  - >> StartScastDMAStream
  - >> StartMilliDelay
  - >> StartMicroDelay
  - >> SetupDMAStreamsFromMessage
  - >> MX_TIM_USEC_Init
  - >> __aeabi_idivmod

  __aeabi_idiv (Thumb, 0 bytes, Stack size 16 bytes, idiv.o(.text), UNUSED)

  __aeabi_idivmod (Thumb, 40 bytes, Stack size 16 bytes, idiv.o(.text))
  [Stack]

  - Max Depth = 28
  - Call Chain = __aeabi_idivmod ⇒ __aeabi_uidivmod
  [Calls]
  - >> __aeabi_uidivmod
  [Called By]
  - >> SendMessageFromPort
  - >> PxMessagingTask

  __aeabi_llsr (Thumb, 34 bytes, Stack size 8 bytes, llushr.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_llsr
  [Called By]
  - >> HAL_FLASH_Program
  - >> __aeabi_d2uiz
  - >> __aeabi_uldivmod
  - >> _double_epilogue

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

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

  - >> prvUARTCommandConsoleTask
  - >> strtol

  tolower (Thumb, 12 bytes, Stack size 0 bytes, tolower.o(.text))
  [Called By]

  - >> StringToLowerCase

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

  - >> prvCopyDataFromQueue
  - >> prvCopyDataToQueue
  - >> SendMessageFromPort
  - >> PxMessagingTask
  - >> ForwardReceivedMessage
  - >> Explore
  - >> BroadcastReceivedMessage

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

  - >> defaultCommand

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

  - >> prvAllocateTCBAndStack
  - >> _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]
  - >> prvUARTCommandConsoleTask
  - >> ExecuteSnippet
  - >> PxMessagingTask
  - >> GetDateString
  - >> FindRoute
  - >> Explore
  - >> ClearROtopology
  - >> ClearEEportsDir

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

  - >> groupCommand
  - >> SendMessageToModule
  - >> SendMessageFromPort
  - >> PxMessagingTask
  - >> FindRoute
  - >> BroadcastReceivedMessage
  - >> BroadcastMessage

  __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

  strcat (Thumb, 24 bytes, Stack size 0 bytes, strcat.o(.text))
  [Called By]

  - >> uuidCommand
  - >> setCommand
  - >> groupCommand
  - >> bootloaderUpdateCommand
  - >> prvUARTCommandConsoleTask
  - >> remoteBootloaderUpdate
  - >> DisplayModuleStatus

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

  - Max Depth = 8
  - Call Chain = strncpy
  [Called By]
  - >> scastCommand
  - >> groupCommand
  - >> prvHelpCommand
  - >> sweepCommand
  - >> pulseColorCommand
  - >> dimCommand
  - >> colorCommand
  - >> prvUARTCommandConsoleTask
  - >> FreeRTOS_CLIProcessCommand
  - >> DisplayTopology

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

  - >> prvUARTCommandConsoleTask

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

  - >> AddModuleToGroup
  - >> prvTaskStatsCommand
  - >> prvRunTimeStatsCommand
  - >> infoCommand
  - >> exploreCommand
  - >> bootloaderUpdateCommand
  - >> prvWriteNameToBuffer
  - >> demoCommand
  - >> prvUARTCommandConsoleTask
  - >> ExecuteSnippet
  - >> AddSnippet
  - >> vTaskList
  - >> vTaskGetRunTimeStats
  - >> FreeRTOS_CLIProcessCommand
  - >> remoteBootloaderUpdate
  - >> PxMessagingTask
  - >> NameModule
  - >> DisplayTopology
  - >> DisplayPortsDir
  - >> DisplayModuleStatus

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

  - Max Depth = 8
  - Call Chain = strcmp
  [Called By]
  - >> AddModuleToGroup
  - >> groupCommand
  - >> getCommand
  - >> sweepCommand
  - >> pulseRGBCommand
  - >> pulseColorCommand
  - >> dimCommand
  - >> RTC_CalendarConfig
  - >> NameModule
  - >> GetID

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

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

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

  - >> AddModuleToGroup
  - >> setCommand
  - >> setBaudrateCommand
  - >> prvTaskStatsCommand
  - >> prvRunTimeStatsCommand
  - >> groupCommand
  - >> getCommand
  - >> exploreCommand
  - >> defaultCommand
  - >> bootloaderUpdateCommand
  - >> prvWriteNameToBuffer
  - >> toggleCommand
  - >> onCommand
  - >> offCommand
  - >> demoCommand
  - >> colorCommand
  - >> RGBCommand
  - >> prvUARTCommandConsoleTask
  - >> AddSnippet
  - >> NameModule

  strncmp (Thumb, 30 bytes, Stack size 12 bytes, strncmp.o(.text))
  [Stack]

  - Max Depth = 12
  - Call Chain = strncmp
  [Called By]
  - >> AddModuleToGroup
  - >> setCommand
  - >> scastCommand
  - >> getCommand
  - >> defaultCommand
  - >> bootloaderUpdateCommand
  - >> addbuttonCommand
  - >> prvHelpCommand
  - >> sweepCommand
  - >> pulseColorCommand
  - >> dimCommand
  - >> colorCommand
  - >> prvUARTCommandConsoleTask
  - >> ProcessSnippet
  - >> ActivateButtonSnippet
  - >> FreeRTOS_CLIProcessCommand
  - >> NameModule

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

  - Max Depth = 88
  - Call Chain = atoi ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> strtol
  - >> __aeabi_errno_addr
  [Called By]
  - >> setCommand
  - >> ProcessSnippet
  - >> ActivateButtonSnippet
  - >> RTC_CalendarConfig

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

  - Max Depth = 88
  - Call Chain = atol ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> strtol
  - >> __aeabi_errno_addr
  [Called By]
  - >> setBaudrateCommand
  - >> scastCommand
  - >> removebuttonCommand
  - >> bootloaderUpdateCommand
  - >> addbuttonCommand
  - >> toggleCommand
  - >> sweepCommand
  - >> pulseRGBCommand
  - >> pulseColorCommand
  - >> onCommand
  - >> dimCommand
  - >> colorCommand
  - >> RGBCommand
  - >> GetID

  __aeabi_fmul (Thumb, 122 bytes, Stack size 16 bytes, fmul.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = __aeabi_fmul
  [Called By]
  - >> startPWM

  __aeabi_fdiv (Thumb, 124 bytes, Stack size 16 bytes, fdiv.o(.text))
  [Stack]

  - Max Depth = 16
  - Call Chain = __aeabi_fdiv
  [Calls]
  - >> _float_round
  [Called By]
  - >> startPWM

  __aeabi_ui2f (Thumb, 14 bytes, Stack size 8 bytes, ffltui.o(.text))
  [Stack]

  - Max Depth = 20
  - Call Chain = __aeabi_ui2f ⇒ _float_epilogue
  [Calls]
  - >> _float_epilogue
  [Called By]
  - >> startPWM

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

  - Max Depth = 72
  - Call Chain = __aeabi_ui2d ⇒ _double_epilogue ⇒ __aeabi_llsr
  [Calls]
  - >> _double_epilogue
  [Called By]
  - >> RGBsweepFine

  __aeabi_f2uiz (Thumb, 40 bytes, Stack size 0 bytes, ffixui.o(.text))
  [Called By]

  - >> startPWM

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

  - Max Depth = 16
  - Call Chain = __aeabi_d2uiz ⇒ __aeabi_llsr
  [Calls]
  - >> __aeabi_llsr
  [Called By]
  - >> RGBsweepFine

  __aeabi_uldivmod (Thumb, 96 bytes, Stack size 48 bytes, uldiv.o(.text), UNUSED)
  [Calls]

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

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

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

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

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

  - >> __aeabi_fdiv

  _float_epilogue (Thumb, 114 bytes, Stack size 12 bytes, fepilogue.o(.text))
  [Stack]

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

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

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

  _double_epilogue (Thumb, 164 bytes, Stack size 48 bytes, depilogue.o(.text))
  [Stack]

  - Max Depth = 56
  - Call Chain = _double_epilogue ⇒ __aeabi_llsr
  [Calls]
  - >> __aeabi_llsr
  - >> __aeabi_llsl
  - >> __ARM_clz
  - >> _double_round
  [Called By]
  - >> __aeabi_ui2d
  - >> __aeabi_dadd

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

  - Max Depth = 104
  - Call Chain = __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr
  [Calls]
  - >> __aeabi_lasr
  - >> __aeabi_llsl
  - >> _double_round
  - >> _double_epilogue
  [Called By]
  - >> __aeabi_drsub
  - >> ceil
  - >> __aeabi_dsub

  __aeabi_dsub (Thumb, 12 bytes, Stack size 8 bytes, dadd.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_dadd

  __aeabi_drsub (Thumb, 12 bytes, Stack size 8 bytes, dadd.o(.text))
  [Stack]

  - Max Depth = 112
  - Call Chain = __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr
  [Calls]
  - >> __aeabi_dadd
  [Called By]
  - >> ceil

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

  - >> ceil

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

  __aeabi_llsl (Thumb, 32 bytes, Stack size 8 bytes, llshl.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_llsl
  [Called By]
  - >> __aeabi_dadd
  - >> __aeabi_uldivmod
  - >> _double_epilogue

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

  __aeabi_lasr (Thumb, 38 bytes, Stack size 8 bytes, llsshr.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_lasr
  [Called By]
  - >> __aeabi_dadd

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

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

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

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

  - >> _strtoul

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

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

  ActivateButtonSnippet (Thumb, 614 bytes, Stack size 16 bytes, bos_cli.o(i.ActivateButtonSnippet))
  [Stack]

  - Max Depth = 104
  - Call Chain = ActivateButtonSnippet ⇒ atoi ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> atoi
  - >> strncmp
  [Called By]
  - >> AddSnippet

  AddModuleToGroup (Thumb, 266 bytes, Stack size 40 bytes, bos.o(i.AddModuleToGroup))
  [Stack]

  - Max Depth = 52
  - Call Chain = AddModuleToGroup ⇒ strncmp
  [Calls]
  - >> strncmp
  - >> strcpy
  - >> strcmp
  - >> strlen
  [Called By]
  - >> groupCommand

  AddPortButton (Thumb, 364 bytes, Stack size 72 bytes, bos.o(i.AddPortButton))
  [Stack]

  - Max Depth = 248
  - Call Chain = AddPortButton ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> HAL_GPIO_Init
  - >> HAL_UART_DeInit
  - >> osSemaphoreRelease
  - >> EE_WriteVariable
  - >> EE_ReadVariable
  - >> GetUart
  - >> GetPortGPIOs
  [Called By]
  - >> addbuttonCommand
  - >> LoadEEbuttons

  AddSnippet (Thumb, 228 bytes, Stack size 24 bytes, bos_cli.o(i.AddSnippet))
  [Stack]

  - Max Depth = 128
  - Call Chain = AddSnippet ⇒ ActivateButtonSnippet ⇒ atoi ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> ActivateButtonSnippet
  - >> strcpy
  - >> strlen
  [Called By]
  - >> prvUARTCommandConsoleTask

  BOS_CalendarConfig (Thumb, 184 bytes, Stack size 48 bytes, bos.o(i.BOS_CalendarConfig))
  [Stack]

  - Max Depth = 224
  - Call Chain = BOS_CalendarConfig ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> HAL_RTCEx_BKUPWrite
  - >> HAL_RTC_SetTime
  - >> HAL_RTC_SetDate
  - >> EE_WriteVariable
  [Called By]
  - >> setCommand

  BOS_Init (Thumb, 272 bytes, Stack size 8 bytes, bos.o(i.BOS_Init))
  [Stack]

  - Max Depth = 320
  - Call Chain = BOS_Init ⇒ LoadEEvars ⇒ LoadEEbuttons ⇒ AddPortButton ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> HAL_GPIO_WritePin
  - >> NVIC_SystemReset
  - >> UpdateBaudrate
  - >> Module_Init
  - >> MX_GPIO_Init
  - >> MX_DMA_Init
  - >> EE_Init
  - >> UpdateMyPortsDir
  - >> StartMilliDelay
  - >> RTC_Init
  - >> MX_TIM_USEC_Init
  - >> LoadEEvars
  - >> IsLowerCLIbaud
  - >> IsFactoryReset
  - >> GetTimeDate
  - >> EE_FormatForFactoryReset
  [Called By]
  - >> main

  BroadcastMessage (Thumb, 298 bytes, Stack size 48 bytes, bos.o(i.BroadcastMessage))
  [Stack]

  - Max Depth = 296
  - Call Chain = BroadcastMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> SendMessageFromPort
  - >> FindBroadcastRoutes
  - >> __aeabi_memclr4
  [Called By]
  - >> prvUARTCommandConsoleTask
  - >> SendMessageToModule

  BroadcastReceivedMessage (Thumb, 192 bytes, Stack size 40 bytes, bos.o(i.BroadcastReceivedMessage))
  [Stack]

  - Max Depth = 288
  - Call Chain = BroadcastReceivedMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> SendMessageFromPort
  - >> FindBroadcastRoutes
  - >> __aeabi_memclr4
  - >> __aeabi_memcpy
  [Called By]
  - >> PxMessagingTask

  CheckAttachedButtons (Thumb, 1218 bytes, Stack size 40 bytes, bos.o(i.CheckAttachedButtons))
  [Stack]

  - Max Depth = 132
  - Call Chain = CheckAttachedButtons ⇒ StartMicroDelay ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_GPIO_ReadPin
  - >> HAL_GPIO_WritePin
  - >> __ARM_common_switch8
  - >> buttonReleasedForYCallback
  - >> buttonReleasedCallback
  - >> buttonPressedForXCallback
  - >> buttonPressedCallback
  - >> buttonDblClickedCallback
  - >> buttonClickedCallback
  - >> StartMicroDelay
  - >> GetPortGPIOs
  - >> CheckForTimedButtonRelease
  - >> CheckForTimedButtonPress
  [Called By]
  - >> StartDefaultTask

  CheckForTimedButtonPress (Thumb, 108 bytes, Stack size 20 bytes, bos.o(i.CheckForTimedButtonPress))
  [Stack]

  - Max Depth = 20
  - Call Chain = CheckForTimedButtonPress
  [Called By]
  - >> CheckAttachedButtons

  CheckForTimedButtonRelease (Thumb, 108 bytes, Stack size 20 bytes, bos.o(i.CheckForTimedButtonRelease))
  [Stack]

  - Max Depth = 20
  - Call Chain = CheckForTimedButtonRelease
  [Called By]
  - >> CheckAttachedButtons

  ClearEEportsDir (Thumb, 72 bytes, Stack size 16 bytes, bos.o(i.ClearEEportsDir))
  [Stack]

  - Max Depth = 192
  - Call Chain = ClearEEportsDir ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> EE_WriteVariable
  - >> __aeabi_memclr
  [Called By]
  - >> defaultCommand
  - >> PxMessagingTask

  ClearROtopology (Thumb, 76 bytes, Stack size 16 bytes, bos.o(i.ClearROtopology))
  [Stack]

  - Max Depth = 32
  - Call Chain = ClearROtopology ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> FLASH_PageErase
  - >> HAL_FLASH_Unlock
  - >> HAL_FLASH_Lock
  - >> FLASH_WaitForLastOperation
  - >> __aeabi_memclr
  [Called By]
  - >> defaultCommand
  - >> PxMessagingTask

  DMA1_Ch1_IRQHandler (Thumb, 44 bytes, Stack size 8 bytes, h01r0_it.o(i.DMA1_Ch1_IRQHandler))
  [Stack]

  - Max Depth = 32
  - Call Chain = DMA1_Ch1_IRQHandler ⇒ StopPortPortDMA1 ⇒ HAL_DMA_Abort
  [Calls]
  - >> HAL_DMA_IRQHandler
  - >> StopPortPortDMA1
  [Address Reference Count : 1]
  - startup_stm32f091xc.o(RESET)

  DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler (Thumb, 82 bytes, Stack size 8 bytes, h01r0_it.o(i.DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler))
  [Stack]

  - Max Depth = 32
  - Call Chain = DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler ⇒ StopPortPortDMA2 ⇒ HAL_DMA_Abort
  [Calls]
  - >> HAL_DMA_IRQHandler
  - >> StopPortPortDMA2
  [Address Reference Count : 1]
  - startup_stm32f091xc.o(RESET)

  DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler (Thumb, 108 bytes, Stack size 8 bytes, h01r0_it.o(i.DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler))
  [Stack]

  - Max Depth = 32
  - Call Chain = DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler ⇒ StopPortPortDMA3 ⇒ HAL_DMA_Abort
  [Calls]
  - >> HAL_DMA_IRQHandler
  - >> StopPortPortDMA3
  [Address Reference Count : 1]
  - startup_stm32f091xc.o(RESET)

  DisplayModuleStatus (Thumb, 578 bytes, Stack size 24 bytes, bos.o(i.DisplayModuleStatus))
  [Stack]

  - Max Depth = 176
  - Call Chain = DisplayModuleStatus ⇒ writePxMutex ⇒ osSemaphoreWait ⇒ xQueueGenericReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> __ARM_common_switch8
  - >> writePxMutex
  - >> GetPort
  - >> FreeRTOS_CLIGetOutputBuffer
  - >> __2sprintf
  - >> strlen
  - >> strcat
  [Called By]
  - >> statusCommand

  DisplayPortsDir (Thumb, 162 bytes, Stack size 24 bytes, bos.o(i.DisplayPortsDir))
  [Stack]

  - Max Depth = 176
  - Call Chain = DisplayPortsDir ⇒ writePxMutex ⇒ osSemaphoreWait ⇒ xQueueGenericReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> writePxMutex
  - >> __2sprintf
  - >> strlen
  [Called By]
  - >> infoCommand
  - >> exploreCommand

  DisplayTopology (Thumb, 358 bytes, Stack size 24 bytes, bos.o(i.DisplayTopology))
  [Stack]

  - Max Depth = 176
  - Call Chain = DisplayTopology ⇒ writePxMutex ⇒ osSemaphoreWait ⇒ xQueueGenericReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> writePxMutex
  - >> __2sprintf
  - >> strlen
  - >> strncpy
  [Called By]
  - >> infoCommand
  - >> exploreCommand

  EE_Format (Thumb, 188 bytes, Stack size 8 bytes, bos_eeprom.o(i.EE_Format))
  [Stack]

  - Max Depth = 88
  - Call Chain = EE_Format ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> FLASH_PageErase
  - >> HAL_FLASH_Unlock
  - >> HAL_FLASH_Program
  - >> HAL_FLASH_Lock
  - >> FLASH_WaitForLastOperation
  [Called By]
  - >> EE_Init
  - >> EE_FormatForFactoryReset

  EE_FormatForFactoryReset (Thumb, 28 bytes, Stack size 8 bytes, bos.o(i.EE_FormatForFactoryReset))
  [Stack]

  - Max Depth = 96
  - Call Chain = EE_FormatForFactoryReset ⇒ EE_Format ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> EE_Format
  [Called By]
  - >> BOS_Init

  EE_Init (Thumb, 980 bytes, Stack size 32 bytes, bos_eeprom.o(i.EE_Init))
  [Stack]

  - Max Depth = 144
  - Call Chain = EE_Init ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> FLASH_PageErase
  - >> HAL_FLASH_Unlock
  - >> HAL_FLASH_Program
  - >> HAL_FLASH_Lock
  - >> FLASH_WaitForLastOperation
  - >> EE_VerifyPageFullWriteVariable
  - >> EE_ReadVariable
  - >> EE_Format
  [Called By]
  - >> BOS_Init

  EE_ReadVariable (Thumb, 92 bytes, Stack size 32 bytes, bos_eeprom.o(i.EE_ReadVariable))
  [Stack]

  - Max Depth = 32
  - Call Chain = EE_ReadVariable
  [Calls]
  - >> EE_FindValidPage
  [Called By]
  - >> AddPortButton
  - >> EE_PageTransfer
  - >> EE_Init
  - >> SetButtonEvents
  - >> RemovePortButton
  - >> LoadEEstreams
  - >> LoadEEportsDir
  - >> LoadEEparams
  - >> LoadEEgroup
  - >> LoadEEbuttons
  - >> LoadEEalias

  EE_WriteVariable (Thumb, 44 bytes, Stack size 16 bytes, bos_eeprom.o(i.EE_WriteVariable))
  [Stack]

  - Max Depth = 176
  - Call Chain = EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> HAL_FLASH_Unlock
  - >> HAL_FLASH_Lock
  - >> EE_VerifyPageFullWriteVariable
  - >> EE_PageTransfer
  [Called By]
  - >> BOS_CalendarConfig
  - >> AddPortButton
  - >> setCommand
  - >> SetButtonEvents
  - >> SaveEEportsDir
  - >> SaveEEparams
  - >> SaveEEalias
  - >> RemovePortButton
  - >> PxMessagingTask
  - >> ClearEEportsDir

  ExecuteSnippet (Thumb, 154 bytes, Stack size 32 bytes, bos_cli.o(i.ExecuteSnippet))
  [Stack]

  - Max Depth = 136
  - Call Chain = ExecuteSnippet ⇒ ProcessSnippet ⇒ atoi ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> ProcessSnippet
  - >> FreeRTOS_CLIProcessCommand
  - >> FreeRTOS_CLIGetOutputBuffer
  - >> strlen
  - >> __aeabi_memclr
  [Called By]
  - >> StartDefaultTask

  Explore (Thumb, 1396 bytes, Stack size 56 bytes, bos.o(i.Explore))
  [Stack]

  - Max Depth = 384
  - Call Chain = Explore ⇒ SendMessageToModule ⇒ BroadcastMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> osDelay
  - >> SwapUartPins
  - >> SendMessageToModule
  - >> SendMessageFromPort
  - >> SaveROtopology
  - >> SaveEEportsDir
  - >> GetUart
  - >> FindRoute
  - >> ExploreNeighbors
  - >> __aeabi_memclr
  - >> __aeabi_memcpy
  [Called By]
  - >> exploreCommand

  ExploreNeighbors (Thumb, 68 bytes, Stack size 24 bytes, bos.o(i.ExploreNeighbors))
  [Stack]

  - Max Depth = 272
  - Call Chain = ExploreNeighbors ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> osDelay
  - >> SendMessageFromPort
  [Called By]
  - >> PxMessagingTask
  - >> Explore

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

  - >> HAL_FLASHEx_Erase
  - >> EE_PageTransfer
  - >> EE_Init
  - >> EE_Format
  - >> SaveROtopology
  - >> ClearROtopology

  FLASH_WaitForLastOperation (Thumb, 100 bytes, Stack size 16 bytes, stm32f0xx_hal_flash.o(i.FLASH_WaitForLastOperation))
  [Stack]

  - Max Depth = 16
  - Call Chain = FLASH_WaitForLastOperation
  [Calls]
  - >> FLASH_SetErrorCode
  - >> HAL_GetTick
  [Called By]
  - >> HAL_FLASHEx_Erase
  - >> HAL_FLASH_Program
  - >> EE_VerifyPageFullWriteVariable
  - >> EE_PageTransfer
  - >> EE_Init
  - >> EE_Format
  - >> SaveROtopology
  - >> ClearROtopology

  FindBroadcastRoutes (Thumb, 308 bytes, Stack size 40 bytes, bos.o(i.FindBroadcastRoutes))
  [Stack]

  - Max Depth = 60
  - Call Chain = FindBroadcastRoutes ⇒ malloc
  [Calls]
  - >> malloc
  - >> free
  [Called By]
  - >> BroadcastReceivedMessage
  - >> BroadcastMessage

  FindRoute (Thumb, 376 bytes, Stack size 80 bytes, bos.o(i.FindRoute))
  [Stack]

  - Max Depth = 92
  - Call Chain = FindRoute ⇒ minArr
  [Calls]
  - >> minArr
  - >> QnotEmpty
  - >> __aeabi_memclr4
  - >> __aeabi_memclr
  [Called By]
  - >> remoteBootloaderUpdate
  - >> StartScastDMAStream
  - >> SendMessageToModule
  - >> ForwardReceivedMessage
  - >> Explore

  ForwardReceivedMessage (Thumb, 132 bytes, Stack size 32 bytes, bos.o(i.ForwardReceivedMessage))
  [Stack]

  - Max Depth = 280
  - Call Chain = ForwardReceivedMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> SendMessageFromPort
  - >> FindRoute
  - >> __aeabi_memcpy
  [Called By]
  - >> PxMessagingTask

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

  - >> prvUARTCommandConsoleTask
  - >> ExecuteSnippet
  - >> remoteBootloaderUpdate
  - >> PxMessagingTask
  - >> DisplayModuleStatus

  FreeRTOS_CLIGetParameter (Thumb, 102 bytes, Stack size 12 bytes, freertos_cli.o(i.FreeRTOS_CLIGetParameter))
  [Stack]

  - Max Depth = 12
  - Call Chain = FreeRTOS_CLIGetParameter
  [Called By]
  - >> setCommand
  - >> setBaudrateCommand
  - >> scastCommand
  - >> removebuttonCommand
  - >> nameCommand
  - >> groupCommand
  - >> getCommand
  - >> defaultCommand
  - >> bootloaderUpdateCommand
  - >> addbuttonCommand
  - >> prvHelpCommand
  - >> toggleCommand
  - >> sweepCommand
  - >> pulseRGBCommand
  - >> pulseColorCommand
  - >> onCommand
  - >> dimCommand
  - >> colorCommand
  - >> RGBCommand

  FreeRTOS_CLIProcessCommand (Thumb, 204 bytes, Stack size 32 bytes, freertos_cli.o(i.FreeRTOS_CLIProcessCommand))
  [Stack]

  - Max Depth = 44
  - Call Chain = FreeRTOS_CLIProcessCommand ⇒ strncmp
  [Calls]
  - >> prvGetNumberOfParameters
  - >> strncmp
  - >> strlen
  - >> strncpy
  [Called By]
  - >> prvUARTCommandConsoleTask
  - >> ExecuteSnippet
  - >> PxMessagingTask

  FreeRTOS_CLIRegisterCommand (Thumb, 68 bytes, Stack size 16 bytes, freertos_cli.o(i.FreeRTOS_CLIRegisterCommand))
  [Stack]

  - Max Depth = 80
  - Call Chain = FreeRTOS_CLIRegisterCommand ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> pvPortMalloc
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> RegisterModuleCLICommands
  - >> vRegisterCLICommands

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

  - bos_freertos.o(i.MX_FREERTOS_Init)

  GetDateString (Thumb, 56 bytes, Stack size 16 bytes, bos.o(i.GetDateString))
  [Stack]

  - Max Depth = 40
  - Call Chain = GetDateString ⇒ __2sprintf
  [Calls]
  - >> malloc
  - >> __2sprintf
  - >> __aeabi_memclr
  [Called By]
  - >> dateCommand

  GetID (Thumb, 182 bytes, Stack size 16 bytes, bos.o(i.GetID))
  [Stack]

  - Max Depth = 104
  - Call Chain = GetID ⇒ atol ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> atol
  - >> strcmp
  [Called By]
  - >> scastCommand
  - >> groupCommand
  - >> prvUARTCommandConsoleTask

  GetPort (Thumb, 78 bytes, Stack size 0 bytes, h01r0.o(i.GetPort))
  [Called By]

  - >> HAL_UART_TxCpltCallback
  - >> HAL_UART_RxCpltCallback
  - >> PortMemDMA1_Setup
  - >> StopPortPortDMA3
  - >> StopPortPortDMA2
  - >> StopPortPortDMA1
  - >> PortPortDMA3_Setup
  - >> PortPortDMA2_Setup
  - >> PortPortDMA1_Setup
  - >> SwapUartPins
  - >> DisplayModuleStatus

  GetPortGPIOs (Thumb, 200 bytes, Stack size 40 bytes, bos.o(i.GetPortGPIOs))
  [Stack]

  - Max Depth = 52
  - Call Chain = GetPortGPIOs ⇒ GetUart ⇒ __ARM_common_switch8
  [Calls]
  - >> GetUart
  [Called By]
  - >> AddPortButton
  - >> IsLowerCLIbaud
  - >> IsFactoryReset
  - >> CheckAttachedButtons

  GetTimeDate (Thumb, 110 bytes, Stack size 32 bytes, bos.o(i.GetTimeDate))
  [Stack]

  - Max Depth = 52
  - Call Chain = GetTimeDate ⇒ HAL_RTC_GetTime
  [Calls]
  - >> HAL_RTC_GetTime
  - >> HAL_RTC_GetDate
  [Called By]
  - >> BOS_Init
  - >> timeCommand
  - >> setCommand
  - >> dateCommand

  GetUart (Thumb, 48 bytes, Stack size 4 bytes, bos.o(i.GetUart))
  [Stack]

  - Max Depth = 12
  - Call Chain = GetUart ⇒ __ARM_common_switch8
  [Calls]
  - >> __ARM_common_switch8
  [Called By]
  - >> AddPortButton
  - >> readPxITMutex
  - >> readPxMutex
  - >> writePxMutex
  - >> writePxITMutex
  - >> UpdateBaudrate
  - >> remoteBootloaderUpdate
  - >> UpdateMyPortsDir
  - >> StartScastDMAStream
  - >> SetupPortForRemoteBootloaderUpdate
  - >> SetupDMAStreamsFromMessage
  - >> SendMessageFromPort
  - >> RemovePortButton
  - >> ReadPortsDir
  - >> PxMessagingTask
  - >> GetPortGPIOs
  - >> Explore

  HAL_DMA_Abort (Thumb, 100 bytes, Stack size 16 bytes, stm32f0xx_hal_dma.o(i.HAL_DMA_Abort))
  [Stack]

  - Max Depth = 16
  - Call Chain = HAL_DMA_Abort
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> StopPortPortDMA3
  - >> StopPortPortDMA2
  - >> StopPortPortDMA1

  HAL_DMA_IRQHandler (Thumb, 2324 bytes, Stack size 8 bytes, stm32f0xx_hal_dma.o(i.HAL_DMA_IRQHandler))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_DMA_IRQHandler
  [Called By]
  - >> DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler
  - >> DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler
  - >> DMA1_Ch1_IRQHandler

  HAL_DMA_Init (Thumb, 86 bytes, Stack size 0 bytes, stm32f0xx_hal_dma.o(i.HAL_DMA_Init))
  [Called By]

  - >> PortPortDMA3_Init
  - >> PortPortDMA2_Init
  - >> PortPortDMA1_Init
  - >> PortMemDMA3_Init
  - >> PortMemDMA2_Init
  - >> PortMemDMA1_Init

  HAL_DMA_Start_IT (Thumb, 114 bytes, Stack size 24 bytes, stm32f0xx_hal_dma.o(i.HAL_DMA_Start_IT))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> DMA_SetConfig
  [Called By]
  - >> HAL_UART_Receive_DMA

  HAL_Delay (Thumb, 26 bytes, Stack size 16 bytes, stm32f0xx_hal.o(i.HAL_Delay))
  [Stack]

  - Max Depth = 16
  - Call Chain = HAL_Delay
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> demoCommand
  - >> remoteBootloaderUpdate
  - >> PxMessagingTask

  HAL_FLASHEx_Erase (Thumb, 160 bytes, Stack size 24 bytes, stm32f0xx_hal_flash_ex.o(i.HAL_FLASHEx_Erase))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_FLASHEx_Erase ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> FLASH_MassErase
  - >> FLASH_PageErase
  - >> FLASH_WaitForLastOperation
  [Called By]
  - >> PxMessagingTask

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

  - >> EE_VerifyPageFullWriteVariable
  - >> EE_PageTransfer
  - >> EE_WriteVariable
  - >> EE_Init
  - >> EE_Format
  - >> SaveROtopology
  - >> PxMessagingTask
  - >> ClearROtopology

  HAL_FLASH_Program (Thumb, 174 bytes, Stack size 64 bytes, stm32f0xx_hal_flash.o(i.HAL_FLASH_Program))
  [Stack]

  - Max Depth = 80
  - Call Chain = HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> FLASH_WaitForLastOperation
  - >> FLASH_Program_HalfWord
  - >> __aeabi_llsr
  [Called By]
  - >> EE_VerifyPageFullWriteVariable
  - >> EE_PageTransfer
  - >> EE_Init
  - >> EE_Format
  - >> SaveROtopology
  - >> PxMessagingTask

  HAL_FLASH_Unlock (Thumb, 32 bytes, Stack size 0 bytes, stm32f0xx_hal_flash.o(i.HAL_FLASH_Unlock))
  [Called By]

  - >> EE_VerifyPageFullWriteVariable
  - >> EE_PageTransfer
  - >> EE_WriteVariable
  - >> EE_Init
  - >> EE_Format
  - >> SaveROtopology
  - >> PxMessagingTask
  - >> ClearROtopology

  HAL_GPIO_Init (Thumb, 480 bytes, Stack size 20 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_Init))
  [Stack]

  - Max Depth = 20
  - Call Chain = HAL_GPIO_Init
  [Called By]
  - >> AddPortButton
  - >> HAL_UART_MspInit
  - >> IND_LED_Init
  - >> TIM3_Init
  - >> IsLowerCLIbaud
  - >> IsFactoryReset

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

  - >> IsLowerCLIbaud
  - >> IsFactoryReset
  - >> CheckAttachedButtons

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

  - >> PxMessagingTask

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

  - >> BOS_Init
  - >> pingCommand
  - >> StartDefaultTask
  - >> PxMessagingTask
  - >> IsLowerCLIbaud
  - >> IsFactoryReset
  - >> CheckAttachedButtons

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

  - >> idcodeCommand

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

  - >> idcodeCommand

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

  - >> FLASH_WaitForLastOperation
  - >> HAL_DMA_Abort
  - >> HAL_Delay
  - >> HAL_RCCEx_PeriphCLKConfig
  - >> HAL_RCC_OscConfig
  - >> HAL_RCC_ClockConfig
  - >> RTC_EnterInitMode
  - >> HAL_RTC_WaitForSynchro
  - >> UART_WaitOnFlagUntilTimeout

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

  - >> SysTick_Handler

  HAL_Init (Thumb, 28 bytes, Stack size 8 bytes, stm32f0xx_hal.o(i.HAL_Init))
  [Stack]

  - Max Depth = 100
  - Call Chain = HAL_Init ⇒ HAL_InitTick ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_MspInit
  - >> HAL_InitTick
  [Called By]
  - >> main

  HAL_InitTick (Thumb, 38 bytes, Stack size 16 bytes, stm32f0xx_hal.o(i.HAL_InitTick))
  [Stack]

  - Max Depth = 92
  - Call Chain = HAL_InitTick ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_SYSTICK_Config
  - >> HAL_RCC_GetHCLKFreq
  - >> HAL_NVIC_SetPriority
  - >> __aeabi_uidivmod
  [Called By]
  - >> HAL_Init
  - >> HAL_RCC_ClockConfig

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

  - >> HAL_Init

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

  - >> HAL_UART_MspInit
  - >> PortMemDMA1_Setup
  - >> TIM3_Init
  - >> PortPortDMA3_Setup
  - >> PortPortDMA2_Setup
  - >> PortPortDMA1_Setup

  HAL_NVIC_SetPriority (Thumb, 18 bytes, Stack size 16 bytes, stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_NVIC_SetPriority ⇒ NVIC_SetPriority
  [Calls]
  - >> NVIC_SetPriority
  [Called By]
  - >> HAL_InitTick
  - >> SystemClock_Config
  - >> HAL_UART_MspInit
  - >> PortMemDMA1_Setup
  - >> TIM3_Init
  - >> PortPortDMA3_Setup
  - >> PortPortDMA2_Setup
  - >> PortPortDMA1_Setup

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

  - >> SystemClock_Config

  HAL_RCCEx_PeriphCLKConfig (Thumb, 368 bytes, Stack size 24 bytes, stm32f0xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_RCCEx_PeriphCLKConfig
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> SystemClock_Config

  HAL_RCC_ClockConfig (Thumb, 702 bytes, Stack size 16 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig))
  [Stack]

  - Max Depth = 108
  - Call Chain = HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_InitTick
  - >> HAL_GetTick
  [Called By]
  - >> SystemClock_Config

  HAL_RCC_GetHCLKFreq (Thumb, 32 bytes, Stack size 8 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq))
  [Stack]

  - Max Depth = 76
  - Call Chain = HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_RCC_GetSysClockFreq
  [Called By]
  - >> HAL_InitTick
  - >> SystemClock_Config
  - >> HAL_RCC_GetPCLK1Freq
  - >> StartMilliDelay
  - >> StartMicroDelay
  - >> MX_TIM_USEC_Init

  HAL_RCC_GetPCLK1Freq (Thumb, 26 bytes, Stack size 8 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq))
  [Stack]

  - Max Depth = 84
  - Call Chain = HAL_RCC_GetPCLK1Freq ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_RCC_GetHCLKFreq
  [Called By]
  - >> UART_SetConfig

  HAL_RCC_GetSysClockFreq (Thumb, 194 bytes, Stack size 56 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq))
  [Stack]

  - Max Depth = 68
  - Call Chain = HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> __aeabi_uidivmod
  [Called By]
  - >> HAL_RCC_GetHCLKFreq
  - >> UART_SetConfig
  - >> TIM3_Init

  HAL_RCC_OscConfig (Thumb, 1622 bytes, Stack size 16 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig))
  [Stack]

  - Max Depth = 16
  - Call Chain = HAL_RCC_OscConfig
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> SystemClock_Config

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

  - >> RTC_Init

  HAL_RTCEx_BKUPWrite (Thumb, 18 bytes, Stack size 8 bytes, stm32f0xx_hal_rtc_ex.o(i.HAL_RTCEx_BKUPWrite))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_RTCEx_BKUPWrite
  [Called By]
  - >> BOS_CalendarConfig
  - >> RTC_CalendarConfig

  HAL_RTC_GetDate (Thumb, 88 bytes, Stack size 20 bytes, stm32f0xx_hal_rtc.o(i.HAL_RTC_GetDate))
  [Stack]

  - Max Depth = 20
  - Call Chain = HAL_RTC_GetDate
  [Calls]
  - >> RTC_Bcd2ToByte
  [Called By]
  - >> GetTimeDate

  HAL_RTC_GetTime (Thumb, 94 bytes, Stack size 20 bytes, stm32f0xx_hal_rtc.o(i.HAL_RTC_GetTime))
  [Stack]

  - Max Depth = 20
  - Call Chain = HAL_RTC_GetTime
  [Calls]
  - >> RTC_Bcd2ToByte
  [Called By]
  - >> GetTimeDate

  HAL_RTC_Init (Thumb, 182 bytes, Stack size 8 bytes, stm32f0xx_hal_rtc.o(i.HAL_RTC_Init))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_RTC_Init ⇒ RTC_EnterInitMode
  [Calls]
  - >> HAL_RTC_MspInit
  - >> RTC_EnterInitMode
  [Called By]
  - >> RTC_Init

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

  - >> HAL_RTC_Init

  HAL_RTC_SetDate (Thumb, 280 bytes, Stack size 24 bytes, stm32f0xx_hal_rtc.o(i.HAL_RTC_SetDate))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_RTC_SetDate ⇒ RTC_EnterInitMode
  [Calls]
  - >> RTC_EnterInitMode
  - >> RTC_ByteToBcd2
  - >> RTC_Bcd2ToByte
  - >> HAL_RTC_WaitForSynchro
  [Called By]
  - >> BOS_CalendarConfig
  - >> RTC_CalendarConfig

  HAL_RTC_SetTime (Thumb, 318 bytes, Stack size 24 bytes, stm32f0xx_hal_rtc.o(i.HAL_RTC_SetTime))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_RTC_SetTime ⇒ RTC_EnterInitMode
  [Calls]
  - >> RTC_EnterInitMode
  - >> RTC_ByteToBcd2
  - >> RTC_Bcd2ToByte
  - >> HAL_RTC_WaitForSynchro
  [Called By]
  - >> BOS_CalendarConfig
  - >> RTC_CalendarConfig

  HAL_RTC_WaitForSynchro (Thumb, 60 bytes, Stack size 16 bytes, stm32f0xx_hal_rtc.o(i.HAL_RTC_WaitForSynchro))
  [Stack]

  - Max Depth = 16
  - Call Chain = HAL_RTC_WaitForSynchro
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> HAL_RTC_SetTime
  - >> HAL_RTC_SetDate

  HAL_SYSTICK_CLKSourceConfig (Thumb, 32 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig))
  [Called By]

  - >> SystemClock_Config

  HAL_SYSTICK_Config (Thumb, 46 bytes, Stack size 16 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_SYSTICK_Config ⇒ NVIC_SetPriority
  [Calls]
  - >> NVIC_SetPriority
  [Called By]
  - >> HAL_InitTick
  - >> SystemClock_Config

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

  - >> HAL_TIM_IRQHandler

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

  - >> HAL_TIM_IRQHandler

  HAL_TIMEx_MasterConfigSynchronization (Thumb, 98 bytes, Stack size 0 bytes, stm32f0xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization))
  [Called By]

  - >> TIM3_Init
  - >> MX_TIM_USEC_Init

  HAL_TIM_Base_Init (Thumb, 56 bytes, Stack size 8 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Init))
  [Stack]

  - Max Depth = 16
  - Call Chain = HAL_TIM_Base_Init ⇒ TIM_Base_SetConfig
  [Calls]
  - >> HAL_TIM_Base_MspInit
  - >> TIM_Base_SetConfig
  [Called By]
  - >> TIM3_Init
  - >> StartMilliDelay
  - >> StartMicroDelay
  - >> MX_TIM_USEC_Init

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

  - >> HAL_TIM_Base_Init

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

  - >> StartMilliDelay
  - >> StartMicroDelay

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

  - >> RGB_LED_off
  - >> StartMilliDelay
  - >> StartMicroDelay

  HAL_TIM_ConfigClockSource (Thumb, 318 bytes, Stack size 24 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_TIM_ConfigClockSource ⇒ TIM_TI2_ConfigInputStage
  [Calls]
  - >> TIM_TI2_ConfigInputStage
  - >> TIM_TI1_ConfigInputStage
  - >> TIM_ITRx_SetConfig
  - >> TIM_ETR_SetConfig
  [Called By]
  - >> TIM3_Init

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

  - >> HAL_TIM_IRQHandler

  HAL_TIM_IRQHandler (Thumb, 456 bytes, Stack size 8 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_IRQHandler))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_TIM_IRQHandler
  [Calls]
  - >> HAL_TIM_TriggerCallback
  - >> HAL_TIM_PeriodElapsedCallback
  - >> HAL_TIM_PWM_PulseFinishedCallback
  - >> HAL_TIM_OC_DelayElapsedCallback
  - >> HAL_TIM_IC_CaptureCallback
  - >> HAL_TIMEx_CommutationCallback
  - >> HAL_TIMEx_BreakCallback
  [Called By]
  - >> TIM3_IRQHandler

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

  - >> HAL_TIM_IRQHandler

  HAL_TIM_PWM_ConfigChannel (Thumb, 274 bytes, Stack size 16 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_PWM_ConfigChannel))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_TIM_PWM_ConfigChannel ⇒ TIM_OC4_SetConfig
  [Calls]
  - >> TIM_OC4_SetConfig
  - >> TIM_OC3_SetConfig
  - >> TIM_OC1_SetConfig
  - >> TIM_OC2_SetConfig
  [Called By]
  - >> TIM3_Init

  HAL_TIM_PWM_Init (Thumb, 56 bytes, Stack size 8 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_PWM_Init))
  [Stack]

  - Max Depth = 16
  - Call Chain = HAL_TIM_PWM_Init ⇒ TIM_Base_SetConfig
  [Calls]
  - >> HAL_TIM_PWM_MspInit
  - >> TIM_Base_SetConfig
  [Called By]
  - >> TIM3_Init

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

  - >> HAL_TIM_PWM_Init

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

  - >> HAL_TIM_IRQHandler

  HAL_TIM_PWM_Start (Thumb, 88 bytes, Stack size 12 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_PWM_Start))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd
  [Calls]
  - >> TIM_CCxChannelCmd
  [Called By]
  - >> startPWM

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

  - >> HAL_TIM_IRQHandler

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

  - >> HAL_TIM_IRQHandler

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

  - >> HAL_UART_IRQHandler

  HAL_UART_DeInit (Thumb, 72 bytes, Stack size 8 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_DeInit))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_UART_DeInit
  [Calls]
  - >> HAL_UART_MspDeInit
  [Called By]
  - >> AddPortButton

  HAL_UART_ErrorCallback (Thumb, 22 bytes, Stack size 8 bytes, h01r0_it.o(i.HAL_UART_ErrorCallback))
  [Stack]

  - Max Depth = 16
  - Call Chain = HAL_UART_ErrorCallback ⇒ HAL_UART_Receive_IT
  [Calls]
  - >> HAL_UART_Receive_IT
  [Called By]
  - >> HAL_UART_IRQHandler
  - >> UART_DMAError

  HAL_UART_IRQHandler (Thumb, 334 bytes, Stack size 8 bytes, stm32f0xx_hal_uart_ex.o(i.HAL_UART_IRQHandler))
  [Stack]

  - Max Depth = 128
  - Call Chain = HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ PortMemDMA1_Setup ⇒ HAL_UART_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_UARTEx_WakeupCallback
  - >> UART_Transmit_IT
  - >> UART_Receive_IT
  - >> UART_EndTransmit_IT
  - >> HAL_UART_ErrorCallback
  [Called By]
  - >> USART3_8_IRQHandler
  - >> USART2_IRQHandler
  - >> USART1_IRQHandler

  HAL_UART_Init (Thumb, 130 bytes, Stack size 8 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_Init))
  [Stack]

  - Max Depth = 124
  - Call Chain = HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetPCLK1Freq ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> UART_SetConfig
  - >> UART_CheckIdleState
  - >> UART_AdvFeatureConfig
  - >> HAL_UART_MspInit
  [Called By]
  - >> UpdateBaudrate
  - >> MX_USART6_UART_Init
  - >> MX_USART5_UART_Init
  - >> MX_USART4_UART_Init
  - >> MX_USART3_UART_Init
  - >> MX_USART2_UART_Init
  - >> MX_USART1_UART_Init
  - >> SwapUartPins
  - >> SetupPortForRemoteBootloaderUpdate

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

  - >> HAL_UART_DeInit

  HAL_UART_MspInit (Thumb, 706 bytes, Stack size 32 bytes, h01r0_uart.o(i.HAL_UART_MspInit))
  [Stack]

  - Max Depth = 56
  - Call Chain = HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ NVIC_SetPriority
  [Calls]
  - >> HAL_GPIO_Init
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_NVIC_SetPriority
  [Called By]
  - >> HAL_UART_Init

  HAL_UART_Receive (Thumb, 326 bytes, Stack size 40 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_Receive))
  [Stack]

  - Max Depth = 80
  - Call Chain = HAL_UART_Receive ⇒ UART_WaitOnFlagUntilTimeout
  [Calls]
  - >> UART_WaitOnFlagUntilTimeout
  [Called By]
  - >> readPxMutex

  HAL_UART_Receive_DMA (Thumb, 158 bytes, Stack size 32 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_Receive_DMA))
  [Stack]

  - Max Depth = 64
  - Call Chain = HAL_UART_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_DMA_Start_IT
  [Called By]
  - >> PortMemDMA1_Setup
  - >> PortPortDMA3_Setup
  - >> PortPortDMA2_Setup
  - >> PortPortDMA1_Setup

  HAL_UART_Receive_IT (Thumb, 238 bytes, Stack size 8 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_Receive_IT))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_UART_Receive_IT
  [Called By]
  - >> HAL_UART_RxCpltCallback
  - >> HAL_UART_ErrorCallback
  - >> readPxITMutex
  - >> StopPortPortDMA3
  - >> StopPortPortDMA2
  - >> StopPortPortDMA1
  - >> SendMessageFromPort
  - >> RemovePortButton
  - >> PxMessagingTask

  HAL_UART_RxCpltCallback (Thumb, 186 bytes, Stack size 24 bytes, h01r0_it.o(i.HAL_UART_RxCpltCallback))
  [Stack]

  - Max Depth = 104
  - Call Chain = HAL_UART_RxCpltCallback ⇒ PortMemDMA1_Setup ⇒ HAL_UART_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_UART_Receive_IT
  - >> xQueueGiveFromISR
  - >> PortMemDMA1_Setup
  - >> vTaskNotifyGiveFromISR
  - >> GetPort
  - >> NotifyMessagingTaskFromISR
  [Called By]
  - >> UART_Receive_IT
  - >> UART_DMAReceiveCplt

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

  - >> UART_DMARxHalfCplt

  HAL_UART_Transmit (Thumb, 238 bytes, Stack size 40 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_Transmit))
  [Stack]

  - Max Depth = 80
  - Call Chain = HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
  [Calls]
  - >> UART_WaitOnFlagUntilTimeout
  [Called By]
  - >> writePxMutex

  HAL_UART_Transmit_IT (Thumb, 132 bytes, Stack size 8 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_Transmit_IT))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_UART_Transmit_IT
  [Called By]
  - >> writePxITMutex

  HAL_UART_TxCpltCallback (Thumb, 36 bytes, Stack size 16 bytes, h01r0_it.o(i.HAL_UART_TxCpltCallback))
  [Stack]

  - Max Depth = 56
  - Call Chain = HAL_UART_TxCpltCallback ⇒ xQueueGiveFromISR ⇒ xTaskRemoveFromEventList
  [Calls]
  - >> xQueueGiveFromISR
  - >> GetPort
  [Called By]
  - >> UART_EndTransmit_IT

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

  - startup_stm32f091xc.o(RESET)

  IND_LED_Init (Thumb, 36 bytes, Stack size 24 bytes, h01r0_gpio.o(i.IND_LED_Init))
  [Stack]

  - Max Depth = 44
  - Call Chain = IND_LED_Init ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_GPIO_Init
  [Called By]
  - >> MX_GPIO_Init

  IsFactoryReset (Thumb, 282 bytes, Stack size 64 bytes, bos.o(i.IsFactoryReset))
  [Stack]

  - Max Depth = 156
  - Call Chain = IsFactoryReset ⇒ StartMilliDelay ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_GPIO_ReadPin
  - >> HAL_GPIO_Init
  - >> HAL_GPIO_WritePin
  - >> StartMilliDelay
  - >> GetPortGPIOs
  [Called By]
  - >> BOS_Init

  IsLowerCLIbaud (Thumb, 152 bytes, Stack size 64 bytes, bos.o(i.IsLowerCLIbaud))
  [Stack]

  - Max Depth = 156
  - Call Chain = IsLowerCLIbaud ⇒ StartMilliDelay ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_GPIO_ReadPin
  - >> HAL_GPIO_Init
  - >> HAL_GPIO_WritePin
  - >> StartMilliDelay
  - >> GetPortGPIOs
  [Called By]
  - >> BOS_Init

  LoadEEalias (Thumb, 106 bytes, Stack size 24 bytes, bos.o(i.LoadEEalias))
  [Stack]

  - Max Depth = 56
  - Call Chain = LoadEEalias ⇒ EE_ReadVariable
  [Calls]
  - >> EE_ReadVariable
  [Called By]
  - >> LoadEEvars

  LoadEEbuttons (Thumb, 416 bytes, Stack size 56 bytes, bos.o(i.LoadEEbuttons))
  [Stack]

  - Max Depth = 304
  - Call Chain = LoadEEbuttons ⇒ AddPortButton ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> AddPortButton
  - >> EE_ReadVariable
  - >> SetButtonEvents
  [Called By]
  - >> LoadEEvars

  LoadEEgroup (Thumb, 144 bytes, Stack size 24 bytes, bos.o(i.LoadEEgroup))
  [Stack]

  - Max Depth = 56
  - Call Chain = LoadEEgroup ⇒ EE_ReadVariable
  [Calls]
  - >> EE_ReadVariable
  [Called By]
  - >> LoadEEvars

  LoadEEparams (Thumb, 284 bytes, Stack size 24 bytes, bos.o(i.LoadEEparams))
  [Stack]

  - Max Depth = 56
  - Call Chain = LoadEEparams ⇒ EE_ReadVariable
  [Calls]
  - >> EE_ReadVariable
  [Called By]
  - >> LoadEEvars

  LoadEEportsDir (Thumb, 52 bytes, Stack size 16 bytes, bos.o(i.LoadEEportsDir))
  [Stack]

  - Max Depth = 48
  - Call Chain = LoadEEportsDir ⇒ EE_ReadVariable
  [Calls]
  - >> EE_ReadVariable
  [Called By]
  - >> LoadEEvars

  LoadEEstreams (Thumb, 290 bytes, Stack size 56 bytes, bos.o(i.LoadEEstreams))
  [Stack]

  - Max Depth = 256
  - Call Chain = LoadEEstreams ⇒ SetupDMAStreamsFromMessage ⇒ xTimerCreate ⇒ prvCheckForValidListAndQueue ⇒ xQueueGenericCreate ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> EE_ReadVariable
  - >> SetupDMAStreamsFromMessage
  [Called By]
  - >> LoadEEvars

  LoadEEvars (Thumb, 32 bytes, Stack size 8 bytes, bos.o(i.LoadEEvars))
  [Stack]

  - Max Depth = 312
  - Call Chain = LoadEEvars ⇒ LoadEEbuttons ⇒ AddPortButton ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> LoadROtopology
  - >> LoadEEstreams
  - >> LoadEEportsDir
  - >> LoadEEparams
  - >> LoadEEgroup
  - >> LoadEEbuttons
  - >> LoadEEalias
  [Called By]
  - >> BOS_Init

  LoadROtopology (Thumb, 112 bytes, Stack size 20 bytes, bos.o(i.LoadROtopology))
  [Stack]

  - Max Depth = 20
  - Call Chain = LoadROtopology
  [Called By]
  - >> LoadEEvars

  MX_DMA_Init (Thumb, 84 bytes, Stack size 8 bytes, h01r0_dma.o(i.MX_DMA_Init))
  [Stack]

  - Max Depth = 16
  - Call Chain = MX_DMA_Init ⇒ PortPortDMA3_Init
  [Calls]
  - >> PortPortDMA3_Init
  - >> PortPortDMA2_Init
  - >> PortPortDMA1_Init
  - >> PortMemDMA3_Init
  - >> PortMemDMA2_Init
  - >> PortMemDMA1_Init
  [Called By]
  - >> BOS_Init

  MX_FREERTOS_Init (Thumb, 436 bytes, Stack size 72 bytes, bos_freertos.o(i.MX_FREERTOS_Init))
  [Stack]

  - Max Depth = 208
  - Call Chain = MX_FREERTOS_Init ⇒ xTaskGenericCreate ⇒ prvAllocateTCBAndStack ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> xTaskGenericCreate
  - >> osSemaphoreCreate
  - >> vRegisterCLICommands
  [Called By]
  - >> main

  MX_GPIO_Init (Thumb, 160 bytes, Stack size 8 bytes, h01r0_gpio.o(i.MX_GPIO_Init))
  [Stack]

  - Max Depth = 52
  - Call Chain = MX_GPIO_Init ⇒ IND_LED_Init ⇒ HAL_GPIO_Init
  [Calls]
  - >> IND_LED_Init
  [Called By]
  - >> BOS_Init

  MX_TIM_USEC_Init (Thumb, 84 bytes, Stack size 24 bytes, bos.o(i.MX_TIM_USEC_Init))
  [Stack]

  - Max Depth = 100
  - Call Chain = MX_TIM_USEC_Init ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_RCC_GetHCLKFreq
  - >> HAL_TIMEx_MasterConfigSynchronization
  - >> HAL_TIM_Base_Init
  - >> __aeabi_uidivmod
  [Called By]
  - >> BOS_Init

  MX_USART1_UART_Init (Thumb, 50 bytes, Stack size 8 bytes, h01r0_uart.o(i.MX_USART1_UART_Init))
  [Stack]

  - Max Depth = 132
  - Call Chain = MX_USART1_UART_Init ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetPCLK1Freq ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_UART_Init
  [Called By]
  - >> Module_Init
  - >> RemovePortButton

  MX_USART2_UART_Init (Thumb, 50 bytes, Stack size 8 bytes, h01r0_uart.o(i.MX_USART2_UART_Init))
  [Stack]

  - Max Depth = 132
  - Call Chain = MX_USART2_UART_Init ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetPCLK1Freq ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_UART_Init
  [Called By]
  - >> Module_Init
  - >> RemovePortButton

  MX_USART3_UART_Init (Thumb, 50 bytes, Stack size 8 bytes, h01r0_uart.o(i.MX_USART3_UART_Init))
  [Stack]

  - Max Depth = 132
  - Call Chain = MX_USART3_UART_Init ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetPCLK1Freq ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_UART_Init
  [Called By]
  - >> Module_Init
  - >> RemovePortButton

  MX_USART4_UART_Init (Thumb, 50 bytes, Stack size 8 bytes, h01r0_uart.o(i.MX_USART4_UART_Init))
  [Stack]

  - Max Depth = 132
  - Call Chain = MX_USART4_UART_Init ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetPCLK1Freq ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_UART_Init
  [Called By]
  - >> Module_Init
  - >> RemovePortButton

  MX_USART5_UART_Init (Thumb, 50 bytes, Stack size 8 bytes, h01r0_uart.o(i.MX_USART5_UART_Init))
  [Stack]

  - Max Depth = 132
  - Call Chain = MX_USART5_UART_Init ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetPCLK1Freq ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_UART_Init
  [Called By]
  - >> Module_Init
  - >> RemovePortButton

  MX_USART6_UART_Init (Thumb, 50 bytes, Stack size 8 bytes, h01r0_uart.o(i.MX_USART6_UART_Init))
  [Stack]

  - Max Depth = 132
  - Call Chain = MX_USART6_UART_Init ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetPCLK1Freq ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_UART_Init
  [Called By]
  - >> Module_Init
  - >> RemovePortButton

  Module_Init (Thumb, 152 bytes, Stack size 24 bytes, h01r0.o(i.Module_Init))
  [Stack]

  - Max Depth = 180
  - Call Chain = Module_Init ⇒ TIM3_Init ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> TIM3_Init
  - >> xTaskGenericCreate
  - >> MX_USART6_UART_Init
  - >> MX_USART5_UART_Init
  - >> MX_USART4_UART_Init
  - >> MX_USART3_UART_Init
  - >> MX_USART2_UART_Init
  - >> MX_USART1_UART_Init
  [Called By]
  - >> BOS_Init

  Module_MessagingTask (Thumb, 1074 bytes, Stack size 56 bytes, h01r0.o(i.Module_MessagingTask))
  [Stack]

  - Max Depth = 200
  - Call Chain = Module_MessagingTask ⇒ RGB_LED_setColor ⇒ RGB_LED_setRGB ⇒ RGB_LED_on ⇒ startPWM ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd
  [Calls]
  - >> __ARM_common_switch8
  - >> RGB_LED_sweep
  - >> RGB_LED_setRGB
  - >> RGB_LED_setColor
  - >> RGB_LED_pulseRGB
  - >> RGB_LED_pulseColor
  - >> RGB_LED_on
  - >> RGB_LED_off
  - >> RGB_LED_dim
  [Called By]
  - >> PxMessagingTask

  NameModule (Thumb, 194 bytes, Stack size 32 bytes, bos.o(i.NameModule))
  [Stack]

  - Max Depth = 232
  - Call Chain = NameModule ⇒ SaveEEalias ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> SaveEEalias
  - >> strncmp
  - >> strcpy
  - >> strcmp
  - >> strlen
  [Called By]
  - >> nameCommand

  NotifyMessagingTaskFromISR (Thumb, 102 bytes, Stack size 16 bytes, bos.o(i.NotifyMessagingTaskFromISR))
  [Stack]

  - Max Depth = 40
  - Call Chain = NotifyMessagingTaskFromISR ⇒ vTaskNotifyGiveFromISR
  [Calls]
  - >> __ARM_common_switch8
  - >> vTaskNotifyGiveFromISR
  [Called By]
  - >> HAL_UART_RxCpltCallback

  PortMemDMA1_Init (Thumb, 42 bytes, Stack size 8 bytes, h01r0_dma.o(i.PortMemDMA1_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = PortMemDMA1_Init
  [Calls]
  - >> HAL_DMA_Init
  [Called By]
  - >> MX_DMA_Init

  PortMemDMA1_Setup (Thumb, 380 bytes, Stack size 16 bytes, h01r0_dma.o(i.PortMemDMA1_Setup))
  [Stack]

  - Max Depth = 80
  - Call Chain = PortMemDMA1_Setup ⇒ HAL_UART_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_NVIC_SetPriority
  - >> HAL_UART_Receive_DMA
  - >> GetPort
  [Called By]
  - >> HAL_UART_RxCpltCallback

  PortMemDMA2_Init (Thumb, 42 bytes, Stack size 8 bytes, h01r0_dma.o(i.PortMemDMA2_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = PortMemDMA2_Init
  [Calls]
  - >> HAL_DMA_Init
  [Called By]
  - >> MX_DMA_Init

  PortMemDMA3_Init (Thumb, 42 bytes, Stack size 8 bytes, h01r0_dma.o(i.PortMemDMA3_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = PortMemDMA3_Init
  [Calls]
  - >> HAL_DMA_Init
  [Called By]
  - >> MX_DMA_Init

  PortPortDMA1_Init (Thumb, 38 bytes, Stack size 8 bytes, h01r0_dma.o(i.PortPortDMA1_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = PortPortDMA1_Init
  [Calls]
  - >> HAL_DMA_Init
  [Called By]
  - >> MX_DMA_Init

  PortPortDMA1_Setup (Thumb, 378 bytes, Stack size 16 bytes, h01r0_dma.o(i.PortPortDMA1_Setup))
  [Stack]

  - Max Depth = 80
  - Call Chain = PortPortDMA1_Setup ⇒ HAL_UART_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_NVIC_SetPriority
  - >> HAL_UART_Receive_DMA
  - >> GetPort
  [Called By]
  - >> StartScastDMAStream
  - >> SetupDMAStreamsFromMessage

  PortPortDMA2_Init (Thumb, 38 bytes, Stack size 8 bytes, h01r0_dma.o(i.PortPortDMA2_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = PortPortDMA2_Init
  [Calls]
  - >> HAL_DMA_Init
  [Called By]
  - >> MX_DMA_Init

  PortPortDMA2_Setup (Thumb, 408 bytes, Stack size 16 bytes, h01r0_dma.o(i.PortPortDMA2_Setup))
  [Stack]

  - Max Depth = 80
  - Call Chain = PortPortDMA2_Setup ⇒ HAL_UART_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_NVIC_SetPriority
  - >> HAL_UART_Receive_DMA
  - >> GetPort
  [Called By]
  - >> StartScastDMAStream
  - >> SetupDMAStreamsFromMessage

  PortPortDMA3_Init (Thumb, 38 bytes, Stack size 8 bytes, h01r0_dma.o(i.PortPortDMA3_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = PortPortDMA3_Init
  [Calls]
  - >> HAL_DMA_Init
  [Called By]
  - >> MX_DMA_Init

  PortPortDMA3_Setup (Thumb, 408 bytes, Stack size 16 bytes, h01r0_dma.o(i.PortPortDMA3_Setup))
  [Stack]

  - Max Depth = 80
  - Call Chain = PortPortDMA3_Setup ⇒ HAL_UART_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_NVIC_SetPriority
  - >> HAL_UART_Receive_DMA
  - >> GetPort
  [Called By]
  - >> SetupDMAStreamsFromMessage

  ProcessSnippet (Thumb, 412 bytes, Stack size 16 bytes, bos_cli.o(i.ProcessSnippet))
  [Stack]

  - Max Depth = 104
  - Call Chain = ProcessSnippet ⇒ atoi ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> atoi
  - >> strncmp
  [Called By]
  - >> ExecuteSnippet

  PxMessagingTask (Thumb, 9038 bytes, Stack size 112 bytes, bos.o(i.PxMessagingTask))
  [Stack]

  - Max Depth = 552
  - Call Chain = PxMessagingTask ⇒ remoteBootloaderUpdate ⇒ StartScastDMAStream ⇒ SendMessageToModule ⇒ BroadcastMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> HAL_GPIO_TogglePin
  - >> HAL_FLASHEx_Erase
  - >> HAL_FLASH_Unlock
  - >> HAL_FLASH_Program
  - >> HAL_FLASH_Lock
  - >> HAL_Delay
  - >> HAL_GPIO_WritePin
  - >> NVIC_SystemReset
  - >> HAL_UART_Receive_IT
  - >> __ARM_common_switch8
  - >> writePxMutex
  - >> vPortYield
  - >> ulTaskNotifyTake
  - >> osDelay
  - >> UpdateBaudrate
  - >> Module_MessagingTask
  - >> FreeRTOS_CLIProcessCommand
  - >> FreeRTOS_CLIGetOutputBuffer
  - >> EE_WriteVariable
  - >> remoteBootloaderUpdate
  - >> SwapUartPins
  - >> StartScastDMAStream
  - >> SetupDMAStreamsFromMessage
  - >> SendMessageToModule
  - >> SendMessageFromPort
  - >> SaveROtopology
  - >> SaveEEportsDir
  - >> GetUart
  - >> ForwardReceivedMessage
  - >> ExploreNeighbors
  - >> ClearROtopology
  - >> ClearEEportsDir
  - >> BroadcastReceivedMessage
  - >> malloc
  - >> __2sprintf
  - >> strlen
  - >> __aeabi_memclr4
  - >> __aeabi_memclr
  - >> __aeabi_memcpy
  - >> __aeabi_idivmod
  [Address Reference Count : 1]
  - bos_freertos.o(i.MX_FREERTOS_Init)

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

  - >> FindRoute

  RGBCommand (Thumb, 216 bytes, Stack size 56 bytes, h01r0.o(i.RGBCommand))
  [Stack]

  - Max Depth = 184
  - Call Chain = RGBCommand ⇒ RGB_LED_setRGB ⇒ RGB_LED_on ⇒ startPWM ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd
  [Calls]
  - >> RGB_LED_setRGB
  - >> FreeRTOS_CLIGetParameter
  - >> atol
  - >> __2sprintf
  - >> strcpy
  [Address Reference Count : 1]
  - h01r0.o(.constdata)

  RGB_LED_dim (Thumb, 32 bytes, Stack size 20 bytes, h01r0.o(i.RGB_LED_dim))
  [Stack]

  - Max Depth = 20
  - Call Chain = RGB_LED_dim
  [Called By]
  - >> dimCommand
  - >> Module_MessagingTask

  RGB_LED_off (Thumb, 48 bytes, Stack size 8 bytes, h01r0.o(i.RGB_LED_off))
  [Stack]

  - Max Depth = 8
  - Call Chain = RGB_LED_off
  [Calls]
  - >> HAL_TIM_Base_Stop
  [Called By]
  - >> offCommand
  - >> demoCommand
  - >> RGBsweepFine
  - >> RGBsweepBasic
  - >> RGBpulse
  - >> RGB_LED_toggle
  - >> RGB_LED_setColor
  - >> Module_MessagingTask

  RGB_LED_on (Thumb, 70 bytes, Stack size 16 bytes, h01r0.o(i.RGB_LED_on))
  [Stack]

  - Max Depth = 104
  - Call Chain = RGB_LED_on ⇒ startPWM ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd
  [Calls]
  - >> startPWM
  [Called By]
  - >> onCommand
  - >> RGB_LED_toggle
  - >> RGB_LED_setRGB
  - >> RGB_LED_setColor
  - >> Module_MessagingTask

  RGB_LED_pulseColor (Thumb, 32 bytes, Stack size 16 bytes, h01r0.o(i.RGB_LED_pulseColor))
  [Stack]

  - Max Depth = 16
  - Call Chain = RGB_LED_pulseColor
  [Called By]
  - >> pulseColorCommand
  - >> Module_MessagingTask

  RGB_LED_pulseRGB (Thumb, 44 bytes, Stack size 20 bytes, h01r0.o(i.RGB_LED_pulseRGB))
  [Stack]

  - Max Depth = 20
  - Call Chain = RGB_LED_pulseRGB
  [Called By]
  - >> pulseRGBCommand
  - >> Module_MessagingTask

  RGB_LED_setColor (Thumb, 170 bytes, Stack size 16 bytes, h01r0.o(i.RGB_LED_setColor))
  [Stack]

  - Max Depth = 144
  - Call Chain = RGB_LED_setColor ⇒ RGB_LED_setRGB ⇒ RGB_LED_on ⇒ startPWM ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd
  [Calls]
  - >> __ARM_common_switch8
  - >> RGB_LED_setRGB
  - >> RGB_LED_on
  - >> RGB_LED_off
  [Called By]
  - >> demoCommand
  - >> colorCommand
  - >> RGBsweepBasic
  - >> RGBpulse
  - >> RGBdim
  - >> Module_MessagingTask

  RGB_LED_setRGB (Thumb, 44 bytes, Stack size 24 bytes, h01r0.o(i.RGB_LED_setRGB))
  [Stack]

  - Max Depth = 128
  - Call Chain = RGB_LED_setRGB ⇒ RGB_LED_on ⇒ startPWM ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd
  [Calls]
  - >> startPWM
  - >> RGB_LED_on
  [Called By]
  - >> RGBsweepFine
  - >> RGBpulse
  - >> RGB_LED_setColor
  - >> RGBCommand
  - >> Module_MessagingTask

  RGB_LED_sweep (Thumb, 22 bytes, Stack size 12 bytes, h01r0.o(i.RGB_LED_sweep))
  [Stack]

  - Max Depth = 12
  - Call Chain = RGB_LED_sweep
  [Called By]
  - >> sweepCommand
  - >> Module_MessagingTask

  RGB_LED_toggle (Thumb, 34 bytes, Stack size 16 bytes, h01r0.o(i.RGB_LED_toggle))
  [Stack]

  - Max Depth = 120
  - Call Chain = RGB_LED_toggle ⇒ RGB_LED_on ⇒ startPWM ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd
  [Calls]
  - >> RGB_LED_on
  - >> RGB_LED_off
  [Called By]
  - >> toggleCommand

  RGBdim (Thumb, 648 bytes, Stack size 24 bytes, h01r0.o(i.RGBdim))
  [Stack]

  - Max Depth = 168
  - Call Chain = RGBdim ⇒ RGB_LED_setColor ⇒ RGB_LED_setRGB ⇒ RGB_LED_on ⇒ startPWM ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd
  [Calls]
  - >> RGB_LED_setColor
  - >> osDelay
  - >> __aeabi_uidivmod
  [Called By]
  - >> RGBledTask

  RGBledTask (Thumb, 156 bytes, Stack size 0 bytes, h01r0.o(i.RGBledTask))
  [Stack]

  - Max Depth = 176
  - Call Chain = RGBledTask ⇒ RGBsweepFine ⇒ ceil ⇒ __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr
  [Calls]
  - >> __ARM_common_switch8
  - >> RGBsweepFine
  - >> RGBsweepBasic
  - >> RGBpulse
  - >> RGBdim
  - >> vPortYield
  - >> osDelay
  [Address Reference Count : 1]
  - h01r0.o(i.Module_Init)

  RGBpulse (Thumb, 126 bytes, Stack size 16 bytes, h01r0.o(i.RGBpulse))
  [Stack]

  - Max Depth = 160
  - Call Chain = RGBpulse ⇒ RGB_LED_setColor ⇒ RGB_LED_setRGB ⇒ RGB_LED_on ⇒ startPWM ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd
  [Calls]
  - >> RGB_LED_setRGB
  - >> RGB_LED_setColor
  - >> RGB_LED_off
  - >> osDelay
  [Called By]
  - >> RGBledTask

  RGBsweepBasic (Thumb, 162 bytes, Stack size 8 bytes, h01r0.o(i.RGBsweepBasic))
  [Stack]

  - Max Depth = 152
  - Call Chain = RGBsweepBasic ⇒ RGB_LED_setColor ⇒ RGB_LED_setRGB ⇒ RGB_LED_on ⇒ startPWM ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd
  [Calls]
  - >> RGB_LED_setColor
  - >> RGB_LED_off
  - >> osDelay
  - >> __aeabi_uidivmod
  [Called By]
  - >> RGBledTask

  RGBsweepFine (Thumb, 432 bytes, Stack size 40 bytes, h01r0.o(i.RGBsweepFine))
  [Stack]

  - Max Depth = 176
  - Call Chain = RGBsweepFine ⇒ ceil ⇒ __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr
  [Calls]
  - >> __aeabi_ui2d
  - >> __aeabi_d2uiz
  - >> RGB_LED_setRGB
  - >> RGB_LED_off
  - >> osDelay
  - >> __aeabi_uidivmod
  - >> ceil
  [Called By]
  - >> RGBledTask

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

  - >> HAL_RTC_SetTime
  - >> HAL_RTC_SetDate
  - >> HAL_RTC_GetTime
  - >> HAL_RTC_GetDate

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

  - >> HAL_RTC_SetTime
  - >> HAL_RTC_SetDate

  RTC_CalendarConfig (Thumb, 224 bytes, Stack size 80 bytes, bos.o(i.RTC_CalendarConfig))
  [Stack]

  - Max Depth = 168
  - Call Chain = RTC_CalendarConfig ⇒ atoi ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> HAL_RTCEx_BKUPWrite
  - >> HAL_RTC_SetTime
  - >> HAL_RTC_SetDate
  - >> atoi
  - >> strcmp
  [Called By]
  - >> RTC_Init

  RTC_EnterInitMode (Thumb, 66 bytes, Stack size 16 bytes, stm32f0xx_hal_rtc.o(i.RTC_EnterInitMode))
  [Stack]

  - Max Depth = 16
  - Call Chain = RTC_EnterInitMode
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> HAL_RTC_SetTime
  - >> HAL_RTC_SetDate
  - >> HAL_RTC_Init

  RTC_Init (Thumb, 134 bytes, Stack size 8 bytes, bos.o(i.RTC_Init))
  [Stack]

  - Max Depth = 176
  - Call Chain = RTC_Init ⇒ RTC_CalendarConfig ⇒ atoi ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> HAL_RTCEx_BKUPRead
  - >> HAL_RTC_Init
  - >> RTC_CalendarConfig
  [Called By]
  - >> BOS_Init

  ReadPortsDir (Thumb, 122 bytes, Stack size 16 bytes, bos.o(i.ReadPortsDir))
  [Stack]

  - Max Depth = 344
  - Call Chain = ReadPortsDir ⇒ SendMessageToModule ⇒ BroadcastMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> StartMilliDelay
  - >> SendMessageToModule
  - >> GetUart
  [Called By]
  - >> infoCommand

  RegisterModuleCLICommands (Thumb, 64 bytes, Stack size 8 bytes, h01r0.o(i.RegisterModuleCLICommands))
  [Stack]

  - Max Depth = 88
  - Call Chain = RegisterModuleCLICommands ⇒ FreeRTOS_CLIRegisterCommand ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> FreeRTOS_CLIRegisterCommand
  [Called By]
  - >> vRegisterCLICommands

  RemovePortButton (Thumb, 306 bytes, Stack size 24 bytes, bos.o(i.RemovePortButton))
  [Stack]

  - Max Depth = 200
  - Call Chain = RemovePortButton ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> HAL_UART_Receive_IT
  - >> MX_USART6_UART_Init
  - >> MX_USART5_UART_Init
  - >> MX_USART4_UART_Init
  - >> MX_USART3_UART_Init
  - >> MX_USART2_UART_Init
  - >> MX_USART1_UART_Init
  - >> EE_WriteVariable
  - >> EE_ReadVariable
  - >> GetUart
  [Called By]
  - >> removebuttonCommand

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

  - startup_stm32f091xc.o(RESET)

  SaveEEalias (Thumb, 102 bytes, Stack size 24 bytes, bos.o(i.SaveEEalias))
  [Stack]

  - Max Depth = 200
  - Call Chain = SaveEEalias ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> EE_WriteVariable
  [Called By]
  - >> NameModule

  SaveEEparams (Thumb, 126 bytes, Stack size 8 bytes, bos.o(i.SaveEEparams))
  [Stack]

  - Max Depth = 184
  - Call Chain = SaveEEparams ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> EE_WriteVariable
  [Called By]
  - >> defaultCommand

  SaveEEportsDir (Thumb, 64 bytes, Stack size 16 bytes, bos.o(i.SaveEEportsDir))
  [Stack]

  - Max Depth = 192
  - Call Chain = SaveEEportsDir ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> EE_WriteVariable
  [Called By]
  - >> PxMessagingTask
  - >> Explore

  SaveROtopology (Thumb, 200 bytes, Stack size 32 bytes, bos.o(i.SaveROtopology))
  [Stack]

  - Max Depth = 112
  - Call Chain = SaveROtopology ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> FLASH_PageErase
  - >> HAL_FLASH_Unlock
  - >> HAL_FLASH_Program
  - >> HAL_FLASH_Lock
  - >> FLASH_WaitForLastOperation
  [Called By]
  - >> PxMessagingTask
  - >> Explore

  SendMessageFromPort (Thumb, 344 bytes, Stack size 96 bytes, bos.o(i.SendMessageFromPort))
  [Stack]

  - Max Depth = 248 + In Cycle
  - Call Chain = SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> HAL_UART_Receive_IT
  - >> writePxMutex
  - >> vTaskPrioritySet
  - >> osSemaphoreRelease
  - >> osDelay
  - >> StartMicroDelay
  - >> SendMessageFromPort
  - >> GetUart
  - >> __aeabi_memclr4
  - >> __aeabi_memcpy
  - >> __aeabi_idivmod
  [Called By]
  - >> bootloaderUpdateCommand
  - >> SendMessageToModule
  - >> SendMessageFromPort
  - >> PxMessagingTask
  - >> ForwardReceivedMessage
  - >> ExploreNeighbors
  - >> Explore
  - >> BroadcastReceivedMessage
  - >> BroadcastMessage

  SendMessageToModule (Thumb, 74 bytes, Stack size 32 bytes, bos.o(i.SendMessageToModule))
  [Stack]

  - Max Depth = 328
  - Call Chain = SendMessageToModule ⇒ BroadcastMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> SendMessageFromPort
  - >> FindRoute
  - >> BroadcastMessage
  - >> __aeabi_memclr4
  [Called By]
  - >> defaultCommand
  - >> bootloaderUpdateCommand
  - >> prvUARTCommandConsoleTask
  - >> StartScastDMAStream
  - >> ReadPortsDir
  - >> PxMessagingTask
  - >> Explore

  SetButtonEvents (Thumb, 806 bytes, Stack size 56 bytes, bos.o(i.SetButtonEvents))
  [Stack]

  - Max Depth = 232
  - Call Chain = SetButtonEvents ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> EE_WriteVariable
  - >> EE_ReadVariable
  [Called By]
  - >> LoadEEbuttons

  SetupDMAStreamsFromMessage (Thumb, 624 bytes, Stack size 48 bytes, bos.o(i.SetupDMAStreamsFromMessage))
  [Stack]

  - Max Depth = 200
  - Call Chain = SetupDMAStreamsFromMessage ⇒ xTimerCreate ⇒ prvCheckForValidListAndQueue ⇒ xQueueGenericCreate ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> xTimerGenericCommand
  - >> xTimerCreate
  - >> xTaskGetTickCount
  - >> PortPortDMA3_Setup
  - >> PortPortDMA2_Setup
  - >> PortPortDMA1_Setup
  - >> GetUart
  - >> __aeabi_uidivmod
  [Called By]
  - >> PxMessagingTask
  - >> LoadEEstreams

  SetupPortForRemoteBootloaderUpdate (Thumb, 48 bytes, Stack size 16 bytes, bos.o(i.SetupPortForRemoteBootloaderUpdate))
  [Stack]

  - Max Depth = 140
  - Call Chain = SetupPortForRemoteBootloaderUpdate ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetPCLK1Freq ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_UART_Init
  - >> GetUart
  [Called By]
  - >> remoteBootloaderUpdate

  StartDefaultTask (Thumb, 196 bytes, Stack size 0 bytes, bos_freertos.o(i.StartDefaultTask))
  [Stack]

  - Max Depth = 144
  - Call Chain = StartDefaultTask ⇒ readPxITMutex ⇒ osSemaphoreWait ⇒ xQueueGenericReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> HAL_GPIO_WritePin
  - >> readPxITMutex
  - >> ExecuteSnippet
  - >> vPortYield
  - >> osDelay
  - >> CheckAttachedButtons
  [Address Reference Count : 1]
  - bos_freertos.o(i.MX_FREERTOS_Init)

  StartMicroDelay (Thumb, 70 bytes, Stack size 16 bytes, bos.o(i.StartMicroDelay))
  [Stack]

  - Max Depth = 92
  - Call Chain = StartMicroDelay ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_RCC_GetHCLKFreq
  - >> HAL_TIM_Base_Stop
  - >> HAL_TIM_Base_Start
  - >> HAL_TIM_Base_Init
  - >> vPortExitCritical
  - >> vPortEnterCritical
  - >> __aeabi_uidivmod
  [Called By]
  - >> SendMessageFromPort
  - >> CheckAttachedButtons

  StartMilliDelay (Thumb, 72 bytes, Stack size 16 bytes, bos.o(i.StartMilliDelay))
  [Stack]

  - Max Depth = 92
  - Call Chain = StartMilliDelay ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_RCC_GetHCLKFreq
  - >> HAL_TIM_Base_Stop
  - >> HAL_TIM_Base_Start
  - >> HAL_TIM_Base_Init
  - >> vPortExitCritical
  - >> vPortEnterCritical
  - >> __aeabi_uidivmod
  [Called By]
  - >> BOS_Init
  - >> ReadPortsDir
  - >> IsLowerCLIbaud
  - >> IsFactoryReset

  StartScastDMAStream (Thumb, 588 bytes, Stack size 64 bytes, bos.o(i.StartScastDMAStream))
  [Stack]

  - Max Depth = 392
  - Call Chain = StartScastDMAStream ⇒ SendMessageToModule ⇒ BroadcastMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> xTimerGenericCommand
  - >> xTimerCreate
  - >> xTaskGetTickCount
  - >> osDelay
  - >> PortPortDMA2_Setup
  - >> PortPortDMA1_Setup
  - >> SendMessageToModule
  - >> GetUart
  - >> FindRoute
  - >> __aeabi_uidivmod
  [Called By]
  - >> scastCommand
  - >> remoteBootloaderUpdate
  - >> PxMessagingTask

  StopPortPortDMA1 (Thumb, 84 bytes, Stack size 8 bytes, h01r0_dma.o(i.StopPortPortDMA1))
  [Stack]

  - Max Depth = 24
  - Call Chain = StopPortPortDMA1 ⇒ HAL_DMA_Abort
  [Calls]
  - >> HAL_DMA_Abort
  - >> HAL_UART_Receive_IT
  - >> GetPort
  [Called By]
  - >> DMA1_Ch1_IRQHandler
  - >> StreamTimerCallback

  StopPortPortDMA2 (Thumb, 84 bytes, Stack size 8 bytes, h01r0_dma.o(i.StopPortPortDMA2))
  [Stack]

  - Max Depth = 24
  - Call Chain = StopPortPortDMA2 ⇒ HAL_DMA_Abort
  [Calls]
  - >> HAL_DMA_Abort
  - >> HAL_UART_Receive_IT
  - >> GetPort
  [Called By]
  - >> DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler
  - >> StreamTimerCallback

  StopPortPortDMA3 (Thumb, 84 bytes, Stack size 8 bytes, h01r0_dma.o(i.StopPortPortDMA3))
  [Stack]

  - Max Depth = 24
  - Call Chain = StopPortPortDMA3 ⇒ HAL_DMA_Abort
  [Calls]
  - >> HAL_DMA_Abort
  - >> HAL_UART_Receive_IT
  - >> GetPort
  [Called By]
  - >> DMA1_Ch4_7_DMA2_Ch3_5_IRQHandler
  - >> StreamTimerCallback

  StreamTimerCallback (Thumb, 66 bytes, Stack size 16 bytes, bos.o(i.StreamTimerCallback))
  [Stack]

  - Max Depth = 40
  - Call Chain = StreamTimerCallback ⇒ StopPortPortDMA3 ⇒ HAL_DMA_Abort
  [Calls]
  - >> pvTimerGetTimerID
  - >> StopPortPortDMA3
  - >> StopPortPortDMA2
  - >> StopPortPortDMA1
  [Address Reference Count : 2]
  - bos.o(i.SetupDMAStreamsFromMessage)
  - bos.o(i.StartScastDMAStream)

  StringToLowerCase (Thumb, 26 bytes, Stack size 16 bytes, bos_cli.o(i.StringToLowerCase))
  [Stack]

  - Max Depth = 16
  - Call Chain = StringToLowerCase
  [Calls]
  - >> tolower
  [Called By]
  - >> prvUARTCommandConsoleTask

  SwapUartPins (Thumb, 124 bytes, Stack size 16 bytes, bos.o(i.SwapUartPins))
  [Stack]

  - Max Depth = 140
  - Call Chain = SwapUartPins ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetPCLK1Freq ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_UART_Init
  - >> GetPort
  [Called By]
  - >> remoteBootloaderUpdate
  - >> UpdateMyPortsDir
  - >> PxMessagingTask
  - >> Explore

  SysTick_Handler (Thumb, 12 bytes, Stack size 8 bytes, h01r0_it.o(i.SysTick_Handler))
  [Stack]

  - Max Depth = 48
  - Call Chain = SysTick_Handler ⇒ osSystickHandler ⇒ xPortSysTickHandler ⇒ xTaskIncrementTick
  [Calls]
  - >> HAL_IncTick
  - >> osSystickHandler
  [Address Reference Count : 1]
  - startup_stm32f091xc.o(RESET)

  SystemClock_Config (Thumb, 198 bytes, Stack size 112 bytes, bos.o(i.SystemClock_Config))
  [Stack]

  - Max Depth = 220
  - Call Chain = SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_SYSTICK_CLKSourceConfig
  - >> HAL_SYSTICK_Config
  - >> HAL_RCC_GetHCLKFreq
  - >> HAL_NVIC_SetPriority
  - >> HAL_RCCEx_PeriphCLKConfig
  - >> HAL_RCC_OscConfig
  - >> HAL_RCC_ClockConfig
  - >> HAL_PWR_EnableBkUpAccess
  - >> __aeabi_uidivmod
  [Called By]
  - >> main

  SystemInit (Thumb, 102 bytes, Stack size 0 bytes, system_stm32f0xx.o(i.SystemInit))
  [Address Reference Count : 1]

  - startup_stm32f091xc.o(.text)

  TIM3_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, h01r0_it.o(i.TIM3_IRQHandler))
  [Stack]

  - Max Depth = 16
  - Call Chain = TIM3_IRQHandler ⇒ HAL_TIM_IRQHandler
  [Calls]
  - >> HAL_TIM_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f091xc.o(RESET)

  TIM3_Init (Thumb, 226 bytes, Stack size 88 bytes, h01r0.o(i.TIM3_Init))
  [Stack]

  - Max Depth = 156
  - Call Chain = TIM3_Init ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_GPIO_Init
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_NVIC_SetPriority
  - >> HAL_RCC_GetSysClockFreq
  - >> HAL_TIMEx_MasterConfigSynchronization
  - >> HAL_TIM_PWM_Init
  - >> HAL_TIM_PWM_ConfigChannel
  - >> HAL_TIM_ConfigClockSource
  - >> HAL_TIM_Base_Init
  - >> __aeabi_uidivmod
  [Called By]
  - >> Module_Init

  TIM_Base_SetConfig (Thumb, 140 bytes, Stack size 8 bytes, stm32f0xx_hal_tim.o(i.TIM_Base_SetConfig))
  [Stack]

  - Max Depth = 8
  - Call Chain = TIM_Base_SetConfig
  [Called By]
  - >> HAL_TIM_PWM_Init
  - >> HAL_TIM_Base_Init

  TIM_CCxChannelCmd (Thumb, 28 bytes, Stack size 12 bytes, stm32f0xx_hal_tim.o(i.TIM_CCxChannelCmd))
  [Stack]

  - Max Depth = 12
  - Call Chain = TIM_CCxChannelCmd
  [Called By]
  - >> HAL_TIM_PWM_Start

  TIM_OC2_SetConfig (Thumb, 182 bytes, Stack size 16 bytes, stm32f0xx_hal_tim.o(i.TIM_OC2_SetConfig))
  [Stack]

  - Max Depth = 16
  - Call Chain = TIM_OC2_SetConfig
  [Called By]
  - >> HAL_TIM_PWM_ConfigChannel

  UART_AdvFeatureConfig (Thumb, 240 bytes, Stack size 0 bytes, stm32f0xx_hal_uart.o(i.UART_AdvFeatureConfig))
  [Called By]

  - >> HAL_UART_Init

  UART_CheckIdleState (Thumb, 120 bytes, Stack size 8 bytes, stm32f0xx_hal_uart.o(i.UART_CheckIdleState))
  [Stack]

  - Max Depth = 48
  - Call Chain = UART_CheckIdleState ⇒ UART_WaitOnFlagUntilTimeout
  [Calls]
  - >> UART_WaitOnFlagUntilTimeout
  [Called By]
  - >> HAL_UART_Init

  UART_EndTransmit_IT (Thumb, 60 bytes, Stack size 8 bytes, stm32f0xx_hal_uart.o(i.UART_EndTransmit_IT))
  [Stack]

  - Max Depth = 64
  - Call Chain = UART_EndTransmit_IT ⇒ HAL_UART_TxCpltCallback ⇒ xQueueGiveFromISR ⇒ xTaskRemoveFromEventList
  [Calls]
  - >> HAL_UART_TxCpltCallback
  [Called By]
  - >> HAL_UART_IRQHandler

  UART_Receive_IT (Thumb, 168 bytes, Stack size 16 bytes, stm32f0xx_hal_uart.o(i.UART_Receive_IT))
  [Stack]

  - Max Depth = 120
  - Call Chain = UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ PortMemDMA1_Setup ⇒ HAL_UART_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_UART_RxCpltCallback
  [Called By]
  - >> HAL_UART_IRQHandler

  UART_SetConfig (Thumb, 584 bytes, Stack size 32 bytes, stm32f0xx_hal_uart.o(i.UART_SetConfig))
  [Stack]

  - Max Depth = 116
  - Call Chain = UART_SetConfig ⇒ HAL_RCC_GetPCLK1Freq ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_RCC_GetSysClockFreq
  - >> HAL_RCC_GetPCLK1Freq
  - >> __aeabi_uidivmod
  [Called By]
  - >> HAL_UART_Init

  UART_Transmit_IT (Thumb, 122 bytes, Stack size 0 bytes, stm32f0xx_hal_uart.o(i.UART_Transmit_IT))
  [Called By]

  - >> HAL_UART_IRQHandler

  UART_WaitOnFlagUntilTimeout (Thumb, 254 bytes, Stack size 40 bytes, stm32f0xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout))
  [Stack]

  - Max Depth = 40
  - Call Chain = UART_WaitOnFlagUntilTimeout
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> UART_CheckIdleState
  - >> HAL_UART_Transmit
  - >> HAL_UART_Receive

  USART1_IRQHandler (Thumb, 24 bytes, Stack size 8 bytes, h01r0_it.o(i.USART1_IRQHandler))
  [Stack]

  - Max Depth = 136
  - Call Chain = USART1_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ PortMemDMA1_Setup ⇒ HAL_UART_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_UART_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f091xc.o(RESET)

  USART2_IRQHandler (Thumb, 24 bytes, Stack size 8 bytes, h01r0_it.o(i.USART2_IRQHandler))
  [Stack]

  - Max Depth = 136
  - Call Chain = USART2_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ PortMemDMA1_Setup ⇒ HAL_UART_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_UART_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f091xc.o(RESET)

  USART3_8_IRQHandler (Thumb, 42 bytes, Stack size 8 bytes, h01r0_it.o(i.USART3_8_IRQHandler))
  [Stack]

  - Max Depth = 136
  - Call Chain = USART3_8_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ PortMemDMA1_Setup ⇒ HAL_UART_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_UART_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f091xc.o(RESET)

  UpdateBaudrate (Thumb, 28 bytes, Stack size 24 bytes, h01r0_uart.o(i.UpdateBaudrate))
  [Stack]

  - Max Depth = 148
  - Call Chain = UpdateBaudrate ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetPCLK1Freq ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> HAL_UART_Init
  - >> GetUart
  [Called By]
  - >> BOS_Init
  - >> setBaudrateCommand
  - >> prvUARTCommandConsoleTask
  - >> PxMessagingTask

  UpdateMyPortsDir (Thumb, 76 bytes, Stack size 16 bytes, bos.o(i.UpdateMyPortsDir))
  [Stack]

  - Max Depth = 156
  - Call Chain = UpdateMyPortsDir ⇒ SwapUartPins ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetPCLK1Freq ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> SwapUartPins
  - >> GetUart
  [Called By]
  - >> BOS_Init

  __0sprintf$8 (Thumb, 36 bytes, Stack size 24 bytes, printf8.o(i.__0sprintf$8), UNUSED)
  [Calls]

  - >> _sputc
  - >> _printf_core

  __1sprintf$8 (Thumb, 0 bytes, Stack size 24 bytes, printf8.o(i.__0sprintf$8), UNUSED)

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

  - Max Depth = 24
  - Call Chain = __2sprintf
  [Called By]
  - >> uuidCommand
  - >> timeCommand
  - >> setCommand
  - >> setBaudrateCommand
  - >> scastCommand
  - >> removebuttonCommand
  - >> pingCommand
  - >> nameCommand
  - >> infoCommand
  - >> idcodeCommand
  - >> groupCommand
  - >> getCommand
  - >> flashsizeCommand
  - >> exploreCommand
  - >> dateCommand
  - >> bootloaderUpdateCommand
  - >> addbuttonCommand
  - >> toggleCommand
  - >> sweepCommand
  - >> pulseRGBCommand
  - >> pulseColorCommand
  - >> onCommand
  - >> dimCommand
  - >> colorCommand
  - >> RGBCommand
  - >> prvUARTCommandConsoleTask
  - >> vTaskList
  - >> vTaskGetRunTimeStats
  - >> remoteBootloaderUpdate
  - >> PxMessagingTask
  - >> GetDateString
  - >> DisplayTopology
  - >> DisplayPortsDir
  - >> DisplayModuleStatus

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

  - >> _double_epilogue

  __ARM_common_switch8 (Thumb, 28 bytes, Stack size 8 bytes, stm32f0xx_hal_tim.o(i.__ARM_common_switch8))
  [Stack]

  - Max Depth = 8
  - Call Chain = __ARM_common_switch8
  [Called By]
  - >> idcodeCommand
  - >> prvProcessReceivedCommands
  - >> RGBledTask
  - >> RGB_LED_setColor
  - >> Module_MessagingTask
  - >> PxMessagingTask
  - >> NotifyMessagingTaskFromISR
  - >> GetUart
  - >> DisplayModuleStatus
  - >> CheckAttachedButtons

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

  - >> atol
  - >> atoi
  - >> _strtoul
  - >> strtol

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

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

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

  - >> CheckAttachedButtons

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

  - >> CheckAttachedButtons

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

  - >> CheckAttachedButtons

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

  - >> CheckAttachedButtons

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

  - >> CheckAttachedButtons

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

  - >> CheckAttachedButtons

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

  - Max Depth = 136
  - Call Chain = ceil ⇒ __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr
  [Calls]
  - >> __aeabi_drsub
  - >> __aeabi_dadd
  - >> __aeabi_cdrcmple
  [Called By]
  - >> RGBsweepFine

  colorCommand (Thumb, 328 bytes, Stack size 48 bytes, h01r0.o(i.colorCommand))
  [Stack]

  - Max Depth = 192
  - Call Chain = colorCommand ⇒ RGB_LED_setColor ⇒ RGB_LED_setRGB ⇒ RGB_LED_on ⇒ startPWM ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd
  [Calls]
  - >> RGB_LED_setColor
  - >> FreeRTOS_CLIGetParameter
  - >> atol
  - >> __2sprintf
  - >> strncmp
  - >> strcpy
  - >> strncpy
  [Address Reference Count : 1]
  - h01r0.o(.constdata)

  demoCommand (Thumb, 184 bytes, Stack size 24 bytes, h01r0.o(i.demoCommand))
  [Stack]

  - Max Depth = 176
  - Call Chain = demoCommand ⇒ writePxMutex ⇒ osSemaphoreWait ⇒ xQueueGenericReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> HAL_Delay
  - >> RGB_LED_setColor
  - >> RGB_LED_off
  - >> writePxMutex
  - >> strcpy
  - >> strlen
  [Address Reference Count : 1]
  - h01r0.o(.constdata)

  dimCommand (Thumb, 626 bytes, Stack size 104 bytes, h01r0.o(i.dimCommand))
  [Stack]

  - Max Depth = 192
  - Call Chain = dimCommand ⇒ atol ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> RGB_LED_dim
  - >> FreeRTOS_CLIGetParameter
  - >> atol
  - >> __2sprintf
  - >> strncmp
  - >> strcmp
  - >> strncpy
  [Address Reference Count : 1]
  - h01r0.o(.constdata)

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

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

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

  - Max Depth = 320
  - Call Chain = main ⇒ BOS_Init ⇒ LoadEEvars ⇒ LoadEEbuttons ⇒ AddPortButton ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> osKernelStart
  - >> SystemClock_Config
  - >> MX_FREERTOS_Init
  - >> HAL_Init
  - >> BOS_Init
  [Address Reference Count : 1]
  - entry9a.o(.ARM.Collect$$$$0000000B)

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

  - Max Depth = 20
  - Call Chain = malloc
  [Called By]
  - >> PxMessagingTask
  - >> GetDateString
  - >> FindBroadcastRoutes

  minArr (Thumb, 50 bytes, Stack size 12 bytes, bos.o(i.minArr))
  [Stack]

  - Max Depth = 12
  - Call Chain = minArr
  [Called By]
  - >> FindRoute

  offCommand (Thumb, 36 bytes, Stack size 16 bytes, h01r0.o(i.offCommand))
  [Stack]

  - Max Depth = 24
  - Call Chain = offCommand ⇒ RGB_LED_off
  [Calls]
  - >> RGB_LED_off
  - >> strcpy
  [Address Reference Count : 1]
  - h01r0.o(.constdata)

  onCommand (Thumb, 88 bytes, Stack size 32 bytes, h01r0.o(i.onCommand))
  [Stack]

  - Max Depth = 136
  - Call Chain = onCommand ⇒ RGB_LED_on ⇒ startPWM ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd
  [Calls]
  - >> RGB_LED_on
  - >> FreeRTOS_CLIGetParameter
  - >> atol
  - >> __2sprintf
  - >> strcpy
  [Address Reference Count : 1]
  - h01r0.o(.constdata)

  osDelay (Thumb, 26 bytes, Stack size 16 bytes, cmsis_os.o(i.osDelay))
  [Stack]

  - Max Depth = 72
  - Call Chain = osDelay ⇒ vTaskDelay ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> vTaskDelay
  [Called By]
  - >> pingCommand
  - >> defaultCommand
  - >> bootloaderUpdateCommand
  - >> RGBsweepFine
  - >> RGBsweepBasic
  - >> RGBpulse
  - >> RGBledTask
  - >> RGBdim
  - >> StartDefaultTask
  - >> prvUARTCommandConsoleTask
  - >> StartScastDMAStream
  - >> SendMessageFromPort
  - >> PxMessagingTask
  - >> ExploreNeighbors
  - >> Explore

  osKernelStart (Thumb, 10 bytes, Stack size 8 bytes, cmsis_os.o(i.osKernelStart))
  [Stack]

  - Max Depth = 192
  - Call Chain = osKernelStart ⇒ vTaskStartScheduler ⇒ xTimerCreateTimerTask ⇒ xTaskGenericCreate ⇒ prvAllocateTCBAndStack ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> vTaskStartScheduler
  [Called By]
  - >> main

  osSemaphoreCreate (Thumb, 52 bytes, Stack size 16 bytes, cmsis_os.o(i.osSemaphoreCreate))
  [Stack]

  - Max Depth = 136
  - Call Chain = osSemaphoreCreate ⇒ xQueueCreateCountingSemaphore ⇒ xQueueGenericCreate ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> xQueueCreateCountingSemaphore
  - >> xQueueGenericSend
  - >> xQueueGenericCreate
  [Called By]
  - >> MX_FREERTOS_Init

  osSemaphoreRelease (Thumb, 72 bytes, Stack size 16 bytes, cmsis_os.o(i.osSemaphoreRelease))
  [Stack]

  - Max Depth = 104
  - Call Chain = osSemaphoreRelease ⇒ xQueueGenericSend ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit
  [Calls]
  - >> xQueueGenericSend
  - >> xQueueGiveFromISR
  - >> inHandlerMode
  [Called By]
  - >> AddPortButton
  - >> readPxMutex
  - >> writePxMutex
  - >> SendMessageFromPort

  osSemaphoreWait (Thumb, 108 bytes, Stack size 24 bytes, cmsis_os.o(i.osSemaphoreWait))
  [Stack]

  - Max Depth = 112
  - Call Chain = osSemaphoreWait ⇒ xQueueGenericReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> xQueueReceiveFromISR
  - >> xQueueGenericReceive
  - >> inHandlerMode
  [Called By]
  - >> readPxITMutex
  - >> readPxMutex
  - >> writePxMutex
  - >> writePxITMutex

  osSystickHandler (Thumb, 16 bytes, Stack size 8 bytes, cmsis_os.o(i.osSystickHandler))
  [Stack]

  - Max Depth = 40
  - Call Chain = osSystickHandler ⇒ xPortSysTickHandler ⇒ xTaskIncrementTick
  [Calls]
  - >> xPortSysTickHandler
  - >> xTaskGetSchedulerState
  [Called By]
  - >> SysTick_Handler

  prvUARTCommandConsoleTask (Thumb, 1436 bytes, Stack size 48 bytes, bos_cli.o(i.prvUARTCommandConsoleTask))
  [Stack]

  - Max Depth = 488
  - Call Chain = prvUARTCommandConsoleTask ⇒ remoteBootloaderUpdate ⇒ StartScastDMAStream ⇒ SendMessageToModule ⇒ BroadcastMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> readPxMutex
  - >> StringToLowerCase
  - >> AddSnippet
  - >> writePxMutex
  - >> writePxITMutex
  - >> vPortYield
  - >> ulTaskNotifyTake
  - >> osDelay
  - >> UpdateBaudrate
  - >> FreeRTOS_CLIProcessCommand
  - >> FreeRTOS_CLIGetOutputBuffer
  - >> remoteBootloaderUpdate
  - >> SendMessageToModule
  - >> GetID
  - >> BroadcastMessage
  - >> __2sprintf
  - >> strncmp
  - >> strcpy
  - >> strlen
  - >> strchr
  - >> strncpy
  - >> strcat
  - >> __aeabi_memclr
  - >> __rt_ctype_table
  [Address Reference Count : 1]
  - bos_freertos.o(i.MX_FREERTOS_Init)

  pulseColorCommand (Thumb, 404 bytes, Stack size 72 bytes, h01r0.o(i.pulseColorCommand))
  [Stack]

  - Max Depth = 160
  - Call Chain = pulseColorCommand ⇒ atol ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> RGB_LED_pulseColor
  - >> FreeRTOS_CLIGetParameter
  - >> atol
  - >> __2sprintf
  - >> strncmp
  - >> strcmp
  - >> strncpy
  [Address Reference Count : 1]
  - h01r0.o(.constdata)

  pulseRGBCommand (Thumb, 284 bytes, Stack size 88 bytes, h01r0.o(i.pulseRGBCommand))
  [Stack]

  - Max Depth = 176
  - Call Chain = pulseRGBCommand ⇒ atol ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> RGB_LED_pulseRGB
  - >> FreeRTOS_CLIGetParameter
  - >> atol
  - >> __2sprintf
  - >> strcmp
  [Address Reference Count : 1]
  - h01r0.o(.constdata)

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

  - >> xQueueGenericReceive

  readPxITMutex (Thumb, 62 bytes, Stack size 32 bytes, h01r0_uart.o(i.readPxITMutex))
  [Stack]

  - Max Depth = 144
  - Call Chain = readPxITMutex ⇒ osSemaphoreWait ⇒ xQueueGenericReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> HAL_UART_Receive_IT
  - >> osSemaphoreWait
  - >> GetUart
  [Called By]
  - >> StartDefaultTask

  readPxMutex (Thumb, 84 bytes, Stack size 40 bytes, h01r0_uart.o(i.readPxMutex))
  [Stack]

  - Max Depth = 152
  - Call Chain = readPxMutex ⇒ osSemaphoreWait ⇒ xQueueGenericReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> HAL_UART_Receive
  - >> osSemaphoreWait
  - >> osSemaphoreRelease
  - >> GetUart
  [Called By]
  - >> prvUARTCommandConsoleTask

  remoteBootloaderUpdate (Thumb, 240 bytes, Stack size 48 bytes, bos.o(i.remoteBootloaderUpdate))
  [Stack]

  - Max Depth = 440
  - Call Chain = remoteBootloaderUpdate ⇒ StartScastDMAStream ⇒ SendMessageToModule ⇒ BroadcastMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> HAL_Delay
  - >> writePxITMutex
  - >> FreeRTOS_CLIGetOutputBuffer
  - >> SwapUartPins
  - >> StartScastDMAStream
  - >> SetupPortForRemoteBootloaderUpdate
  - >> GetUart
  - >> FindRoute
  - >> __2sprintf
  - >> strlen
  - >> strcat
  [Called By]
  - >> bootloaderUpdateCommand
  - >> prvUARTCommandConsoleTask
  - >> PxMessagingTask

  startPWM (Thumb, 272 bytes, Stack size 64 bytes, h01r0.o(i.startPWM))
  [Stack]

  - Max Depth = 88
  - Call Chain = startPWM ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd
  [Calls]
  - >> HAL_TIM_PWM_Start
  - >> __aeabi_ui2f
  - >> __aeabi_fmul
  - >> __aeabi_fdiv
  - >> __aeabi_f2uiz
  [Called By]
  - >> RGB_LED_setRGB
  - >> RGB_LED_on

  sweepCommand (Thumb, 238 bytes, Stack size 64 bytes, h01r0.o(i.sweepCommand))
  [Stack]

  - Max Depth = 152
  - Call Chain = sweepCommand ⇒ atol ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> RGB_LED_sweep
  - >> FreeRTOS_CLIGetParameter
  - >> atol
  - >> __2sprintf
  - >> strncmp
  - >> strcmp
  - >> strncpy
  [Address Reference Count : 1]
  - h01r0.o(.constdata)

  toggleCommand (Thumb, 122 bytes, Stack size 32 bytes, h01r0.o(i.toggleCommand))
  [Stack]

  - Max Depth = 152
  - Call Chain = toggleCommand ⇒ RGB_LED_toggle ⇒ RGB_LED_on ⇒ startPWM ⇒ HAL_TIM_PWM_Start ⇒ TIM_CCxChannelCmd
  [Calls]
  - >> RGB_LED_toggle
  - >> FreeRTOS_CLIGetParameter
  - >> atol
  - >> __2sprintf
  - >> strcpy
  [Address Reference Count : 1]
  - h01r0.o(.constdata)

  ulMainGetRunTimeCounterValue (Thumb, 78 bytes, Stack size 24 bytes, bos_freertos.o(i.ulMainGetRunTimeCounterValue))
  [Stack]

  - Max Depth = 36
  - Call Chain = ulMainGetRunTimeCounterValue ⇒ __aeabi_uidivmod
  [Calls]
  - >> xTaskGetTickCountFromISR
  - >> __aeabi_uidivmod
  [Called By]
  - >> vTaskSwitchContext
  - >> uxTaskGetSystemState

  ulTaskNotifyTake (Thumb, 144 bytes, Stack size 24 bytes, tasks.o(i.ulTaskNotifyTake))
  [Stack]

  - Max Depth = 40
  - Call Chain = ulTaskNotifyTake ⇒ prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> prvAddCurrentTaskToDelayedList
  - >> vListInsertEnd
  - >> uxListRemove
  - >> vPortYield
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> prvUARTCommandConsoleTask
  - >> PxMessagingTask

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

  - >> prvProcessExpiredTimer
  - >> prvProcessReceivedCommands
  - >> prvSwitchTimerLists
  - >> xTaskResumeFromISR
  - >> vTaskResume
  - >> vTaskSuspend
  - >> vTaskDelay
  - >> xTaskIncrementTick
  - >> vTaskDelete
  - >> prvCheckTasksWaitingTermination
  - >> xTaskRemoveFromEventList
  - >> xTaskPriorityDisinherit
  - >> vTaskPriorityInherit
  - >> vTaskPlaceOnEventListRestricted
  - >> vTaskPlaceOnEventList
  - >> xTaskResumeAll
  - >> xTaskRemoveFromUnorderedEventList
  - >> vTaskPlaceOnUnorderedEventList
  - >> vTaskPrioritySet
  - >> vTaskNotifyGiveFromISR
  - >> ulTaskNotifyTake

  uxTaskGetSystemState (Thumb, 130 bytes, Stack size 32 bytes, tasks.o(i.uxTaskGetSystemState))
  [Stack]

  - Max Depth = 72
  - Call Chain = uxTaskGetSystemState ⇒ prvListTaskWithinSingleList
  [Calls]
  - >> prvListTaskWithinSingleList
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  - >> ulMainGetRunTimeCounterValue
  [Called By]
  - >> vTaskList
  - >> vTaskGetRunTimeStats

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

  - >> pvPortMalloc

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

  - >> vTaskSwitchContext

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

  - >> prvCheckForValidListAndQueue
  - >> prvInitialiseTaskLists
  - >> xQueueCreateMutex
  - >> xQueueGenericReset

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

  - >> prvInitialiseTCBVariables
  - >> xTimerCreate

  vListInsert (Thumb, 54 bytes, Stack size 8 bytes, list.o(i.vListInsert))
  [Stack]

  - Max Depth = 8
  - Call Chain = vListInsert
  [Called By]
  - >> prvSwitchTimerLists
  - >> prvInsertTimerInActiveList
  - >> prvAddCurrentTaskToDelayedList
  - >> vTaskPlaceOnEventList

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

  - >> xTaskResumeFromISR
  - >> vTaskResume
  - >> vTaskSuspend
  - >> xTaskIncrementTick
  - >> vTaskDelete
  - >> xTaskRemoveFromEventList
  - >> xTaskPriorityDisinherit
  - >> vTaskPriorityInherit
  - >> vTaskPlaceOnEventListRestricted
  - >> vTaskPlaceOnEventList
  - >> xTaskResumeAll
  - >> xTaskRemoveFromUnorderedEventList
  - >> vTaskPlaceOnUnorderedEventList
  - >> xTaskGenericCreate
  - >> vTaskPrioritySet
  - >> vTaskNotifyGiveFromISR
  - >> ulTaskNotifyTake

  vMainConfigureTimerForRunTimeStats (Thumb, 18 bytes, Stack size 8 bytes, bos_freertos.o(i.vMainConfigureTimerForRunTimeStats))
  [Stack]

  - Max Depth = 20
  - Call Chain = vMainConfigureTimerForRunTimeStats ⇒ __aeabi_uidivmod
  [Calls]
  - >> __aeabi_uidivmod
  [Called By]
  - >> vTaskStartScheduler

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

  - >> vTimerSetTimerID
  - >> xTimerIsTimerActive
  - >> prvCheckForValidListAndQueue
  - >> vTaskResume
  - >> vTaskSuspend
  - >> uxTaskPriorityGet
  - >> vTaskDelete
  - >> prvCheckTasksWaitingTermination
  - >> xTaskCheckForTimeOut
  - >> vQueueWaitForMessageRestricted
  - >> uxQueueSpacesAvailable
  - >> uxQueueMessagesWaiting
  - >> xQueueGenericReceive
  - >> xQueueGenericSend
  - >> xQueueGenericReset
  - >> prvIsQueueEmpty
  - >> prvIsQueueFull
  - >> prvUnlockQueue
  - >> xTaskResumeAll
  - >> xTaskGenericCreate
  - >> vTaskPrioritySet
  - >> ulTaskNotifyTake
  - >> pvTimerGetTimerID
  - >> FreeRTOS_CLIRegisterCommand
  - >> StartMilliDelay
  - >> StartMicroDelay

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

  - >> vTimerSetTimerID
  - >> xTimerIsTimerActive
  - >> prvCheckForValidListAndQueue
  - >> vTaskResume
  - >> vTaskSuspend
  - >> uxTaskPriorityGet
  - >> vTaskDelete
  - >> prvCheckTasksWaitingTermination
  - >> xTaskCheckForTimeOut
  - >> vQueueWaitForMessageRestricted
  - >> uxQueueSpacesAvailable
  - >> uxQueueMessagesWaiting
  - >> xQueueGenericReceive
  - >> xQueueGenericSend
  - >> xQueueGenericReset
  - >> prvIsQueueEmpty
  - >> prvIsQueueFull
  - >> prvUnlockQueue
  - >> xTaskResumeAll
  - >> xTaskGenericCreate
  - >> vTaskPrioritySet
  - >> ulTaskNotifyTake
  - >> pvTimerGetTimerID
  - >> FreeRTOS_CLIRegisterCommand
  - >> StartMilliDelay
  - >> StartMicroDelay

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

  - >> prvProcessTimerOrBlockTask
  - >> vTaskResume
  - >> vTaskSuspend
  - >> vTaskDelay
  - >> vTaskDelete
  - >> prvIdleTask
  - >> xQueueGenericReceive
  - >> xQueueGenericSend
  - >> xQueueGenericReset
  - >> xTaskResumeAll
  - >> RGBledTask
  - >> xTaskGenericCreate
  - >> StartDefaultTask
  - >> prvUARTCommandConsoleTask
  - >> vTaskPrioritySet
  - >> ulTaskNotifyTake
  - >> PxMessagingTask

  vRegisterCLICommands (Thumb, 140 bytes, Stack size 8 bytes, bos.o(i.vRegisterCLICommands))
  [Stack]

  - Max Depth = 96
  - Call Chain = vRegisterCLICommands ⇒ RegisterModuleCLICommands ⇒ FreeRTOS_CLIRegisterCommand ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> RegisterModuleCLICommands
  - >> FreeRTOS_CLIRegisterCommand
  [Called By]
  - >> MX_FREERTOS_Init

  vTaskNotifyGiveFromISR (Thumb, 150 bytes, Stack size 24 bytes, tasks.o(i.vTaskNotifyGiveFromISR))
  [Stack]

  - Max Depth = 24
  - Call Chain = vTaskNotifyGiveFromISR
  [Calls]
  - >> vListInsertEnd
  - >> uxListRemove
  - >> vClearInterruptMaskFromISR
  - >> ulSetInterruptMaskFromISR
  [Called By]
  - >> HAL_UART_RxCpltCallback
  - >> NotifyMessagingTaskFromISR

  writePxITMutex (Thumb, 62 bytes, Stack size 32 bytes, h01r0_uart.o(i.writePxITMutex))
  [Stack]

  - Max Depth = 144
  - Call Chain = writePxITMutex ⇒ osSemaphoreWait ⇒ xQueueGenericReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> HAL_UART_Transmit_IT
  - >> osSemaphoreWait
  - >> GetUart
  [Called By]
  - >> prvUARTCommandConsoleTask
  - >> remoteBootloaderUpdate

  writePxMutex (Thumb, 84 bytes, Stack size 40 bytes, h01r0_uart.o(i.writePxMutex))
  [Stack]

  - Max Depth = 152
  - Call Chain = writePxMutex ⇒ osSemaphoreWait ⇒ xQueueGenericReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> HAL_UART_Transmit
  - >> osSemaphoreWait
  - >> osSemaphoreRelease
  - >> GetUart
  [Called By]
  - >> infoCommand
  - >> exploreCommand
  - >> bootloaderUpdateCommand
  - >> demoCommand
  - >> prvUARTCommandConsoleTask
  - >> SendMessageFromPort
  - >> PxMessagingTask
  - >> DisplayTopology
  - >> DisplayPortsDir
  - >> DisplayModuleStatus

  xPortSysTickHandler (Thumb, 32 bytes, Stack size 8 bytes, port.o(i.xPortSysTickHandler))
  [Stack]

  - Max Depth = 32
  - Call Chain = xPortSysTickHandler ⇒ xTaskIncrementTick
  [Calls]
  - >> xTaskIncrementTick
  - >> vClearInterruptMaskFromISR
  - >> ulSetInterruptMaskFromISR
  [Called By]
  - >> osSystickHandler

  xQueueGenericReset (Thumb, 126 bytes, Stack size 16 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 32
  - Call Chain = xQueueGenericReset ⇒ xTaskRemoveFromEventList
  [Calls]
  - >> xTaskRemoveFromEventList
  - >> vListInitialise
  - >> vPortYield
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> xQueueGenericCreate

  xQueueGenericCreate (Thumb, 120 bytes, Stack size 40 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 104
  - Call Chain = xQueueGenericCreate ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> xQueueGenericReset
  - >> pvPortMalloc
  [Called By]
  - >> prvCheckForValidListAndQueue
  - >> xQueueCreateCountingSemaphore
  - >> osSemaphoreCreate

  xQueueGenericSend (Thumb, 334 bytes, Stack size 48 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 88
  - Call Chain = xQueueGenericSend ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit
  [Calls]
  - >> xTaskRemoveFromEventList
  - >> xTaskCheckForTimeOut
  - >> vTaskSetTimeOutState
  - >> vTaskPlaceOnEventList
  - >> prvCopyDataToQueue
  - >> prvIsQueueFull
  - >> prvUnlockQueue
  - >> xTaskResumeAll
  - >> xTaskGetSchedulerState
  - >> vTaskSuspendAll
  - >> vPortYield
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> xQueueGiveMutexRecursive
  - >> xQueueCreateMutex
  - >> osSemaphoreCreate
  - >> xTimerGenericCommand
  - >> osSemaphoreRelease

  xQueueCreateMutex (Thumb, 88 bytes, Stack size 16 bytes, queue.o(privileged_functions), UNUSED)
  [Calls]

  - >> xQueueGenericSend
  - >> vListInitialise
  - >> pvPortMalloc

  xQueueGiveMutexRecursive (Thumb, 60 bytes, Stack size 16 bytes, queue.o(privileged_functions), UNUSED)
  [Calls]

  - >> xTaskGetCurrentTaskHandle
  - >> xQueueGenericSend

  xQueueGenericReceive (Thumb, 368 bytes, Stack size 48 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 88
  - Call Chain = xQueueGenericReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> xTaskRemoveFromEventList
  - >> xTaskCheckForTimeOut
  - >> vTaskSetTimeOutState
  - >> vTaskPriorityInherit
  - >> vTaskPlaceOnEventList
  - >> pvTaskIncrementMutexHeldCount
  - >> prvCopyDataFromQueue
  - >> prvIsQueueEmpty
  - >> prvUnlockQueue
  - >> xTaskResumeAll
  - >> xTaskGetSchedulerState
  - >> vTaskSuspendAll
  - >> vPortYield
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> prvProcessReceivedCommands
  - >> xQueueTakeMutexRecursive
  - >> osSemaphoreWait

  xQueueTakeMutexRecursive (Thumb, 66 bytes, Stack size 24 bytes, queue.o(privileged_functions), UNUSED)
  [Calls]

  - >> xTaskGetCurrentTaskHandle
  - >> xQueueGenericReceive

  xQueueCreateCountingSemaphore (Thumb, 78 bytes, Stack size 16 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 120
  - Call Chain = xQueueCreateCountingSemaphore ⇒ xQueueGenericCreate ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> xQueueGenericCreate
  [Called By]
  - >> osSemaphoreCreate

  xQueueGenericSendFromISR (Thumb, 178 bytes, Stack size 48 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 88
  - Call Chain = xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit
  [Calls]
  - >> xTaskRemoveFromEventList
  - >> prvCopyDataToQueue
  - >> vClearInterruptMaskFromISR
  - >> ulSetInterruptMaskFromISR
  [Called By]
  - >> xTimerGenericCommand

  xQueueGiveFromISR (Thumb, 156 bytes, Stack size 24 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 40
  - Call Chain = xQueueGiveFromISR ⇒ xTaskRemoveFromEventList
  [Calls]
  - >> xTaskRemoveFromEventList
  - >> vClearInterruptMaskFromISR
  - >> ulSetInterruptMaskFromISR
  [Called By]
  - >> HAL_UART_TxCpltCallback
  - >> HAL_UART_RxCpltCallback
  - >> osSemaphoreRelease

  xQueueReceiveFromISR (Thumb, 144 bytes, Stack size 40 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 56
  - Call Chain = xQueueReceiveFromISR ⇒ xTaskRemoveFromEventList
  [Calls]
  - >> xTaskRemoveFromEventList
  - >> prvCopyDataFromQueue
  - >> vClearInterruptMaskFromISR
  - >> ulSetInterruptMaskFromISR
  [Called By]
  - >> osSemaphoreWait

  xQueuePeekFromISR (Thumb, 108 bytes, Stack size 32 bytes, queue.o(privileged_functions), UNUSED)
  [Calls]

  - >> prvCopyDataFromQueue
  - >> vClearInterruptMaskFromISR
  - >> ulSetInterruptMaskFromISR

  uxQueueMessagesWaiting (Thumb, 28 bytes, Stack size 16 bytes, queue.o(privileged_functions), UNUSED)
  [Calls]

  - >> vPortExitCritical
  - >> vPortEnterCritical

  uxQueueSpacesAvailable (Thumb, 34 bytes, Stack size 16 bytes, queue.o(privileged_functions), UNUSED)
  [Calls]

  - >> vPortExitCritical
  - >> vPortEnterCritical

  uxQueueMessagesWaitingFromISR (Thumb, 16 bytes, Stack size 0 bytes, queue.o(privileged_functions), UNUSED)

  vQueueUnregisterQueue (Thumb, 40 bytes, Stack size 8 bytes, queue.o(privileged_functions), UNUSED)
  [Called By]

  - >> vQueueDelete

  vQueueDelete (Thumb, 30 bytes, Stack size 16 bytes, queue.o(privileged_functions), UNUSED)
  [Calls]

  - >> vQueueUnregisterQueue
  - >> vPortFree

  uxQueueGetQueueNumber (Thumb, 6 bytes, Stack size 0 bytes, queue.o(privileged_functions), UNUSED)

  vQueueSetQueueNumber (Thumb, 4 bytes, Stack size 0 bytes, queue.o(privileged_functions), UNUSED)

  ucQueueGetQueueType (Thumb, 8 bytes, Stack size 0 bytes, queue.o(privileged_functions), UNUSED)

  xQueueIsQueueEmptyFromISR (Thumb, 26 bytes, Stack size 0 bytes, queue.o(privileged_functions), UNUSED)

  xQueueIsQueueFullFromISR (Thumb, 28 bytes, Stack size 0 bytes, queue.o(privileged_functions), UNUSED)

  vQueueAddToRegistry (Thumb, 40 bytes, Stack size 8 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 8
  - Call Chain = vQueueAddToRegistry
  [Called By]
  - >> prvCheckForValidListAndQueue

  vQueueWaitForMessageRestricted (Thumb, 60 bytes, Stack size 16 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 48
  - Call Chain = vQueueWaitForMessageRestricted ⇒ vTaskPlaceOnEventListRestricted ⇒ prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> vTaskPlaceOnEventListRestricted
  - >> prvUnlockQueue
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> prvProcessTimerOrBlockTask

  xTaskGenericCreate (Thumb, 288 bytes, Stack size 48 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 136
  - Call Chain = xTaskGenericCreate ⇒ prvAllocateTCBAndStack ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> pxPortInitialiseStack
  - >> prvAllocateTCBAndStack
  - >> prvInitialiseTCBVariables
  - >> prvInitialiseTaskLists
  - >> vListInsertEnd
  - >> vPortYield
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> MX_FREERTOS_Init
  - >> xTimerCreateTimerTask
  - >> vTaskStartScheduler
  - >> Module_Init

  vTaskDelete (Thumb, 134 bytes, Stack size 16 bytes, tasks.o(privileged_functions), UNUSED)
  [Calls]

  - >> prvResetNextTaskUnblockTime
  - >> vListInsertEnd
  - >> uxListRemove
  - >> vPortYield
  - >> vPortExitCritical
  - >> vPortEnterCritical

  xTaskIncrementTick (Thumb, 274 bytes, Stack size 24 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 24
  - Call Chain = xTaskIncrementTick
  [Calls]
  - >> prvResetNextTaskUnblockTime
  - >> vListInsertEnd
  - >> uxListRemove
  [Called By]
  - >> xPortSysTickHandler
  - >> xTaskResumeAll

  xTaskResumeAll (Thumb, 284 bytes, Stack size 16 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 40
  - Call Chain = xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> xTaskIncrementTick
  - >> vListInsertEnd
  - >> uxListRemove
  - >> vPortYield
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> prvProcessTimerOrBlockTask
  - >> vTaskDelay
  - >> uxTaskGetSystemState
  - >> prvCheckTasksWaitingTermination
  - >> xQueueGenericReceive
  - >> xQueueGenericSend
  - >> vPortFree
  - >> pvPortMalloc

  vTaskSuspendAll (Thumb, 12 bytes, Stack size 0 bytes, tasks.o(privileged_functions))
  [Called By]

  - >> prvProcessTimerOrBlockTask
  - >> vTaskDelay
  - >> uxTaskGetSystemState
  - >> prvCheckTasksWaitingTermination
  - >> xQueueGenericReceive
  - >> xQueueGenericSend
  - >> vPortFree
  - >> pvPortMalloc

  vTaskDelay (Thumb, 76 bytes, Stack size 16 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 56
  - Call Chain = vTaskDelay ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> prvAddCurrentTaskToDelayedList
  - >> uxListRemove
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  - >> vPortYield
  [Called By]
  - >> osDelay

  uxTaskPriorityGet (Thumb, 32 bytes, Stack size 16 bytes, tasks.o(privileged_functions), UNUSED)
  [Calls]

  - >> vPortExitCritical
  - >> vPortEnterCritical

  uxTaskPriorityGetFromISR (Thumb, 36 bytes, Stack size 24 bytes, tasks.o(privileged_functions), UNUSED)
  [Calls]

  - >> vClearInterruptMaskFromISR
  - >> ulSetInterruptMaskFromISR

  vTaskPrioritySet (Thumb, 214 bytes, Stack size 32 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 32
  - Call Chain = vTaskPrioritySet
  [Calls]
  - >> vListInsertEnd
  - >> uxListRemove
  - >> vPortYield
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> SendMessageFromPort

  vTaskSwitchContext (Thumb, 232 bytes, Stack size 8 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 44
  - Call Chain = vTaskSwitchContext ⇒ ulMainGetRunTimeCounterValue ⇒ __aeabi_uidivmod
  [Calls]
  - >> vApplicationStackOverflowHook
  - >> ulMainGetRunTimeCounterValue
  - >> memcmp
  [Called By]
  - >> PendSV_Handler
  - >> vTaskSuspend

  vTaskSuspend (Thumb, 148 bytes, Stack size 16 bytes, tasks.o(privileged_functions), UNUSED)
  [Calls]

  - >> vTaskSwitchContext
  - >> prvResetNextTaskUnblockTime
  - >> vListInsertEnd
  - >> uxListRemove
  - >> vPortYield
  - >> vPortExitCritical
  - >> vPortEnterCritical

  vTaskResume (Thumb, 172 bytes, Stack size 16 bytes, tasks.o(privileged_functions), UNUSED)
  [Calls]

  - >> prvTaskIsTaskSuspended
  - >> vListInsertEnd
  - >> uxListRemove
  - >> vPortYield
  - >> vPortExitCritical
  - >> vPortEnterCritical

  xTaskResumeFromISR (Thumb, 116 bytes, Stack size 24 bytes, tasks.o(privileged_functions), UNUSED)
  [Calls]

  - >> prvTaskIsTaskSuspended
  - >> vListInsertEnd
  - >> uxListRemove
  - >> vClearInterruptMaskFromISR
  - >> ulSetInterruptMaskFromISR

  vTaskStartScheduler (Thumb, 76 bytes, Stack size 24 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 184
  - Call Chain = vTaskStartScheduler ⇒ xTimerCreateTimerTask ⇒ xTaskGenericCreate ⇒ prvAllocateTCBAndStack ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> xTimerCreateTimerTask
  - >> xPortStartScheduler
  - >> xTaskGenericCreate
  - >> vMainConfigureTimerForRunTimeStats
  [Called By]
  - >> osKernelStart

  vTaskEndScheduler (Thumb, 16 bytes, Stack size 8 bytes, tasks.o(privileged_functions), UNUSED)
  [Calls]

  - >> vPortEndScheduler

  xTaskGetTickCount (Thumb, 6 bytes, Stack size 0 bytes, tasks.o(privileged_functions))
  [Called By]

  - >> prvSampleTimeNow
  - >> StartScastDMAStream
  - >> SetupDMAStreamsFromMessage

  xTaskGetTickCountFromISR (Thumb, 8 bytes, Stack size 0 bytes, tasks.o(privileged_functions))
  [Called By]

  - >> ulMainGetRunTimeCounterValue

  uxTaskGetNumberOfTasks (Thumb, 6 bytes, Stack size 0 bytes, tasks.o(privileged_functions), UNUSED)

  vTaskPlaceOnEventList (Thumb, 72 bytes, Stack size 16 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 32
  - Call Chain = vTaskPlaceOnEventList ⇒ prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> prvAddCurrentTaskToDelayedList
  - >> vListInsertEnd
  - >> vListInsert
  - >> uxListRemove
  [Called By]
  - >> xQueueGenericReceive
  - >> xQueueGenericSend

  vTaskPlaceOnUnorderedEventList (Thumb, 110 bytes, Stack size 24 bytes, tasks.o(privileged_functions), UNUSED)
  [Calls]

  - >> prvAddCurrentTaskToDelayedList
  - >> vListInsertEnd
  - >> uxListRemove

  vTaskPlaceOnEventListRestricted (Thumb, 52 bytes, Stack size 16 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 32
  - Call Chain = vTaskPlaceOnEventListRestricted ⇒ prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> prvAddCurrentTaskToDelayedList
  - >> vListInsertEnd
  - >> uxListRemove
  [Called By]
  - >> vQueueWaitForMessageRestricted

  xTaskRemoveFromEventList (Thumb, 112 bytes, Stack size 16 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 16
  - Call Chain = xTaskRemoveFromEventList
  [Calls]
  - >> vListInsertEnd
  - >> uxListRemove
  [Called By]
  - >> xQueueReceiveFromISR
  - >> xQueueGenericSendFromISR
  - >> xQueueGenericReceive
  - >> xQueueGenericSend
  - >> xQueueGenericReset
  - >> prvUnlockQueue
  - >> xQueueGiveFromISR

  xTaskRemoveFromUnorderedEventList (Thumb, 182 bytes, Stack size 24 bytes, tasks.o(privileged_functions), UNUSED)
  [Calls]

  - >> vListInsertEnd
  - >> uxListRemove

  vTaskSetTimeOutState (Thumb, 24 bytes, Stack size 0 bytes, tasks.o(privileged_functions))
  [Called By]

  - >> xTaskCheckForTimeOut
  - >> xQueueGenericReceive
  - >> xQueueGenericSend

  xTaskCheckForTimeOut (Thumb, 106 bytes, Stack size 16 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 16
  - Call Chain = xTaskCheckForTimeOut
  [Calls]
  - >> vTaskSetTimeOutState
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> xQueueGenericReceive
  - >> xQueueGenericSend

  vTaskMissedYield (Thumb, 8 bytes, Stack size 0 bytes, tasks.o(privileged_functions))
  [Called By]

  - >> prvUnlockQueue

  uxTaskGetTaskNumber (Thumb, 16 bytes, Stack size 0 bytes, tasks.o(privileged_functions), UNUSED)

  vTaskSetTaskNumber (Thumb, 10 bytes, Stack size 0 bytes, tasks.o(privileged_functions), UNUSED)

  uxTaskGetStackHighWaterMark (Thumb, 32 bytes, Stack size 24 bytes, tasks.o(privileged_functions), UNUSED)
  [Calls]

  - >> prvTaskCheckFreeStackSpace

  xTaskGetCurrentTaskHandle (Thumb, 6 bytes, Stack size 0 bytes, tasks.o(privileged_functions), UNUSED)
  [Called By]

  - >> xQueueTakeMutexRecursive
  - >> xQueueGiveMutexRecursive

  xTaskGetSchedulerState (Thumb, 28 bytes, Stack size 0 bytes, tasks.o(privileged_functions))
  [Called By]

  - >> xQueueGenericReceive
  - >> xQueueGenericSend
  - >> osSystickHandler
  - >> xTimerGenericCommand

  vTaskPriorityInherit (Thumb, 128 bytes, Stack size 16 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 16
  - Call Chain = vTaskPriorityInherit
  [Calls]
  - >> vListInsertEnd
  - >> uxListRemove
  [Called By]
  - >> xQueueGenericReceive

  xTaskPriorityDisinherit (Thumb, 124 bytes, Stack size 16 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 16
  - Call Chain = xTaskPriorityDisinherit
  [Calls]
  - >> vListInsertEnd
  - >> uxListRemove
  [Called By]
  - >> prvCopyDataToQueue

  vTaskList (Thumb, 180 bytes, Stack size 32 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 104
  - Call Chain = vTaskList ⇒ uxTaskGetSystemState ⇒ prvListTaskWithinSingleList
  [Calls]
  - >> uxTaskGetSystemState
  - >> prvWriteNameToBuffer
  - >> vPortFree
  - >> pvPortMalloc
  - >> __2sprintf
  - >> strlen
  [Called By]
  - >> prvTaskStatsCommand

  vTaskGetRunTimeStats (Thumb, 166 bytes, Stack size 32 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 104
  - Call Chain = vTaskGetRunTimeStats ⇒ uxTaskGetSystemState ⇒ prvListTaskWithinSingleList
  [Calls]
  - >> uxTaskGetSystemState
  - >> prvWriteNameToBuffer
  - >> vPortFree
  - >> pvPortMalloc
  - >> __2sprintf
  - >> strlen
  - >> __aeabi_uidivmod
  [Called By]
  - >> prvRunTimeStatsCommand

  uxTaskResetEventItemValue (Thumb, 24 bytes, Stack size 0 bytes, tasks.o(privileged_functions), UNUSED)

  xTimerGenericCommand (Thumb, 100 bytes, Stack size 40 bytes, timers.o(privileged_functions))
  [Stack]

  - Max Depth = 128
  - Call Chain = xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit
  [Calls]
  - >> xQueueGenericSendFromISR
  - >> xQueueGenericSend
  - >> xTaskGetSchedulerState
  [Called By]
  - >> prvProcessExpiredTimer
  - >> prvProcessReceivedCommands
  - >> prvSwitchTimerLists
  - >> StartScastDMAStream
  - >> SetupDMAStreamsFromMessage

  xTimerCreateTimerTask (Thumb, 58 bytes, Stack size 24 bytes, timers.o(privileged_functions))
  [Stack]

  - Max Depth = 160
  - Call Chain = xTimerCreateTimerTask ⇒ xTaskGenericCreate ⇒ prvAllocateTCBAndStack ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> prvCheckForValidListAndQueue
  - >> xTaskGenericCreate
  [Called By]
  - >> vTaskStartScheduler

  xTimerCreate (Thumb, 124 bytes, Stack size 40 bytes, timers.o(privileged_functions))
  [Stack]

  - Max Depth = 152
  - Call Chain = xTimerCreate ⇒ prvCheckForValidListAndQueue ⇒ xQueueGenericCreate ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> prvCheckForValidListAndQueue
  - >> vListInitialiseItem
  - >> pvPortMalloc
  [Called By]
  - >> StartScastDMAStream
  - >> SetupDMAStreamsFromMessage

  xTimerIsTimerActive (Thumb, 36 bytes, Stack size 16 bytes, timers.o(privileged_functions), UNUSED)
  [Calls]

  - >> vPortExitCritical
  - >> vPortEnterCritical

  pvTimerGetTimerID (Thumb, 30 bytes, Stack size 16 bytes, timers.o(privileged_functions))
  [Stack]

  - Max Depth = 16
  - Call Chain = pvTimerGetTimerID
  [Calls]
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> StreamTimerCallback

  vTimerSetTimerID (Thumb, 30 bytes, Stack size 16 bytes, timers.o(privileged_functions), UNUSED)
  [Calls]

  - >> vPortExitCritical
  - >> vPortEnterCritical

  pxPortInitialiseStack (Thumb, 26 bytes, Stack size 0 bytes, port.o(privileged_functions))
  [Called By]

  - >> xTaskGenericCreate

  xPortStartScheduler (Thumb, 48 bytes, Stack size 8 bytes, port.o(privileged_functions))
  [Stack]

  - Max Depth = 28
  - Call Chain = xPortStartScheduler ⇒ prvSetupTimerInterrupt ⇒ __aeabi_uidivmod
  [Calls]
  - >> __asm___6_port_c_39a90d8d__prvPortStartFirstTask
  - >> prvSetupTimerInterrupt
  [Called By]
  - >> vTaskStartScheduler

  vPortEndScheduler (Thumb, 30 bytes, Stack size 0 bytes, port.o(privileged_functions), UNUSED)
  [Called By]

  - >> vTaskEndScheduler

  pvPortMalloc (Thumb, 274 bytes, Stack size 24 bytes, heap_4.o(privileged_functions))
  [Stack]

  - Max Depth = 64
  - Call Chain = pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> prvInsertBlockIntoFreeList
  - >> prvHeapInit
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  - >> vApplicationMallocFailedHook
  [Called By]
  - >> prvAllocateTCBAndStack
  - >> xQueueCreateMutex
  - >> xQueueGenericCreate
  - >> xTimerCreate
  - >> vTaskList
  - >> vTaskGetRunTimeStats
  - >> FreeRTOS_CLIRegisterCommand

  vPortFree (Thumb, 120 bytes, Stack size 16 bytes, heap_4.o(privileged_functions))
  [Stack]

  - Max Depth = 56
  - Call Chain = vPortFree ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> prvInsertBlockIntoFreeList
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  [Called By]
  - >> prvProcessReceivedCommands
  - >> prvDeleteTCB
  - >> prvAllocateTCBAndStack
  - >> vQueueDelete
  - >> vTaskList
  - >> vTaskGetRunTimeStats

  xPortGetFreeHeapSize (Thumb, 6 bytes, Stack size 0 bytes, heap_4.o(privileged_functions), UNUSED)

  xPortGetMinimumEverFreeHeapSize (Thumb, 6 bytes, Stack size 0 bytes, heap_4.o(privileged_functions), UNUSED)

  vPortInitialiseBlocks (Thumb, 2 bytes, Stack size 0 bytes, heap_4.o(privileged_functions), UNUSED)

  ### Local Symbols

  NVIC_SetPriority (Thumb, 110 bytes, Stack size 8 bytes, stm32f0xx_hal_cortex.o(i.NVIC_SetPriority))
  [Stack]

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

  DMA_SetConfig (Thumb, 32 bytes, Stack size 8 bytes, stm32f0xx_hal_dma.o(i.DMA_SetConfig))
  [Stack]

  - Max Depth = 8
  - Call Chain = DMA_SetConfig
  [Called By]
  - >> HAL_DMA_Start_IT

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

  - >> HAL_FLASH_Program

  FLASH_SetErrorCode (Thumb, 56 bytes, Stack size 0 bytes, stm32f0xx_hal_flash.o(i.FLASH_SetErrorCode))
  [Called By]

  - >> FLASH_WaitForLastOperation

  FLASH_MassErase (Thumb, 32 bytes, Stack size 0 bytes, stm32f0xx_hal_flash_ex.o(i.FLASH_MassErase))
  [Called By]

  - >> HAL_FLASHEx_Erase

  TIM_ETR_SetConfig (Thumb, 30 bytes, Stack size 16 bytes, stm32f0xx_hal_tim.o(i.TIM_ETR_SetConfig))
  [Stack]

  - Max Depth = 16
  - Call Chain = TIM_ETR_SetConfig
  [Called By]
  - >> HAL_TIM_ConfigClockSource

  TIM_ITRx_SetConfig (Thumb, 26 bytes, Stack size 8 bytes, stm32f0xx_hal_tim.o(i.TIM_ITRx_SetConfig))
  [Stack]

  - Max Depth = 8
  - Call Chain = TIM_ITRx_SetConfig
  [Called By]
  - >> HAL_TIM_ConfigClockSource

  TIM_OC1_SetConfig (Thumb, 164 bytes, Stack size 16 bytes, stm32f0xx_hal_tim.o(i.TIM_OC1_SetConfig))
  [Stack]

  - Max Depth = 16
  - Call Chain = TIM_OC1_SetConfig
  [Called By]
  - >> HAL_TIM_PWM_ConfigChannel

  TIM_OC3_SetConfig (Thumb, 178 bytes, Stack size 16 bytes, stm32f0xx_hal_tim.o(i.TIM_OC3_SetConfig))
  [Stack]

  - Max Depth = 16
  - Call Chain = TIM_OC3_SetConfig
  [Called By]
  - >> HAL_TIM_PWM_ConfigChannel

  TIM_OC4_SetConfig (Thumb, 118 bytes, Stack size 16 bytes, stm32f0xx_hal_tim.o(i.TIM_OC4_SetConfig))
  [Stack]

  - Max Depth = 16
  - Call Chain = TIM_OC4_SetConfig
  [Called By]
  - >> HAL_TIM_PWM_ConfigChannel

  TIM_TI1_ConfigInputStage (Thumb, 54 bytes, Stack size 16 bytes, stm32f0xx_hal_tim.o(i.TIM_TI1_ConfigInputStage))
  [Stack]

  - Max Depth = 16
  - Call Chain = TIM_TI1_ConfigInputStage
  [Called By]
  - >> HAL_TIM_ConfigClockSource

  TIM_TI2_ConfigInputStage (Thumb, 54 bytes, Stack size 16 bytes, stm32f0xx_hal_tim.o(i.TIM_TI2_ConfigInputStage))
  [Stack]

  - Max Depth = 16
  - Call Chain = TIM_TI2_ConfigInputStage
  [Called By]
  - >> HAL_TIM_ConfigClockSource

  UART_DMAError (Thumb, 38 bytes, Stack size 16 bytes, stm32f0xx_hal_uart.o(i.UART_DMAError))
  [Stack]

  - Max Depth = 32
  - Call Chain = UART_DMAError ⇒ HAL_UART_ErrorCallback ⇒ HAL_UART_Receive_IT
  [Calls]
  - >> HAL_UART_ErrorCallback
  [Address Reference Count : 1]
  - stm32f0xx_hal_uart.o(i.HAL_UART_Receive_DMA)

  UART_DMAReceiveCplt (Thumb, 66 bytes, Stack size 16 bytes, stm32f0xx_hal_uart.o(i.UART_DMAReceiveCplt))
  [Stack]

  - Max Depth = 120
  - Call Chain = UART_DMAReceiveCplt ⇒ HAL_UART_RxCpltCallback ⇒ PortMemDMA1_Setup ⇒ HAL_UART_Receive_DMA ⇒ HAL_DMA_Start_IT ⇒ DMA_SetConfig
  [Calls]
  - >> HAL_UART_RxCpltCallback
  [Address Reference Count : 1]
  - stm32f0xx_hal_uart.o(i.HAL_UART_Receive_DMA)

  UART_DMARxHalfCplt (Thumb, 14 bytes, Stack size 16 bytes, stm32f0xx_hal_uart.o(i.UART_DMARxHalfCplt))
  [Stack]

  - Max Depth = 16
  - Call Chain = UART_DMARxHalfCplt
  [Calls]
  - >> HAL_UART_RxHalfCpltCallback
  [Address Reference Count : 1]
  - stm32f0xx_hal_uart.o(i.HAL_UART_Receive_DMA)

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

  - >> BOS_Init
  - >> resetCommand
  - >> bootloaderUpdateCommand
  - >> PxMessagingTask

  addbuttonCommand (Thumb, 212 bytes, Stack size 40 bytes, bos.o(i.addbuttonCommand))
  [Stack]

  - Max Depth = 288
  - Call Chain = addbuttonCommand ⇒ AddPortButton ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> AddPortButton
  - >> FreeRTOS_CLIGetParameter
  - >> atol
  - >> __2sprintf
  - >> strncmp
  [Address Reference Count : 1]
  - bos.o(.constdata)

  bootloaderUpdateCommand (Thumb, 338 bytes, Stack size 32 bytes, bos.o(i.bootloaderUpdateCommand))
  [Stack]

  - Max Depth = 472
  - Call Chain = bootloaderUpdateCommand ⇒ remoteBootloaderUpdate ⇒ StartScastDMAStream ⇒ SendMessageToModule ⇒ BroadcastMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> NVIC_SystemReset
  - >> writePxMutex
  - >> osDelay
  - >> FreeRTOS_CLIGetParameter
  - >> remoteBootloaderUpdate
  - >> SendMessageToModule
  - >> SendMessageFromPort
  - >> atol
  - >> __2sprintf
  - >> strncmp
  - >> strcpy
  - >> strlen
  - >> strcat
  [Address Reference Count : 1]
  - bos.o(.constdata)

  dateCommand (Thumb, 44 bytes, Stack size 24 bytes, bos.o(i.dateCommand))
  [Stack]

  - Max Depth = 76
  - Call Chain = dateCommand ⇒ GetTimeDate ⇒ HAL_RTC_GetTime
  [Calls]
  - >> GetTimeDate
  - >> GetDateString
  - >> __2sprintf
  [Address Reference Count : 1]
  - bos.o(.constdata)

  defaultCommand (Thumb, 168 bytes, Stack size 24 bytes, bos.o(i.defaultCommand))
  [Stack]

  - Max Depth = 352
  - Call Chain = defaultCommand ⇒ SendMessageToModule ⇒ BroadcastMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> osDelay
  - >> FreeRTOS_CLIGetParameter
  - >> SendMessageToModule
  - >> SaveEEparams
  - >> ClearROtopology
  - >> ClearEEportsDir
  - >> strncmp
  - >> strcpy
  - >> __aeabi_memcpy4
  [Address Reference Count : 1]
  - bos.o(.constdata)

  exploreCommand (Thumb, 174 bytes, Stack size 24 bytes, bos.o(i.exploreCommand))
  [Stack]

  - Max Depth = 408
  - Call Chain = exploreCommand ⇒ Explore ⇒ SendMessageToModule ⇒ BroadcastMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> writePxMutex
  - >> Explore
  - >> DisplayTopology
  - >> DisplayPortsDir
  - >> __2sprintf
  - >> strcpy
  - >> strlen
  [Address Reference Count : 1]
  - bos.o(.constdata)

  flashsizeCommand (Thumb, 38 bytes, Stack size 16 bytes, bos.o(i.flashsizeCommand))
  [Stack]

  - Max Depth = 40
  - Call Chain = flashsizeCommand ⇒ __2sprintf
  [Calls]
  - >> __2sprintf
  [Address Reference Count : 1]
  - bos.o(.constdata)

  getCommand (Thumb, 610 bytes, Stack size 40 bytes, bos.o(i.getCommand))
  [Stack]

  - Max Depth = 64
  - Call Chain = getCommand ⇒ __2sprintf
  [Calls]
  - >> FreeRTOS_CLIGetParameter
  - >> __2sprintf
  - >> strncmp
  - >> strcpy
  - >> strcmp
  [Address Reference Count : 1]
  - bos.o(.constdata)

  groupCommand (Thumb, 418 bytes, Stack size 88 bytes, bos.o(i.groupCommand))
  [Stack]

  - Max Depth = 192
  - Call Chain = groupCommand ⇒ GetID ⇒ atol ⇒ strtol ⇒ _strtoul
  [Calls]
  - >> AddModuleToGroup
  - >> FreeRTOS_CLIGetParameter
  - >> GetID
  - >> __2sprintf
  - >> strcpy
  - >> strcmp
  - >> strncpy
  - >> strcat
  - >> __aeabi_memclr4
  [Address Reference Count : 1]
  - bos.o(.constdata)

  idcodeCommand (Thumb, 158 bytes, Stack size 24 bytes, bos.o(i.idcodeCommand))
  [Stack]

  - Max Depth = 48
  - Call Chain = idcodeCommand ⇒ __2sprintf
  [Calls]
  - >> HAL_GetREVID
  - >> HAL_GetDEVID
  - >> __ARM_common_switch8
  - >> __2sprintf
  [Address Reference Count : 1]
  - bos.o(.constdata)

  infoCommand (Thumb, 174 bytes, Stack size 24 bytes, bos.o(i.infoCommand))
  [Stack]

  - Max Depth = 368
  - Call Chain = infoCommand ⇒ ReadPortsDir ⇒ SendMessageToModule ⇒ BroadcastMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> writePxMutex
  - >> ReadPortsDir
  - >> DisplayTopology
  - >> DisplayPortsDir
  - >> __2sprintf
  - >> strlen
  [Address Reference Count : 1]
  - bos.o(.constdata)

  nameCommand (Thumb, 148 bytes, Stack size 24 bytes, bos.o(i.nameCommand))
  [Stack]

  - Max Depth = 256
  - Call Chain = nameCommand ⇒ NameModule ⇒ SaveEEalias ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> FreeRTOS_CLIGetParameter
  - >> NameModule
  - >> __2sprintf
  [Address Reference Count : 1]
  - bos.o(.constdata)

  pingCommand (Thumb, 112 bytes, Stack size 16 bytes, bos.o(i.pingCommand))
  [Stack]

  - Max Depth = 88
  - Call Chain = pingCommand ⇒ osDelay ⇒ vTaskDelay ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> HAL_GPIO_WritePin
  - >> osDelay
  - >> __2sprintf
  [Address Reference Count : 1]
  - bos.o(.constdata)

  prvRunTimeStatsCommand (Thumb, 44 bytes, Stack size 24 bytes, bos.o(i.prvRunTimeStatsCommand))
  [Stack]

  - Max Depth = 128
  - Call Chain = prvRunTimeStatsCommand ⇒ vTaskGetRunTimeStats ⇒ uxTaskGetSystemState ⇒ prvListTaskWithinSingleList
  [Calls]
  - >> vTaskGetRunTimeStats
  - >> strcpy
  - >> strlen
  [Address Reference Count : 1]
  - bos.o(.constdata)

  prvTaskStatsCommand (Thumb, 44 bytes, Stack size 24 bytes, bos.o(i.prvTaskStatsCommand))
  [Stack]

  - Max Depth = 128
  - Call Chain = prvTaskStatsCommand ⇒ vTaskList ⇒ uxTaskGetSystemState ⇒ prvListTaskWithinSingleList
  [Calls]
  - >> vTaskList
  - >> strcpy
  - >> strlen
  [Address Reference Count : 1]
  - bos.o(.constdata)

  removebuttonCommand (Thumb, 90 bytes, Stack size 24 bytes, bos.o(i.removebuttonCommand))
  [Stack]

  - Max Depth = 224
  - Call Chain = removebuttonCommand ⇒ RemovePortButton ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> FreeRTOS_CLIGetParameter
  - >> RemovePortButton
  - >> atol
  - >> __2sprintf
  [Address Reference Count : 1]
  - bos.o(.constdata)

  resetCommand (Thumb, 16 bytes, Stack size 0 bytes, bos.o(i.resetCommand))
  [Calls]

  - >> NVIC_SystemReset
  [Address Reference Count : 1]
  - bos.o(.constdata)

  scastCommand (Thumb, 410 bytes, Stack size 136 bytes, bos.o(i.scastCommand))
  [Stack]

  - Max Depth = 528
  - Call Chain = scastCommand ⇒ StartScastDMAStream ⇒ SendMessageToModule ⇒ BroadcastMessage ⇒ SendMessageFromPort ⇒ SendMessageFromPort (Cycle)
  [Calls]
  - >> FreeRTOS_CLIGetParameter
  - >> StartScastDMAStream
  - >> GetID
  - >> atol
  - >> __2sprintf
  - >> strncmp
  - >> strncpy
  [Address Reference Count : 1]
  - bos.o(.constdata)

  setBaudrateCommand (Thumb, 124 bytes, Stack size 40 bytes, bos.o(i.setBaudrateCommand))
  [Stack]

  - Max Depth = 188
  - Call Chain = setBaudrateCommand ⇒ UpdateBaudrate ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ HAL_RCC_GetPCLK1Freq ⇒ HAL_RCC_GetHCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
  [Calls]
  - >> UpdateBaudrate
  - >> FreeRTOS_CLIGetParameter
  - >> atol
  - >> __2sprintf
  - >> strcpy
  [Address Reference Count : 1]
  - bos.o(.constdata)

  setCommand (Thumb, 2014 bytes, Stack size 96 bytes, bos.o(i.setCommand))
  [Stack]

  - Max Depth = 320
  - Call Chain = setCommand ⇒ BOS_CalendarConfig ⇒ EE_WriteVariable ⇒ EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> BOS_CalendarConfig
  - >> FreeRTOS_CLIGetParameter
  - >> EE_WriteVariable
  - >> GetTimeDate
  - >> atoi
  - >> __2sprintf
  - >> strncmp
  - >> strcpy
  - >> strcat
  [Address Reference Count : 1]
  - bos.o(.constdata)

  statusCommand (Thumb, 28 bytes, Stack size 16 bytes, bos.o(i.statusCommand))
  [Stack]

  - Max Depth = 192
  - Call Chain = statusCommand ⇒ DisplayModuleStatus ⇒ writePxMutex ⇒ osSemaphoreWait ⇒ xQueueGenericReceive ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> DisplayModuleStatus
  [Address Reference Count : 1]
  - bos.o(.constdata)

  timeCommand (Thumb, 154 bytes, Stack size 32 bytes, bos.o(i.timeCommand))
  [Stack]

  - Max Depth = 84
  - Call Chain = timeCommand ⇒ GetTimeDate ⇒ HAL_RTC_GetTime
  [Calls]
  - >> GetTimeDate
  - >> __2sprintf
  [Address Reference Count : 1]
  - bos.o(.constdata)

  uuidCommand (Thumb, 72 bytes, Stack size 24 bytes, bos.o(i.uuidCommand))
  [Stack]

  - Max Depth = 48
  - Call Chain = uuidCommand ⇒ __2sprintf
  [Calls]
  - >> __2sprintf
  - >> strcat
  [Address Reference Count : 1]
  - bos.o(.constdata)

  EE_FindValidPage (Thumb, 86 bytes, Stack size 0 bytes, bos_eeprom.o(i.EE_FindValidPage))
  [Called By]

  - >> EE_VerifyPageFullWriteVariable
  - >> EE_PageTransfer
  - >> EE_ReadVariable

  EE_PageTransfer (Thumb, 326 bytes, Stack size 48 bytes, bos_eeprom.o(i.EE_PageTransfer))
  [Stack]

  - Max Depth = 160
  - Call Chain = EE_PageTransfer ⇒ EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> FLASH_PageErase
  - >> HAL_FLASH_Unlock
  - >> HAL_FLASH_Program
  - >> HAL_FLASH_Lock
  - >> FLASH_WaitForLastOperation
  - >> EE_VerifyPageFullWriteVariable
  - >> EE_FindValidPage
  - >> EE_ReadVariable
  [Called By]
  - >> EE_WriteVariable

  EE_VerifyPageFullWriteVariable (Thumb, 176 bytes, Stack size 32 bytes, bos_eeprom.o(i.EE_VerifyPageFullWriteVariable))
  [Stack]

  - Max Depth = 112
  - Call Chain = EE_VerifyPageFullWriteVariable ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation
  [Calls]
  - >> HAL_FLASH_Unlock
  - >> HAL_FLASH_Program
  - >> HAL_FLASH_Lock
  - >> FLASH_WaitForLastOperation
  - >> EE_FindValidPage
  [Called By]
  - >> EE_PageTransfer
  - >> EE_WriteVariable
  - >> EE_Init

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

  - >> FreeRTOS_CLIProcessCommand

  prvHelpCommand (Thumb, 178 bytes, Stack size 24 bytes, freertos_cli.o(i.prvHelpCommand))
  [Stack]

  - Max Depth = 36
  - Call Chain = prvHelpCommand ⇒ FreeRTOS_CLIGetParameter
  [Calls]
  - >> FreeRTOS_CLIGetParameter
  - >> strncmp
  - >> strncpy
  [Address Reference Count : 1]
  - freertos_cli.o(.constdata)

  prvUnlockQueue (Thumb, 138 bytes, Stack size 8 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 24
  - Call Chain = prvUnlockQueue ⇒ xTaskRemoveFromEventList
  [Calls]
  - >> xTaskRemoveFromEventList
  - >> vTaskMissedYield
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> vQueueWaitForMessageRestricted
  - >> xQueueGenericReceive
  - >> xQueueGenericSend

  prvIsQueueFull (Thumb, 30 bytes, Stack size 16 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 16
  - Call Chain = prvIsQueueFull
  [Calls]
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> xQueueGenericSend

  prvCopyDataToQueue (Thumb, 132 bytes, Stack size 24 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 40
  - Call Chain = prvCopyDataToQueue ⇒ xTaskPriorityDisinherit
  [Calls]
  - >> xTaskPriorityDisinherit
  - >> __aeabi_memcpy
  [Called By]
  - >> xQueueGenericSendFromISR
  - >> xQueueGenericSend

  prvIsQueueEmpty (Thumb, 28 bytes, Stack size 16 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 16
  - Call Chain = prvIsQueueEmpty
  [Calls]
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> xQueueGenericReceive

  prvCopyDataFromQueue (Thumb, 44 bytes, Stack size 16 bytes, queue.o(privileged_functions))
  [Stack]

  - Max Depth = 16
  - Call Chain = prvCopyDataFromQueue
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> xQueuePeekFromISR
  - >> xQueueReceiveFromISR
  - >> xQueueGenericReceive

  prvIdleTask (Thumb, 20 bytes, Stack size 0 bytes, tasks.o(i.prvIdleTask))
  [Stack]

  - Max Depth = 80
  - Call Chain = prvIdleTask ⇒ prvCheckTasksWaitingTermination ⇒ prvDeleteTCB ⇒ vPortFree ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> prvCheckTasksWaitingTermination
  - >> vPortYield
  [Address Reference Count : 1]
  - tasks.o(privileged_functions)

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

  - >> vTaskSuspend
  - >> xTaskIncrementTick
  - >> vTaskDelete

  prvWriteNameToBuffer (Thumb, 42 bytes, Stack size 16 bytes, tasks.o(i.prvWriteNameToBuffer))
  [Stack]

  - Max Depth = 16
  - Call Chain = prvWriteNameToBuffer
  [Calls]
  - >> strcpy
  - >> strlen
  [Called By]
  - >> vTaskList
  - >> vTaskGetRunTimeStats

  prvInitialiseTaskLists (Thumb, 68 bytes, Stack size 8 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 8
  - Call Chain = prvInitialiseTaskLists
  [Calls]
  - >> vListInitialise
  [Called By]
  - >> xTaskGenericCreate

  prvInitialiseTCBVariables (Thumb, 94 bytes, Stack size 24 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 24
  - Call Chain = prvInitialiseTCBVariables
  [Calls]
  - >> vListInitialiseItem
  [Called By]
  - >> xTaskGenericCreate

  prvAllocateTCBAndStack (Thumb, 70 bytes, Stack size 24 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 88
  - Call Chain = prvAllocateTCBAndStack ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> vPortFree
  - >> pvPortMalloc
  - >> __aeabi_memset
  [Called By]
  - >> xTaskGenericCreate

  prvAddCurrentTaskToDelayedList (Thumb, 62 bytes, Stack size 8 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 16
  - Call Chain = prvAddCurrentTaskToDelayedList ⇒ vListInsert
  [Calls]
  - >> vListInsert
  [Called By]
  - >> vTaskDelay
  - >> vTaskPlaceOnEventListRestricted
  - >> vTaskPlaceOnEventList
  - >> vTaskPlaceOnUnorderedEventList
  - >> ulTaskNotifyTake

  prvTaskIsTaskSuspended (Thumb, 74 bytes, Stack size 8 bytes, tasks.o(privileged_functions), UNUSED)
  [Called By]

  - >> xTaskResumeFromISR
  - >> vTaskResume

  prvDeleteTCB (Thumb, 18 bytes, Stack size 8 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 64
  - Call Chain = prvDeleteTCB ⇒ vPortFree ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> vPortFree
  [Called By]
  - >> prvCheckTasksWaitingTermination

  prvCheckTasksWaitingTermination (Thumb, 90 bytes, Stack size 16 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 80
  - Call Chain = prvCheckTasksWaitingTermination ⇒ prvDeleteTCB ⇒ vPortFree ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> prvDeleteTCB
  - >> uxListRemove
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> prvIdleTask

  prvTaskCheckFreeStackSpace (Thumb, 22 bytes, Stack size 0 bytes, tasks.o(privileged_functions))
  [Called By]

  - >> uxTaskGetStackHighWaterMark
  - >> prvListTaskWithinSingleList

  prvListTaskWithinSingleList (Thumb, 176 bytes, Stack size 40 bytes, tasks.o(privileged_functions))
  [Stack]

  - Max Depth = 40
  - Call Chain = prvListTaskWithinSingleList
  [Calls]
  - >> prvTaskCheckFreeStackSpace
  [Called By]
  - >> uxTaskGetSystemState

  prvInsertTimerInActiveList (Thumb, 76 bytes, Stack size 24 bytes, timers.o(privileged_functions))
  [Stack]

  - Max Depth = 32
  - Call Chain = prvInsertTimerInActiveList ⇒ vListInsert
  [Calls]
  - >> vListInsert
  [Called By]
  - >> prvProcessExpiredTimer
  - >> prvProcessReceivedCommands

  prvSwitchTimerLists (Thumb, 134 bytes, Stack size 32 bytes, timers.o(privileged_functions))
  [Stack]

  - Max Depth = 160
  - Call Chain = prvSwitchTimerLists ⇒ xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit
  [Calls]
  - >> vListInsert
  - >> uxListRemove
  - >> xTimerGenericCommand
  [Called By]
  - >> prvSampleTimeNow

  prvSampleTimeNow (Thumb, 40 bytes, Stack size 16 bytes, timers.o(privileged_functions))
  [Stack]

  - Max Depth = 176
  - Call Chain = prvSampleTimeNow ⇒ prvSwitchTimerLists ⇒ xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit
  [Calls]
  - >> prvSwitchTimerLists
  - >> xTaskGetTickCount
  [Called By]
  - >> prvProcessTimerOrBlockTask
  - >> prvProcessReceivedCommands

  prvProcessReceivedCommands (Thumb, 222 bytes, Stack size 40 bytes, timers.o(privileged_functions))
  [Stack]

  - Max Depth = 216
  - Call Chain = prvProcessReceivedCommands ⇒ prvSampleTimeNow ⇒ prvSwitchTimerLists ⇒ xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit
  [Calls]
  - >> __ARM_common_switch8
  - >> prvSampleTimeNow
  - >> prvInsertTimerInActiveList
  - >> xQueueGenericReceive
  - >> uxListRemove
  - >> vPortFree
  - >> xTimerGenericCommand
  [Called By]
  - >> prvTimerTask

  prvProcessExpiredTimer (Thumb, 82 bytes, Stack size 24 bytes, timers.o(privileged_functions))
  [Stack]

  - Max Depth = 152
  - Call Chain = prvProcessExpiredTimer ⇒ xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit
  [Calls]
  - >> prvInsertTimerInActiveList
  - >> uxListRemove
  - >> xTimerGenericCommand
  [Called By]
  - >> prvProcessTimerOrBlockTask

  prvProcessTimerOrBlockTask (Thumb, 76 bytes, Stack size 24 bytes, timers.o(privileged_functions))
  [Stack]

  - Max Depth = 200
  - Call Chain = prvProcessTimerOrBlockTask ⇒ prvSampleTimeNow ⇒ prvSwitchTimerLists ⇒ xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit
  [Calls]
  - >> prvProcessExpiredTimer
  - >> prvSampleTimeNow
  - >> vQueueWaitForMessageRestricted
  - >> xTaskResumeAll
  - >> vTaskSuspendAll
  - >> vPortYield
  [Called By]
  - >> prvTimerTask

  prvGetNextExpireTime (Thumb, 40 bytes, Stack size 0 bytes, timers.o(privileged_functions))
  [Called By]

  - >> prvTimerTask

  prvTimerTask (Thumb, 26 bytes, Stack size 8 bytes, timers.o(privileged_functions))
  [Stack]

  - Max Depth = 224
  - Call Chain = prvTimerTask ⇒ prvProcessReceivedCommands ⇒ prvSampleTimeNow ⇒ prvSwitchTimerLists ⇒ xTimerGenericCommand ⇒ xQueueGenericSendFromISR ⇒ prvCopyDataToQueue ⇒ xTaskPriorityDisinherit
  [Calls]
  - >> prvGetNextExpireTime
  - >> prvProcessTimerOrBlockTask
  - >> prvProcessReceivedCommands
  [Address Reference Count : 1]
  - timers.o(privileged_functions)

  prvCheckForValidListAndQueue (Thumb, 90 bytes, Stack size 8 bytes, timers.o(privileged_functions))
  [Stack]

  - Max Depth = 112
  - Call Chain = prvCheckForValidListAndQueue ⇒ xQueueGenericCreate ⇒ pvPortMalloc ⇒ xTaskResumeAll ⇒ xTaskIncrementTick
  [Calls]
  - >> vQueueAddToRegistry
  - >> xQueueGenericCreate
  - >> vListInitialise
  - >> vPortExitCritical
  - >> vPortEnterCritical
  [Called By]
  - >> xTimerCreateTimerTask
  - >> xTimerCreate

  prvSetupTimerInterrupt (Thumb, 26 bytes, Stack size 8 bytes, port.o(i.prvSetupTimerInterrupt))
  [Stack]

  - Max Depth = 20
  - Call Chain = prvSetupTimerInterrupt ⇒ __aeabi_uidivmod
  [Calls]
  - >> __aeabi_uidivmod
  [Called By]
  - >> xPortStartScheduler

  prvTaskExitError (Thumb, 32 bytes, Stack size 0 bytes, port.o(i.prvTaskExitError))
  [Address Reference Count : 1]

  - port.o(privileged_functions)

  prvHeapInit (Thumb, 98 bytes, Stack size 12 bytes, heap_4.o(i.prvHeapInit))
  [Stack]

  - Max Depth = 12
  - Call Chain = prvHeapInit
  [Called By]
  - >> pvPortMalloc

  prvInsertBlockIntoFreeList (Thumb, 96 bytes, Stack size 8 bytes, heap_4.o(i.prvInsertBlockIntoFreeList))
  [Stack]

  - Max Depth = 8
  - Call Chain = prvInsertBlockIntoFreeList
  [Called By]
  - >> vPortFree
  - >> pvPortMalloc

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

  - >> osSemaphoreWait
  - >> osSemaphoreRelease

  _printf_core (Thumb, 1020 bytes, Stack size 104 bytes, printf8.o(i._printf_core), UNUSED)
  [Calls]

  - >> _printf_pre_padding
  - >> _printf_post_padding
  - >> __aeabi_uldivmod
  [Called By]
  - >> __0sprintf$8

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

  - >> _printf_core

  _printf_pre_padding (Thumb, 44 bytes, Stack size 40 bytes, printf8.o(i._printf_pre_padding), UNUSED)
  [Called By]

  - >> _printf_core

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

  - >> __0sprintf$8
  [Address Reference Count : 1]
  - printf8.o(i.__0sprintf$8)

  ### Undefined Global Symbols