knl_idle_entry ⇒ knl_idle_entry
+
+
+
+Function Pointers
+
+ - ADC1_COMP_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- DMA1_Channel1_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- DMA1_Channel2_3_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- DMA1_Channel4_5_6_7_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- EXTI0_1_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- EXTI2_3_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- EXTI4_15_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- FLASH_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- HardFault_Handler from stm32l0xx_it_lorawan.o(i.HardFault_Handler) referenced from startup_stm32l073xx.o(RESET)
+
- I2C1_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- I2C2_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- I2C3_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- LCD_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- LPTIM1_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- NMI_Handler from stm32l0xx_it_lorawan.o(i.NMI_Handler) referenced from startup_stm32l073xx.o(RESET)
+
- PVD_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- PendSV_Handler from port_s.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- RCC_CRS_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- RNG_LPUART1_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- RTC_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- Reset_Handler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- SPI1_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- SPI2_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- SVC_Handler from stm32l0xx_it_lorawan.o(i.SVC_Handler) referenced from startup_stm32l073xx.o(RESET)
+
- SysTick_Handler from stm32l0xx_it_lorawan.o(i.SysTick_Handler) referenced from startup_stm32l073xx.o(RESET)
+
- SystemInit from system_stm32l0xx.o(i.SystemInit) referenced from startup_stm32l073xx.o(.text)
+
- TIM21_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- TIM22_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- TIM2_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- TIM3_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- TIM6_DAC_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- TIM7_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- TSC_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- UART_DMAAbortOnError from stm32l0xx_hal_uart.o(i.UART_DMAAbortOnError) referenced from stm32l0xx_hal_uart.o(i.HAL_UART_IRQHandler)
+
- USART1_IRQHandler from stm32l0xx_it_lorawan.o(i.USART1_IRQHandler) referenced from startup_stm32l073xx.o(RESET)
+
- USART2_IRQHandler from stm32l0xx_it_lorawan.o(i.USART2_IRQHandler) referenced from startup_stm32l073xx.o(RESET)
+
- USART4_5_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- USB_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- WWDG_IRQHandler from startup_stm32l073xx.o(.text) referenced from startup_stm32l073xx.o(RESET)
+
- __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32l073xx.o(.text)
+
- _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0snprintf)
+
- _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0vsnprintf)
+
- application_entry from lora_demo.o(i.application_entry) referenced from main.o(.constdata)
+
- at_parser from tos_at.o(i.at_parser) referenced from tos_at.o(i.tos_at_init)
+
- fputc from mcu_init.o(i.fputc) referenced from printfa.o(i.__0printf)
+
- knl_idle_entry from tos_sys.o(i.knl_idle_entry) referenced from tos_sys.o(i.knl_idle_init)
+
- main from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)
+
- recv_callback from lora_demo.o(i.recv_callback) referenced from lora_demo.o(i.application_entry)
+
- rhf76_close from rhf76.o(i.rhf76_close) referenced from rhf76.o(.data)
+
- rhf76_incoming_data_process from rhf76.o(i.rhf76_incoming_data_process) referenced 2 times from rhf76.o(.data)
+
- rhf76_init from rhf76.o(i.rhf76_init) referenced from rhf76.o(.data)
+
- rhf76_join_abp from rhf76.o(i.rhf76_join_abp) referenced from rhf76.o(.data)
+
- rhf76_join_otaa from rhf76.o(i.rhf76_join_otaa) referenced from rhf76.o(.data)
+
- rhf76_send from rhf76.o(i.rhf76_send) referenced from rhf76.o(.data)
+
- rhf76_send_unconfirmed from rhf76.o(i.rhf76_send_unconfirmed) referenced from rhf76.o(.data)
+
- task_exit from tos_task.o(i.task_exit) referenced from tos_task.o(i.tos_task_create)
+
+
+
+Global Symbols
+
+__main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
+
[Address Reference Count : 1]
- startup_stm32l073xx.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]
+
+__main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
+
[Called By]
+
+_main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))
+
+
_main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))
+
+
_main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))
+
+
__rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))
+
+
__rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))
+
+
Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+ADC1_COMP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Calls]
- >> ADC1_COMP_IRQHandler
+
+
[Called By]- >> ADC1_COMP_IRQHandler
+
+
[Address Reference Count : 1]- startup_stm32l073xx.o(RESET)
+
+DMA1_Channel1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+DMA1_Channel2_3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+DMA1_Channel4_5_6_7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+EXTI0_1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+EXTI2_3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+EXTI4_15_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+FLASH_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+I2C1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+I2C2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+I2C3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+LCD_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+LPTIM1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+PVD_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+RCC_CRS_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+RNG_LPUART1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+RTC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+SPI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+SPI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+TIM21_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+TIM22_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+TIM2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+TIM3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+TIM6_DAC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+TIM7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+TSC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+USART4_5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+USB_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+WWDG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32l073xx.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+port_int_disable (Thumb, 0 bytes, Stack size unknown bytes, port_s.o(.text), UNUSED)
+
+
port_int_enable (Thumb, 0 bytes, Stack size unknown bytes, port_s.o(.text), UNUSED)
+
+
port_cpsr_save (Thumb, 0 bytes, Stack size unknown bytes, port_s.o(.text))
+
[Called By]
+
+port_cpsr_restore (Thumb, 0 bytes, Stack size unknown bytes, port_s.o(.text))
+
[Called By]
- >> tos_cpu_cpsr_restore
+
+
+port_sched_start (Thumb, 0 bytes, Stack size unknown bytes, port_s.o(.text))
+
[Called By]
+
+port_context_switch (Thumb, 0 bytes, Stack size unknown bytes, port_s.o(.text))
+
[Called By]
+
+port_irq_context_switch (Thumb, 0 bytes, Stack size unknown bytes, port_s.o(.text))
+
[Called By]
- >> cpu_irq_context_switch
+
+
+PendSV_Handler (Thumb, 0 bytes, Stack size unknown bytes, port_s.o(.text))
+
[Address Reference Count : 1]
- startup_stm32l073xx.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
+
- >> HAL_RCC_GetSysClockFreq
+
- >> HAL_RCCEx_GetPeriphCLKFreq
+
- >> UART_SetConfig
+
- >> tos_ring_q_enqueue
+
- >> tos_ring_q_dequeue
+
- >> _printf_core
+
- >> __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]
+
[Called By]- >> HTS221_Get_Temperature
+
- >> HTS221_Get_Humidity
+
+
+__aeabi_uldivmod (Thumb, 96 bytes, Stack size 48 bytes, uldiv.o(.text))
+
[Stack]
- Max Depth = 56
- Call Chain = __aeabi_uldivmod ⇒ __aeabi_llsr
+
+
[Calls]- >> __aeabi_llsr
+
- >> __aeabi_llsl
+
+
[Called By]- >> UART_SetConfig
+
- >> cpu_init
+
- >> tos_millisec2tick
+
- >> _printf_core
+
- >> _fp_digits
+
+
+__aeabi_memcpy (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text))
+
[Called By]
- >> tos_ring_q_enqueue
+
- >> tos_ring_q_dequeue
+
- >> at_parser
+
- >> application_entry
+
+
+__aeabi_memcpy4 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text))
+
[Called By]
- >> BSP_Sensor_Read
+
- >> application_entry
+
+
+__aeabi_memcpy8 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)
+
+
__aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text))
+
[Called By]
- >> _memset$wrapper
+
- >> __aeabi_memclr
+
+
+__aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
+
+
__aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
+
+
__aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text))
+
[Calls]
+
[Called By]- >> tos_mmheap_calloc
+
- >> at_uart_line_parse
+
- >> tos_at_echo_fuzzy_matching_create
+
- >> tos_at_echo_create
+
- >> rhf76_incoming_data_process
+
+
+__aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
+
[Called By]
- >> HAL_I2C_MspInit
+
- >> SystemClock_Config
+
- >> HAL_UART_MspInit
+
- >> MX_GPIO_Init
+
- >> tos_at_init
+
- >> rhf76_set_key
+
- >> rhf76_set_id
+
- >> rhf76_send_unconfirmed
+
- >> rhf76_send
+
- >> write_config_to_Flash
+
- >> application_entry
+
+
+__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]
+
+strstr (Thumb, 40 bytes, Stack size 12 bytes, strstr.o(.text))
+
[Stack]
- Max Depth = 12
- Call Chain = strstr
+
+
[Called By]- >> at_uart_line_parse
+
- >> at_parser
+
+
+strncpy (Thumb, 26 bytes, Stack size 8 bytes, strncpy.o(.text))
+
[Stack]
- Max Depth = 8
- Call Chain = strncpy
+
+
[Called By]
+
+strlen (Thumb, 14 bytes, Stack size 0 bytes, strlen.o(.text))
+
[Called By]
- >> at_uart_line_parse
+
- >> at_get_event
+
- >> rhf76_incoming_data_process
+
+
+strncmp (Thumb, 30 bytes, Stack size 12 bytes, strncmp.o(.text))
+
[Stack]
- Max Depth = 12
- Call Chain = strncmp
+
+
[Called By]- >> at_uart_line_parse
+
- >> at_get_event
+
+
+__aeabi_uwrite4 (Thumb, 18 bytes, Stack size 0 bytes, uwrite4.o(.text))
+
[Called By]
+
+__rt_uwrite4 (Thumb, 0 bytes, Stack size 0 bytes, uwrite4.o(.text), UNUSED)
+
+
_uwrite4 (Thumb, 0 bytes, Stack size 0 bytes, uwrite4.o(.text), UNUSED)
+
+
__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_dsub
+
- >> print_to_screen
+
- >> __kernel_poly
+
- >> __mathlib_dbl_infnan2
+
- >> _fp_digits
+
- >> __aeabi_drsub
+
- >> pow
+
+
+__aeabi_dsub (Thumb, 12 bytes, Stack size 8 bytes, dadd.o(.text))
+
[Stack]
- Max Depth = 112
- Call Chain = __aeabi_dsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr
+
+
[Calls]
+
[Called By]- >> print_to_screen
+
- >> pow
+
+
+__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]
+
[Called By]
+
+__aeabi_dmul (Thumb, 202 bytes, Stack size 72 bytes, dmul.o(.text))
+
[Stack]
- Max Depth = 128
- Call Chain = __aeabi_dmul ⇒ _double_epilogue ⇒ __aeabi_llsr
+
+
[Calls]
+
[Called By]- >> print_to_screen
+
- >> __kernel_poly
+
- >> _fp_digits
+
- >> pow
+
+
+__aeabi_ddiv (Thumb, 234 bytes, Stack size 40 bytes, ddiv.o(.text))
+
[Stack]
- Max Depth = 48
- Call Chain = __aeabi_ddiv ⇒ _double_round
+
+
[Calls]
+
[Called By]- >> print_to_screen
+
- >> __mathlib_dbl_invalid
+
- >> __mathlib_dbl_divzero
+
- >> _fp_digits
+
- >> pow
+
+
+__aeabi_i2d (Thumb, 34 bytes, Stack size 16 bytes, dflti.o(.text))
+
[Stack]
- Max Depth = 72
- Call Chain = __aeabi_i2d ⇒ _double_epilogue ⇒ __aeabi_llsr
+
+
[Calls]
+
[Called By]- >> print_to_screen
+
- >> pow
+
+
+__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]
+
[Called By]
+
+__aeabi_f2d (Thumb, 40 bytes, Stack size 0 bytes, f2d.o(.text))
+
[Called By]
+
+__aeabi_d2f (Thumb, 56 bytes, Stack size 8 bytes, d2f.o(.text))
+
[Stack]
- Max Depth = 8
- Call Chain = __aeabi_d2f
+
+
[Calls]
+
[Called By]
+
+__aeabi_llsl (Thumb, 32 bytes, Stack size 8 bytes, llshl.o(.text))
+
[Stack]
- Max Depth = 8
- Call Chain = __aeabi_llsl
+
+
[Called By]- >> __aeabi_dadd
+
- >> _double_epilogue
+
- >> __aeabi_d2ulz
+
- >> __aeabi_uldivmod
+
+
+_ll_shift_l (Thumb, 0 bytes, Stack size 8 bytes, llshl.o(.text), UNUSED)
+
+
__aeabi_llsr (Thumb, 34 bytes, Stack size 8 bytes, llushr.o(.text))
+
[Stack]
- Max Depth = 8
- Call Chain = __aeabi_llsr
+
+
[Called By]- >> _dsqrt
+
- >> _double_epilogue
+
- >> __aeabi_d2ulz
+
- >> __aeabi_uldivmod
+
+
+_ll_ushift_r (Thumb, 0 bytes, Stack size 8 bytes, llushr.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]
+
+_ll_sshift_r (Thumb, 0 bytes, Stack size 8 bytes, llsshr.o(.text), UNUSED)
+
+
__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]
+
+_float_epilogue (Thumb, 114 bytes, Stack size 12 bytes, fepilogue.o(.text), UNUSED)
+
+
_double_round (Thumb, 26 bytes, Stack size 8 bytes, depilogue.o(.text))
+
[Stack]
- Max Depth = 8
- Call Chain = _double_round
+
+
[Called By]- >> __aeabi_ddiv
+
- >> __aeabi_dadd
+
- >> _dsqrt
+
- >> _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]- >> __ARM_clz
+
- >> __aeabi_llsr
+
- >> __aeabi_llsl
+
- >> _double_round
+
+
[Called By]- >> __aeabi_ui2d
+
- >> __aeabi_i2d
+
- >> __aeabi_dmul
+
- >> __aeabi_dadd
+
+
+__ARM_scalbn (Thumb, 44 bytes, Stack size 16 bytes, dscalb.o(.text))
+
[Stack]
- Max Depth = 16
- Call Chain = __ARM_scalbn
+
+
[Called By]- >> __mathlib_dbl_underflow
+
- >> __mathlib_dbl_overflow
+
- >> pow
+
+
+scalbn (Thumb, 0 bytes, Stack size 16 bytes, dscalb.o(.text), UNUSED)
+
+
__aeabi_d2ulz (Thumb, 54 bytes, Stack size 8 bytes, dfixul.o(.text), UNUSED)
+
[Calls]
- >> __aeabi_llsr
+
- >> __aeabi_llsl
+
+
[Called By]
+
+__aeabi_cdrcmple (Thumb, 38 bytes, Stack size 0 bytes, cdrcmple.o(.text))
+
[Called By]
+
+__scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text))
+
[Calls]
- >> __main_after_scatterload
+
+
[Called By]
+
+__scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
+
+
_dsqrt (Thumb, 162 bytes, Stack size 32 bytes, dsqrt.o(.text))
+
[Stack]
- Max Depth = 40
- Call Chain = _dsqrt ⇒ __aeabi_llsr
+
+
[Calls]- >> __aeabi_llsr
+
- >> _double_round
+
+
[Called By]
+
+BSP_Sensor_Init (Thumb, 44 bytes, Stack size 16 bytes, bsp.o(i.BSP_Sensor_Init))
+
[Stack]
- Max Depth = 176
- Call Chain = BSP_Sensor_Init ⇒ LSM6DS3_Init ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> LSM6DS3_Set_Gyro_FullScale
+
- >> LSM6DS3_Set_Accel_FullScale
+
- >> LSM6DS3_Init
+
- >> LPS22HB_Init
+
- >> LIS3MDL_Set_FullScale
+
- >> LIS3MDL_Init
+
- >> HTS221_Init
+
+
[Called By]
+
+BSP_Sensor_Read (Thumb, 54 bytes, Stack size 40 bytes, bsp.o(i.BSP_Sensor_Read))
+
[Stack]
- Max Depth = 272
- Call Chain = BSP_Sensor_Read ⇒ HTS221_Get_TemperatureAndHumidity ⇒ HTS221_Get_Temperature ⇒ HTS221_Start ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> LPS22HB_Get_Press
+
- >> LIS3MDL_Get_Magn
+
- >> HTS221_Get_TemperatureAndHumidity
+
- >> __aeabi_memcpy4
+
+
[Called By]
+
+Error_Handler (Thumb, 2 bytes, Stack size 0 bytes, mcu_init.o(i.Error_Handler))
+
[Called By]
- >> MX_I2C1_Init
+
- >> MX_USART2_UART_Init
+
- >> MX_USART1_UART_Init
+
+
+FLASH_WaitForLastOperation (Thumb, 106 bytes, Stack size 16 bytes, stm32l0xx_hal_flash.o(i.FLASH_WaitForLastOperation))
+
[Stack]
- Max Depth = 24
- Call Chain = FLASH_WaitForLastOperation ⇒ FLASH_SetErrorCode
+
+
[Calls]- >> HAL_GetTick
+
- >> FLASH_SetErrorCode
+
+
[Called By]- >> HAL_FLASH_ReadWord
+
- >> HAL_FLASH_Program
+
+
+HAL_DMA_Abort_IT (Thumb, 148 bytes, Stack size 16 bytes, stm32l0xx_hal_dma.o(i.HAL_DMA_Abort_IT))
+
[Stack]
- Max Depth = 16
- Call Chain = HAL_DMA_Abort_IT
+
+
[Called By]
+
+HAL_FLASH_Lock (Thumb, 14 bytes, Stack size 0 bytes, stm32l0xx_hal_flash.o(i.HAL_FLASH_Lock))
+
[Called By]
- >> write_config_to_Flash
+
+
+HAL_FLASH_Program (Thumb, 50 bytes, Stack size 24 bytes, stm32l0xx_hal_flash.o(i.HAL_FLASH_Program))
+
[Stack]
- Max Depth = 48
- Call Chain = HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation ⇒ FLASH_SetErrorCode
+
+
[Calls]- >> FLASH_WaitForLastOperation
+
+
[Called By]- >> write_config_to_Flash
+
+
+HAL_FLASH_ReadWord (Thumb, 22 bytes, Stack size 16 bytes, stm32l0xx_hal_flash_ex2.o(i.HAL_FLASH_ReadWord))
+
[Stack]
- Max Depth = 40
- Call Chain = HAL_FLASH_ReadWord ⇒ FLASH_WaitForLastOperation ⇒ FLASH_SetErrorCode
+
+
[Calls]- >> FLASH_WaitForLastOperation
+
+
[Called By]- >> read_config_from_Flash
+
+
+HAL_FLASH_Unlock (Thumb, 38 bytes, Stack size 0 bytes, stm32l0xx_hal_flash.o(i.HAL_FLASH_Unlock))
+
[Called By]
- >> write_config_to_Flash
+
+
+HAL_GPIO_DeInit (Thumb, 212 bytes, Stack size 20 bytes, stm32l0xx_hal_gpio.o(i.HAL_GPIO_DeInit))
+
[Stack]
- Max Depth = 20
- Call Chain = HAL_GPIO_DeInit
+
+
[Called By]
+
+HAL_GPIO_Init (Thumb, 356 bytes, Stack size 24 bytes, stm32l0xx_hal_gpio.o(i.HAL_GPIO_Init))
+
[Stack]
- Max Depth = 24
- Call Chain = HAL_GPIO_Init
+
+
[Called By]- >> HAL_I2C_MspInit
+
- >> HAL_UART_MspInit
+
- >> MX_GPIO_Init
+
+
+HAL_GPIO_WritePin (Thumb, 12 bytes, Stack size 0 bytes, stm32l0xx_hal_gpio.o(i.HAL_GPIO_WritePin))
+
[Called By]
+
+HAL_GetTick (Thumb, 6 bytes, Stack size 0 bytes, stm32l0xx_hal.o(i.HAL_GetTick))
+
[Called By]
- >> HAL_I2C_Mem_Write
+
- >> HAL_I2C_Mem_Read
+
- >> HAL_UART_Transmit
+
- >> HAL_RCC_OscConfig
+
- >> HAL_RCC_ClockConfig
+
- >> HAL_RCCEx_PeriphCLKConfig
+
- >> I2C_WaitOnTXISFlagUntilTimeout
+
- >> I2C_WaitOnSTOPFlagUntilTimeout
+
- >> I2C_WaitOnFlagUntilTimeout
+
- >> I2C_IsAcknowledgeFailed
+
- >> UART_WaitOnFlagUntilTimeout
+
- >> UART_CheckIdleState
+
- >> FLASH_WaitForLastOperation
+
+
+HAL_I2CEx_ConfigAnalogFilter (Thumb, 74 bytes, Stack size 16 bytes, stm32l0xx_hal_i2c_ex.o(i.HAL_I2CEx_ConfigAnalogFilter))
+
[Stack]
- Max Depth = 16
- Call Chain = HAL_I2CEx_ConfigAnalogFilter
+
+
[Called By]
+
+HAL_I2CEx_ConfigDigitalFilter (Thumb, 72 bytes, Stack size 16 bytes, stm32l0xx_hal_i2c_ex.o(i.HAL_I2CEx_ConfigDigitalFilter))
+
[Stack]
- Max Depth = 16
- Call Chain = HAL_I2CEx_ConfigDigitalFilter
+
+
[Called By]
+
+HAL_I2C_Init (Thumb, 176 bytes, Stack size 16 bytes, stm32l0xx_hal_i2c.o(i.HAL_I2C_Init))
+
[Stack]
- Max Depth = 72
- Call Chain = HAL_I2C_Init ⇒ HAL_I2C_MspInit ⇒ HAL_GPIO_Init
+
+
[Calls]
+
[Called By]
+
+HAL_I2C_Mem_Read (Thumb, 338 bytes, Stack size 48 bytes, stm32l0xx_hal_i2c.o(i.HAL_I2C_Mem_Read))
+
[Stack]
- Max Depth = 120
- Call Chain = HAL_I2C_Mem_Read ⇒ I2C_RequestMemoryRead ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> I2C_WaitOnSTOPFlagUntilTimeout
+
- >> I2C_WaitOnFlagUntilTimeout
+
- >> I2C_TransferConfig
+
- >> I2C_RequestMemoryRead
+
- >> HAL_GetTick
+
+
[Called By]- >> LIS3MDL_Get_FullScale
+
- >> LSM6DS3_Set_Gyro_FullScale
+
- >> LSM6DS3_Set_Accel_FullScale
+
- >> LPS22HB_Get_Press
+
- >> LIS3MDL_Set_FullScale
+
- >> LIS3MDL_Get_Magn
+
- >> HTS221_Get_Temperature
+
- >> HTS221_Get_Humidity
+
- >> HTS221_Start
+
+
+HAL_I2C_Mem_Write (Thumb, 334 bytes, Stack size 48 bytes, stm32l0xx_hal_i2c.o(i.HAL_I2C_Mem_Write))
+
[Stack]
- Max Depth = 120
- Call Chain = HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> I2C_WaitOnTXISFlagUntilTimeout
+
- >> I2C_WaitOnSTOPFlagUntilTimeout
+
- >> I2C_WaitOnFlagUntilTimeout
+
- >> I2C_TransferConfig
+
- >> I2C_RequestMemoryWrite
+
- >> HAL_GetTick
+
+
[Called By]- >> LSM6DS3_Set_Gyro_FullScale
+
- >> LSM6DS3_Set_Accel_FullScale
+
- >> LSM6DS3_Init
+
- >> LPS22HB_Init
+
- >> LPS22HB_Get_Press
+
- >> LIS3MDL_Set_FullScale
+
- >> LIS3MDL_Init
+
- >> HTS221_Init
+
- >> HTS221_Start
+
+
+HAL_I2C_MspInit (Thumb, 82 bytes, Stack size 32 bytes, i2c.o(i.HAL_I2C_MspInit))
+
[Stack]
- Max Depth = 56
- Call Chain = HAL_I2C_MspInit ⇒ HAL_GPIO_Init
+
+
[Calls]- >> HAL_GPIO_Init
+
- >> __aeabi_memclr4
+
+
[Called By]
+
+HAL_IncTick (Thumb, 10 bytes, Stack size 0 bytes, stm32l0xx_hal.o(i.HAL_IncTick))
+
[Called By]
+
+HAL_Init (Thumb, 26 bytes, Stack size 8 bytes, stm32l0xx_hal.o(i.HAL_Init))
+
[Stack]
- Max Depth = 28
- Call Chain = HAL_Init ⇒ HAL_InitTick ⇒ __aeabi_uidivmod
+
+
[Calls]- >> HAL_MspInit
+
- >> HAL_InitTick
+
+
[Called By]
+
+HAL_InitTick (Thumb, 34 bytes, Stack size 8 bytes, stm32l0xx_hal.o(i.HAL_InitTick))
+
[Stack]
- Max Depth = 20
- Call Chain = HAL_InitTick ⇒ __aeabi_uidivmod
+
+
[Calls]- >> HAL_NVIC_SetPriority
+
- >> HAL_SYSTICK_Config
+
- >> __aeabi_uidivmod
+
+
[Called By]- >> HAL_RCC_OscConfig
+
- >> HAL_RCC_ClockConfig
+
- >> HAL_Init
+
+
+HAL_MspInit (Thumb, 20 bytes, Stack size 0 bytes, stm32l0xx_hal_msp.o(i.HAL_MspInit))
+
[Called By]
+
+HAL_NVIC_DisableIRQ (Thumb, 26 bytes, Stack size 0 bytes, stm32l0xx_hal_cortex.o(i.HAL_NVIC_DisableIRQ))
+
[Called By]
+
+HAL_NVIC_EnableIRQ (Thumb, 18 bytes, Stack size 0 bytes, stm32l0xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ))
+
[Called By]
+
+HAL_NVIC_SetPriority (Thumb, 8 bytes, Stack size 8 bytes, stm32l0xx_hal_cortex.o(i.HAL_NVIC_SetPriority))
+
[Stack]
- Max Depth = 8
- Call Chain = HAL_NVIC_SetPriority
+
+
[Calls]
+
[Called By]- >> HAL_UART_MspInit
+
- >> HAL_InitTick
+
+
+HAL_RCCEx_GetPeriphCLKFreq (Thumb, 414 bytes, Stack size 24 bytes, stm32l0xx_hal_rcc_ex.o(i.HAL_RCCEx_GetPeriphCLKFreq))
+
[Stack]
- Max Depth = 44
- Call Chain = HAL_RCCEx_GetPeriphCLKFreq ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
+
+
[Calls]- >> HAL_RCC_GetSysClockFreq
+
- >> HAL_RCC_GetPCLK2Freq
+
- >> HAL_RCC_GetPCLK1Freq
+
- >> __aeabi_uidivmod
+
+
[Called By]
+
+HAL_RCCEx_PeriphCLKConfig (Thumb, 416 bytes, Stack size 24 bytes, stm32l0xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig))
+
[Stack]
- Max Depth = 24
- Call Chain = HAL_RCCEx_PeriphCLKConfig
+
+
[Calls]
+
[Called By]
+
+HAL_RCC_ClockConfig (Thumb, 340 bytes, Stack size 24 bytes, stm32l0xx_hal_rcc.o(i.HAL_RCC_ClockConfig))
+
[Stack]
- Max Depth = 44
- Call Chain = HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ __aeabi_uidivmod
+
+
[Calls]- >> HAL_InitTick
+
- >> HAL_RCC_GetSysClockFreq
+
- >> HAL_GetTick
+
+
[Called By]
+
+HAL_RCC_GetPCLK1Freq (Thumb, 20 bytes, Stack size 0 bytes, stm32l0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq))
+
[Called By]
- >> HAL_RCCEx_GetPeriphCLKFreq
+
- >> UART_SetConfig
+
+
+HAL_RCC_GetPCLK2Freq (Thumb, 20 bytes, Stack size 0 bytes, stm32l0xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq))
+
[Called By]
- >> HAL_RCCEx_GetPeriphCLKFreq
+
- >> UART_SetConfig
+
+
+HAL_RCC_GetSysClockFreq (Thumb, 100 bytes, Stack size 8 bytes, stm32l0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq))
+
[Stack]
- Max Depth = 20
- Call Chain = HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
+
+
[Calls]
+
[Called By]- >> HAL_RCC_ClockConfig
+
- >> HAL_RCCEx_GetPeriphCLKFreq
+
- >> UART_SetConfig
+
+
+HAL_RCC_OscConfig (Thumb, 1106 bytes, Stack size 24 bytes, stm32l0xx_hal_rcc.o(i.HAL_RCC_OscConfig))
+
[Stack]
- Max Depth = 44
- Call Chain = HAL_RCC_OscConfig ⇒ HAL_InitTick ⇒ __aeabi_uidivmod
+
+
[Calls]- >> HAL_InitTick
+
- >> HAL_GetTick
+
- >> RCC_SetFlashLatencyFromMSIRange
+
+
[Called By]
+
+HAL_SYSTICK_Config (Thumb, 38 bytes, Stack size 8 bytes, stm32l0xx_hal_cortex.o(i.HAL_SYSTICK_Config))
+
[Stack]
- Max Depth = 8
- Call Chain = HAL_SYSTICK_Config
+
+
[Calls]
+
[Called By]
+
+HAL_UARTEx_WakeupCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32l0xx_hal_uart_ex.o(i.HAL_UARTEx_WakeupCallback))
+
[Called By]
+
+HAL_UART_DeInit (Thumb, 62 bytes, Stack size 16 bytes, stm32l0xx_hal_uart.o(i.HAL_UART_DeInit))
+
[Stack]
- Max Depth = 44
- Call Chain = HAL_UART_DeInit ⇒ HAL_UART_MspDeInit ⇒ HAL_GPIO_DeInit
+
+
[Calls]
+
[Called By]
+
+HAL_UART_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32l0xx_hal_uart.o(i.HAL_UART_ErrorCallback))
+
[Called By]
- >> HAL_UART_IRQHandler
+
- >> UART_DMAAbortOnError
+
+
+HAL_UART_IRQHandler (Thumb, 318 bytes, Stack size 24 bytes, stm32l0xx_hal_uart.o(i.HAL_UART_IRQHandler))
+
[Stack]
- Max Depth = 152 + Unknown Stack Size
+
- Call Chain = HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ tos_at_uart_input_byte ⇒ tos_sem_post ⇒ sem_do_post ⇒ pend_wakeup ⇒ pend_wakeup_all ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> HAL_UART_TxCpltCallback
+
- >> HAL_UART_ErrorCallback
+
- >> HAL_UARTEx_WakeupCallback
+
- >> HAL_DMA_Abort_IT
+
- >> UART_Transmit_IT
+
- >> UART_Receive_IT
+
- >> UART_EndRxTransfer
+
+
[Called By]- >> USART2_IRQHandler
+
- >> USART1_IRQHandler
+
+
+HAL_UART_Init (Thumb, 108 bytes, Stack size 16 bytes, stm32l0xx_hal_uart.o(i.HAL_UART_Init))
+
[Stack]
- Max Depth = 104
- Call Chain = HAL_UART_Init ⇒ UART_SetConfig ⇒ __aeabi_uldivmod ⇒ __aeabi_llsr
+
+
[Calls]- >> HAL_UART_MspInit
+
- >> UART_SetConfig
+
- >> UART_CheckIdleState
+
- >> UART_AdvFeatureConfig
+
+
[Called By]- >> MX_USART2_UART_Init
+
- >> MX_USART1_UART_Init
+
+
+HAL_UART_MspDeInit (Thumb, 68 bytes, Stack size 8 bytes, usart.o(i.HAL_UART_MspDeInit))
+
[Stack]
- Max Depth = 28
- Call Chain = HAL_UART_MspDeInit ⇒ HAL_GPIO_DeInit
+
+
[Calls]- >> HAL_NVIC_DisableIRQ
+
- >> HAL_GPIO_DeInit
+
+
[Called By]- >> HAL_UART_DeInit
+
- >> tos_hal_uart_deinit
+
+
+HAL_UART_MspInit (Thumb, 158 bytes, Stack size 48 bytes, usart.o(i.HAL_UART_MspInit))
+
[Stack]
- Max Depth = 72
- Call Chain = HAL_UART_MspInit ⇒ HAL_GPIO_Init
+
+
[Calls]- >> HAL_NVIC_SetPriority
+
- >> HAL_NVIC_EnableIRQ
+
- >> HAL_GPIO_Init
+
- >> __aeabi_memclr4
+
+
[Called By]
+
+HAL_UART_Receive_IT (Thumb, 154 bytes, Stack size 20 bytes, stm32l0xx_hal_uart.o(i.HAL_UART_Receive_IT))
+
[Stack]
- Max Depth = 20
- Call Chain = HAL_UART_Receive_IT
+
+
[Called By]- >> HAL_UART_RxCpltCallback
+
- >> MX_USART1_UART_Init
+
+
+HAL_UART_RxCpltCallback (Thumb, 30 bytes, Stack size 8 bytes, stm32l0xx_it_lorawan.o(i.HAL_UART_RxCpltCallback))
+
[Stack]
- Max Depth = 112 + Unknown Stack Size
+
- Call Chain = HAL_UART_RxCpltCallback ⇒ tos_at_uart_input_byte ⇒ tos_sem_post ⇒ sem_do_post ⇒ pend_wakeup ⇒ pend_wakeup_all ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_at_uart_input_byte
+
- >> HAL_UART_Receive_IT
+
+
[Called By]
+
+HAL_UART_Transmit (Thumb, 200 bytes, Stack size 48 bytes, stm32l0xx_hal_uart.o(i.HAL_UART_Transmit))
+
[Stack]
- Max Depth = 88
- Call Chain = HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
+
+
[Calls]- >> HAL_GetTick
+
- >> UART_WaitOnFlagUntilTimeout
+
+
[Called By]- >> fputc
+
- >> tos_hal_uart_write
+
+
+HAL_UART_TxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32l0xx_hal_uart.o(i.HAL_UART_TxCpltCallback))
+
[Called By]
+
+HTS221_Get_Humidity (Thumb, 290 bytes, Stack size 56 bytes, hts221.o(i.HTS221_Get_Humidity))
+
[Stack]
- Max Depth = 208
- Call Chain = HTS221_Get_Humidity ⇒ HTS221_Start ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> HAL_I2C_Mem_Read
+
- >> HTS221_Start
+
- >> __aeabi_idivmod
+
+
[Called By]- >> HTS221_Get_TemperatureAndHumidity
+
+
+HTS221_Get_Temperature (Thumb, 318 bytes, Stack size 64 bytes, hts221.o(i.HTS221_Get_Temperature))
+
[Stack]
- Max Depth = 216
- Call Chain = HTS221_Get_Temperature ⇒ HTS221_Start ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> HAL_I2C_Mem_Read
+
- >> HTS221_Start
+
- >> __aeabi_idivmod
+
+
[Called By]- >> HTS221_Get_TemperatureAndHumidity
+
+
+HTS221_Get_TemperatureAndHumidity (Thumb, 42 bytes, Stack size 16 bytes, hts221.o(i.HTS221_Get_TemperatureAndHumidity))
+
[Stack]
- Max Depth = 232
- Call Chain = HTS221_Get_TemperatureAndHumidity ⇒ HTS221_Get_Temperature ⇒ HTS221_Start ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> HTS221_Get_Temperature
+
- >> HTS221_Get_Humidity
+
+
[Called By]
+
+HTS221_Init (Thumb, 106 bytes, Stack size 40 bytes, hts221.o(i.HTS221_Init))
+
[Stack]
- Max Depth = 160
- Call Chain = HTS221_Init ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]
+
[Called By]
+
+HardFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32l0xx_it_lorawan.o(i.HardFault_Handler))
+
[Calls]
+
[Called By]
+
[Address Reference Count : 1]- startup_stm32l073xx.o(RESET)
+
+LIS3MDL_Get_FullScale (Thumb, 34 bytes, Stack size 24 bytes, lis3mdl.o(i.LIS3MDL_Get_FullScale))
+
[Stack]
- Max Depth = 144
- Call Chain = LIS3MDL_Get_FullScale ⇒ HAL_I2C_Mem_Read ⇒ I2C_RequestMemoryRead ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]
+
[Called By]
+
+LIS3MDL_Get_Magn (Thumb, 240 bytes, Stack size 56 bytes, lis3mdl.o(i.LIS3MDL_Get_Magn))
+
[Stack]
- Max Depth = 200
- Call Chain = LIS3MDL_Get_Magn ⇒ LIS3MDL_Get_FullScale ⇒ HAL_I2C_Mem_Read ⇒ I2C_RequestMemoryRead ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> LIS3MDL_Get_Sensitivity
+
- >> LIS3MDL_Get_FullScale
+
- >> HAL_I2C_Mem_Read
+
+
[Called By]
+
+LIS3MDL_Get_Sensitivity (Thumb, 36 bytes, Stack size 0 bytes, lis3mdl.o(i.LIS3MDL_Get_Sensitivity))
+
[Called By]
+
+LIS3MDL_Init (Thumb, 126 bytes, Stack size 40 bytes, lis3mdl.o(i.LIS3MDL_Init))
+
[Stack]
- Max Depth = 160
- Call Chain = LIS3MDL_Init ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]
+
[Called By]
+
+LIS3MDL_Set_FullScale (Thumb, 76 bytes, Stack size 32 bytes, lis3mdl.o(i.LIS3MDL_Set_FullScale))
+
[Stack]
- Max Depth = 152
- Call Chain = LIS3MDL_Set_FullScale ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> HAL_I2C_Mem_Write
+
- >> HAL_I2C_Mem_Read
+
+
[Called By]- >> BSP_Sensor_Init
+
- >> recv_callback
+
+
+LPS22HB_Get_Press (Thumb, 194 bytes, Stack size 56 bytes, lps22hb.o(i.LPS22HB_Get_Press))
+
[Stack]
- Max Depth = 176
- Call Chain = LPS22HB_Get_Press ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> HAL_I2C_Mem_Write
+
- >> HAL_I2C_Mem_Read
+
+
[Called By]
+
+LPS22HB_Init (Thumb, 104 bytes, Stack size 40 bytes, lps22hb.o(i.LPS22HB_Init))
+
[Stack]
- Max Depth = 160
- Call Chain = LPS22HB_Init ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]
+
[Called By]
+
+LSM6DS3_Init (Thumb, 124 bytes, Stack size 40 bytes, lsm6ds3.o(i.LSM6DS3_Init))
+
[Stack]
- Max Depth = 160
- Call Chain = LSM6DS3_Init ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]
+
[Called By]
+
+LSM6DS3_Set_Accel_FullScale (Thumb, 78 bytes, Stack size 32 bytes, lsm6ds3.o(i.LSM6DS3_Set_Accel_FullScale))
+
[Stack]
- Max Depth = 152
- Call Chain = LSM6DS3_Set_Accel_FullScale ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> HAL_I2C_Mem_Write
+
- >> HAL_I2C_Mem_Read
+
+
[Called By]
+
+LSM6DS3_Set_Gyro_FullScale (Thumb, 78 bytes, Stack size 32 bytes, lsm6ds3.o(i.LSM6DS3_Set_Gyro_FullScale))
+
[Stack]
- Max Depth = 152
- Call Chain = LSM6DS3_Set_Gyro_FullScale ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> HAL_I2C_Mem_Write
+
- >> HAL_I2C_Mem_Read
+
+
[Called By]
+
+MX_GPIO_Init (Thumb, 112 bytes, Stack size 40 bytes, gpio.o(i.MX_GPIO_Init))
+
[Stack]
- Max Depth = 64
- Call Chain = MX_GPIO_Init ⇒ HAL_GPIO_Init
+
+
[Calls]- >> HAL_GPIO_WritePin
+
- >> HAL_GPIO_Init
+
- >> __aeabi_memclr4
+
+
[Called By]
+
+MX_I2C1_Init (Thumb, 76 bytes, Stack size 8 bytes, i2c.o(i.MX_I2C1_Init))
+
[Stack]
- Max Depth = 80
- Call Chain = MX_I2C1_Init ⇒ HAL_I2C_Init ⇒ HAL_I2C_MspInit ⇒ HAL_GPIO_Init
+
+
[Calls]- >> HAL_I2C_Init
+
- >> HAL_I2CEx_ConfigDigitalFilter
+
- >> HAL_I2CEx_ConfigAnalogFilter
+
- >> Error_Handler
+
+
[Called By]
+
+MX_USART1_UART_Init (Thumb, 58 bytes, Stack size 8 bytes, usart.o(i.MX_USART1_UART_Init))
+
[Stack]
- Max Depth = 112
- Call Chain = MX_USART1_UART_Init ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ __aeabi_uldivmod ⇒ __aeabi_llsr
+
+
[Calls]- >> HAL_UART_Receive_IT
+
- >> HAL_UART_Init
+
- >> Error_Handler
+
+
[Called By]
+
+MX_USART2_UART_Init (Thumb, 48 bytes, Stack size 8 bytes, usart.o(i.MX_USART2_UART_Init))
+
[Stack]
- Max Depth = 112
- Call Chain = MX_USART2_UART_Init ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ __aeabi_uldivmod ⇒ __aeabi_llsr
+
+
[Calls]- >> HAL_UART_Init
+
- >> Error_Handler
+
+
[Called By]- >> board_init
+
- >> tos_hal_uart_init
+
+
+NMI_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32l0xx_it_lorawan.o(i.NMI_Handler))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32l0xx_it_lorawan.o(i.SVC_Handler))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(RESET)
+
+SysTick_Handler (Thumb, 28 bytes, Stack size 8 bytes, stm32l0xx_it_lorawan.o(i.SysTick_Handler))
+
[Stack]
- Max Depth = 88 + Unknown Stack Size
+
- Call Chain = SysTick_Handler ⇒ tos_tick_handler ⇒ tick_update ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_tick_handler
+
- >> tos_knl_is_running
+
- >> tos_knl_irq_leave
+
- >> tos_knl_irq_enter
+
- >> HAL_IncTick
+
+
[Address Reference Count : 1]- startup_stm32l073xx.o(RESET)
+
+SystemClock_Config (Thumb, 112 bytes, Stack size 128 bytes, mcu_init.o(i.SystemClock_Config))
+
[Stack]
- Max Depth = 172
- Call Chain = SystemClock_Config ⇒ HAL_RCC_OscConfig ⇒ HAL_InitTick ⇒ __aeabi_uidivmod
+
+
[Calls]- >> HAL_RCC_OscConfig
+
- >> HAL_RCC_ClockConfig
+
- >> HAL_RCCEx_PeriphCLKConfig
+
- >> __aeabi_memclr4
+
+
[Called By]
+
+SystemInit (Thumb, 66 bytes, Stack size 0 bytes, system_stm32l0xx.o(i.SystemInit))
+
[Address Reference Count : 1]
- startup_stm32l073xx.o(.text)
+
+UART_AdvFeatureConfig (Thumb, 202 bytes, Stack size 8 bytes, stm32l0xx_hal_uart.o(i.UART_AdvFeatureConfig))
+
[Stack]
- Max Depth = 8
- Call Chain = UART_AdvFeatureConfig
+
+
[Called By]
+
+UART_CheckIdleState (Thumb, 90 bytes, Stack size 24 bytes, stm32l0xx_hal_uart.o(i.UART_CheckIdleState))
+
[Stack]
- Max Depth = 64
- Call Chain = UART_CheckIdleState ⇒ UART_WaitOnFlagUntilTimeout
+
+
[Calls]- >> HAL_GetTick
+
- >> UART_WaitOnFlagUntilTimeout
+
+
[Called By]
+
+UART_SetConfig (Thumb, 510 bytes, Stack size 32 bytes, stm32l0xx_hal_uart.o(i.UART_SetConfig))
+
[Stack]
- Max Depth = 88
- Call Chain = UART_SetConfig ⇒ __aeabi_uldivmod ⇒ __aeabi_llsr
+
+
[Calls]- >> HAL_RCC_GetSysClockFreq
+
- >> HAL_RCC_GetPCLK2Freq
+
- >> HAL_RCC_GetPCLK1Freq
+
- >> HAL_RCCEx_GetPeriphCLKFreq
+
- >> __ARM_common_switch8
+
- >> __aeabi_uldivmod
+
- >> __aeabi_uidivmod
+
+
[Called By]
+
+UART_WaitOnFlagUntilTimeout (Thumb, 98 bytes, Stack size 40 bytes, stm32l0xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout))
+
[Stack]
- Max Depth = 40
- Call Chain = UART_WaitOnFlagUntilTimeout
+
+
[Calls]
+
[Called By]- >> HAL_UART_Transmit
+
- >> UART_CheckIdleState
+
+
+USART1_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32l0xx_it_lorawan.o(i.USART1_IRQHandler))
+
[Stack]
- Max Depth = 160 + Unknown Stack Size
+
- Call Chain = USART1_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ tos_at_uart_input_byte ⇒ tos_sem_post ⇒ sem_do_post ⇒ pend_wakeup ⇒ pend_wakeup_all ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]
+
[Address Reference Count : 1]- startup_stm32l073xx.o(RESET)
+
+USART2_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32l0xx_it_lorawan.o(i.USART2_IRQHandler))
+
[Stack]
- Max Depth = 160 + Unknown Stack Size
+
- Call Chain = USART2_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ tos_at_uart_input_byte ⇒ tos_sem_post ⇒ sem_do_post ⇒ pend_wakeup ⇒ pend_wakeup_all ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]
+
[Address Reference Count : 1]- startup_stm32l073xx.o(RESET)
+
+__0printf (Thumb, 24 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)
+
[Calls]
+
+__1printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)
+
+
__2printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf))
+
[Stack]
- Max Depth = 24
- Call Chain = __2printf
+
+
[Called By]- >> main
+
- >> at_parser
+
- >> at_cmd_do_exec
+
- >> rhf76_join_otaa
+
- >> rhf76_join_abp
+
- >> rhf76_init
+
- >> rhf76_incoming_data_process
+
- >> recv_callback
+
- >> print_to_screen
+
- >> application_entry
+
+
+__c89printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)
+
+
printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)
+
+
__0snprintf (Thumb, 46 bytes, Stack size 32 bytes, printfa.o(i.__0snprintf), UNUSED)
+
[Calls]
+
+__1snprintf (Thumb, 0 bytes, Stack size 32 bytes, printfa.o(i.__0snprintf), UNUSED)
+
+
__2snprintf (Thumb, 0 bytes, Stack size 32 bytes, printfa.o(i.__0snprintf))
+
[Stack]
- Max Depth = 32
- Call Chain = __2snprintf
+
+
[Called By]- >> rhf76_set_repeat
+
- >> rhf76_set_data_rate
+
- >> rhf76_set_key
+
- >> rhf76_set_id
+
- >> rhf76_send_unconfirmed
+
- >> rhf76_send
+
+
+__c89snprintf (Thumb, 0 bytes, Stack size 32 bytes, printfa.o(i.__0snprintf), UNUSED)
+
+
snprintf (Thumb, 0 bytes, Stack size 32 bytes, printfa.o(i.__0snprintf), UNUSED)
+
+
__0vsnprintf (Thumb, 40 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED)
+
[Calls]
+
+__1vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED)
+
+
__2vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED)
+
+
__c89vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED)
+
+
vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf))
+
[Stack]
- Max Depth = 24
- Call Chain = vsnprintf
+
+
[Called By]
+
+__ARM_clz (Thumb, 46 bytes, Stack size 0 bytes, depilogue.o(i.__ARM_clz))
+
[Called By]
+
+__ARM_common_ll_muluu (Thumb, 48 bytes, Stack size 24 bytes, tos_time.o(i.__ARM_common_ll_muluu))
+
[Stack]
- Max Depth = 24
- Call Chain = __ARM_common_ll_muluu
+
+
[Called By]
+
+__ARM_common_switch8 (Thumb, 26 bytes, Stack size 8 bytes, stm32l0xx_hal_uart.o(i.__ARM_common_switch8))
+
[Stack]
- Max Depth = 8
- Call Chain = __ARM_common_switch8
+
+
[Called By]- >> UART_SetConfig
+
- >> read_config_from_Flash
+
+
+__ARM_fpclassify (Thumb, 40 bytes, Stack size 0 bytes, fpclassify.o(i.__ARM_fpclassify))
+
[Called By]
+
+__kernel_poly (Thumb, 172 bytes, Stack size 24 bytes, poly.o(i.__kernel_poly))
+
[Stack]
- Max Depth = 152
- Call Chain = __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ __aeabi_llsr
+
+
[Calls]- >> __aeabi_dmul
+
- >> __aeabi_dadd
+
+
[Called By]
+
+__mathlib_dbl_divzero (Thumb, 16 bytes, Stack size 8 bytes, dunder.o(i.__mathlib_dbl_divzero))
+
[Stack]
- Max Depth = 56
- Call Chain = __mathlib_dbl_divzero ⇒ __aeabi_ddiv ⇒ _double_round
+
+
[Calls]
+
[Called By]
+
+__mathlib_dbl_infnan2 (Thumb, 8 bytes, Stack size 8 bytes, dunder.o(i.__mathlib_dbl_infnan2))
+
[Stack]
- Max Depth = 112
- Call Chain = __mathlib_dbl_infnan2 ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr
+
+
[Calls]
+
[Called By]
+
+__mathlib_dbl_invalid (Thumb, 16 bytes, Stack size 8 bytes, dunder.o(i.__mathlib_dbl_invalid))
+
[Stack]
- Max Depth = 56
- Call Chain = __mathlib_dbl_invalid ⇒ __aeabi_ddiv ⇒ _double_round
+
+
[Calls]
+
[Called By]
+
+__mathlib_dbl_overflow (Thumb, 16 bytes, Stack size 8 bytes, dunder.o(i.__mathlib_dbl_overflow))
+
[Stack]
- Max Depth = 24
- Call Chain = __mathlib_dbl_overflow ⇒ __ARM_scalbn
+
+
[Calls]
+
[Called By]
+
+__mathlib_dbl_underflow (Thumb, 14 bytes, Stack size 8 bytes, dunder.o(i.__mathlib_dbl_underflow))
+
[Stack]
- Max Depth = 24
- Call Chain = __mathlib_dbl_underflow ⇒ __ARM_scalbn
+
+
[Calls]
+
[Called By]
+
+__scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
+
+
__scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
+
+
__scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)
+
+
__set_errno (Thumb, 6 bytes, Stack size 0 bytes, errno.o(i.__set_errno))
+
[Called By]
+
+application_entry (Thumb, 380 bytes, Stack size 168 bytes, lora_demo.o(i.application_entry))
+
[Stack]
- Max Depth = 504 + Unknown Stack Size
+
- Call Chain = application_entry ⇒ print_to_screen ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ __aeabi_llsr
+
+
[Calls]- >> BSP_Sensor_Read
+
- >> BSP_Sensor_Init
+
- >> tos_task_delay
+
- >> tos_lora_module_send_unconfirmed
+
- >> tos_lora_module_send
+
- >> tos_lora_module_recvcb_register
+
- >> tos_lora_module_join_otaa
+
- >> rhf76_lora_init
+
- >> set_config_to_default
+
- >> read_config_from_Flash
+
- >> print_to_screen
+
- >> __aeabi_uwrite4
+
- >> __2printf
+
- >> __aeabi_memclr4
+
- >> __aeabi_memcpy4
+
- >> __aeabi_memcpy
+
+
[Address Reference Count : 1]
+at_delay (Thumb, 30 bytes, Stack size 24 bytes, tos_at_utils.o(i.at_delay))
+
[Stack]
- Max Depth = 48 + Unknown Stack Size
+
- Call Chain = at_delay ⇒ tos_systick_get ⇒ tos_cpu_cpsr_save
+
+
[Calls]
+
[Called By]- >> at_uart_getchar
+
- >> at_delay_ms
+
+
+at_delay_ms (Thumb, 12 bytes, Stack size 8 bytes, tos_at_utils.o(i.at_delay_ms))
+
[Stack]
- Max Depth = 72 + Unknown Stack Size
+
- Call Chain = at_delay_ms ⇒ tos_millisec2tick ⇒ __aeabi_uldivmod ⇒ __aeabi_llsr
+
+
[Calls]- >> tos_millisec2tick
+
- >> at_delay
+
+
[Called By]- >> rhf76_join_otaa
+
- >> rhf76_join_abp
+
- >> rhf76_init
+
- >> rhf76_lora_init
+
+
+at_timer_init (Thumb, 12 bytes, Stack size 0 bytes, tos_at_utils.o(i.at_timer_init))
+
[Called By]
+
+board_init (Thumb, 24 bytes, Stack size 8 bytes, mcu_init.o(i.board_init))
+
[Stack]
- Max Depth = 180
- Call Chain = board_init ⇒ SystemClock_Config ⇒ HAL_RCC_OscConfig ⇒ HAL_InitTick ⇒ __aeabi_uidivmod
+
+
[Calls]- >> MX_I2C1_Init
+
- >> HAL_Init
+
- >> SystemClock_Config
+
- >> MX_USART2_UART_Init
+
- >> MX_GPIO_Init
+
+
[Called By]
+
+cpu_context_switch (Thumb, 8 bytes, Stack size 8 bytes, tos_cpu.o(i.cpu_context_switch))
+
[Stack]
- Max Depth = 8 + Unknown Stack Size
+
- Call Chain = cpu_context_switch
+
+
[Calls]
+
[Called By]
+
+cpu_init (Thumb, 26 bytes, Stack size 8 bytes, tos_cpu.o(i.cpu_init))
+
[Stack]
- Max Depth = 64
- Call Chain = cpu_init ⇒ __aeabi_uldivmod ⇒ __aeabi_llsr
+
+
[Calls]- >> cpu_systick_init
+
- >> __aeabi_uldivmod
+
+
[Called By]
+
+cpu_irq_context_switch (Thumb, 8 bytes, Stack size 8 bytes, tos_cpu.o(i.cpu_irq_context_switch))
+
[Stack]
- Max Depth = 8 + Unknown Stack Size
+
- Call Chain = cpu_irq_context_switch
+
+
[Calls]- >> port_irq_context_switch
+
+
[Called By]
+
+cpu_sched_start (Thumb, 4 bytes, Stack size 0 bytes, tos_cpu.o(i.cpu_sched_start))
+
[Calls]
+
[Called By]
+
+cpu_systick_init (Thumb, 18 bytes, Stack size 8 bytes, tos_cpu.o(i.cpu_systick_init))
+
[Stack]
- Max Depth = 16
- Call Chain = cpu_systick_init ⇒ port_systick_priority_set
+
+
[Calls]- >> port_systick_priority_set
+
- >> port_systick_config
+
+
[Called By]
+
+cpu_task_stk_init (Thumb, 104 bytes, Stack size 8 bytes, tos_cpu.o(i.cpu_task_stk_init))
+
[Stack]
- Max Depth = 8
- Call Chain = cpu_task_stk_init
+
+
[Called By]
+
+fputc (Thumb, 36 bytes, Stack size 16 bytes, mcu_init.o(i.fputc))
+
[Stack]
- Max Depth = 104
- Call Chain = fputc ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
+
+
[Calls]
+
[Address Reference Count : 1]
+knl_idle_init (Thumb, 32 bytes, Stack size 24 bytes, tos_sys.o(i.knl_idle_init))
+
[Stack]
- Max Depth = 88 + Unknown Stack Size
+
- Call Chain = knl_idle_init ⇒ tos_task_create ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]
+
[Called By]
+
+knl_is_idle (Thumb, 14 bytes, Stack size 0 bytes, tos_sys.o(i.knl_is_idle))
+
[Called By]
- >> task_do_destroy
+
- >> tos_task_create
+
- >> robin_sched
+
+
+knl_is_inirq (Thumb, 12 bytes, Stack size 0 bytes, tos_sys.o(i.knl_is_inirq))
+
[Called By]
- >> tos_task_delay
+
- >> tos_task_yield
+
- >> tos_task_destroy
+
- >> tos_task_create
+
- >> tos_sem_pend
+
- >> tos_task_prio_change
+
- >> tos_mutex_post
+
- >> tos_mutex_pend_timed
+
- >> tos_mutex_destroy
+
- >> tos_mutex_create
+
+
+knl_is_sched_locked (Thumb, 12 bytes, Stack size 0 bytes, tos_sys.o(i.knl_is_sched_locked))
+
[Called By]
- >> tos_task_delay
+
- >> tos_task_destroy
+
- >> tos_sem_pend
+
- >> robin_sched
+
- >> tos_mutex_pend_timed
+
+
+knl_is_self (Thumb, 16 bytes, Stack size 0 bytes, tos_sys.o(i.knl_is_self))
+
[Called By]
- >> tos_task_destroy
+
- >> tos_task_prio_change
+
- >> tos_mutex_post
+
- >> tos_mutex_pend_timed
+
+
+knl_sched (Thumb, 60 bytes, Stack size 8 bytes, tos_sys.o(i.knl_sched))
+
[Stack]
- Max Depth = 16 + Unknown Stack Size
+
- Call Chain = knl_sched ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> cpu_context_switch
+
- >> readyqueue_highest_ready_task_get
+
+
[Called By]- >> tos_task_delay
+
- >> tos_task_yield
+
- >> task_do_destroy
+
- >> tos_task_create
+
- >> tos_knl_sched_unlock
+
- >> tos_sem_pend
+
- >> tos_sem_destroy
+
- >> sem_do_post
+
- >> robin_sched
+
- >> tos_task_prio_change
+
- >> tos_mutex_post
+
- >> tos_mutex_pend_timed
+
- >> tos_mutex_destroy
+
+
+main (Thumb, 32 bytes, Stack size 8 bytes, main.o(i.main))
+
[Stack]
- Max Depth = 188 + Unknown Stack Size
+
- Call Chain = main ⇒ board_init ⇒ SystemClock_Config ⇒ HAL_RCC_OscConfig ⇒ HAL_InitTick ⇒ __aeabi_uidivmod
+
+
[Calls]- >> osThreadCreate
+
- >> osKernelStart
+
- >> osKernelInitialize
+
- >> board_init
+
- >> __2printf
+
+
[Address Reference Count : 1]- entry9a.o(.ARM.Collect$$$$0000000B)
+
+mmheap_init_with_pool (Thumb, 20 bytes, Stack size 16 bytes, tos_mmheap.o(i.mmheap_init_with_pool))
+
[Stack]
- Max Depth = 88
- Call Chain = mmheap_init_with_pool ⇒ tos_mmheap_pool_add ⇒ blk_insert ⇒ mapping_insert ⇒ __fls
+
+
[Calls]- >> mmheap_ctl_init
+
- >> tos_mmheap_pool_add
+
+
[Called By]
+
+mutex_release (Thumb, 18 bytes, Stack size 8 bytes, tos_mutex.o(i.mutex_release))
+
[Stack]
- Max Depth = 80 + Unknown Stack Size
+
- Call Chain = mutex_release ⇒ mutex_old_owner_release ⇒ tos_task_prio_change ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]- >> pend_wakeup_all
+
- >> mutex_old_owner_release
+
+
[Called By]
+
+osKernelInitialize (Thumb, 12 bytes, Stack size 8 bytes, cmsis_os.o(i.osKernelInitialize))
+
[Stack]
- Max Depth = 104 + Unknown Stack Size
+
- Call Chain = osKernelInitialize ⇒ tos_knl_init ⇒ knl_idle_init ⇒ tos_task_create ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]- >> tos_knl_init
+
- >> errno_knl2cmsis
+
+
[Called By]
+
+osKernelStart (Thumb, 12 bytes, Stack size 8 bytes, cmsis_os.o(i.osKernelStart))
+
[Stack]
- Max Depth = 16 + Unknown Stack Size
+
- Call Chain = osKernelStart ⇒ tos_knl_start
+
+
[Calls]- >> tos_knl_start
+
- >> errno_knl2cmsis
+
+
[Called By]
+
+osThreadCreate (Thumb, 52 bytes, Stack size 32 bytes, cmsis_os.o(i.osThreadCreate))
+
[Stack]
- Max Depth = 96 + Unknown Stack Size
+
- Call Chain = osThreadCreate ⇒ tos_task_create ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]- >> tos_task_create
+
- >> priority_cmsis2knl
+
+
[Called By]
+
+pend_highest_pending_prio_get (Thumb, 20 bytes, Stack size 0 bytes, tos_pend.o(i.pend_highest_pending_prio_get))
+
[Called By]
- >> tos_task_prio_change
+
- >> tos_mutex_post
+
+
+pend_highest_pending_task_get (Thumb, 6 bytes, Stack size 0 bytes, tos_pend.o(i.pend_highest_pending_task_get))
+
[Called By]
+
+pend_is_nopending (Thumb, 14 bytes, Stack size 0 bytes, tos_pend.o(i.pend_is_nopending))
+
[Called By]
- >> sem_do_post
+
- >> tos_mutex_post
+
+
+pend_list_adjust (Thumb, 18 bytes, Stack size 8 bytes, tos_pend.o(i.pend_list_adjust))
+
[Stack]
- Max Depth = 20
- Call Chain = pend_list_adjust ⇒ pend_list_add
+
+
[Calls]
+
[Called By]- >> tos_task_prio_change
+
+
+pend_list_remove (Thumb, 24 bytes, Stack size 0 bytes, tos_pend.o(i.pend_list_remove))
+
[Called By]
- >> pend_task_wakeup
+
- >> task_do_destroy
+
+
+pend_object_deinit (Thumb, 6 bytes, Stack size 0 bytes, tos_pend.o(i.pend_object_deinit))
+
[Called By]
- >> tos_sem_destroy
+
- >> tos_mutex_destroy
+
+
+pend_object_init (Thumb, 6 bytes, Stack size 0 bytes, tos_pend.o(i.pend_object_init))
+
[Called By]
- >> tos_sem_create_max
+
- >> tos_mutex_create
+
+
+pend_state2errno (Thumb, 42 bytes, Stack size 0 bytes, tos_pend.o(i.pend_state2errno))
+
[Called By]
- >> tos_sem_pend
+
- >> tos_mutex_pend_timed
+
+
+pend_task_block (Thumb, 48 bytes, Stack size 24 bytes, tos_pend.o(i.pend_task_block))
+
[Stack]
- Max Depth = 72 + Unknown Stack Size
+
- Call Chain = pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tick_list_add
+
- >> readyqueue_remove
+
- >> pend_list_add
+
+
[Called By]- >> tos_sem_pend
+
- >> tos_mutex_pend_timed
+
+
+pend_task_wakeup (Thumb, 50 bytes, Stack size 16 bytes, tos_pend.o(i.pend_task_wakeup))
+
[Stack]
- Max Depth = 48 + Unknown Stack Size
+
- Call Chain = pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tick_list_remove
+
- >> readyqueue_add
+
- >> pend_list_remove
+
+
[Called By]- >> pend_wakeup_all
+
- >> pend_wakeup_one
+
- >> tick_update
+
+
+pend_wakeup (Thumb, 18 bytes, Stack size 8 bytes, tos_pend.o(i.pend_wakeup))
+
[Stack]
- Max Depth = 72 + Unknown Stack Size
+
- Call Chain = pend_wakeup ⇒ pend_wakeup_all ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> pend_wakeup_all
+
- >> pend_wakeup_one
+
+
[Called By]
+
+pend_wakeup_all (Thumb, 36 bytes, Stack size 16 bytes, tos_pend.o(i.pend_wakeup_all))
+
[Stack]
- Max Depth = 64 + Unknown Stack Size
+
- Call Chain = pend_wakeup_all ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]
+
[Called By]- >> tos_sem_destroy
+
- >> pend_wakeup
+
- >> tos_mutex_destroy
+
- >> mutex_release
+
+
+pend_wakeup_one (Thumb, 12 bytes, Stack size 8 bytes, tos_pend.o(i.pend_wakeup_one))
+
[Stack]
- Max Depth = 56 + Unknown Stack Size
+
- Call Chain = pend_wakeup_one ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]
+
[Called By]- >> pend_wakeup
+
- >> tos_mutex_post
+
+
+port_systick_config (Thumb, 32 bytes, Stack size 8 bytes, port_c.o(i.port_systick_config))
+
[Stack]
- Max Depth = 8
- Call Chain = port_systick_config
+
+
[Calls]
+
[Called By]
+
+port_systick_priority_set (Thumb, 14 bytes, Stack size 8 bytes, port_c.o(i.port_systick_priority_set))
+
[Stack]
- Max Depth = 8
- Call Chain = port_systick_priority_set
+
+
[Calls]
+
[Called By]
+
+pow (Thumb, 2548 bytes, Stack size 128 bytes, pow.o(i.pow))
+
[Stack]
- Max Depth = 280
- Call Chain = pow ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ __aeabi_llsr
+
+
[Calls]- >> __aeabi_i2d
+
- >> __aeabi_dsub
+
- >> __aeabi_dmul
+
- >> __aeabi_ddiv
+
- >> __aeabi_dadd
+
- >> __set_errno
+
- >> sqrt
+
- >> __kernel_poly
+
- >> __ARM_fpclassify
+
- >> __mathlib_dbl_underflow
+
- >> __mathlib_dbl_overflow
+
- >> __mathlib_dbl_invalid
+
- >> __mathlib_dbl_infnan2
+
- >> __mathlib_dbl_divzero
+
- >> __aeabi_drsub
+
- >> __aeabi_cdrcmple
+
- >> __ARM_scalbn
+
+
[Called By]
+
+print_to_screen (Thumb, 296 bytes, Stack size 56 bytes, lora_demo.o(i.print_to_screen))
+
[Stack]
- Max Depth = 336
- Call Chain = print_to_screen ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ __aeabi_llsr
+
+
[Calls]- >> __aeabi_ui2d
+
- >> __aeabi_i2d
+
- >> __aeabi_f2d
+
- >> __aeabi_dsub
+
- >> __aeabi_dmul
+
- >> __aeabi_ddiv
+
- >> __aeabi_dadd
+
- >> __aeabi_d2f
+
- >> __2printf
+
- >> pow
+
+
[Called By]
+
+read_config_from_Flash (Thumb, 152 bytes, Stack size 24 bytes, lora_demo.o(i.read_config_from_Flash))
+
[Stack]
- Max Depth = 64
- Call Chain = read_config_from_Flash ⇒ HAL_FLASH_ReadWord ⇒ FLASH_WaitForLastOperation ⇒ FLASH_SetErrorCode
+
+
[Calls]- >> __ARM_common_switch8
+
- >> HAL_FLASH_ReadWord
+
+
[Called By]
+
+readyqueue_add (Thumb, 30 bytes, Stack size 8 bytes, tos_sched.o(i.readyqueue_add))
+
[Stack]
- Max Depth = 32
- Call Chain = readyqueue_add ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]- >> readyqueue_add_tail
+
- >> readyqueue_add_head
+
+
[Called By]
+
+readyqueue_add_head (Thumb, 38 bytes, Stack size 16 bytes, tos_sched.o(i.readyqueue_add_head))
+
[Stack]
- Max Depth = 24
- Call Chain = readyqueue_add_head ⇒ readyqueue_prio_mark
+
+
[Calls]- >> readyqueue_prio_mark
+
+
[Called By]- >> readyqueue_add
+
- >> tos_task_prio_change
+
+
+readyqueue_add_tail (Thumb, 38 bytes, Stack size 16 bytes, tos_sched.o(i.readyqueue_add_tail))
+
[Stack]
- Max Depth = 24
- Call Chain = readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]- >> readyqueue_prio_mark
+
+
[Called By]- >> tos_task_yield
+
- >> tos_task_create
+
- >> readyqueue_add
+
- >> tos_task_prio_change
+
+
+readyqueue_first_task_get (Thumb, 20 bytes, Stack size 0 bytes, tos_sched.o(i.readyqueue_first_task_get))
+
[Called By]
+
+readyqueue_highest_ready_task_get (Thumb, 18 bytes, Stack size 0 bytes, tos_sched.o(i.readyqueue_highest_ready_task_get))
+
[Called By]
- >> tos_knl_irq_leave
+
- >> knl_sched
+
- >> tos_knl_start
+
+
+readyqueue_init (Thumb, 48 bytes, Stack size 0 bytes, tos_sched.o(i.readyqueue_init))
+
[Called By]
+
+readyqueue_is_prio_onlyone (Thumb, 22 bytes, Stack size 0 bytes, tos_sched.o(i.readyqueue_is_prio_onlyone))
+
[Called By]
+
+readyqueue_move_head_to_tail (Thumb, 32 bytes, Stack size 0 bytes, tos_sched.o(i.readyqueue_move_head_to_tail))
+
[Called By]
+
+readyqueue_remove (Thumb, 92 bytes, Stack size 16 bytes, tos_sched.o(i.readyqueue_remove))
+
[Stack]
- Max Depth = 16
- Call Chain = readyqueue_remove
+
+
[Calls]
+
[Called By]- >> tos_task_delay
+
- >> pend_task_block
+
- >> tos_task_yield
+
- >> task_do_destroy
+
- >> tos_task_prio_change
+
+
+recv_callback (Thumb, 86 bytes, Stack size 16 bytes, lora_demo.o(i.recv_callback))
+
[Stack]
- Max Depth = 168
- Call Chain = recv_callback ⇒ LIS3MDL_Set_FullScale ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> LIS3MDL_Set_FullScale
+
- >> write_config_to_Flash
+
- >> __2printf
+
+
[Address Reference Count : 1]- lora_demo.o(i.application_entry)
+
+rhf76_join_abp (Thumb, 158 bytes, Stack size 80 bytes, rhf76.o(i.rhf76_join_abp))
+
[Stack]
- Max Depth = 392 + Unknown Stack Size
+
- Call Chain = rhf76_join_abp ⇒ rhf76_set_key ⇒ tos_at_cmd_exec ⇒ at_cmd_do_exec ⇒ at_uart_send ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_at_echo_create
+
- >> tos_at_cmd_exec
+
- >> at_delay_ms
+
- >> rhf76_set_mode
+
- >> rhf76_set_key
+
- >> rhf76_set_id
+
- >> __2printf
+
+
[Address Reference Count : 1]
+rhf76_join_otaa (Thumb, 126 bytes, Stack size 64 bytes, rhf76.o(i.rhf76_join_otaa))
+
[Stack]
- Max Depth = 376 + Unknown Stack Size
+
- Call Chain = rhf76_join_otaa ⇒ rhf76_set_key ⇒ tos_at_cmd_exec ⇒ at_cmd_do_exec ⇒ at_uart_send ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_at_echo_create
+
- >> tos_at_cmd_exec
+
- >> at_delay_ms
+
- >> rhf76_set_mode
+
- >> rhf76_set_key
+
- >> rhf76_set_id
+
- >> __2printf
+
+
[Address Reference Count : 1]
+rhf76_lora_init (Thumb, 50 bytes, Stack size 8 bytes, rhf76.o(i.rhf76_lora_init))
+
[Stack]
- Max Depth = 208 + Unknown Stack Size
+
- Call Chain = rhf76_lora_init ⇒ tos_at_init ⇒ tos_hal_uart_init ⇒ MX_USART2_UART_Init ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ __aeabi_uldivmod ⇒ __aeabi_llsr
+
+
[Calls]- >> tos_lora_module_register
+
- >> tos_lora_module_init
+
- >> tos_at_init
+
- >> at_delay_ms
+
+
[Called By]
+
+rhf76_set_data_rate (Thumb, 110 bytes, Stack size 88 bytes, rhf76.o(i.rhf76_set_data_rate))
+
[Stack]
- Max Depth = 272 + Unknown Stack Size
+
- Call Chain = rhf76_set_data_rate ⇒ tos_at_cmd_exec ⇒ at_cmd_do_exec ⇒ at_uart_send ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_at_echo_fuzzy_matching_create
+
- >> tos_at_cmd_exec
+
- >> __2snprintf
+
+
[Called By]
+
+rhf76_set_repeat (Thumb, 104 bytes, Stack size 88 bytes, rhf76.o(i.rhf76_set_repeat))
+
[Stack]
- Max Depth = 272 + Unknown Stack Size
+
- Call Chain = rhf76_set_repeat ⇒ tos_at_cmd_exec ⇒ at_cmd_do_exec ⇒ at_uart_send ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_at_echo_create
+
- >> tos_at_cmd_exec
+
- >> __2snprintf
+
+
[Called By]
+
+robin_sched (Thumb, 108 bytes, Stack size 16 bytes, tos_robin.o(i.robin_sched))
+
[Stack]
- Max Depth = 32 + Unknown Stack Size
+
- Call Chain = robin_sched ⇒ knl_sched ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> knl_sched
+
- >> knl_is_sched_locked
+
- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> readyqueue_move_head_to_tail
+
- >> readyqueue_is_prio_onlyone
+
- >> readyqueue_first_task_get
+
- >> knl_is_idle
+
+
[Called By]
+
+set_config_to_default (Thumb, 24 bytes, Stack size 0 bytes, lora_demo.o(i.set_config_to_default))
+
[Called By]
+
+sqrt (Thumb, 66 bytes, Stack size 24 bytes, sqrt.o(i.sqrt))
+
[Stack]
- Max Depth = 64
- Call Chain = sqrt ⇒ _dsqrt ⇒ __aeabi_llsr
+
+
[Calls]- >> __set_errno
+
- >> _dsqrt
+
+
[Called By]
+
+tick_list_add (Thumb, 20 bytes, Stack size 8 bytes, tos_tick.o(i.tick_list_add))
+
[Stack]
- Max Depth = 48 + Unknown Stack Size
+
- Call Chain = tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]
+
[Called By]- >> tos_task_delay
+
- >> pend_task_block
+
+
+tick_list_remove (Thumb, 106 bytes, Stack size 24 bytes, tos_tick.o(i.tick_list_remove))
+
[Stack]
- Max Depth = 32 + Unknown Stack Size
+
- Call Chain = tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> tos_list_empty
+
+
[Called By]- >> pend_task_wakeup
+
- >> task_do_destroy
+
+
+tick_update (Thumb, 110 bytes, Stack size 24 bytes, tos_tick.o(i.tick_update))
+
[Stack]
- Max Depth = 72 + Unknown Stack Size
+
- Call Chain = tick_update ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> pend_task_wakeup
+
- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
+
[Called By]
+
+timer_init (Thumb, 4 bytes, Stack size 0 bytes, tos_timer.o(i.timer_init))
+
[Called By]
+
+timer_update (Thumb, 104 bytes, Stack size 24 bytes, tos_timer.o(i.timer_update))
+
[Stack]
- Max Depth = 56 + Unknown Stack Size
+
- Call Chain = timer_update ⇒ timer_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_knl_sched_unlock
+
- >> tos_knl_sched_lock
+
- >> timer_takeoff
+
- >> timer_place
+
+
[Called By]
+
+tos_at_cmd_exec (Thumb, 58 bytes, Stack size 32 bytes, tos_at.o(i.tos_at_cmd_exec))
+
[Stack]
- Max Depth = 184 + Unknown Stack Size
+
- Call Chain = tos_at_cmd_exec ⇒ at_cmd_do_exec ⇒ at_uart_send ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_task_delay
+
- >> tos_millisec2tick
+
- >> at_echo_attach
+
- >> at_cmd_do_exec
+
+
[Called By]- >> rhf76_set_repeat
+
- >> rhf76_set_data_rate
+
- >> rhf76_join_otaa
+
- >> rhf76_join_abp
+
- >> rhf76_set_mode
+
- >> rhf76_set_key
+
- >> rhf76_set_id
+
- >> rhf76_set_class
+
- >> rhf76_send_unconfirmed
+
- >> rhf76_send
+
- >> rhf76_init
+
+
+tos_at_echo_create (Thumb, 46 bytes, Stack size 24 bytes, tos_at.o(i.tos_at_echo_create))
+
[Stack]
- Max Depth = 24
- Call Chain = tos_at_echo_create
+
+
[Calls]
+
[Called By]- >> rhf76_set_repeat
+
- >> rhf76_join_otaa
+
- >> rhf76_join_abp
+
- >> rhf76_set_mode
+
- >> rhf76_set_key
+
- >> rhf76_set_id
+
- >> rhf76_set_class
+
- >> rhf76_send_unconfirmed
+
- >> rhf76_send
+
- >> rhf76_init
+
+
+tos_at_echo_fuzzy_matching_create (Thumb, 50 bytes, Stack size 24 bytes, tos_at.o(i.tos_at_echo_fuzzy_matching_create))
+
[Stack]
- Max Depth = 24
- Call Chain = tos_at_echo_fuzzy_matching_create
+
+
[Calls]
+
[Called By]
+
+tos_at_init (Thumb, 334 bytes, Stack size 80 bytes, tos_at.o(i.tos_at_init))
+
[Stack]
- Max Depth = 200 + Unknown Stack Size
+
- Call Chain = tos_at_init ⇒ tos_hal_uart_init ⇒ MX_USART2_UART_Init ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ __aeabi_uldivmod ⇒ __aeabi_llsr
+
+
[Calls]- >> tos_task_destroy
+
- >> tos_task_create
+
- >> tos_sem_destroy
+
- >> tos_sem_create
+
- >> tos_mutex_destroy
+
- >> tos_mutex_create
+
- >> tos_mmheap_free
+
- >> tos_mmheap_alloc
+
- >> tos_chr_fifo_destroy
+
- >> tos_chr_fifo_create
+
- >> at_timer_init
+
- >> at_recv_cache_deinit
+
- >> tos_hal_uart_init
+
- >> tos_hal_uart_deinit
+
- >> __aeabi_memclr4
+
+
[Called By]
+
+tos_at_uart_input_byte (Thumb, 24 bytes, Stack size 8 bytes, tos_at.o(i.tos_at_uart_input_byte))
+
[Stack]
- Max Depth = 104 + Unknown Stack Size
+
- Call Chain = tos_at_uart_input_byte ⇒ tos_sem_post ⇒ sem_do_post ⇒ pend_wakeup ⇒ pend_wakeup_all ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_sem_post
+
- >> tos_chr_fifo_push
+
+
[Called By]- >> HAL_UART_RxCpltCallback
+
+
+tos_at_uart_read (Thumb, 44 bytes, Stack size 24 bytes, tos_at.o(i.tos_at_uart_read))
+
[Stack]
- Max Depth = 144 + Unknown Stack Size
+
- Call Chain = tos_at_uart_read ⇒ at_uart_getchar ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]
+
[Called By]- >> rhf76_incoming_data_process
+
+
+tos_chr_fifo_create (Thumb, 34 bytes, Stack size 8 bytes, tos_char_fifo.o(i.tos_chr_fifo_create))
+
[Stack]
- Max Depth = 16
- Call Chain = tos_chr_fifo_create ⇒ tos_ring_q_create
+
+
[Calls]
+
[Called By]
+
+tos_chr_fifo_destroy (Thumb, 36 bytes, Stack size 8 bytes, tos_char_fifo.o(i.tos_chr_fifo_destroy))
+
[Stack]
- Max Depth = 8
- Call Chain = tos_chr_fifo_destroy
+
+
[Calls]
+
[Called By]
+
+tos_chr_fifo_pop (Thumb, 20 bytes, Stack size 8 bytes, tos_char_fifo.o(i.tos_chr_fifo_pop))
+
[Stack]
- Max Depth = 48 + Unknown Stack Size
+
- Call Chain = tos_chr_fifo_pop ⇒ tos_ring_q_dequeue ⇒ tos_ring_q_is_empty ⇒ tos_cpu_cpsr_save
+
+
[Calls]
+
[Called By]
+
+tos_chr_fifo_push (Thumb, 22 bytes, Stack size 16 bytes, tos_char_fifo.o(i.tos_chr_fifo_push))
+
[Stack]
- Max Depth = 48 + Unknown Stack Size
+
- Call Chain = tos_chr_fifo_push ⇒ tos_ring_q_enqueue ⇒ tos_ring_q_is_full ⇒ tos_cpu_cpsr_save
+
+
[Calls]
+
[Called By]- >> tos_at_uart_input_byte
+
+
+tos_cpu_clz (Thumb, 50 bytes, Stack size 0 bytes, tos_cpu.o(i.tos_cpu_clz))
+
[Called By]
+
+tos_cpu_cpsr_restore (Thumb, 8 bytes, Stack size 8 bytes, tos_cpu.o(i.tos_cpu_cpsr_restore))
+
[Stack]
- Max Depth = 8 + Unknown Stack Size
+
- Call Chain = tos_cpu_cpsr_restore
+
+
[Calls]
+
[Called By]- >> tos_knl_irq_leave
+
- >> tos_task_delay
+
- >> knl_sched
+
- >> tick_task_place
+
- >> tos_task_yield
+
- >> task_do_destroy
+
- >> tos_task_create
+
- >> tos_knl_sched_unlock
+
- >> tos_knl_sched_lock
+
- >> tos_sem_pend
+
- >> tos_sem_destroy
+
- >> sem_do_post
+
- >> robin_sched
+
- >> tick_list_remove
+
- >> tos_task_prio_change
+
- >> tos_mutex_post
+
- >> tos_mutex_pend_timed
+
- >> tos_mutex_destroy
+
- >> tos_ring_q_is_full
+
- >> tos_ring_q_is_empty
+
- >> tos_ring_q_enqueue
+
- >> tos_ring_q_dequeue
+
- >> timer_takeoff
+
- >> timer_place
+
- >> tos_systick_get
+
- >> tick_update
+
+
+tos_cpu_cpsr_save (Thumb, 8 bytes, Stack size 8 bytes, tos_cpu.o(i.tos_cpu_cpsr_save))
+
[Stack]
- Max Depth = 8 + Unknown Stack Size
+
- Call Chain = tos_cpu_cpsr_save
+
+
[Calls]
+
[Called By]- >> tos_knl_irq_leave
+
- >> tos_task_delay
+
- >> knl_sched
+
- >> tick_task_place
+
- >> tos_task_yield
+
- >> task_do_destroy
+
- >> tos_task_create
+
- >> tos_knl_sched_unlock
+
- >> tos_knl_sched_lock
+
- >> tos_sem_pend
+
- >> tos_sem_destroy
+
- >> sem_do_post
+
- >> robin_sched
+
- >> tick_list_remove
+
- >> tos_task_prio_change
+
- >> tos_mutex_post
+
- >> tos_mutex_pend_timed
+
- >> tos_mutex_destroy
+
- >> tos_ring_q_is_full
+
- >> tos_ring_q_is_empty
+
- >> tos_ring_q_enqueue
+
- >> tos_ring_q_dequeue
+
- >> timer_takeoff
+
- >> timer_place
+
- >> tos_systick_get
+
- >> tick_update
+
+
+tos_hal_uart_deinit (Thumb, 42 bytes, Stack size 16 bytes, tos_hal_uart.o(i.tos_hal_uart_deinit))
+
[Stack]
- Max Depth = 60
- Call Chain = tos_hal_uart_deinit ⇒ HAL_UART_DeInit ⇒ HAL_UART_MspDeInit ⇒ HAL_GPIO_DeInit
+
+
[Calls]- >> HAL_UART_MspDeInit
+
- >> HAL_UART_DeInit
+
+
[Called By]
+
+tos_hal_uart_init (Thumb, 44 bytes, Stack size 8 bytes, tos_hal_uart.o(i.tos_hal_uart_init))
+
[Stack]
- Max Depth = 120
- Call Chain = tos_hal_uart_init ⇒ MX_USART2_UART_Init ⇒ HAL_UART_Init ⇒ UART_SetConfig ⇒ __aeabi_uldivmod ⇒ __aeabi_llsr
+
+
[Calls]- >> MX_USART2_UART_Init
+
- >> MX_USART1_UART_Init
+
+
[Called By]
+
+tos_hal_uart_write (Thumb, 34 bytes, Stack size 8 bytes, tos_hal_uart.o(i.tos_hal_uart_write))
+
[Stack]
- Max Depth = 96
- Call Chain = tos_hal_uart_write ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
+
+
[Calls]
+
[Called By]
+
+tos_knl_init (Thumb, 38 bytes, Stack size 8 bytes, tos_sys.o(i.tos_knl_init))
+
[Stack]
- Max Depth = 96 + Unknown Stack Size
+
- Call Chain = tos_knl_init ⇒ knl_idle_init ⇒ tos_task_create ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]- >> cpu_init
+
- >> timer_init
+
- >> knl_idle_init
+
- >> readyqueue_init
+
- >> mmheap_init_with_pool
+
+
[Called By]
+
+tos_knl_irq_enter (Thumb, 22 bytes, Stack size 0 bytes, tos_sys.o(i.tos_knl_irq_enter))
+
[Called By]
+
+tos_knl_irq_leave (Thumb, 70 bytes, Stack size 8 bytes, tos_sys.o(i.tos_knl_irq_leave))
+
[Stack]
- Max Depth = 16 + Unknown Stack Size
+
- Call Chain = tos_knl_irq_leave ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> cpu_irq_context_switch
+
- >> readyqueue_highest_ready_task_get
+
+
[Called By]
+
+tos_knl_is_running (Thumb, 12 bytes, Stack size 0 bytes, tos_sys.o(i.tos_knl_is_running))
+
[Called By]
- >> tos_tick_handler
+
- >> SysTick_Handler
+
- >> tos_task_create
+
+
+tos_knl_sched_lock (Thumb, 62 bytes, Stack size 8 bytes, tos_sys.o(i.tos_knl_sched_lock))
+
[Stack]
- Max Depth = 16 + Unknown Stack Size
+
- Call Chain = tos_knl_sched_lock ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
+
[Called By]
+
+tos_knl_sched_unlock (Thumb, 64 bytes, Stack size 8 bytes, tos_sys.o(i.tos_knl_sched_unlock))
+
[Stack]
- Max Depth = 24 + Unknown Stack Size
+
- Call Chain = tos_knl_sched_unlock ⇒ knl_sched ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> knl_sched
+
- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
+
[Called By]
+
+tos_knl_start (Thumb, 40 bytes, Stack size 8 bytes, tos_sys.o(i.tos_knl_start))
+
[Stack]
- Max Depth = 8 + Unknown Stack Size
+
- Call Chain = tos_knl_start
+
+
[Calls]- >> cpu_sched_start
+
- >> readyqueue_highest_ready_task_get
+
+
[Called By]
+
+tos_lora_module_init (Thumb, 22 bytes, Stack size 0 bytes, lora_module_wrapper.o(i.tos_lora_module_init))
+
[Called By]
+
+tos_lora_module_join_otaa (Thumb, 22 bytes, Stack size 0 bytes, lora_module_wrapper.o(i.tos_lora_module_join_otaa))
+
[Called By]
+
+tos_lora_module_recvcb_register (Thumb, 20 bytes, Stack size 0 bytes, lora_module_wrapper.o(i.tos_lora_module_recvcb_register))
+
[Called By]
+
+tos_lora_module_register (Thumb, 20 bytes, Stack size 0 bytes, lora_module_wrapper.o(i.tos_lora_module_register))
+
[Called By]
+
+tos_lora_module_send (Thumb, 22 bytes, Stack size 0 bytes, lora_module_wrapper.o(i.tos_lora_module_send))
+
[Called By]
+
+tos_lora_module_send_unconfirmed (Thumb, 22 bytes, Stack size 0 bytes, lora_module_wrapper.o(i.tos_lora_module_send_unconfirmed))
+
[Called By]
+
+tos_millisec2tick (Thumb, 22 bytes, Stack size 8 bytes, tos_time.o(i.tos_millisec2tick))
+
[Stack]
- Max Depth = 64
- Call Chain = tos_millisec2tick ⇒ __aeabi_uldivmod ⇒ __aeabi_llsr
+
+
[Calls]- >> __ARM_common_ll_muluu
+
- >> __aeabi_uldivmod
+
+
[Called By]- >> tos_at_cmd_exec
+
- >> at_delay_ms
+
+
+tos_mmheap_alloc (Thumb, 26 bytes, Stack size 8 bytes, tos_mmheap.o(i.tos_mmheap_alloc))
+
[Stack]
- Max Depth = 72
- Call Chain = tos_mmheap_alloc ⇒ blk_prepare_used ⇒ blk_insert ⇒ mapping_insert ⇒ __fls
+
+
[Calls]- >> blk_prepare_used
+
- >> blk_locate_free
+
- >> adjust_request_size
+
+
[Called By]- >> tos_mmheap_calloc
+
- >> tos_at_init
+
+
+tos_mmheap_calloc (Thumb, 26 bytes, Stack size 16 bytes, tos_mmheap.o(i.tos_mmheap_calloc))
+
[Stack]
- Max Depth = 88
- Call Chain = tos_mmheap_calloc ⇒ tos_mmheap_alloc ⇒ blk_prepare_used ⇒ blk_insert ⇒ mapping_insert ⇒ __fls
+
+
[Calls]- >> tos_mmheap_alloc
+
- >> __aeabi_memclr
+
+
[Called By]- >> rhf76_send_unconfirmed
+
- >> rhf76_send
+
+
+tos_mmheap_free (Thumb, 50 bytes, Stack size 16 bytes, tos_mmheap.o(i.tos_mmheap_free))
+
[Stack]
- Max Depth = 72
- Call Chain = tos_mmheap_free ⇒ blk_merge_next ⇒ blk_remove ⇒ mapping_insert ⇒ __fls
+
+
[Calls]- >> blk_remove
+
- >> blk_merge_next
+
- >> blk_mark_as_free
+
- >> blk_insert
+
- >> blk_absorb
+
+
[Called By]- >> at_recv_cache_deinit
+
- >> tos_at_init
+
- >> rhf76_send_unconfirmed
+
- >> rhf76_send
+
+
+tos_mmheap_pool_add (Thumb, 132 bytes, Stack size 24 bytes, tos_mmheap.o(i.tos_mmheap_pool_add))
+
[Stack]
- Max Depth = 72
- Call Chain = tos_mmheap_pool_add ⇒ blk_insert ⇒ mapping_insert ⇒ __fls
+
+
[Calls]- >> mmheap_pool_is_exist
+
- >> blk_link_next
+
- >> blk_insert
+
+
[Called By]- >> mmheap_init_with_pool
+
+
+tos_mutex_create (Thumb, 52 bytes, Stack size 8 bytes, tos_mutex.o(i.tos_mutex_create))
+
[Stack]
- Max Depth = 8
- Call Chain = tos_mutex_create
+
+
[Calls]- >> pend_object_init
+
- >> knl_is_inirq
+
+
[Called By]
+
+tos_mutex_destroy (Thumb, 72 bytes, Stack size 16 bytes, tos_mutex.o(i.tos_mutex_destroy))
+
[Stack]
- Max Depth = 88 + Unknown Stack Size
+
- Call Chain = tos_mutex_destroy ⇒ mutex_old_owner_release ⇒ tos_task_prio_change ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]- >> pend_wakeup_all
+
- >> pend_object_deinit
+
- >> knl_sched
+
- >> knl_is_inirq
+
- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> mutex_old_owner_release
+
+
[Called By]
+
+tos_mutex_pend (Thumb, 14 bytes, Stack size 8 bytes, tos_mutex.o(i.tos_mutex_pend))
+
[Stack]
- Max Depth = 104 + Unknown Stack Size
+
- Call Chain = tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_mutex_pend_timed
+
+
[Called By]- >> at_uart_send
+
- >> at_uart_getchar
+
- >> at_cmd_do_exec
+
+
+tos_mutex_pend_timed (Thumb, 202 bytes, Stack size 24 bytes, tos_mutex.o(i.tos_mutex_pend_timed))
+
[Stack]
- Max Depth = 96 + Unknown Stack Size
+
- Call Chain = tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> pend_task_block
+
- >> pend_state2errno
+
- >> knl_sched
+
- >> knl_is_sched_locked
+
- >> knl_is_inirq
+
- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> tos_task_prio_change
+
- >> knl_is_self
+
- >> mutex_fresh_owner_mark
+
+
[Called By]
+
+tos_mutex_post (Thumb, 162 bytes, Stack size 16 bytes, tos_mutex.o(i.tos_mutex_post))
+
[Stack]
- Max Depth = 88 + Unknown Stack Size
+
- Call Chain = tos_mutex_post ⇒ mutex_old_owner_release ⇒ tos_task_prio_change ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]- >> knl_sched
+
- >> knl_is_inirq
+
- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> tos_task_prio_change
+
- >> pend_wakeup_one
+
- >> pend_is_nopending
+
- >> pend_highest_pending_task_get
+
- >> pend_highest_pending_prio_get
+
- >> knl_is_self
+
- >> mutex_old_owner_release
+
- >> mutex_fresh_owner_mark
+
+
[Called By]- >> at_uart_send
+
- >> at_uart_getchar
+
- >> at_cmd_do_exec
+
+
+tos_ring_q_create (Thumb, 36 bytes, Stack size 8 bytes, tos_ring_queue.o(i.tos_ring_q_create))
+
[Stack]
- Max Depth = 8
- Call Chain = tos_ring_q_create
+
+
[Called By]
+
+tos_ring_q_dequeue (Thumb, 96 bytes, Stack size 24 bytes, tos_ring_queue.o(i.tos_ring_q_dequeue))
+
[Stack]
- Max Depth = 40 + Unknown Stack Size
+
- Call Chain = tos_ring_q_dequeue ⇒ tos_ring_q_is_empty ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> tos_ring_q_is_empty
+
- >> __aeabi_memcpy
+
- >> __aeabi_uidivmod
+
+
[Called By]
+
+tos_ring_q_destroy (Thumb, 40 bytes, Stack size 0 bytes, tos_ring_queue.o(i.tos_ring_q_destroy))
+
[Called By]
- >> tos_chr_fifo_destroy
+
+
+tos_ring_q_enqueue (Thumb, 98 bytes, Stack size 16 bytes, tos_ring_queue.o(i.tos_ring_q_enqueue))
+
[Stack]
- Max Depth = 32 + Unknown Stack Size
+
- Call Chain = tos_ring_q_enqueue ⇒ tos_ring_q_is_full ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> tos_ring_q_is_full
+
- >> __aeabi_memcpy
+
- >> __aeabi_uidivmod
+
+
[Called By]
+
+tos_ring_q_is_empty (Thumb, 34 bytes, Stack size 8 bytes, tos_ring_queue.o(i.tos_ring_q_is_empty))
+
[Stack]
- Max Depth = 16 + Unknown Stack Size
+
- Call Chain = tos_ring_q_is_empty ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
+
[Called By]
+
+tos_ring_q_is_full (Thumb, 36 bytes, Stack size 8 bytes, tos_ring_queue.o(i.tos_ring_q_is_full))
+
[Stack]
- Max Depth = 16 + Unknown Stack Size
+
- Call Chain = tos_ring_q_is_full ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
+
[Called By]
+
+tos_sem_create (Thumb, 10 bytes, Stack size 8 bytes, tos_sem.o(i.tos_sem_create))
+
[Stack]
- Max Depth = 16
- Call Chain = tos_sem_create ⇒ tos_sem_create_max
+
+
[Calls]
+
[Called By]
+
+tos_sem_create_max (Thumb, 22 bytes, Stack size 8 bytes, tos_sem.o(i.tos_sem_create_max))
+
[Stack]
- Max Depth = 8
- Call Chain = tos_sem_create_max
+
+
[Calls]
+
[Called By]
+
+tos_sem_destroy (Thumb, 44 bytes, Stack size 16 bytes, tos_sem.o(i.tos_sem_destroy))
+
[Stack]
- Max Depth = 80 + Unknown Stack Size
+
- Call Chain = tos_sem_destroy ⇒ pend_wakeup_all ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> pend_wakeup_all
+
- >> pend_object_deinit
+
- >> knl_sched
+
- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
+
[Called By]
+
+tos_sem_pend (Thumb, 130 bytes, Stack size 24 bytes, tos_sem.o(i.tos_sem_pend))
+
[Stack]
- Max Depth = 96 + Unknown Stack Size
+
- Call Chain = tos_sem_pend ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> pend_task_block
+
- >> pend_state2errno
+
- >> knl_sched
+
- >> knl_is_sched_locked
+
- >> knl_is_inirq
+
- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
+
[Called By]
+
+tos_sem_post (Thumb, 10 bytes, Stack size 8 bytes, tos_sem.o(i.tos_sem_post))
+
[Stack]
- Max Depth = 96 + Unknown Stack Size
+
- Call Chain = tos_sem_post ⇒ sem_do_post ⇒ pend_wakeup ⇒ pend_wakeup_all ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]
+
[Called By]- >> tos_at_uart_input_byte
+
- >> at_parser
+
+
+tos_systick_get (Thumb, 20 bytes, Stack size 16 bytes, tos_time.o(i.tos_systick_get))
+
[Stack]
- Max Depth = 24 + Unknown Stack Size
+
- Call Chain = tos_systick_get ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
+
[Called By]
+
+tos_task_create (Thumb, 204 bytes, Stack size 40 bytes, tos_task.o(i.tos_task_create))
+
[Stack]
- Max Depth = 64 + Unknown Stack Size
+
- Call Chain = tos_task_create ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]- >> tos_knl_is_running
+
- >> knl_sched
+
- >> knl_is_inirq
+
- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> cpu_task_stk_init
+
- >> task_reset
+
- >> readyqueue_add_tail
+
- >> knl_is_idle
+
- >> strncpy
+
+
[Called By]- >> osThreadCreate
+
- >> knl_idle_init
+
- >> tos_at_init
+
+
+tos_task_delay (Thumb, 94 bytes, Stack size 16 bytes, tos_task.o(i.tos_task_delay))
+
[Stack]
- Max Depth = 64 + Unknown Stack Size
+
- Call Chain = tos_task_delay ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> knl_sched
+
- >> knl_is_sched_locked
+
- >> knl_is_inirq
+
- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> tos_task_yield
+
- >> tick_list_add
+
- >> readyqueue_remove
+
+
[Called By]- >> tos_at_cmd_exec
+
- >> application_entry
+
+
+tos_task_destroy (Thumb, 58 bytes, Stack size 8 bytes, tos_task.o(i.tos_task_destroy))
+
[Stack]
- Max Depth = 104 + Unknown Stack Size
+
- Call Chain = tos_task_destroy ⇒ task_do_destroy ⇒ mutex_release ⇒ mutex_old_owner_release ⇒ tos_task_prio_change ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]- >> knl_is_sched_locked
+
- >> knl_is_inirq
+
- >> task_do_destroy
+
- >> knl_is_self
+
+
[Called By]- >> task_exit
+
- >> tos_at_init
+
+
+tos_task_prio_change (Thumb, 174 bytes, Stack size 32 bytes, tos_task.o(i.tos_task_prio_change))
+
[Stack]
- Max Depth = 56 + Unknown Stack Size
+
- Call Chain = tos_task_prio_change ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]- >> knl_sched
+
- >> knl_is_inirq
+
- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> readyqueue_add_tail
+
- >> readyqueue_add_head
+
- >> readyqueue_remove
+
- >> pend_list_adjust
+
- >> pend_highest_pending_prio_get
+
- >> knl_is_self
+
+
[Called By]- >> tos_mutex_post
+
- >> tos_mutex_pend_timed
+
- >> mutex_old_owner_release
+
+
+tos_task_yield (Thumb, 42 bytes, Stack size 16 bytes, tos_task.o(i.tos_task_yield))
+
[Stack]
- Max Depth = 40 + Unknown Stack Size
+
- Call Chain = tos_task_yield ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]- >> knl_sched
+
- >> knl_is_inirq
+
- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> readyqueue_add_tail
+
- >> readyqueue_remove
+
+
[Called By]
+
+tos_tick_handler (Thumb, 36 bytes, Stack size 8 bytes, tos_tick.o(i.tos_tick_handler))
+
[Stack]
- Max Depth = 80 + Unknown Stack Size
+
- Call Chain = tos_tick_handler ⇒ tick_update ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_knl_is_running
+
- >> robin_sched
+
- >> timer_update
+
- >> tick_update
+
+
[Called By]
+
+write_config_to_Flash (Thumb, 112 bytes, Stack size 56 bytes, lora_demo.o(i.write_config_to_Flash))
+
[Stack]
- Max Depth = 104
- Call Chain = write_config_to_Flash ⇒ HAL_FLASH_Program ⇒ FLASH_WaitForLastOperation ⇒ FLASH_SetErrorCode
+
+
[Calls]- >> HAL_FLASH_Unlock
+
- >> HAL_FLASH_Program
+
- >> HAL_FLASH_Lock
+
- >> __aeabi_memclr4
+
+
[Called By]
+
+
+Local Symbols
+
+HTS221_Start (Thumb, 60 bytes, Stack size 32 bytes, hts221.o(i.HTS221_Start))
+
[Stack]
- Max Depth = 152
- Call Chain = HTS221_Start ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> HAL_I2C_Mem_Write
+
- >> HAL_I2C_Mem_Read
+
+
[Called By]- >> HTS221_Get_Temperature
+
- >> HTS221_Get_Humidity
+
+
+UART_DMAAbortOnError (Thumb, 20 bytes, Stack size 8 bytes, stm32l0xx_hal_uart.o(i.UART_DMAAbortOnError))
+
[Stack]
- Max Depth = 8
- Call Chain = UART_DMAAbortOnError
+
+
[Calls]- >> HAL_UART_ErrorCallback
+
+
[Address Reference Count : 1]- stm32l0xx_hal_uart.o(i.HAL_UART_IRQHandler)
+
+UART_EndRxTransfer (Thumb, 30 bytes, Stack size 0 bytes, stm32l0xx_hal_uart.o(i.UART_EndRxTransfer))
+
[Called By]
+
+UART_Receive_IT (Thumb, 126 bytes, Stack size 16 bytes, stm32l0xx_hal_uart.o(i.UART_Receive_IT))
+
[Stack]
- Max Depth = 128 + Unknown Stack Size
+
- Call Chain = UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ tos_at_uart_input_byte ⇒ tos_sem_post ⇒ sem_do_post ⇒ pend_wakeup ⇒ pend_wakeup_all ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> HAL_UART_RxCpltCallback
+
+
[Called By]
+
+UART_Transmit_IT (Thumb, 102 bytes, Stack size 0 bytes, stm32l0xx_hal_uart.o(i.UART_Transmit_IT))
+
[Called By]
+
+I2C_Flush_TXDR (Thumb, 34 bytes, Stack size 0 bytes, stm32l0xx_hal_i2c.o(i.I2C_Flush_TXDR))
+
[Called By]
- >> I2C_IsAcknowledgeFailed
+
+
+I2C_IsAcknowledgeFailed (Thumb, 110 bytes, Stack size 32 bytes, stm32l0xx_hal_i2c.o(i.I2C_IsAcknowledgeFailed))
+
[Stack]
- Max Depth = 32
- Call Chain = I2C_IsAcknowledgeFailed
+
+
[Calls]- >> I2C_Flush_TXDR
+
- >> HAL_GetTick
+
+
[Called By]- >> I2C_WaitOnTXISFlagUntilTimeout
+
- >> I2C_WaitOnSTOPFlagUntilTimeout
+
+
+I2C_RequestMemoryRead (Thumb, 104 bytes, Stack size 24 bytes, stm32l0xx_hal_i2c.o(i.I2C_RequestMemoryRead))
+
[Stack]
- Max Depth = 72
- Call Chain = I2C_RequestMemoryRead ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> I2C_WaitOnTXISFlagUntilTimeout
+
- >> I2C_WaitOnFlagUntilTimeout
+
- >> I2C_TransferConfig
+
+
[Called By]
+
+I2C_RequestMemoryWrite (Thumb, 104 bytes, Stack size 24 bytes, stm32l0xx_hal_i2c.o(i.I2C_RequestMemoryWrite))
+
[Stack]
- Max Depth = 72
- Call Chain = I2C_RequestMemoryWrite ⇒ I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> I2C_WaitOnTXISFlagUntilTimeout
+
- >> I2C_WaitOnFlagUntilTimeout
+
- >> I2C_TransferConfig
+
+
[Called By]
+
+I2C_TransferConfig (Thumb, 34 bytes, Stack size 20 bytes, stm32l0xx_hal_i2c.o(i.I2C_TransferConfig))
+
[Stack]
- Max Depth = 20
- Call Chain = I2C_TransferConfig
+
+
[Called By]- >> HAL_I2C_Mem_Write
+
- >> HAL_I2C_Mem_Read
+
- >> I2C_RequestMemoryWrite
+
- >> I2C_RequestMemoryRead
+
+
+I2C_WaitOnFlagUntilTimeout (Thumb, 72 bytes, Stack size 24 bytes, stm32l0xx_hal_i2c.o(i.I2C_WaitOnFlagUntilTimeout))
+
[Stack]
- Max Depth = 24
- Call Chain = I2C_WaitOnFlagUntilTimeout
+
+
[Calls]
+
[Called By]- >> HAL_I2C_Mem_Write
+
- >> HAL_I2C_Mem_Read
+
- >> I2C_RequestMemoryWrite
+
- >> I2C_RequestMemoryRead
+
+
+I2C_WaitOnSTOPFlagUntilTimeout (Thumb, 78 bytes, Stack size 16 bytes, stm32l0xx_hal_i2c.o(i.I2C_WaitOnSTOPFlagUntilTimeout))
+
[Stack]
- Max Depth = 48
- Call Chain = I2C_WaitOnSTOPFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> I2C_IsAcknowledgeFailed
+
- >> HAL_GetTick
+
+
[Called By]- >> HAL_I2C_Mem_Write
+
- >> HAL_I2C_Mem_Read
+
+
+I2C_WaitOnTXISFlagUntilTimeout (Thumb, 82 bytes, Stack size 16 bytes, stm32l0xx_hal_i2c.o(i.I2C_WaitOnTXISFlagUntilTimeout))
+
[Stack]
- Max Depth = 48
- Call Chain = I2C_WaitOnTXISFlagUntilTimeout ⇒ I2C_IsAcknowledgeFailed
+
+
[Calls]- >> I2C_IsAcknowledgeFailed
+
- >> HAL_GetTick
+
+
[Called By]- >> HAL_I2C_Mem_Write
+
- >> I2C_RequestMemoryWrite
+
- >> I2C_RequestMemoryRead
+
+
+RCC_SetFlashLatencyFromMSIRange (Thumb, 94 bytes, Stack size 16 bytes, stm32l0xx_hal_rcc.o(i.RCC_SetFlashLatencyFromMSIRange))
+
[Stack]
- Max Depth = 16
- Call Chain = RCC_SetFlashLatencyFromMSIRange
+
+
[Called By]
+
+FLASH_SetErrorCode (Thumb, 134 bytes, Stack size 8 bytes, stm32l0xx_hal_flash.o(i.FLASH_SetErrorCode))
+
[Stack]
- Max Depth = 8
- Call Chain = FLASH_SetErrorCode
+
+
[Called By]- >> FLASH_WaitForLastOperation
+
+
+__NVIC_SetPriority (Thumb, 60 bytes, Stack size 0 bytes, stm32l0xx_hal_cortex.o(i.__NVIC_SetPriority))
+
[Called By]
- >> HAL_NVIC_SetPriority
+
- >> HAL_SYSTICK_Config
+
+
+__NVIC_SetPriority (Thumb, 60 bytes, Stack size 0 bytes, port_c.o(i.__NVIC_SetPriority))
+
[Called By]
- >> port_systick_priority_set
+
- >> port_systick_config
+
+
+__ffs (Thumb, 16 bytes, Stack size 8 bytes, tos_mmheap.o(i.__ffs))
+
[Stack]
- Max Depth = 8
- Call Chain = __ffs
+
+
[Calls]
+
[Called By]
+
+__fls (Thumb, 10 bytes, Stack size 8 bytes, tos_mmheap.o(i.__fls))
+
[Stack]
- Max Depth = 8
- Call Chain = __fls
+
+
[Calls]
+
[Called By]- >> mapping_insert
+
- >> blk_locate_free
+
+
+adjust_request_size (Thumb, 32 bytes, Stack size 0 bytes, tos_mmheap.o(i.adjust_request_size))
+
[Called By]
+
+blk_absorb (Thumb, 28 bytes, Stack size 8 bytes, tos_mmheap.o(i.blk_absorb))
+
[Stack]
- Max Depth = 16
- Call Chain = blk_absorb ⇒ blk_link_next
+
+
[Calls]
+
[Called By]- >> blk_merge_next
+
- >> tos_mmheap_free
+
+
+blk_can_split (Thumb, 20 bytes, Stack size 0 bytes, tos_mmheap.o(i.blk_can_split))
+
[Called By]
+
+blk_insert (Thumb, 74 bytes, Stack size 24 bytes, tos_mmheap.o(i.blk_insert))
+
[Stack]
- Max Depth = 48
- Call Chain = blk_insert ⇒ mapping_insert ⇒ __fls
+
+
[Calls]
+
[Called By]- >> blk_prepare_used
+
- >> tos_mmheap_pool_add
+
- >> tos_mmheap_free
+
+
+blk_link_next (Thumb, 12 bytes, Stack size 8 bytes, tos_mmheap.o(i.blk_link_next))
+
[Stack]
- Max Depth = 8
- Call Chain = blk_link_next
+
+
[Calls]
+
[Called By]- >> blk_prepare_used
+
- >> blk_mark_as_free
+
- >> blk_absorb
+
- >> tos_mmheap_pool_add
+
+
+blk_locate_free (Thumb, 136 bytes, Stack size 32 bytes, tos_mmheap.o(i.blk_locate_free))
+
[Stack]
- Max Depth = 56
- Call Chain = blk_locate_free ⇒ mapping_insert ⇒ __fls
+
+
[Calls]- >> remove_free_block
+
- >> mapping_insert
+
- >> __fls
+
- >> __ffs
+
+
[Called By]
+
+blk_mark_as_free (Thumb, 26 bytes, Stack size 8 bytes, tos_mmheap.o(i.blk_mark_as_free))
+
[Stack]
- Max Depth = 16
- Call Chain = blk_mark_as_free ⇒ blk_link_next
+
+
[Calls]
+
[Called By]- >> blk_split
+
- >> tos_mmheap_free
+
+
+blk_mark_as_used (Thumb, 26 bytes, Stack size 8 bytes, tos_mmheap.o(i.blk_mark_as_used))
+
[Stack]
- Max Depth = 8
- Call Chain = blk_mark_as_used
+
+
[Calls]
+
[Called By]
+
+blk_merge_next (Thumb, 36 bytes, Stack size 16 bytes, tos_mmheap.o(i.blk_merge_next))
+
[Stack]
- Max Depth = 56
- Call Chain = blk_merge_next ⇒ blk_remove ⇒ mapping_insert ⇒ __fls
+
+
[Calls]- >> blk_remove
+
- >> blk_next
+
- >> blk_absorb
+
+
[Called By]
+
+blk_next (Thumb, 16 bytes, Stack size 0 bytes, tos_mmheap.o(i.blk_next))
+
[Called By]
- >> blk_merge_next
+
- >> blk_mark_as_used
+
- >> blk_link_next
+
+
+blk_prepare_used (Thumb, 62 bytes, Stack size 16 bytes, tos_mmheap.o(i.blk_prepare_used))
+
[Stack]
- Max Depth = 64
- Call Chain = blk_prepare_used ⇒ blk_insert ⇒ mapping_insert ⇒ __fls
+
+
[Calls]- >> blk_split
+
- >> blk_mark_as_used
+
- >> blk_link_next
+
- >> blk_insert
+
- >> blk_can_split
+
+
[Called By]
+
+blk_remove (Thumb, 30 bytes, Stack size 16 bytes, tos_mmheap.o(i.blk_remove))
+
[Stack]
- Max Depth = 40
- Call Chain = blk_remove ⇒ mapping_insert ⇒ __fls
+
+
[Calls]- >> remove_free_block
+
- >> mapping_insert
+
+
[Called By]- >> blk_merge_next
+
- >> tos_mmheap_free
+
+
+blk_split (Thumb, 50 bytes, Stack size 8 bytes, tos_mmheap.o(i.blk_split))
+
[Stack]
- Max Depth = 24
- Call Chain = blk_split ⇒ blk_mark_as_free ⇒ blk_link_next
+
+
[Calls]
+
[Called By]
+
+generic_fls (Thumb, 48 bytes, Stack size 0 bytes, tos_mmheap.o(i.generic_fls))
+
[Called By]
+
+mapping_insert (Thumb, 44 bytes, Stack size 16 bytes, tos_mmheap.o(i.mapping_insert))
+
[Stack]
- Max Depth = 24
- Call Chain = mapping_insert ⇒ __fls
+
+
[Calls]
+
[Called By]- >> blk_remove
+
- >> blk_locate_free
+
- >> blk_insert
+
+
+mmheap_ctl_init (Thumb, 68 bytes, Stack size 16 bytes, tos_mmheap.o(i.mmheap_ctl_init))
+
[Stack]
- Max Depth = 16
- Call Chain = mmheap_ctl_init
+
+
[Called By]- >> mmheap_init_with_pool
+
+
+mmheap_pool_is_exist (Thumb, 34 bytes, Stack size 8 bytes, tos_mmheap.o(i.mmheap_pool_is_exist))
+
[Stack]
- Max Depth = 8
- Call Chain = mmheap_pool_is_exist
+
+
[Called By]
+
+remove_free_block (Thumb, 66 bytes, Stack size 16 bytes, tos_mmheap.o(i.remove_free_block))
+
[Stack]
- Max Depth = 16
- Call Chain = remove_free_block
+
+
[Called By]- >> blk_remove
+
- >> blk_locate_free
+
+
+mutex_fresh_owner_mark (Thumb, 28 bytes, Stack size 0 bytes, tos_mutex.o(i.mutex_fresh_owner_mark))
+
[Called By]
- >> tos_mutex_post
+
- >> tos_mutex_pend_timed
+
+
+mutex_old_owner_release (Thumb, 58 bytes, Stack size 16 bytes, tos_mutex.o(i.mutex_old_owner_release))
+
[Stack]
- Max Depth = 72 + Unknown Stack Size
+
- Call Chain = mutex_old_owner_release ⇒ tos_task_prio_change ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]- >> tos_task_prio_change
+
+
[Called By]- >> tos_mutex_post
+
- >> tos_mutex_destroy
+
- >> mutex_release
+
+
+pend_list_add (Thumb, 60 bytes, Stack size 12 bytes, tos_pend.o(i.pend_list_add))
+
[Stack]
- Max Depth = 12
- Call Chain = pend_list_add
+
+
[Called By]- >> pend_task_block
+
- >> pend_list_adjust
+
+
+readyqueue_prio_mark (Thumb, 42 bytes, Stack size 8 bytes, tos_sched.o(i.readyqueue_prio_mark))
+
[Stack]
- Max Depth = 8
- Call Chain = readyqueue_prio_mark
+
+
[Called By]- >> readyqueue_add_tail
+
- >> readyqueue_add_head
+
+
+sem_do_post (Thumb, 86 bytes, Stack size 16 bytes, tos_sem.o(i.sem_do_post))
+
[Stack]
- Max Depth = 88 + Unknown Stack Size
+
- Call Chain = sem_do_post ⇒ pend_wakeup ⇒ pend_wakeup_all ⇒ pend_task_wakeup ⇒ tick_list_remove ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> knl_sched
+
- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> pend_wakeup
+
- >> pend_is_nopending
+
+
[Called By]
+
+knl_idle_entry (Thumb, 2 bytes, Stack size 0 bytes, tos_sys.o(i.knl_idle_entry))
+
[Calls]
+
[Called By]
+
[Address Reference Count : 1]- tos_sys.o(i.knl_idle_init)
+
+task_do_destroy (Thumb, 126 bytes, Stack size 16 bytes, tos_task.o(i.task_do_destroy))
+
[Stack]
- Max Depth = 96 + Unknown Stack Size
+
- Call Chain = task_do_destroy ⇒ mutex_release ⇒ mutex_old_owner_release ⇒ tos_task_prio_change ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]- >> knl_sched
+
- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
- >> task_reset
+
- >> knl_is_idle
+
- >> tick_list_remove
+
- >> readyqueue_remove
+
- >> pend_list_remove
+
- >> mutex_release
+
+
[Called By]
+
+task_exit (Thumb, 10 bytes, Stack size 8 bytes, tos_task.o(i.task_exit))
+
[Stack]
- Max Depth = 112 + Unknown Stack Size
+
- Call Chain = task_exit ⇒ tos_task_destroy ⇒ task_do_destroy ⇒ mutex_release ⇒ mutex_old_owner_release ⇒ tos_task_prio_change ⇒ readyqueue_add_tail ⇒ readyqueue_prio_mark
+
+
[Calls]
+
[Address Reference Count : 1]- tos_task.o(i.tos_task_create)
+
+task_reset (Thumb, 42 bytes, Stack size 0 bytes, tos_task.o(i.task_reset))
+
[Called By]
- >> task_do_destroy
+
- >> tos_task_create
+
+
+tick_task_place (Thumb, 154 bytes, Stack size 32 bytes, tos_tick.o(i.tick_task_place))
+
[Stack]
- Max Depth = 40 + Unknown Stack Size
+
- Call Chain = tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
+
[Called By]
+
+tos_list_empty (Thumb, 14 bytes, Stack size 0 bytes, tos_tick.o(i.tos_list_empty))
+
[Called By]
+
+timer_place (Thumb, 90 bytes, Stack size 24 bytes, tos_timer.o(i.timer_place))
+
[Stack]
- Max Depth = 32 + Unknown Stack Size
+
- Call Chain = timer_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
+
[Called By]
+
+timer_takeoff (Thumb, 64 bytes, Stack size 16 bytes, tos_timer.o(i.timer_takeoff))
+
[Stack]
- Max Depth = 24 + Unknown Stack Size
+
- Call Chain = timer_takeoff ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_cpu_cpsr_save
+
- >> tos_cpu_cpsr_restore
+
+
[Called By]
+
+errno_knl2cmsis (Thumb, 8 bytes, Stack size 0 bytes, cmsis_os.o(i.errno_knl2cmsis))
+
[Called By]
- >> osKernelStart
+
- >> osKernelInitialize
+
+
+priority_cmsis2knl (Thumb, 16 bytes, Stack size 0 bytes, cmsis_os.o(i.priority_cmsis2knl))
+
[Called By]
+
+__ascii2hex (Thumb, 42 bytes, Stack size 0 bytes, rhf76.o(i.__ascii2hex))
+
[Called By]
- >> rhf76_incoming_data_process
+
+
+__hex2str (Thumb, 60 bytes, Stack size 24 bytes, rhf76.o(i.__hex2str))
+
[Stack]
- Max Depth = 24
- Call Chain = __hex2str
+
+
[Calls]
+
[Called By]- >> rhf76_send_unconfirmed
+
- >> rhf76_send
+
+
+__num2hex (Thumb, 26 bytes, Stack size 0 bytes, rhf76.o(i.__num2hex))
+
[Called By]
+
+rhf76_close (Thumb, 4 bytes, Stack size 0 bytes, rhf76.o(i.rhf76_close))
+
[Address Reference Count : 1]
+rhf76_incoming_data_process (Thumb, 146 bytes, Stack size 32 bytes, rhf76.o(i.rhf76_incoming_data_process))
+
[Stack]
- Max Depth = 176 + Unknown Stack Size
+
- Call Chain = rhf76_incoming_data_process ⇒ tos_at_uart_read ⇒ at_uart_getchar ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_at_uart_read
+
- >> __ascii2hex
+
- >> __2printf
+
- >> strlen
+
- >> __aeabi_memclr
+
+
[Address Reference Count : 1]
+rhf76_init (Thumb, 324 bytes, Stack size 64 bytes, rhf76.o(i.rhf76_init))
+
[Stack]
- Max Depth = 336 + Unknown Stack Size
+
- Call Chain = rhf76_init ⇒ rhf76_set_repeat ⇒ tos_at_cmd_exec ⇒ at_cmd_do_exec ⇒ at_uart_send ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_at_echo_create
+
- >> tos_at_cmd_exec
+
- >> at_delay_ms
+
- >> rhf76_set_repeat
+
- >> rhf76_set_data_rate
+
- >> rhf76_set_class
+
- >> __2printf
+
+
[Address Reference Count : 1]
+rhf76_send (Thumb, 110 bytes, Stack size 168 bytes, rhf76.o(i.rhf76_send))
+
[Stack]
- Max Depth = 352 + Unknown Stack Size
+
- Call Chain = rhf76_send ⇒ tos_at_cmd_exec ⇒ at_cmd_do_exec ⇒ at_uart_send ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_mmheap_free
+
- >> tos_mmheap_calloc
+
- >> tos_at_echo_create
+
- >> tos_at_cmd_exec
+
- >> __hex2str
+
- >> __2snprintf
+
- >> __aeabi_memclr4
+
+
[Address Reference Count : 1]
+rhf76_send_unconfirmed (Thumb, 110 bytes, Stack size 168 bytes, rhf76.o(i.rhf76_send_unconfirmed))
+
[Stack]
- Max Depth = 352 + Unknown Stack Size
+
- Call Chain = rhf76_send_unconfirmed ⇒ tos_at_cmd_exec ⇒ at_cmd_do_exec ⇒ at_uart_send ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_mmheap_free
+
- >> tos_mmheap_calloc
+
- >> tos_at_echo_create
+
- >> tos_at_cmd_exec
+
- >> __hex2str
+
- >> __2snprintf
+
- >> __aeabi_memclr4
+
+
[Address Reference Count : 1]
+rhf76_set_class (Thumb, 94 bytes, Stack size 64 bytes, rhf76.o(i.rhf76_set_class))
+
[Stack]
- Max Depth = 248 + Unknown Stack Size
+
- Call Chain = rhf76_set_class ⇒ tos_at_cmd_exec ⇒ at_cmd_do_exec ⇒ at_uart_send ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_at_echo_create
+
- >> tos_at_cmd_exec
+
+
[Called By]
+
+rhf76_set_id (Thumb, 116 bytes, Stack size 128 bytes, rhf76.o(i.rhf76_set_id))
+
[Stack]
- Max Depth = 312 + Unknown Stack Size
+
- Call Chain = rhf76_set_id ⇒ tos_at_cmd_exec ⇒ at_cmd_do_exec ⇒ at_uart_send ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_at_echo_create
+
- >> tos_at_cmd_exec
+
- >> __2snprintf
+
- >> __aeabi_memclr4
+
+
[Called By]- >> rhf76_join_otaa
+
- >> rhf76_join_abp
+
+
+rhf76_set_key (Thumb, 116 bytes, Stack size 128 bytes, rhf76.o(i.rhf76_set_key))
+
[Stack]
- Max Depth = 312 + Unknown Stack Size
+
- Call Chain = rhf76_set_key ⇒ tos_at_cmd_exec ⇒ at_cmd_do_exec ⇒ at_uart_send ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_at_echo_create
+
- >> tos_at_cmd_exec
+
- >> __2snprintf
+
- >> __aeabi_memclr4
+
+
[Called By]- >> rhf76_join_otaa
+
- >> rhf76_join_abp
+
+
+rhf76_set_mode (Thumb, 82 bytes, Stack size 64 bytes, rhf76.o(i.rhf76_set_mode))
+
[Stack]
- Max Depth = 248 + Unknown Stack Size
+
- Call Chain = rhf76_set_mode ⇒ tos_at_cmd_exec ⇒ at_cmd_do_exec ⇒ at_uart_send ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_at_echo_create
+
- >> tos_at_cmd_exec
+
+
[Called By]- >> rhf76_join_otaa
+
- >> rhf76_join_abp
+
+
+at_cmd_do_exec (Thumb, 72 bytes, Stack size 24 bytes, tos_at.o(i.at_cmd_do_exec))
+
[Stack]
- Max Depth = 152 + Unknown Stack Size
+
- Call Chain = at_cmd_do_exec ⇒ at_uart_send ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_mutex_post
+
- >> tos_mutex_pend
+
- >> at_uart_send
+
- >> vsnprintf
+
- >> __2printf
+
+
[Called By]
+
+at_echo_attach (Thumb, 14 bytes, Stack size 0 bytes, tos_at.o(i.at_echo_attach))
+
[Called By]
+
+at_get_event (Thumb, 66 bytes, Stack size 32 bytes, tos_at.o(i.at_get_event))
+
[Stack]
- Max Depth = 44
- Call Chain = at_get_event ⇒ strncmp
+
+
[Calls]
+
[Called By]- >> at_uart_line_parse
+
- >> at_parser
+
+
+at_parser (Thumb, 190 bytes, Stack size 0 bytes, tos_at.o(i.at_parser))
+
[Stack]
- Max Depth = 168 + Unknown Stack Size
+
- Call Chain = at_parser ⇒ at_uart_line_parse ⇒ at_uart_getchar ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_sem_post
+
- >> at_uart_line_parse
+
- >> at_get_event
+
- >> __2printf
+
- >> strstr
+
- >> __aeabi_memcpy
+
+
[Address Reference Count : 1]- tos_at.o(i.tos_at_init)
+
+at_recv_cache_deinit (Thumb, 24 bytes, Stack size 8 bytes, tos_at.o(i.at_recv_cache_deinit))
+
[Stack]
- Max Depth = 80
- Call Chain = at_recv_cache_deinit ⇒ tos_mmheap_free ⇒ blk_merge_next ⇒ blk_remove ⇒ mapping_insert ⇒ __fls
+
+
[Calls]
+
[Called By]
+
+at_uart_getchar (Thumb, 78 bytes, Stack size 16 bytes, tos_at.o(i.at_uart_getchar))
+
[Stack]
- Max Depth = 120 + Unknown Stack Size
+
- Call Chain = at_uart_getchar ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_sem_pend
+
- >> tos_mutex_post
+
- >> tos_mutex_pend
+
- >> tos_chr_fifo_pop
+
- >> at_delay
+
+
[Called By]- >> at_uart_line_parse
+
- >> tos_at_uart_read
+
+
+at_uart_line_parse (Thumb, 216 bytes, Stack size 48 bytes, tos_at.o(i.at_uart_line_parse))
+
[Stack]
- Max Depth = 168 + Unknown Stack Size
+
- Call Chain = at_uart_line_parse ⇒ at_uart_getchar ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> at_uart_getchar
+
- >> at_get_event
+
- >> strncmp
+
- >> strlen
+
- >> strstr
+
- >> __aeabi_memclr
+
+
[Called By]
+
+at_uart_send (Thumb, 42 bytes, Stack size 24 bytes, tos_at.o(i.at_uart_send))
+
[Stack]
- Max Depth = 128 + Unknown Stack Size
+
- Call Chain = at_uart_send ⇒ tos_mutex_pend ⇒ tos_mutex_pend_timed ⇒ pend_task_block ⇒ tick_list_add ⇒ tick_task_place ⇒ tos_cpu_cpsr_save
+
+
[Calls]- >> tos_mutex_post
+
- >> tos_mutex_pend
+
- >> tos_hal_uart_write
+
+
[Called By]
+
+_fp_digits (Thumb, 344 bytes, Stack size 64 bytes, printfa.o(i._fp_digits), UNUSED)
+
[Calls]
- >> __aeabi_dmul
+
- >> __aeabi_ddiv
+
- >> __aeabi_dadd
+
- >> __aeabi_d2ulz
+
- >> __aeabi_uldivmod
+
- >> __aeabi_cdrcmple
+
+
[Called By]
+
+_printf_core (Thumb, 1754 bytes, Stack size 128 bytes, printfa.o(i._printf_core), UNUSED)
+
[Calls]
- >> _printf_pre_padding
+
- >> _printf_post_padding
+
- >> _fp_digits
+
- >> __aeabi_uldivmod
+
- >> __aeabi_uidivmod
+
+
[Called By]- >> __0vsnprintf
+
- >> __0snprintf
+
- >> __0printf
+
+
+_printf_post_padding (Thumb, 32 bytes, Stack size 24 bytes, printfa.o(i._printf_post_padding), UNUSED)
+
[Called By]
+
+_printf_pre_padding (Thumb, 44 bytes, Stack size 40 bytes, printfa.o(i._printf_pre_padding), UNUSED)
+
[Called By]
+
+_snputc (Thumb, 22 bytes, Stack size 0 bytes, printfa.o(i._snputc))
+
[Address Reference Count : 2]
- printfa.o(i.__0snprintf)
+
- printfa.o(i.__0vsnprintf)
+
+
+Undefined Global Symbols
+
diff --git a/board/NUCLEO_STM32L073RZ/KEIL/lorawan/TencentOS_tiny/TencentOS_tiny.sct b/board/NUCLEO_STM32L073RZ/KEIL/lorawan/TencentOS_tiny/TencentOS_tiny.sct
new file mode 100644
index 00000000..2d15c6b4
--- /dev/null
+++ b/board/NUCLEO_STM32L073RZ/KEIL/lorawan/TencentOS_tiny/TencentOS_tiny.sct
@@ -0,0 +1,16 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x08000000 0x00030000 { ; load region size_region
+ ER_IROM1 0x08000000 0x00030000 { ; load address = execution address
+ *.o (RESET, +First)
+ *(InRoot$$Sections)
+ .ANY (+RO)
+ .ANY (+XO)
+ }
+ RW_IRAM1 0x20000000 0x00005000 { ; RW data
+ .ANY (+RW +ZI)
+ }
+}
+
diff --git a/devices/m26/m26.c b/devices/m26/m26.c
new file mode 100644
index 00000000..d6563973
--- /dev/null
+++ b/devices/m26/m26.c
@@ -0,0 +1,547 @@
+/**
+ * @brief Quectel M26 GSM/GPRS Module
+ * @author Mculover666 <2412828003@qq.com>
+ * @date 2020/05/07
+*/
+
+#include "m26.h"
+#include "tos_at.h"
+#include "tos_hal.h"
+#include "sal_module_wrapper.h"
+
+#include
+#include
+#include
+
+static int m26_echo_close(void)
+{
+ at_echo_t echo;
+
+ tos_at_echo_create(&echo, NULL, 0, NULL);
+ tos_at_cmd_exec(&echo, 300, "ATE0\r\n");
+ if (echo.status == AT_ECHO_STATUS_OK)
+ {
+ return 0;
+ }
+ return -1;
+}
+static int m26_sim_card_check(void)
+{
+ at_echo_t echo;
+ int try = 0;
+ char echo_buffer[32];
+
+ while (try++ < 10) {
+ tos_at_echo_create(&echo, echo_buffer, sizeof(echo_buffer), NULL);
+ tos_at_cmd_exec(&echo, 2000, "AT+CPIN?\r\n");
+ if (echo.status != AT_ECHO_STATUS_OK) {
+ return -1;
+ }
+
+ if(strstr(echo.buffer, "READY"))
+ {
+ return 0;
+ }
+ }
+
+ return -1;
+}
+
+static int m26_signal_quality_check(void)
+{
+ int rssi, ber;
+ at_echo_t echo;
+ char echo_buffer[32], *str;
+ int try = 0;
+
+
+ while (try++ < 10)
+ {
+ tos_at_echo_create(&echo, echo_buffer, sizeof(echo_buffer), NULL);
+ tos_at_cmd_exec(&echo, 1000, "AT+CSQ\r\n");
+ if (echo.status != AT_ECHO_STATUS_OK)
+ {
+ return -1;
+ }
+
+ str = strstr(echo.buffer, "+CSQ:");
+ sscanf(str, "+CSQ:%d,%d", &rssi, &ber);
+ if (rssi != 99) {
+ return 0;
+ }
+ }
+
+ return -1;
+}
+static int m26_gsm_network_check(void)
+{
+ int n, stat;
+ at_echo_t echo;
+ char echo_buffer[32], *str;
+ int try = 0;
+
+ while (try++ < 10)
+ {
+ tos_at_echo_create(&echo, echo_buffer, sizeof(echo_buffer), NULL);
+ tos_at_cmd_exec(&echo, 1000, "AT+CREG?\r\n");
+ if (echo.status != AT_ECHO_STATUS_OK) {
+ return -1;
+ }
+
+ str = strstr(echo.buffer, "+CREG:");
+ sscanf(str, "+CREG:%d,%d", &n, &stat);
+ if (stat == 1) {
+ return 0;
+ }
+ }
+ return -1;
+}
+
+static int m26_gprs_network_check(void)
+{
+ int n, stat;
+ at_echo_t echo;
+ char echo_buffer[32], *str;
+ int try = 0;
+
+ while (try++ < 10)
+ {
+ tos_at_echo_create(&echo, echo_buffer, sizeof(echo_buffer), NULL);
+ tos_at_cmd_exec(&echo, 1000, "AT+CGREG?\r\n");
+ if (echo.status != AT_ECHO_STATUS_OK)
+ {
+ return -1;
+ }
+
+ str = strstr(echo.buffer, "+CGREG:");
+ sscanf(str, "+CGREG:%d,%d", &n, &stat);
+ if (stat == 1)
+ {
+ return 0;
+ }
+ }
+
+ return -1;
+}
+
+static int m26_close_apn(void)
+{
+ at_echo_t echo;
+ char echo_buffer[32];
+
+ tos_at_echo_create(&echo, echo_buffer, sizeof(echo_buffer), NULL);
+ tos_at_cmd_exec(&echo, 3000, "AT+QIDEACT\r\n");
+
+ if(strstr(echo.buffer, "DEACT OK") == NULL)
+ {
+ return -1;
+ }
+
+ return 0;
+}
+
+static int m26_send_mode_set(sal_send_mode_t mode)
+{
+ int try = 0;
+ at_echo_t echo;
+
+ while (try++ < 10)
+ {
+ tos_at_echo_create(&echo, NULL, 0, NULL);
+ tos_at_cmd_exec(&echo, 300, "AT+QIMODE=%d\r\n", mode == SAL_SEND_MODE_NORMAL ? 0 : 1);
+ if (echo.status == AT_ECHO_STATUS_OK)
+ {
+ return 0;
+ }
+ }
+ return -1;
+}
+
+static int m26_multilink_set(sal_multilink_state_t state)
+{
+ int try = 0;
+ at_echo_t echo;
+
+ while (try++ < 10)
+ {
+ tos_at_echo_create(&echo, NULL, 0, NULL);
+ tos_at_cmd_exec(&echo, 300, "AT+QIMUX=%d\r\n", state == SAL_MULTILINK_STATE_ENABLE ? 1 : 0);
+ if (echo.status == AT_ECHO_STATUS_OK)
+ {
+ return 0;
+ }
+ }
+ return -1;
+}
+
+static int m26_recv_mode_set()
+{
+ at_echo_t echo;
+
+ tos_at_echo_create(&echo, NULL, 0, NULL);
+ tos_at_cmd_exec(&echo, 300, "AT+QINDI=0\r\n");
+ if (echo.status != AT_ECHO_STATUS_OK)
+ {
+ return -1;
+ }
+ return 0;
+}
+
+static int m26_set_apn(void)
+{
+ at_echo_t echo;
+
+ tos_at_echo_create(&echo, NULL, 0, NULL);
+ tos_at_cmd_exec(&echo, 300, "AT+QICSGP=1,\"CMNET\"\r\n");
+ if (echo.status != AT_ECHO_STATUS_OK)
+ {
+ return -1;
+ }
+
+ tos_at_cmd_exec(&echo, 300, "AT+QIFGCNT=0\r\n");
+ if (echo.status != AT_ECHO_STATUS_OK)
+ {
+ return -1;
+ }
+
+ tos_at_cmd_exec(&echo, 300, "AT+QIREGAPP\r\n");
+ if (echo.status != AT_ECHO_STATUS_OK)
+ {
+ return -1;
+ }
+
+ tos_at_cmd_exec(&echo, 3000, "AT+QIACT\r\n");
+ if (echo.status != AT_ECHO_STATUS_OK)
+ {
+ return -1;
+ }
+
+ tos_at_cmd_exec(&echo, 300, "AT+QILOCIP\r\n");
+
+ return 0;
+}
+
+
+
+static int m26_init(void)
+{
+ printf("Init m26 ...\n" );
+
+ if (m26_echo_close() != 0)
+ {
+ printf("echo close failed\n");
+ return -1;
+ }
+
+ if(m26_sim_card_check() != 0)
+ {
+ printf("sim card check failed,please insert your card\n");
+ return -1;
+ }
+
+ if (m26_signal_quality_check() != 0)
+ {
+ printf("signal quality check status failed\n");
+ return -1;
+ }
+
+ if(m26_gsm_network_check() != 0)
+ {
+ printf("GSM network register status check fail\n");
+ return -1;
+ }
+
+ if(m26_gprs_network_check() != 0)
+ {
+ printf("GPRS network register status check fail\n");
+ return -1;
+ }
+
+ if(m26_close_apn() != 0)
+ {
+ printf("close apn failed\n");
+ return -1;
+ }
+
+#if TOS_CFG_MODULE_SINGLE_LINK_EN > 0u
+ if (m26_multilink_set(SAL_MULTILINK_STATE_DISABLE) != 0)
+ {
+ printf("multilink set FAILED\n");
+ return -1;
+ }
+#else
+ if (m26_multilink_set(SAL_MULTILINK_STATE_ENABLE) != 0)
+ {
+ printf("multilink set FAILED\n");
+ return -1;
+ }
+#endif
+
+ if (m26_send_mode_set(SAL_SEND_MODE_NORMAL) != 0)
+ {
+ printf("send mode set FAILED\n");
+ return -1;
+ }
+
+ if(m26_recv_mode_set() != 0)
+ {
+ printf("recv mode set FAILED\n");
+ return -1;
+ }
+
+ if (m26_set_apn() != 0) {
+ printf("apn set FAILED\n");
+ return -1;
+ }
+
+ printf("Init m26 ok\n" );
+ return 0;
+}
+
+static int m26_connect(const char *ip, const char *port, sal_proto_t proto)
+{
+ int id;
+ at_echo_t echo;
+
+ id = tos_at_channel_alloc(ip, port);
+ if (id == -1) {
+ return -1;
+ }
+
+ tos_at_echo_create(&echo, NULL, 0, NULL);
+
+ tos_at_cmd_exec(&echo, 2000, "%s=1\r\n", "AT+QIHEAD");
+ if (echo.status != AT_ECHO_STATUS_OK) {
+ tos_at_channel_free(id);
+ return -1;
+ }
+
+#if TOS_CFG_MODULE_SINGLE_LINK_EN > 0u
+ tos_at_echo_create(&echo, NULL, 0, "CONNECT OK");
+ tos_at_cmd_exec(&echo, 4000, "AT+QIOPEN=\"%s\",\"%s\",\"%s\"\r\n",
+ proto == TOS_SAL_PROTO_UDP ? "UDP" : "TCP", ip, atoi(port));
+ if (echo.status == AT_ECHO_STATUS_OK) {
+ return id;
+ }
+#else
+ tos_at_echo_create(&echo, NULL, 0, "CONNECT OK");
+ tos_at_cmd_exec(&echo, 4000, "AT+QIOPEN=%d,\"%s\",\"%s\",%d\r\n",
+ id, proto == TOS_SAL_PROTO_UDP ? "UDP" : "TCP", ip, atoi(port));
+ if (echo.status == AT_ECHO_STATUS_OK) {
+ return id;
+ }
+#endif
+
+ tos_at_channel_free(id);
+ return -1;
+}
+
+static int m26_recv_timeout(int id, void *buf, size_t len, uint32_t timeout)
+{
+ return tos_at_channel_read_timed(id, buf, len, timeout);
+}
+
+static int m26_recv(int id, void *buf, size_t len)
+{
+ return m26_recv_timeout(id, buf, len, (uint32_t)4000);
+}
+
+int m26_send(int id, const void *buf, size_t len)
+{
+ at_echo_t echo;
+
+ if (tos_at_global_lock_pend() != 0) {
+ return -1;
+ }
+
+ tos_at_echo_create(&echo, NULL, 0, ">");
+
+#if TOS_CFG_MODULE_SINGLE_LINK_EN > 0u
+ tos_at_cmd_exec(&echo, 1000,
+ "AT+QISEND=%d\r\n",
+ len);
+#else
+ tos_at_cmd_exec(&echo, 1000,
+ "AT+QISEND=%d,%d\r\n",
+ id, len);
+#endif
+
+ if (echo.status != AT_ECHO_STATUS_OK && echo.status != AT_ECHO_STATUS_EXPECT) {
+ tos_at_global_lock_post();
+ return -1;
+ }
+
+ tos_at_echo_create(&echo, NULL, 0, "SEND OK");
+ tos_at_raw_data_send(&echo, 1000, (uint8_t *)buf, len);
+ if (echo.status != AT_ECHO_STATUS_OK && echo.status != AT_ECHO_STATUS_EXPECT) {
+ tos_at_global_lock_post();
+ return -1;
+ }
+
+ tos_at_global_lock_post();
+
+ return len;
+}
+
+static void m26_transparent_mode_exit(void)
+{
+ tos_at_cmd_exec(NULL, 500, "+++");
+}
+
+static int m26_close(int id)
+{
+ m26_transparent_mode_exit();
+
+#if TOS_CFG_MODULE_SINGLE_LINK_EN > 0u
+ tos_at_cmd_exec(NULL, 1000, "AT+QICLOSE=%d\r\n", id);
+#else
+ tos_at_cmd_exec(NULL, 1000, "AT+QICLOSE=%d\r\n", id);
+#endif
+
+ tos_at_channel_free(id);
+
+ return 0;
+}
+
+static int m26_parse_domain(const char *host_name, char *host_ip, size_t host_ip_len)
+{
+ char *str;
+ at_echo_t echo;
+ char echo_buffer[64];
+
+ tos_at_echo_create(&echo, echo_buffer, sizeof(echo_buffer), NULL);
+ tos_at_cmd_exec(&echo, 2000, "AT+QIDNSGIP=\"%s\"\r\n", host_name);
+
+ if (echo.status != AT_ECHO_STATUS_OK) {
+ return -1;
+ }
+
+ /*
+ "xxx.xxx.xxx.xxx"
+ */
+
+ int seg1, seg2, seg3, seg4;
+ str = strstr(echo.buffer, "OK");
+ str += strlen("OK\r\n");
+ sscanf(str, "%d.%d.%d.%d", &seg1, &seg2, &seg3, &seg4);
+ snprintf(host_ip, host_ip_len, "%d.%d.%d.%d", seg1, seg2, seg3, seg4);
+ host_ip[host_ip_len - 1] = '\0';
+
+ printf("GOT IP: %s\n", host_ip);
+
+ return 0;
+}
+
+__STATIC__ void m26_incoming_data_process(void)
+{
+ uint8_t data;
+ int channel_id = 0, data_len = 0, read_len;
+ uint8_t buffer[128];
+
+ /*
+ +RECEIVE: 0,
+ IPD:
+
+ +RECEIVE: prefix
+ 0: scoket id
+ */
+ if (tos_at_uart_read(&data, 1) != 1)
+ {
+ return;
+ }
+
+ while (1)
+ {
+ if (tos_at_uart_read(&data, 1) != 1)
+ {
+ return;
+ }
+
+ if (data == ',')
+ {
+ break;
+ }
+ channel_id = channel_id * 10 + (data - '0');
+ }
+
+ if (tos_at_uart_read(&data, 1) != 1)
+ {
+ return;
+ }
+
+ while (1)
+ {
+ if (tos_at_uart_read(&data, 1) != 1)
+ {
+ return;
+ }
+
+ if (data == '\r')
+ {
+ break;
+ }
+ data_len = data_len * 10 + (data - '0');
+ }
+
+ while (1)
+ {
+ if (tos_at_uart_read(&data, 1) != 1)
+ {
+ return;
+ }
+
+ if (data == ':')
+ {
+ break;
+ }
+}
+
+ do {
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+ read_len = MIN(data_len, sizeof(buffer));
+ if (tos_at_uart_read(buffer, read_len) != read_len) {
+ return;
+ }
+
+ if (tos_at_channel_write(channel_id, buffer, read_len) <= 0) {
+ return;
+ }
+
+ data_len -= read_len;
+ } while (data_len > 0);
+
+ return;
+}
+
+at_event_t m26_at_event[] = {
+ { "+RECEIVE:", m26_incoming_data_process},
+};
+
+sal_module_t sal_module_m26 = {
+ .init = m26_init,
+ .connect = m26_connect,
+ .send = m26_send,
+ .recv_timeout = m26_recv_timeout,
+ .recv = m26_recv,
+ .close = m26_close,
+ .parse_domain = m26_parse_domain,
+};
+
+int m26_sal_init(hal_uart_port_t uart_port)
+{
+
+ if (tos_at_init(uart_port, m26_at_event,
+ sizeof(m26_at_event) / sizeof(m26_at_event[0])) != 0) {
+ return -1;
+ }
+
+ if (tos_sal_module_register(&sal_module_m26) != 0) {
+ return -1;
+ }
+ if (tos_sal_module_init() != 0) {
+ return -1;
+ }
+
+ return 0;
+}
+
diff --git a/devices/m26/m26.h b/devices/m26/m26.h
new file mode 100644
index 00000000..25c8021e
--- /dev/null
+++ b/devices/m26/m26.h
@@ -0,0 +1,36 @@
+/*----------------------------------------------------------------------------
+ * Tencent is pleased to support the open source community by making TencentOS
+ * available.
+ *
+ * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
+ * If you have downloaded a copy of the TencentOS binary from Tencent, please
+ * note that the TencentOS binary is licensed under the BSD 3-Clause License.
+ *
+ * If you have downloaded a copy of the TencentOS source code from Tencent,
+ * please note that TencentOS source code is licensed under the BSD 3-Clause
+ * License, except for the third-party components listed below which are
+ * subject to different license terms. Your integration of TencentOS into your
+ * own projects may require compliance with the BSD 3-Clause License, as well
+ * as the other licenses applicable to the third-party components included
+ * within TencentOS.
+ *---------------------------------------------------------------------------*/
+
+#ifndef __M26_H__
+#define __M26_H__
+
+#include "tos_hal.h"
+
+typedef enum sal_send_mode {
+ SAL_SEND_MODE_NORMAL,
+ SAL_SEND_MODE_TRANSPARENT,
+} sal_send_mode_t;
+
+typedef enum sal_multilink_state {
+ SAL_MULTILINK_STATE_ENABLE,
+ SAL_MULTILINK_STATE_DISABLE,
+} sal_multilink_state_t;
+
+int m26_sal_init(hal_uart_port_t uart_port);
+
+#endif /* __M26_H__ */
+
diff --git a/platform/vendor_bsp/st/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex2.h b/platform/vendor_bsp/st/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex2.h
index 9641f2a8..fe9062be 100644
--- a/platform/vendor_bsp/st/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex2.h
+++ b/platform/vendor_bsp/st/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex2.h
@@ -40,4 +40,4 @@ HAL_StatusTypeDef HAL_FLASH_ReadHalfWord(uint32_t Address, uint16_t* Data);
}
#endif
-#endif /* __STM32L0xx_HAL_FLASH_EX2_H */
\ No newline at end of file
+#endif /* __STM32L0xx_HAL_FLASH_EX2_H */
diff --git a/platform/vendor_bsp/st/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex2.c b/platform/vendor_bsp/st/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex2.c
index 2a341d3d..8c8a080b 100644
--- a/platform/vendor_bsp/st/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex2.c
+++ b/platform/vendor_bsp/st/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex2.c
@@ -86,4 +86,4 @@ HAL_StatusTypeDef HAL_FLASH_ReadHalfWord(uint32_t Address, uint16_t* Data)
*Data = *(__IO uint16_t*)Address;
}
return status;
-}
\ No newline at end of file
+}