# Static Call Graph for image mesh\bootloader\mesh_bootloader_serial_armcc_nrf52832_xxAA.elf

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Tue Nov 03 12:31:27 2020

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

### Call chain for Maximum Stack Depth:

SWI2_EGU2_IRQHandler ⇒ mesh_aci_command_check ⇒ serial_command_handler ⇒ bootloader_cmd_send ⇒ bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

### Function Pointers

- BusFault_Handler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- CCM_AAR_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- COMP_LPCOMP_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- DebugMon_Handler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- ECB_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- FPU_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- GPIOTE_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- HardFault_Handler from main.o(.text) referenced from arm_startup_nrf52.o(RESET)
- I2S_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- MWU_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- MemoryManagement_Handler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- NFCT_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- NMI_Handler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- PDM_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- POWER_CLOCK_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- PWM0_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- PWM1_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- PWM2_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- PendSV_Handler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- QDEC_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- RADIO_IRQHandler from transport.o(.text) referenced from arm_startup_nrf52.o(RESET)
- RNG_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- RTC0_IRQHandler from bootloader_rtc.o(.text) referenced from arm_startup_nrf52.o(RESET)
- RTC1_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- RTC2_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- Reset_Handler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- SAADC_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- SPIM2_SPIS2_SPI2_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- SVC_Handler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- SWI0_EGU0_IRQHandler from transport.o(.text) referenced from arm_startup_nrf52.o(RESET)
- SWI1_EGU1_IRQHandler from serial_handler_uart.o(.text) referenced from arm_startup_nrf52.o(RESET)
- SWI2_EGU2_IRQHandler from bootloader.o(.text) referenced from arm_startup_nrf52.o(RESET)
- SWI3_EGU3_IRQHandler from bootloader.o(.text) referenced from arm_startup_nrf52.o(RESET)
- SWI4_EGU4_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- SWI5_EGU5_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- SysTick_Handler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- SystemInit from system_nrf52.o(.text) referenced from arm_startup_nrf52.o(.text)
- TEMP_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- TIMER0_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- TIMER1_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- TIMER2_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- TIMER3_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- TIMER4_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- UARTE0_UART0_IRQHandler from serial_handler_uart.o(.text) referenced from arm_startup_nrf52.o(RESET)
- UsageFault_Handler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- WDT_IRQHandler from arm_startup_nrf52.o(.text) referenced from arm_startup_nrf52.o(RESET)
- __main from __main.o(!!!main) referenced from arm_startup_nrf52.o(.text)
- bl_cmd_handler from bootloader_app_bridge.o(.text) referenced from bootloader_app_bridge.o(.text)
- bl_evt_handler from bootloader.o(.text) referenced from bootloader.o(.text)
- radio_idle_cb from transport.o(.text) referenced from transport.o(.text)
- radio_rx_cb from transport.o(.text) referenced from transport.o(.text)
- radio_tx_cb from transport.o(.text) referenced from transport.o(.text)
- rx_cb from bootloader.o(.text) referenced from bootloader.o(.text)

### Global Symbols

__main (Thumb, 8 bytes, Stack size 0 bytes, __main.o(!!!main))
[Calls]

- >> __rt_entry
- >> __scatterload

__scatterload (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter))
[Called By]

- >> __main

__scatterload_rt2 (Thumb, 44 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED)
[Calls]

- >> __rt_entry

__scatterload_rt2_thumb_only (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED)

__scatterload_null (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED)

__scatterload_copy (Thumb, 26 bytes, Stack size unknown bytes, __scatter_copy.o(!!handler_copy), UNUSED)
[Calls]

- >> __scatterload_copy

[Called By]

- >> __scatterload_copy

__scatterload_zeroinit (Thumb, 28 bytes, Stack size unknown bytes, __scatter_zi.o(!!handler_zi), UNUSED)

__rt_lib_init (Thumb, 0 bytes, Stack size unknown bytes, libinit.o(.ARM.Collect$$libinit$$00000000))
[Called By]

- >> __rt_entry_li

__rt_lib_init_fp_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000001))
[Calls]

- >> _fp_init

__rt_lib_init_alloca_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002E))

__rt_lib_init_argv_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002C))

__rt_lib_init_atexit_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001B))

__rt_lib_init_clock_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000021))

__rt_lib_init_cpp_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000032))

__rt_lib_init_exceptions_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000030))

__rt_lib_init_fp_trap_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001F))

__rt_lib_init_getenv_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000023))

__rt_lib_init_heap_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000A))

__rt_lib_init_lc_collate_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000011))

__rt_lib_init_lc_ctype_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000013))

__rt_lib_init_lc_monetary_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000015))

__rt_lib_init_lc_numeric_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000017))

__rt_lib_init_lc_time_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000019))

__rt_lib_init_preinit_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000004))

__rt_lib_init_rand_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000E))

__rt_lib_init_return (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000033))

__rt_lib_init_signal_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001D))

__rt_lib_init_stdio_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000025))

__rt_lib_init_user_alloc_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000C))

__rt_lib_shutdown (Thumb, 0 bytes, Stack size unknown bytes, libshutdown.o(.ARM.Collect$$libshutdown$$00000000))
[Called By]

- >> __rt_exit_ls

__rt_lib_shutdown_cpp_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000002))

__rt_lib_shutdown_fp_trap_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000007))

__rt_lib_shutdown_heap_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F))

__rt_lib_shutdown_return (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000010))

__rt_lib_shutdown_signal_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A))

__rt_lib_shutdown_stdio_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000004))

__rt_lib_shutdown_user_alloc_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C))

__rt_entry (Thumb, 0 bytes, Stack size unknown bytes, __rtentry.o(.ARM.Collect$$rtentry$$00000000))
[Called By]

- >> __main
- >> __scatterload_rt2

__rt_entry_presh_1 (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000002))

__rt_entry_sh (Thumb, 0 bytes, Stack size unknown bytes, __rtentry4.o(.ARM.Collect$$rtentry$$00000004))
[Stack]

- Max Depth = 8 + Unknown Stack Size
- Call Chain = __rt_entry_sh ⇒ __user_setup_stackheap

[Calls]

- >> __user_setup_stackheap

__rt_entry_li (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000A))
[Calls]

- >> __rt_lib_init

__rt_entry_postsh_1 (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000009))

__rt_entry_main (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000D))
[Stack]

- Max Depth = 1068 + Unknown Stack Size
- Call Chain = __rt_entry_main ⇒ main ⇒ bootloader_enable ⇒ bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> main
- >> exit

__rt_entry_postli_1 (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000C))

__rt_exit (Thumb, 0 bytes, Stack size unknown bytes, rtexit.o(.ARM.Collect$$rtexit$$00000000))
[Called By]

- >> exit

__rt_exit_ls (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000003))
[Calls]

- >> __rt_lib_shutdown

__rt_exit_prels_1 (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000002))

__rt_exit_exit (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000004))
[Calls]

- >> _sys_exit

__asm___17_bootloader_util_c_c13d365c__bootloader_util_reset (Thumb, 52 bytes, Stack size 0 bytes, bootloader_util.o(.emb_text))
[Called By]

- >> bootloader_util_app_start

SWI2_EGU2_IRQHandler (Thumb, 4 bytes, Stack size 0 bytes, bootloader.o(.text))
[Stack]

- Max Depth = 1108 + Unknown Stack Size
- Call Chain = SWI2_EGU2_IRQHandler ⇒ mesh_aci_command_check ⇒ serial_command_handler ⇒ bootloader_cmd_send ⇒ bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> mesh_aci_command_check

[Address Reference Count : 1]

- arm_startup_nrf52.o(RESET)

SWI3_EGU3_IRQHandler (Thumb, 238 bytes, Stack size 56 bytes, bootloader.o(.text))
[Stack]

- Max Depth = 1060 + Unknown Stack Size
- Call Chain = SWI3_EGU3_IRQHandler ⇒ bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> serial_handler_uart_disable
- >> nrf_flash_store
- >> nrf_flash_erase
- >> fifo_pop
- >> fifo_is_empty
- >> bootloader_util_app_start
- >> bootloader_info_entry_get
- >> bl_cmd_handler
- >> app_error_handler_bare
- >> __aeabi_memset

[Address Reference Count : 1]

- arm_startup_nrf52.o(RESET)

bootloader_abort (Thumb, 126 bytes, Stack size 32 bytes, bootloader.o(.text))
[Stack]

- Max Depth = 64
- Call Chain = bootloader_abort ⇒ dfu_mesh_app_is_valid ⇒ fw_is_verified ⇒ bootloader_info_entry_get ⇒ info_entry_get

[Calls]

- >> serial_handler_uart_disable
- >> radio_disable
- >> interrupts_disable
- >> fifo_is_empty
- >> dfu_mesh_app_is_valid
- >> bootloader_util_app_start
- >> bootloader_info_entry_get
- >> app_error_handler_bare

[Called By]

- >> main
- >> bootloader_timeout
- >> bl_evt_handler

bootloader_cmd_send (Thumb, 4 bytes, Stack size 0 bytes, bootloader.o(.text))
[Stack]

- Max Depth = 1004 + Unknown Stack Size
- Call Chain = bootloader_cmd_send ⇒ bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> bl_cmd_handler

[Called By]

- >> serial_command_handler

bootloader_init (Thumb, 138 bytes, Stack size 48 bytes, bootloader.o(.text))
[Stack]

- Max Depth = 1052 + Unknown Stack Size
- Call Chain = bootloader_init ⇒ bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> transport_init
- >> rtc_init
- >> mesh_aci_init
- >> fifo_init
- >> dfu_bank_scan
- >> bootloader_app_bridge_init
- >> bl_cmd_handler
- >> app_error_handler_bare
- >> __aeabi_memclr4

[Called By]

- >> main

bootloader_enable (Thumb, 264 bytes, Stack size 64 bytes, bootloader.o(.text))
[Stack]

- Max Depth = 1068 + Unknown Stack Size
- Call Chain = bootloader_enable ⇒ bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> transport_start
- >> mesh_aci_start
- >> dfu_mesh_req
- >> dfu_mesh_missing_type_get
- >> dfu_mesh_app_is_valid
- >> dfu_bank_flash
- >> bootloader_info_entry_overwrite
- >> bootloader_info_entry_get
- >> bl_cmd_handler
- >> app_error_handler_bare
- >> set_timeout

[Called By]

- >> main

bootloader_timeout (Thumb, 68 bytes, Stack size 40 bytes, bootloader.o(.text))
[Stack]

- Max Depth = 1044 + Unknown Stack Size
- Call Chain = bootloader_timeout ⇒ bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> bl_cmd_handler
- >> app_error_handler_bare
- >> bootloader_abort

[Called By]

- >> RTC0_IRQHandler

bl_cmd_handler (Thumb, 324 bytes, Stack size 48 bytes, bootloader_app_bridge.o(.text))
[Stack]

- Max Depth = 1004 + Unknown Stack Size
- Call Chain = bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> dfu_transfer_flash_write_complete
- >> dfu_mesh_timeout
- >> dfu_mesh_rx
- >> dfu_mesh_restart
- >> dfu_mesh_relay
- >> dfu_mesh_on_flash_idle
- >> dfu_mesh_init
- >> dfu_bank_on_flash_idle
- >> bootloader_info_on_flash_op_end
- >> bootloader_info_on_flash_idle
- >> bootloader_info_init
- >> bootloader_info_entry_put
- >> bootloader_info_entry_invalidate
- >> dfu_mesh_start
- >> dfu_mesh_req
- >> dfu_bank_flash
- >> bootloader_info_entry_get
- >> app_error_handler_bare

[Called By]

- >> bootloader_timeout
- >> bootloader_enable
- >> bootloader_init
- >> bootloader_cmd_send
- >> SWI3_EGU3_IRQHandler
- >> bl_evt_handler
- >> rx_cb

[Address Reference Count : 1]

- bootloader_app_bridge.o(.text)

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

- >> bootloader_init

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

- >> handle_fwid_packet
- >> request_missing_data
- >> send_bank_notifications
- >> send_progress_event
- >> handle_data_req_packet
- >> handle_data_packet
- >> target_rx_data
- >> notify_state_packet
- >> start_target
- >> beacon_set
- >> packet_tx_dynamic
- >> flash_bank_entry_fw
- >> dfu_mesh_on_flash_idle
- >> bootloader_error_post
- >> tx_abort
- >> flash_erase
- >> flash_write
- >> send_end_evt

send_end_evt (Thumb, 24 bytes, Stack size 40 bytes, bootloader_app_bridge.o(.text))
[Stack]

- Max Depth = 40
- Call Chain = send_end_evt

[Calls]

- >> bootloader_evt_send

[Called By]

- >> transfer_abort
- >> target_rx_start
- >> get_info_pointers
- >> dfu_mesh_timeout

flash_write (Thumb, 36 bytes, Stack size 56 bytes, bootloader_app_bridge.o(.text))
[Stack]

- Max Depth = 64
- Call Chain = flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> bootloader_evt_send
- >> __aeabi_memcpy4

[Called By]

- >> dfu_transfer_data
- >> entry_write
- >> entry_header_invalidate
- >> copy_page_write_next_data
- >> copy_page_write_meta
- >> bootloader_info_init

flash_erase (Thumb, 32 bytes, Stack size 48 bytes, bootloader_app_bridge.o(.text))
[Stack]

- Max Depth = 56
- Call Chain = flash_erase ⇒ __aeabi_memcpy4

[Calls]

- >> bootloader_evt_send
- >> __aeabi_memcpy4

[Called By]

- >> dfu_transfer_start
- >> copy_page
- >> bootloader_info_on_flash_idle
- >> bootloader_info_init

tx_abort (Thumb, 22 bytes, Stack size 40 bytes, bootloader_app_bridge.o(.text))
[Stack]

- Max Depth = 40
- Call Chain = tx_abort

[Calls]

- >> bootloader_evt_send

[Called By]

- >> handle_data_packet

bootloader_error_post (Thumb, 24 bytes, Stack size 40 bytes, bootloader_app_bridge.o(.text), UNUSED)
[Calls]

- >> bootloader_evt_send

bootloader_is_in_application (Thumb, 10 bytes, Stack size 0 bytes, bootloader_app_bridge.o(.text))
[Called By]

- >> flash_bank_entry_fw

entry_invalidate (Thumb, 56 bytes, Stack size 16 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 88
- Call Chain = entry_invalidate ⇒ entry_header_invalidate ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> bootloader_info_header_get
- >> entry_header_invalidate
- >> info_entry_get
- >> app_error_handler_bare

[Called By]

- >> bootloader_info_entry_invalidate

entry_write (Thumb, 104 bytes, Stack size 32 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 96 + Unknown Stack Size
- Call Chain = entry_write ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> get_write_buffer
- >> flash_write
- >> app_error_handler_bare
- >> __aeabi_memset
- >> __aeabi_memcpy4

[Called By]

- >> bootloader_info_entry_put
- >> bootloader_info_entry_overwrite

bootloader_info_init (Thumb, 126 bytes, Stack size 16 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 80
- Call Chain = bootloader_info_init ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> bootloader_info_first_unused_get
- >> flash_erase
- >> flash_write
- >> app_error_handler_bare
- >> __aeabi_memclr4

[Called By]

- >> bl_cmd_handler

bootloader_info_get (Thumb, 6 bytes, Stack size 0 bytes, bootloader_info.o(.text), UNUSED)

bootloader_info_entry_get (Thumb, 8 bytes, Stack size 0 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = bootloader_info_entry_get ⇒ info_entry_get

[Calls]

- >> info_entry_get

[Called By]

- >> fw_is_verified
- >> bootloader_is_newer
- >> app_is_newer
- >> send_bank_notifications
- >> start_target
- >> get_info_pointers
- >> dfu_bank_is_available
- >> flash_bank_entry
- >> flash_bank_entry_fw
- >> bootloader_info_entry_put
- >> is_upgrade
- >> dfu_mesh_missing_type_get
- >> dfu_mesh_app_is_valid
- >> dfu_bank_scan
- >> dfu_bank_flash
- >> bootloader_info_entry_overwrite
- >> bl_cmd_handler
- >> bootloader_enable
- >> bootloader_abort
- >> SWI3_EGU3_IRQHandler
- >> bl_evt_handler

bootloader_info_reset (Thumb, 46 bytes, Stack size 8 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 80
- Call Chain = bootloader_info_reset ⇒ copy_page ⇒ flash_erase ⇒ __aeabi_memcpy4

[Calls]

- >> copy_page
- >> app_error_handler_bare

[Called By]

- >> dfu_mesh_finalize
- >> bootloader_info_entry_put

bootloader_info_entry_put (Thumb, 214 bytes, Stack size 32 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 128 + Unknown Stack Size
- Call Chain = bootloader_info_entry_put ⇒ entry_write ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> bootloader_info_reset
- >> entry_write
- >> bootloader_info_header_get
- >> entry_header_invalidate
- >> bootloader_info_entry_get
- >> app_error_handler_bare

[Called By]

- >> dfu_mesh_finalize
- >> start_target
- >> flash_bank_entry
- >> bl_cmd_handler

bootloader_info_entry_overwrite (Thumb, 44 bytes, Stack size 16 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 112 + Unknown Stack Size
- Call Chain = bootloader_info_entry_overwrite ⇒ entry_write ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> entry_write
- >> bootloader_info_header_get
- >> bootloader_info_entry_get

[Called By]

- >> start_target
- >> flash_bank_entry
- >> flash_bank_entry_fw
- >> bootloader_enable

bootloader_info_entry_invalidate (Thumb, 8 bytes, Stack size 0 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 88
- Call Chain = bootloader_info_entry_invalidate ⇒ entry_invalidate ⇒ entry_header_invalidate ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> entry_invalidate

[Called By]

- >> start_target
- >> flash_bank_entry
- >> bl_cmd_handler

bootloader_info_available (Thumb, 12 bytes, Stack size 0 bytes, bootloader_info.o(.text), UNUSED)

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

- >> dfu_mesh_on_flash_idle

bootloader_info_on_flash_op_end (Thumb, 88 bytes, Stack size 16 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 104
- Call Chain = bootloader_info_on_flash_op_end ⇒ copy_page_on_flash_op_end ⇒ copy_page_write_next_data ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> copy_page_on_flash_op_end
- >> bootloader_info_first_unused_get
- >> copy_page
- >> free_write_buffer

[Called By]

- >> bl_cmd_handler

bootloader_info_on_flash_idle (Thumb, 50 bytes, Stack size 0 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 72
- Call Chain = bootloader_info_on_flash_idle ⇒ copy_page_write_meta ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> copy_page_write_meta
- >> flash_erase

[Called By]

- >> bl_cmd_handler

RTC0_IRQHandler (Thumb, 66 bytes, Stack size 16 bytes, bootloader_rtc.o(.text))
[Stack]

- Max Depth = 1060 + Unknown Stack Size
- Call Chain = RTC0_IRQHandler ⇒ bootloader_timeout ⇒ bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> transport_rtc_irq_handler
- >> bootloader_timeout

[Address Reference Count : 1]

- arm_startup_nrf52.o(RESET)

rtc_init (Thumb, 42 bytes, Stack size 0 bytes, bootloader_rtc.o(.text))
[Called By]

- >> bootloader_init

bootloader_util_app_start (Thumb, 4 bytes, Stack size 0 bytes, bootloader_util.o(.text))
[Calls]

- >> __asm___17_bootloader_util_c_c13d365c__bootloader_util_reset

[Called By]

- >> bootloader_abort
- >> SWI3_EGU3_IRQHandler

dfu_bank_scan (Thumb, 60 bytes, Stack size 16 bytes, dfu_bank.o(.text))
[Stack]

- Max Depth = 472 + Unknown Stack Size
- Call Chain = dfu_bank_scan ⇒ flash_bank_entry ⇒ flash_bank_entry_fw ⇒ bootloader_info_entry_overwrite ⇒ entry_write ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> flash_bank_entry
- >> bootloader_info_entry_get

[Called By]

- >> bootloader_init

dfu_bank_flash (Thumb, 64 bytes, Stack size 16 bytes, dfu_bank.o(.text))
[Stack]

- Max Depth = 472 + Unknown Stack Size
- Call Chain = dfu_bank_flash ⇒ flash_bank_entry ⇒ flash_bank_entry_fw ⇒ bootloader_info_entry_overwrite ⇒ entry_write ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> flash_bank_entry
- >> bootloader_info_entry_get

[Called By]

- >> bl_cmd_handler
- >> bootloader_enable
- >> bl_evt_handler

dfu_bank_is_available (Thumb, 24 bytes, Stack size 8 bytes, dfu_bank.o(.text), UNUSED)
[Calls]

- >> bootloader_info_entry_get

dfu_bank_on_flash_idle (Thumb, 22 bytes, Stack size 0 bytes, dfu_bank.o(.text))
[Stack]

- Max Depth = 456 + Unknown Stack Size
- Call Chain = dfu_bank_on_flash_idle ⇒ flash_bank_entry ⇒ flash_bank_entry_fw ⇒ bootloader_info_entry_overwrite ⇒ entry_write ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> flash_bank_entry

[Called By]

- >> bl_cmd_handler

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

- >> main
- >> dfu_mesh_start

dfu_mesh_init (Thumb, 42 bytes, Stack size 16 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 64
- Call Chain = dfu_mesh_init ⇒ get_info_pointers ⇒ send_end_evt

[Calls]

- >> get_info_pointers
- >> __aeabi_memclr4
- >> __aeabi_memclr

[Called By]

- >> bl_cmd_handler

dfu_mesh_start (Thumb, 60 bytes, Stack size 8 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 104
- Call Chain = dfu_mesh_start ⇒ send_bank_notifications ⇒ bootloader_info_entry_get ⇒ info_entry_get

[Calls]

- >> packet_cache_flush
- >> start_find_fwid
- >> send_bank_notifications
- >> get_info_pointers
- >> dfu_bank_transfer_in_progress
- >> __aeabi_memclr4
- >> __aeabi_memclr

[Called By]

- >> dfu_mesh_on_flash_idle
- >> bl_cmd_handler
- >> bl_evt_handler

dfu_mesh_req (Thumb, 44 bytes, Stack size 8 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 108
- Call Chain = dfu_mesh_req ⇒ start_req ⇒ beacon_set ⇒ __aeabi_memclr4

[Calls]

- >> start_req

[Called By]

- >> bl_cmd_handler
- >> bootloader_enable

dfu_mesh_relay (Thumb, 54 bytes, Stack size 16 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 100
- Call Chain = dfu_mesh_relay ⇒ beacon_set ⇒ __aeabi_memclr4

[Calls]

- >> fwid_union_cpy
- >> state_beacon_type
- >> beacon_set

[Called By]

- >> bl_cmd_handler

dfu_mesh_rx (Thumb, 110 bytes, Stack size 16 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 440 + Unknown Stack Size
- Call Chain = dfu_mesh_rx ⇒ handle_data_packet ⇒ target_rx_start ⇒ start_target ⇒ bootloader_info_entry_put ⇒ entry_write ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> packet_in_cache
- >> handle_fwid_packet
- >> send_progress_event
- >> handle_data_req_packet
- >> handle_state_packet
- >> handle_data_packet
- >> relay_packet

[Called By]

- >> bl_cmd_handler

dfu_mesh_finalize (Thumb, 304 bytes, Stack size 192 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 320 + Unknown Stack Size
- Call Chain = dfu_mesh_finalize ⇒ bootloader_info_entry_put ⇒ entry_write ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> fwid_union_cpy
- >> bootloader_info_reset
- >> bootloader_info_entry_put
- >> app_error_handler_bare
- >> __aeabi_memset
- >> __aeabi_memcpy4
- >> __aeabi_memcpy

[Called By]

- >> dfu_mesh_timeout

dfu_mesh_timeout (Thumb, 76 bytes, Stack size 8 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 956 + Unknown Stack Size
- Call Chain = dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> dfu_mesh_finalize
- >> start_req
- >> signature_check
- >> send_end_evt

[Called By]

- >> bl_cmd_handler

dfu_mesh_missing_type_get (Thumb, 96 bytes, Stack size 16 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 32
- Call Chain = dfu_mesh_missing_type_get ⇒ bootloader_info_entry_get ⇒ info_entry_get

[Calls]

- >> bootloader_info_entry_get

[Called By]

- >> bootloader_enable

dfu_mesh_app_is_valid (Thumb, 52 bytes, Stack size 8 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 32
- Call Chain = dfu_mesh_app_is_valid ⇒ fw_is_verified ⇒ bootloader_info_entry_get ⇒ info_entry_get

[Calls]

- >> fw_is_verified
- >> bootloader_info_entry_get

[Called By]

- >> bootloader_enable
- >> bootloader_abort
- >> bl_evt_handler

dfu_mesh_restart (Thumb, 4 bytes, Stack size 0 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 92
- Call Chain = dfu_mesh_restart ⇒ start_find_fwid ⇒ beacon_set ⇒ __aeabi_memclr4

[Calls]

- >> start_find_fwid

[Called By]

- >> bl_cmd_handler

dfu_mesh_on_flash_idle (Thumb, 74 bytes, Stack size 40 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 144
- Call Chain = dfu_mesh_on_flash_idle ⇒ dfu_mesh_start ⇒ send_bank_notifications ⇒ bootloader_info_entry_get ⇒ info_entry_get

[Calls]

- >> fwid_union_cpy
- >> dfu_transfer_end
- >> get_info_pointers
- >> bootloader_info_stable
- >> bootloader_evt_send
- >> dfu_mesh_start

[Called By]

- >> bl_cmd_handler

dfu_transfer_init (Thumb, 20 bytes, Stack size 8 bytes, dfu_transfer_mesh.o(.text))
[Stack]

- Max Depth = 12
- Call Chain = dfu_transfer_init ⇒ __aeabi_memclr4

[Calls]

- >> __aeabi_memclr4

[Called By]

- >> dfu_transfer_start
- >> dfu_transfer_end

dfu_transfer_start (Thumb, 106 bytes, Stack size 32 bytes, dfu_transfer_mesh.o(.text))
[Stack]

- Max Depth = 88
- Call Chain = dfu_transfer_start ⇒ flash_erase ⇒ __aeabi_memcpy4

[Calls]

- >> dfu_transfer_init
- >> flash_erase

[Called By]

- >> start_target

dfu_transfer_data (Thumb, 290 bytes, Stack size 48 bytes, dfu_transfer_mesh.o(.text))
[Stack]

- Max Depth = 112
- Call Chain = dfu_transfer_data ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> transfer_abort
- >> segment_is_missing
- >> flash_write
- >> __aeabi_memcpy
- >> __aeabi_llsl

[Called By]

- >> target_rx_data

dfu_transfer_has_entry (Thumb, 100 bytes, Stack size 24 bytes, dfu_transfer_mesh.o(.text))
[Stack]

- Max Depth = 32
- Call Chain = dfu_transfer_has_entry ⇒ segment_is_missing

[Calls]

- >> segment_is_missing
- >> __aeabi_memcpy

[Called By]

- >> handle_data_req_packet

dfu_transfer_get_oldest_missing_entry (Thumb, 102 bytes, Stack size 48 bytes, dfu_transfer_mesh.o(.text))
[Stack]

- Max Depth = 48
- Call Chain = dfu_transfer_get_oldest_missing_entry

[Calls]

- >> __aeabi_llsl

[Called By]

- >> request_missing_data

dfu_transfer_sha256 (Thumb, 24 bytes, Stack size 0 bytes, dfu_transfer_mesh.o(.text))
[Stack]

- Max Depth = 348
- Call Chain = dfu_transfer_sha256 ⇒ sha256_update ⇒ sha256_transform

[Calls]

- >> sha256_update

[Called By]

- >> signature_check

dfu_transfer_end (Thumb, 2 bytes, Stack size 0 bytes, dfu_transfer_mesh.o(.text))
[Stack]

- Max Depth = 12
- Call Chain = dfu_transfer_end ⇒ dfu_transfer_init ⇒ __aeabi_memclr4

[Calls]

- >> dfu_transfer_init

[Called By]

- >> dfu_mesh_on_flash_idle

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

- >> bl_cmd_handler

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

- >> dfu_mesh_finalize
- >> send_bank_notifications
- >> notify_state_packet
- >> start_req
- >> dfu_mesh_relay
- >> dfu_mesh_on_flash_idle

fwid_union_cmp (Thumb, 40 bytes, Stack size 8 bytes, dfu_util.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = fwid_union_cmp ⇒ memcmp

[Calls]

- >> memcmp

[Called By]

- >> handle_state_packet

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

- >> ready_packet_matches_our_req
- >> handle_state_packet

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

- >> ready_packet_matches_our_req

tid_cache_has_entry (Thumb, 26 bytes, Stack size 0 bytes, dfu_util.o(.text))
[Called By]

- >> ready_packet_matches_our_req

ready_packet_matches_our_req (Thumb, 66 bytes, Stack size 16 bytes, dfu_util.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = ready_packet_matches_our_req

[Calls]

- >> tid_cache_has_entry
- >> fwid_union_version_cmp
- >> fwid_union_id_cmp

[Called By]

- >> handle_state_packet

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

- >> target_rx_data

is_upgrade (Thumb, 126 bytes, Stack size 16 bytes, dfu_util.o(.text))
[Stack]

- Max Depth = 32
- Call Chain = is_upgrade ⇒ bootloader_info_entry_get ⇒ info_entry_get

[Calls]

- >> bootloader_info_entry_get

[Called By]

- >> bl_evt_handler

app_is_newer (Thumb, 48 bytes, Stack size 8 bytes, dfu_util.o(.text))
[Stack]

- Max Depth = 24
- Call Chain = app_is_newer ⇒ bootloader_info_entry_get ⇒ info_entry_get

[Calls]

- >> bootloader_info_entry_get

[Called By]

- >> handle_fwid_packet

bootloader_is_newer (Thumb, 38 bytes, Stack size 8 bytes, dfu_util.o(.text))
[Stack]

- Max Depth = 24
- Call Chain = bootloader_is_newer ⇒ bootloader_info_entry_get ⇒ info_entry_get

[Calls]

- >> bootloader_info_entry_get

[Called By]

- >> handle_fwid_packet

fw_is_verified (Thumb, 32 bytes, Stack size 8 bytes, dfu_util.o(.text))
[Stack]

- Max Depth = 24
- Call Chain = fw_is_verified ⇒ bootloader_info_entry_get ⇒ info_entry_get

[Calls]

- >> bootloader_info_entry_get

[Called By]

- >> dfu_mesh_app_is_valid

tid_cache_entry_put (Thumb, 22 bytes, Stack size 8 bytes, dfu_util.o(.text))
[Stack]

- Max Depth = 8
- Call Chain = tid_cache_entry_put

[Called By]

- >> handle_data_packet
- >> target_rx_start

packet_in_cache (Thumb, 44 bytes, Stack size 12 bytes, dfu_util.o(.text))
[Stack]

- Max Depth = 12
- Call Chain = packet_in_cache

[Called By]

- >> handle_data_req_packet
- >> handle_data_packet
- >> dfu_mesh_rx

packet_cache_put (Thumb, 34 bytes, Stack size 12 bytes, dfu_util.o(.text))
[Stack]

- Max Depth = 12
- Call Chain = packet_cache_put

[Called By]

- >> handle_data_packet
- >> relay_packet

packet_cache_flush (Thumb, 20 bytes, Stack size 8 bytes, dfu_util.o(.text))
[Stack]

- Max Depth = 8
- Call Chain = packet_cache_flush

[Calls]

- >> __aeabi_memclr

[Called By]

- >> target_rx_start
- >> dfu_mesh_start

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

- >> target_rx_start
- >> start_target

interrupts_disable (Thumb, 64 bytes, Stack size 12 bytes, dfu_util.o(.text))
[Stack]

- Max Depth = 12
- Call Chain = interrupts_disable

[Called By]

- >> flash_bank_entry_fw
- >> bootloader_abort

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

- >> transport_init
- >> bootloader_init
- >> serial_handler_init
- >> radio_init

fifo_push (Thumb, 80 bytes, Stack size 16 bytes, fifo.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = fifo_push

[Calls]

- >> __aeabi_memcpy

[Called By]

- >> serial_handler_event_send
- >> bl_evt_handler
- >> char_rx
- >> radio_rx_cb
- >> radio_order

fifo_pop (Thumb, 76 bytes, Stack size 16 bytes, fifo.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = fifo_pop

[Calls]

- >> __aeabi_memcpy

[Called By]

- >> SWI3_EGU3_IRQHandler
- >> serial_handler_command_get
- >> SWI1_EGU1_IRQHandler
- >> SWI0_EGU0_IRQHandler
- >> radio_event_handler

fifo_get_len (Thumb, 8 bytes, Stack size 0 bytes, fifo.o(.text))
[Called By]

- >> serial_handler_credit_available
- >> radio_event_handler

fifo_peek_at (Thumb, 72 bytes, Stack size 16 bytes, fifo.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = fifo_peek_at

[Calls]

- >> __aeabi_memcpy

[Called By]

- >> fifo_peek

fifo_peek (Thumb, 4 bytes, Stack size 0 bytes, fifo.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = fifo_peek ⇒ fifo_peek_at

[Calls]

- >> fifo_peek_at

[Called By]

- >> radio_event_handler

fifo_flush (Thumb, 6 bytes, Stack size 0 bytes, fifo.o(.text), UNUSED)

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

- >> serial_handler_event_send
- >> char_rx

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

- >> bootloader_abort
- >> SWI3_EGU3_IRQHandler
- >> UARTE0_UART0_IRQHandler
- >> radio_init

app_error_handler_bare (Thumb, 6 bytes, Stack size 0 bytes, main.o(.text))
[Called By]

- >> dfu_mesh_finalize
- >> start_ready
- >> target_rx_start
- >> start_target
- >> flash_bank_entry
- >> flash_bank_entry_fw
- >> bootloader_info_reset
- >> entry_write
- >> entry_invalidate
- >> entry_header_invalidate
- >> copy_page_write_next_data
- >> free_write_buffer
- >> bootloader_info_init
- >> bootloader_info_entry_put
- >> transport_init
- >> mesh_packet_ref_count_dec
- >> bl_cmd_handler
- >> bootloader_timeout
- >> bootloader_enable
- >> bootloader_init
- >> bootloader_abort
- >> SWI3_EGU3_IRQHandler
- >> bl_evt_handler
- >> SWI0_EGU0_IRQHandler
- >> radio_event_handler
- >> mesh_packet_ref_count_inc

app_error_handler (Thumb, 6 bytes, Stack size 0 bytes, main.o(.text), UNUSED)

HardFault_Handler (Thumb, 6 bytes, Stack size 0 bytes, main.o(.text))
[Address Reference Count : 1]

- arm_startup_nrf52.o(RESET)

main (Thumb, 120 bytes, Stack size 0 bytes, main.o(.text))
[Stack]

- Max Depth = 1068 + Unknown Stack Size
- Call Chain = main ⇒ bootloader_enable ⇒ bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> dfu_bank_transfer_in_progress
- >> bootloader_enable
- >> bootloader_init
- >> bootloader_abort

[Called By]

- >> __rt_entry_main

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

- >> transport_init

mesh_packet_acquire (Thumb, 60 bytes, Stack size 8 bytes, mesh_packet.o(.text))
[Stack]

- Max Depth = 8
- Call Chain = mesh_packet_acquire

[Called By]

- >> bl_evt_handler
- >> order_scan

mesh_packet_ref_count_inc (Thumb, 60 bytes, Stack size 16 bytes, mesh_packet.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = mesh_packet_ref_count_inc

[Calls]

- >> app_error_handler_bare

[Called By]

- >> transport_rtc_irq_handler
- >> transport_tx

mesh_packet_ref_count_dec (Thumb, 66 bytes, Stack size 8 bytes, mesh_packet.o(.text))
[Stack]

- Max Depth = 8
- Call Chain = mesh_packet_ref_count_dec

[Calls]

- >> app_error_handler_bare

[Called By]

- >> transport_rtc_irq_handler
- >> transport_tx_abort
- >> transport_tx
- >> bl_evt_handler
- >> SWI0_EGU0_IRQHandler
- >> radio_rx_cb
- >> radio_tx_cb
- >> order_scan

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

- >> SWI0_EGU0_IRQHandler

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

- >> bl_evt_handler

mesh_packet_adv_data_get (Thumb, 78 bytes, Stack size 12 bytes, mesh_packet.o(.text))
[Stack]

- Max Depth = 12
- Call Chain = mesh_packet_adv_data_get

[Called By]

- >> rx_cb
- >> radio_tx_cb

nrf_flash_erase (Thumb, 88 bytes, Stack size 20 bytes, nrf_flash.o(.text))
[Stack]

- Max Depth = 20
- Call Chain = nrf_flash_erase

[Called By]

- >> SWI3_EGU3_IRQHandler

nrf_flash_store (Thumb, 108 bytes, Stack size 28 bytes, nrf_flash.o(.text))
[Stack]

- Max Depth = 28
- Call Chain = nrf_flash_store

[Called By]

- >> SWI3_EGU3_IRQHandler

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

- >> bootloader_abort
- >> radio_event_handler

radio_init (Thumb, 244 bytes, Stack size 32 bytes, radio_control.o(.text))
[Stack]

- Max Depth = 32
- Call Chain = radio_init

[Calls]

- >> fifo_is_empty
- >> fifo_init
- >> timeslot_is_in_ts
- >> __NVIC_SetPendingIRQ

[Called By]

- >> transport_init

radio_order (Thumb, 68 bytes, Stack size 8 bytes, radio_control.o(.text))
[Stack]

- Max Depth = 24
- Call Chain = radio_order ⇒ fifo_push

[Calls]

- >> fifo_push
- >> timeslot_is_in_ts
- >> __NVIC_SetPendingIRQ

[Called By]

- >> transport_rtc_irq_handler
- >> order_scan

radio_event_handler (Thumb, 230 bytes, Stack size 40 bytes, radio_control.o(.text))
[Stack]

- Max Depth = 72
- Call Chain = radio_event_handler ⇒ setup_event

[Calls]

- >> fifo_peek
- >> fifo_get_len
- >> radio_disable
- >> fifo_pop
- >> app_error_handler_bare
- >> setup_event

[Called By]

- >> RADIO_IRQHandler

rand_prng_get (Thumb, 36 bytes, Stack size 8 bytes, rand.o(.text))
[Stack]

- Max Depth = 8
- Call Chain = rand_prng_get

[Called By]

- >> set_next_tx
- >> rand_prng_seed

rand_hw_rng_get (Thumb, 44 bytes, Stack size 16 bytes, rand.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = rand_hw_rng_get

[Called By]

- >> rand_prng_seed

rand_prng_seed (Thumb, 50 bytes, Stack size 16 bytes, rand.o(.text))
[Stack]

- Max Depth = 32
- Call Chain = rand_prng_seed ⇒ rand_hw_rng_get

[Calls]

- >> rand_hw_rng_get
- >> rand_prng_get

[Called By]

- >> transport_init

transport_start (Thumb, 16 bytes, Stack size 0 bytes, transport.o(.text))
[Stack]

- Max Depth = 40
- Call Chain = transport_start ⇒ order_scan ⇒ radio_order ⇒ fifo_push

[Calls]

- >> order_scan

[Called By]

- >> bootloader_enable
- >> SWI0_EGU0_IRQHandler

SWI0_EGU0_IRQHandler (Thumb, 64 bytes, Stack size 16 bytes, transport.o(.text))
[Stack]

- Max Depth = 56
- Call Chain = SWI0_EGU0_IRQHandler ⇒ transport_start ⇒ order_scan ⇒ radio_order ⇒ fifo_push

[Calls]

- >> transport_start
- >> mesh_packet_ref_count_dec
- >> fifo_pop
- >> app_error_handler_bare
- >> mesh_packet_ref_count_get

[Address Reference Count : 1]

- arm_startup_nrf52.o(RESET)

RADIO_IRQHandler (Thumb, 4 bytes, Stack size 0 bytes, transport.o(.text))
[Stack]

- Max Depth = 72
- Call Chain = RADIO_IRQHandler ⇒ radio_event_handler ⇒ setup_event

[Calls]

- >> radio_event_handler

[Address Reference Count : 1]

- arm_startup_nrf52.o(RESET)

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

- >> radio_order
- >> radio_init

transport_init (Thumb, 96 bytes, Stack size 8 bytes, transport.o(.text))
[Stack]

- Max Depth = 40
- Call Chain = transport_init ⇒ rand_prng_seed ⇒ rand_hw_rng_get

[Calls]

- >> fifo_init
- >> app_error_handler_bare
- >> __aeabi_memclr4
- >> __NVIC_SetPriority
- >> __NVIC_EnableIRQ
- >> rand_prng_seed
- >> radio_init
- >> mesh_packet_init

[Called By]

- >> bootloader_init

transport_tx (Thumb, 96 bytes, Stack size 24 bytes, transport.o(.text))
[Stack]

- Max Depth = 48
- Call Chain = transport_tx ⇒ set_next_tx ⇒ rand_prng_get

[Calls]

- >> mesh_packet_ref_count_dec
- >> order_next_rtc
- >> set_next_tx
- >> mesh_packet_ref_count_inc

[Called By]

- >> bl_evt_handler

transport_tx_abort (Thumb, 50 bytes, Stack size 8 bytes, transport.o(.text))
[Stack]

- Max Depth = 28
- Call Chain = transport_tx_abort ⇒ order_next_rtc

[Calls]

- >> mesh_packet_ref_count_dec
- >> __NVIC_DisableIRQ
- >> __NVIC_EnableIRQ
- >> order_next_rtc

[Called By]

- >> bl_evt_handler

transport_rtc_irq_handler (Thumb, 178 bytes, Stack size 32 bytes, transport.o(.text))
[Stack]

- Max Depth = 56
- Call Chain = transport_rtc_irq_handler ⇒ set_next_tx ⇒ rand_prng_get

[Calls]

- >> mesh_packet_ref_count_dec
- >> order_next_rtc
- >> set_next_tx
- >> radio_order
- >> mesh_packet_ref_count_inc

[Called By]

- >> RTC0_IRQHandler

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

- >> serial_command_handler
- >> radio_tx_cb

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

- >> serial_command_handler

uECC_verify (Thumb, 540 bytes, Stack size 488 bytes, uECC.o(.text))
[Stack]

- Max Depth = 788
- Call Chain = uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> vli_bytesToNative
- >> vli_modMult_fast
- >> vli_modSub
- >> vli_cmp
- >> vli_set
- >> vli_testBit
- >> vli_isZero
- >> vli_clear
- >> vli_modMult_n
- >> XYcZ_add
- >> apply_z
- >> EccPoint_double_jacobian
- >> vli_modInv
- >> vli_sub
- >> vli_numBits

[Called By]

- >> signature_check

sha256_transform (Thumb, 294 bytes, Stack size 324 bytes, sha256.o(.text))
[Stack]

- Max Depth = 324
- Call Chain = sha256_transform

[Called By]

- >> sha256_update
- >> sha256_final

sha256_init (Thumb, 50 bytes, Stack size 0 bytes, sha256.o(.text))
[Called By]

- >> signature_check

sha256_update (Thumb, 84 bytes, Stack size 24 bytes, sha256.o(.text))
[Stack]

- Max Depth = 348
- Call Chain = sha256_update ⇒ sha256_transform

[Calls]

- >> sha256_transform

[Called By]

- >> dfu_transfer_sha256
- >> signature_check

sha256_final (Thumb, 272 bytes, Stack size 16 bytes, sha256.o(.text))
[Stack]

- Max Depth = 340
- Call Chain = sha256_final ⇒ sha256_transform

[Calls]

- >> __aeabi_memclr4
- >> sha256_transform

[Called By]

- >> signature_check

SWI1_EGU1_IRQHandler (Thumb, 48 bytes, Stack size 8 bytes, serial_handler_uart.o(.text))
[Stack]

- Max Depth = 24
- Call Chain = SWI1_EGU1_IRQHandler ⇒ fifo_pop

[Calls]

- >> fifo_pop

[Address Reference Count : 1]

- arm_startup_nrf52.o(RESET)

serial_handler_event_send (Thumb, 62 bytes, Stack size 48 bytes, serial_handler_uart.o(.text))
[Stack]

- Max Depth = 64
- Call Chain = serial_handler_event_send ⇒ fifo_push

[Calls]

- >> fifo_is_full
- >> fifo_push
- >> __aeabi_memcpy
- >> schedule_transmit

[Called By]

- >> mesh_aci_start
- >> bl_evt_handler
- >> mesh_aci_rbc_event_handler
- >> serial_command_handler
- >> char_rx
- >> radio_tx_cb

UARTE0_UART0_IRQHandler (Thumb, 104 bytes, Stack size 16 bytes, serial_handler_uart.o(.text))
[Stack]

- Max Depth = 128
- Call Chain = UARTE0_UART0_IRQHandler ⇒ char_rx ⇒ serial_handler_event_send ⇒ fifo_push

[Calls]

- >> fifo_is_empty
- >> char_rx
- >> schedule_transmit

[Called By]

- >> serial_wait_for_completion

[Address Reference Count : 1]

- arm_startup_nrf52.o(RESET)

serial_handler_init (Thumb, 174 bytes, Stack size 16 bytes, serial_handler_uart.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = serial_handler_init

[Calls]

- >> fifo_init

[Called By]

- >> mesh_aci_init

serial_handler_credit_available (Thumb, 8 bytes, Stack size 0 bytes, serial_handler_uart.o(.text))
[Calls]

- >> fifo_get_len

[Called By]

- >> mesh_aci_start

serial_wait_for_completion (Thumb, 40 bytes, Stack size 16 bytes, serial_handler_uart.o(.text))
[Stack]

- Max Depth = 144
- Call Chain = serial_wait_for_completion ⇒ UARTE0_UART0_IRQHandler ⇒ char_rx ⇒ serial_handler_event_send ⇒ fifo_push

[Calls]

- >> UARTE0_UART0_IRQHandler

[Called By]

- >> serial_command_handler

serial_handler_command_get (Thumb, 62 bytes, Stack size 48 bytes, serial_handler_uart.o(.text))
[Stack]

- Max Depth = 64
- Call Chain = serial_handler_command_get ⇒ fifo_pop

[Calls]

- >> fifo_pop
- >> __aeabi_memcpy

[Called By]

- >> mesh_aci_command_check

serial_handler_uart_disable (Thumb, 42 bytes, Stack size 0 bytes, serial_handler_uart.o(.text))
[Called By]

- >> bootloader_abort
- >> SWI3_EGU3_IRQHandler

mesh_aci_init (Thumb, 24 bytes, Stack size 0 bytes, mesh_aci.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = mesh_aci_init ⇒ serial_handler_init

[Calls]

- >> serial_handler_init

[Called By]

- >> bootloader_init

mesh_aci_start (Thumb, 60 bytes, Stack size 40 bytes, mesh_aci.o(.text))
[Stack]

- Max Depth = 104
- Call Chain = mesh_aci_start ⇒ serial_handler_event_send ⇒ fifo_push

[Calls]

- >> serial_handler_event_send
- >> serial_handler_credit_available

[Called By]

- >> bootloader_enable

mesh_aci_command_check (Thumb, 24 bytes, Stack size 40 bytes, mesh_aci.o(.text))
[Stack]

- Max Depth = 1108 + Unknown Stack Size
- Call Chain = mesh_aci_command_check ⇒ serial_command_handler ⇒ bootloader_cmd_send ⇒ bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> serial_command_handler
- >> serial_handler_command_get

[Called By]

- >> SWI2_EGU2_IRQHandler

mesh_aci_rbc_event_handler (Thumb, 72 bytes, Stack size 40 bytes, mesh_aci.o(.text), UNUSED)
[Calls]

- >> serial_handler_event_send
- >> __aeabi_memcpy

SystemCoreClockUpdate (Thumb, 8 bytes, Stack size 0 bytes, system_nrf52.o(.text), UNUSED)

SystemInit (Thumb, 754 bytes, Stack size 20 bytes, system_nrf52.o(.text))
[Stack]

- Max Depth = 20
- Call Chain = SystemInit

[Address Reference Count : 1]

- arm_startup_nrf52.o(.text)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

MemoryManagement_Handler (Thumb, 2 bytes, Stack size 0 bytes, arm_startup_nrf52.o(.text))
[Address Reference Count : 1]

- arm_startup_nrf52.o(RESET)

BusFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, arm_startup_nrf52.o(.text))
[Address Reference Count : 1]

- arm_startup_nrf52.o(RESET)

UsageFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, arm_startup_nrf52.o(.text))
[Address Reference Count : 1]

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

SysTick_Handler (Thumb, 2 bytes, Stack size 0 bytes, arm_startup_nrf52.o(.text))
[Address Reference Count : 1]

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

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

- arm_startup_nrf52.o(RESET)

__user_initial_stackheap (Thumb, 10 bytes, Stack size 0 bytes, arm_startup_nrf52.o(.text))
[Called By]

- >> __user_setup_stackheap

__aeabi_uldivmod (Thumb, 0 bytes, Stack size 48 bytes, lludivv7m.o(.text))
[Stack]

- Max Depth = 48
- Call Chain = __aeabi_uldivmod

[Called By]

- >> bl_evt_handler

_ll_udiv (Thumb, 238 bytes, Stack size 48 bytes, lludivv7m.o(.text), UNUSED)

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

- >> segment_is_missing
- >> dfu_transfer_get_oldest_missing_entry
- >> dfu_transfer_data

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

memcmp (Thumb, 88 bytes, Stack size 8 bytes, memcmp.o(.text))
[Stack]

- Max Depth = 8
- Call Chain = memcmp

[Called By]

- >> fwid_union_cmp
- >> flash_bank_entry_fw

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

- >> fifo_peek_at
- >> dfu_transfer_has_entry
- >> dfu_transfer_data
- >> dfu_mesh_finalize
- >> target_rx_data
- >> beacon_set
- >> serial_handler_event_send
- >> fifo_push
- >> fifo_pop
- >> bl_evt_handler
- >> mesh_aci_rbc_event_handler
- >> serial_command_handler
- >> serial_handler_command_get

__rt_memcpy (Thumb, 138 bytes, Stack size 0 bytes, rt_memcpy_v6.o(.text), UNUSED)
[Calls]

- >> __aeabi_memcpy4

_memcpy_lastbytes (Thumb, 0 bytes, Stack size unknown bytes, rt_memcpy_v6.o(.text), UNUSED)

__aeabi_memcpy4 (Thumb, 0 bytes, Stack size 8 bytes, rt_memcpy_w.o(.text))
[Stack]

- Max Depth = 8
- Call Chain = __aeabi_memcpy4

[Called By]

- >> dfu_mesh_finalize
- >> flash_bank_entry
- >> entry_write
- >> flash_erase
- >> flash_write
- >> __rt_memcpy

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

__rt_memcpy_w (Thumb, 100 bytes, Stack size 8 bytes, rt_memcpy_w.o(.text), UNUSED)

_memcpy_lastbytes_aligned (Thumb, 0 bytes, Stack size unknown bytes, rt_memcpy_w.o(.text), UNUSED)

__aeabi_memset (Thumb, 16 bytes, Stack size 0 bytes, aeabi_memset.o(.text))
[Calls]

- >> _memset

[Called By]

- >> dfu_mesh_finalize
- >> start_target
- >> flash_bank_entry
- >> entry_write
- >> SWI3_EGU3_IRQHandler

__aeabi_memclr (Thumb, 0 bytes, Stack size 0 bytes, rt_memclr.o(.text))
[Called By]

- >> packet_cache_flush
- >> target_rx_start
- >> dfu_mesh_init
- >> dfu_mesh_start

__rt_memclr (Thumb, 68 bytes, Stack size 0 bytes, rt_memclr.o(.text), UNUSED)
[Calls]

- >> _memset_w

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

- >> __aeabi_memset

__aeabi_memclr4 (Thumb, 0 bytes, Stack size 4 bytes, rt_memclr_w.o(.text))
[Stack]

- Max Depth = 4
- Call Chain = __aeabi_memclr4

[Called By]

- >> dfu_transfer_init
- >> sha256_final
- >> start_find_fwid
- >> beacon_set
- >> dfu_mesh_init
- >> bootloader_info_init
- >> transport_init
- >> dfu_mesh_start
- >> bootloader_init

__aeabi_memclr8 (Thumb, 0 bytes, Stack size 4 bytes, rt_memclr_w.o(.text), UNUSED)

__rt_memclr_w (Thumb, 78 bytes, Stack size 4 bytes, rt_memclr_w.o(.text), UNUSED)

_memset_w (Thumb, 0 bytes, Stack size unknown bytes, rt_memclr_w.o(.text), UNUSED)
[Called By]

- >> __rt_memclr

__use_two_region_memory (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)

__rt_heap_escrow$2region (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)

__rt_heap_expand$2region (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)

__user_setup_stackheap (Thumb, 74 bytes, Stack size 8 bytes, sys_stackheap_outer.o(.text))
[Stack]

- Max Depth = 8
- Call Chain = __user_setup_stackheap

[Calls]

- >> __user_perproc_libspace
- >> __user_initial_stackheap

[Called By]

- >> __rt_entry_sh

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

- Max Depth = 8 + Unknown Stack Size
- Call Chain = exit

[Calls]

- >> __rt_exit

[Called By]

- >> __rt_entry_main

__user_libspace (Thumb, 8 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED)

__user_perproc_libspace (Thumb, 0 bytes, Stack size 0 bytes, libspace.o(.text))
[Called By]

- >> __user_setup_stackheap

__user_perthread_libspace (Thumb, 0 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED)

_sys_exit (Thumb, 8 bytes, Stack size 0 bytes, sys_exit.o(.text))
[Called By]

- >> __rt_exit_exit

__I$use$semihosting (Thumb, 0 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED)

__use_no_semihosting_swi (Thumb, 2 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED)

__semihosting_library_function (Thumb, 0 bytes, Stack size 0 bytes, indicate_semi.o(.text), UNUSED)

_fp_init (Thumb, 10 bytes, Stack size 0 bytes, fpinit.o(x$fpl$fpinit))
[Called By]

- >> __rt_lib_init_fp_1

__fplib_config_fpu_vfp (Thumb, 0 bytes, Stack size unknown bytes, fpinit.o(x$fpl$fpinit), UNUSED)

__fplib_config_pureend_doubles (Thumb, 0 bytes, Stack size unknown bytes, fpinit.o(x$fpl$fpinit), UNUSED)

### Local Symbols

rx_cb (Thumb, 48 bytes, Stack size 32 bytes, bootloader.o(.text))
[Stack]

- Max Depth = 1036 + Unknown Stack Size
- Call Chain = rx_cb ⇒ bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> mesh_packet_adv_data_get
- >> bl_cmd_handler

[Address Reference Count : 1]

- bootloader.o(.text)

bl_evt_handler (Thumb, 572 bytes, Stack size 48 bytes, bootloader.o(.text))
[Stack]

- Max Depth = 1052 + Unknown Stack Size
- Call Chain = bl_evt_handler ⇒ bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> transport_tx_abort
- >> transport_tx
- >> serial_handler_event_send
- >> mesh_packet_set_local_addr
- >> mesh_packet_ref_count_dec
- >> mesh_packet_acquire
- >> is_upgrade
- >> fifo_push
- >> dfu_mesh_start
- >> dfu_mesh_app_is_valid
- >> dfu_bank_flash
- >> bootloader_info_entry_get
- >> bl_cmd_handler
- >> app_error_handler_bare
- >> bootloader_abort
- >> stop_timeout
- >> set_timeout
- >> __NVIC_SetPendingIRQ
- >> __aeabi_memcpy
- >> __aeabi_uldivmod

[Address Reference Count : 1]

- bootloader.o(.text)

__NVIC_SetPendingIRQ (Thumb, 26 bytes, Stack size 0 bytes, bootloader.o(.text))
[Called By]

- >> bl_evt_handler

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

- >> bootloader_enable
- >> bl_evt_handler

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

- >> bl_evt_handler

info_entry_get (Thumb, 68 bytes, Stack size 16 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = info_entry_get

[Called By]

- >> entry_invalidate
- >> bootloader_info_first_unused_get
- >> bootloader_info_entry_get

free_write_buffer (Thumb, 114 bytes, Stack size 24 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 24
- Call Chain = free_write_buffer

[Calls]

- >> app_error_handler_bare

[Called By]

- >> bootloader_info_on_flash_op_end

place_head_after_entry (Thumb, 50 bytes, Stack size 0 bytes, bootloader_info.o(.text))
[Called By]

- >> get_write_buffer

get_write_buffer (Thumb, 132 bytes, Stack size 24 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 24
- Call Chain = get_write_buffer

[Calls]

- >> place_head_after_entry

[Called By]

- >> entry_write

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

- Max Depth = 72
- Call Chain = copy_page_write_meta ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> flash_write

[Called By]

- >> copy_page_on_flash_op_end
- >> bootloader_info_on_flash_idle

copy_page_write_next_data (Thumb, 108 bytes, Stack size 16 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 80
- Call Chain = copy_page_write_next_data ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> flash_write
- >> app_error_handler_bare

[Called By]

- >> copy_page_on_flash_op_end

copy_page (Thumb, 42 bytes, Stack size 16 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 72
- Call Chain = copy_page ⇒ flash_erase ⇒ __aeabi_memcpy4

[Calls]

- >> flash_erase

[Called By]

- >> bootloader_info_reset
- >> bootloader_info_on_flash_op_end

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

- Max Depth = 72
- Call Chain = entry_header_invalidate ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> flash_write
- >> app_error_handler_bare

[Called By]

- >> entry_invalidate
- >> bootloader_info_entry_put

bootloader_info_header_get (Thumb, 26 bytes, Stack size 0 bytes, bootloader_info.o(.text))
[Called By]

- >> entry_invalidate
- >> bootloader_info_first_unused_get
- >> bootloader_info_entry_put
- >> bootloader_info_entry_overwrite

bootloader_info_first_unused_get (Thumb, 22 bytes, Stack size 8 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 24
- Call Chain = bootloader_info_first_unused_get ⇒ info_entry_get

[Calls]

- >> bootloader_info_header_get
- >> info_entry_get

[Called By]

- >> bootloader_info_on_flash_op_end
- >> bootloader_info_init

copy_page_on_flash_op_end (Thumb, 84 bytes, Stack size 8 bytes, bootloader_info.o(.text))
[Stack]

- Max Depth = 88
- Call Chain = copy_page_on_flash_op_end ⇒ copy_page_write_next_data ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> copy_page_write_next_data
- >> copy_page_write_meta

[Called By]

- >> bootloader_info_on_flash_op_end

flash_bank_entry_fw (Thumb, 332 bytes, Stack size 64 bytes, dfu_bank.o(.text))
[Stack]

- Max Depth = 176 + Unknown Stack Size
- Call Chain = flash_bank_entry_fw ⇒ bootloader_info_entry_overwrite ⇒ entry_write ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> bootloader_is_in_application
- >> bootloader_evt_send
- >> interrupts_disable
- >> bootloader_info_entry_overwrite
- >> bootloader_info_entry_get
- >> app_error_handler_bare
- >> memcmp

[Called By]

- >> flash_bank_entry

flash_bank_entry (Thumb, 330 bytes, Stack size 280 bytes, dfu_bank.o(.text))
[Stack]

- Max Depth = 456 + Unknown Stack Size
- Call Chain = flash_bank_entry ⇒ flash_bank_entry_fw ⇒ bootloader_info_entry_overwrite ⇒ entry_write ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> flash_bank_entry_fw
- >> bootloader_info_entry_put
- >> bootloader_info_entry_invalidate
- >> bootloader_info_entry_overwrite
- >> bootloader_info_entry_get
- >> app_error_handler_bare
- >> __aeabi_memset
- >> __aeabi_memcpy4

[Called By]

- >> dfu_bank_on_flash_idle
- >> dfu_bank_scan
- >> dfu_bank_flash

get_info_pointers (Thumb, 98 bytes, Stack size 8 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 48
- Call Chain = get_info_pointers ⇒ send_end_evt

[Calls]

- >> send_end_evt
- >> bootloader_info_entry_get

[Called By]

- >> dfu_mesh_on_flash_idle
- >> dfu_mesh_init
- >> dfu_mesh_start

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

- >> handle_data_packet
- >> target_rx_start

packet_tx_dynamic (Thumb, 64 bytes, Stack size 56 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 56
- Call Chain = packet_tx_dynamic

[Calls]

- >> bootloader_evt_send

[Called By]

- >> handle_data_req_packet
- >> relay_packet

signature_check (Thumb, 148 bytes, Stack size 160 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 948
- Call Chain = signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> uECC_verify
- >> sha256_update
- >> sha256_init
- >> sha256_final
- >> dfu_transfer_sha256

[Called By]

- >> dfu_mesh_timeout

beacon_set (Thumb, 240 bytes, Stack size 80 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 84
- Call Chain = beacon_set ⇒ __aeabi_memclr4

[Calls]

- >> bootloader_evt_send
- >> __aeabi_memclr4
- >> __aeabi_memcpy

[Called By]

- >> start_ready
- >> start_find_fwid
- >> handle_state_packet
- >> start_req
- >> dfu_mesh_relay

relay_packet (Thumb, 44 bytes, Stack size 16 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 72
- Call Chain = relay_packet ⇒ packet_tx_dynamic

[Calls]

- >> packet_cache_put
- >> packet_tx_dynamic

[Called By]

- >> handle_data_req_packet
- >> handle_data_packet
- >> dfu_mesh_rx

start_req (Thumb, 66 bytes, Stack size 16 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 100
- Call Chain = start_req ⇒ beacon_set ⇒ __aeabi_memclr4

[Calls]

- >> fwid_union_cpy
- >> state_beacon_type
- >> beacon_set

[Called By]

- >> handle_data_packet
- >> target_rx_start
- >> start_target
- >> dfu_mesh_timeout
- >> dfu_mesh_req

start_target (Thumb, 432 bytes, Stack size 192 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 320 + Unknown Stack Size
- Call Chain = start_target ⇒ bootloader_info_entry_put ⇒ entry_write ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> section_overlap
- >> dfu_transfer_start
- >> start_req
- >> bootloader_info_entry_put
- >> bootloader_info_entry_invalidate
- >> bootloader_evt_send
- >> bootloader_info_entry_overwrite
- >> bootloader_info_entry_get
- >> app_error_handler_bare
- >> __aeabi_memset

[Called By]

- >> target_rx_start

notify_state_packet (Thumb, 56 bytes, Stack size 40 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 40
- Call Chain = notify_state_packet

[Calls]

- >> fwid_union_cpy
- >> bootloader_evt_send

[Called By]

- >> handle_state_packet

target_rx_start (Thumb, 274 bytes, Stack size 32 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 352 + Unknown Stack Size
- Call Chain = target_rx_start ⇒ start_target ⇒ bootloader_info_entry_put ⇒ entry_write ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> tid_cache_entry_put
- >> section_overlap
- >> packet_cache_flush
- >> start_find_fwid
- >> start_target
- >> start_req
- >> segment_count_from_start_packet
- >> send_end_evt
- >> app_error_handler_bare
- >> __aeabi_memclr

[Called By]

- >> handle_data_packet

target_rx_data (Thumb, 204 bytes, Stack size 72 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 208
- Call Chain = target_rx_data ⇒ request_missing_data ⇒ dfu_transfer_get_oldest_missing_entry

[Calls]

- >> dfu_transfer_data
- >> addr_from_seg
- >> request_missing_data
- >> send_progress_event
- >> bootloader_evt_send
- >> __aeabi_memcpy

[Called By]

- >> handle_data_packet

handle_data_packet (Thumb, 342 bytes, Stack size 72 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 424 + Unknown Stack Size
- Call Chain = handle_data_packet ⇒ target_rx_start ⇒ start_target ⇒ bootloader_info_entry_put ⇒ entry_write ⇒ flash_write ⇒ __aeabi_memcpy4

[Calls]

- >> tid_cache_entry_put
- >> packet_in_cache
- >> packet_cache_put
- >> send_progress_event
- >> target_rx_data
- >> target_rx_start
- >> start_req
- >> relay_packet
- >> segment_count_from_start_packet
- >> tx_abort
- >> bootloader_evt_send

[Called By]

- >> dfu_mesh_rx

handle_state_packet (Thumb, 230 bytes, Stack size 24 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 124
- Call Chain = handle_state_packet ⇒ start_ready ⇒ beacon_set ⇒ __aeabi_memclr4

[Calls]

- >> ready_packet_matches_our_req
- >> fwid_union_id_cmp
- >> fwid_union_cmp
- >> start_ready
- >> state_beacon_type
- >> notify_state_packet
- >> beacon_set

[Called By]

- >> dfu_mesh_rx

handle_data_req_packet (Thumb, 224 bytes, Stack size 64 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 136
- Call Chain = handle_data_req_packet ⇒ relay_packet ⇒ packet_tx_dynamic

[Calls]

- >> packet_in_cache
- >> dfu_transfer_has_entry
- >> relay_packet
- >> packet_tx_dynamic
- >> bootloader_evt_send

[Called By]

- >> dfu_mesh_rx

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

- >> start_ready
- >> handle_state_packet
- >> start_req
- >> dfu_mesh_relay

send_progress_event (Thumb, 26 bytes, Stack size 40 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 40
- Call Chain = send_progress_event

[Calls]

- >> bootloader_evt_send

[Called By]

- >> handle_data_packet
- >> target_rx_data
- >> dfu_mesh_rx

send_bank_notifications (Thumb, 122 bytes, Stack size 80 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 96
- Call Chain = send_bank_notifications ⇒ bootloader_info_entry_get ⇒ info_entry_get

[Calls]

- >> fwid_union_cpy
- >> bootloader_evt_send
- >> bootloader_info_entry_get

[Called By]

- >> dfu_mesh_start

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

- Max Depth = 92
- Call Chain = start_find_fwid ⇒ beacon_set ⇒ __aeabi_memclr4

[Calls]

- >> beacon_set
- >> __aeabi_memclr4

[Called By]

- >> target_rx_start
- >> dfu_mesh_restart
- >> dfu_mesh_start

start_ready (Thumb, 82 bytes, Stack size 16 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 100
- Call Chain = start_ready ⇒ beacon_set ⇒ __aeabi_memclr4

[Calls]

- >> state_beacon_type
- >> beacon_set
- >> app_error_handler_bare

[Called By]

- >> handle_state_packet

request_missing_data (Thumb, 138 bytes, Stack size 88 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 136
- Call Chain = request_missing_data ⇒ dfu_transfer_get_oldest_missing_entry

[Calls]

- >> dfu_transfer_get_oldest_missing_entry
- >> bootloader_evt_send

[Called By]

- >> target_rx_data

handle_fwid_packet (Thumb, 162 bytes, Stack size 56 bytes, dfu_mesh.o(.text))
[Stack]

- Max Depth = 80
- Call Chain = handle_fwid_packet ⇒ bootloader_is_newer ⇒ bootloader_info_entry_get ⇒ info_entry_get

[Calls]

- >> bootloader_is_newer
- >> app_is_newer
- >> bootloader_evt_send

[Called By]

- >> dfu_mesh_rx

segment_is_missing (Thumb, 44 bytes, Stack size 8 bytes, dfu_transfer_mesh.o(.text))
[Stack]

- Max Depth = 8
- Call Chain = segment_is_missing

[Calls]

- >> __aeabi_llsl

[Called By]

- >> dfu_transfer_has_entry
- >> dfu_transfer_data

transfer_abort (Thumb, 12 bytes, Stack size 0 bytes, dfu_transfer_mesh.o(.text))
[Stack]

- Max Depth = 40
- Call Chain = transfer_abort ⇒ send_end_evt

[Calls]

- >> send_end_evt

[Called By]

- >> dfu_transfer_data

setup_event (Thumb, 162 bytes, Stack size 32 bytes, radio_control.o(.text))
[Stack]

- Max Depth = 32
- Call Chain = setup_event

[Called By]

- >> radio_event_handler

__NVIC_SetPendingIRQ (Thumb, 26 bytes, Stack size 0 bytes, radio_control.o(.text))
[Called By]

- >> radio_order
- >> radio_init

set_next_tx (Thumb, 124 bytes, Stack size 16 bytes, transport.o(.text))
[Stack]

- Max Depth = 24
- Call Chain = set_next_tx ⇒ rand_prng_get

[Calls]

- >> rand_prng_get

[Called By]

- >> transport_rtc_irq_handler
- >> transport_tx

order_scan (Thumb, 52 bytes, Stack size 16 bytes, transport.o(.text))
[Stack]

- Max Depth = 40
- Call Chain = order_scan ⇒ radio_order ⇒ fifo_push

[Calls]

- >> mesh_packet_ref_count_dec
- >> mesh_packet_acquire
- >> radio_order

[Called By]

- >> transport_start
- >> radio_idle_cb

radio_tx_cb (Thumb, 66 bytes, Stack size 40 bytes, transport.o(.text))
[Stack]

- Max Depth = 104
- Call Chain = radio_tx_cb ⇒ serial_handler_event_send ⇒ fifo_push

[Calls]

- >> serial_handler_event_send
- >> mesh_packet_ref_count_dec
- >> mesh_packet_adv_data_get
- >> transport_tx_evt_get

[Address Reference Count : 1]

- transport.o(.text)

radio_rx_cb (Thumb, 38 bytes, Stack size 24 bytes, transport.o(.text))
[Stack]

- Max Depth = 40
- Call Chain = radio_rx_cb ⇒ fifo_push

[Calls]

- >> mesh_packet_ref_count_dec
- >> fifo_push

[Address Reference Count : 1]

- transport.o(.text)

radio_idle_cb (Thumb, 12 bytes, Stack size 0 bytes, transport.o(.text))
[Stack]

- Max Depth = 40
- Call Chain = radio_idle_cb ⇒ order_scan ⇒ radio_order ⇒ fifo_push

[Calls]

- >> order_scan

[Address Reference Count : 1]

- transport.o(.text)

order_next_rtc (Thumb, 92 bytes, Stack size 20 bytes, transport.o(.text))
[Stack]

- Max Depth = 20
- Call Chain = order_next_rtc

[Called By]

- >> transport_rtc_irq_handler
- >> transport_tx_abort
- >> transport_tx

__NVIC_EnableIRQ (Thumb, 26 bytes, Stack size 0 bytes, transport.o(.text))
[Called By]

- >> transport_tx_abort
- >> transport_init

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

- >> transport_tx_abort

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

- >> transport_init

vli_numBits (Thumb, 50 bytes, Stack size 0 bytes, uECC.o(.text))
[Called By]

- >> uECC_verify

vli_add (Thumb, 50 bytes, Stack size 16 bytes, uECC.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = vli_add

[Called By]

- >> vli_modSub
- >> vli_modAdd
- >> EccPoint_double_jacobian
- >> vli_modInv
- >> vli_mmod_fast

vli_sub (Thumb, 50 bytes, Stack size 16 bytes, uECC.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = vli_sub

[Called By]

- >> uECC_verify
- >> vli_modSub
- >> vli_modAdd
- >> vli_modInv
- >> vli_mmod_fast

muladd (Thumb, 42 bytes, Stack size 20 bytes, uECC.o(.text))
[Stack]

- Max Depth = 20
- Call Chain = muladd

[Called By]

- >> vli_mult

vli_mult (Thumb, 152 bytes, Stack size 48 bytes, uECC.o(.text))
[Stack]

- Max Depth = 68
- Call Chain = vli_mult ⇒ muladd

[Calls]

- >> muladd

[Called By]

- >> vli_modMult_fast
- >> vli_modMult_n

vli_mmod_fast (Thumb, 398 bytes, Stack size 56 bytes, uECC.o(.text))
[Stack]

- Max Depth = 72
- Call Chain = vli_mmod_fast ⇒ vli_sub

[Calls]

- >> vli_cmp
- >> vli_set
- >> vli_sub
- >> vli_add

[Called By]

- >> vli_modMult_fast

vli_modInv (Thumb, 286 bytes, Stack size 144 bytes, uECC.o(.text))
[Stack]

- Max Depth = 160
- Call Chain = vli_modInv ⇒ vli_sub

[Calls]

- >> vli_rshift1
- >> vli_cmp
- >> vli_set
- >> vli_isZero
- >> vli_clear
- >> vli_sub
- >> vli_add

[Called By]

- >> uECC_verify

EccPoint_double_jacobian (Thumb, 284 bytes, Stack size 88 bytes, uECC.o(.text))
[Stack]

- Max Depth = 232
- Call Chain = EccPoint_double_jacobian ⇒ vli_modMult_fast ⇒ vli_mmod_fast ⇒ vli_sub

[Calls]

- >> vli_modMult_fast
- >> vli_modSub
- >> vli_modAdd
- >> vli_rshift1
- >> vli_set
- >> vli_testBit
- >> vli_isZero
- >> vli_add

[Called By]

- >> uECC_verify

apply_z (Thumb, 52 bytes, Stack size 48 bytes, uECC.o(.text))
[Stack]

- Max Depth = 192
- Call Chain = apply_z ⇒ vli_modMult_fast ⇒ vli_mmod_fast ⇒ vli_sub

[Calls]

- >> vli_modMult_fast

[Called By]

- >> uECC_verify

XYcZ_add (Thumb, 166 bytes, Stack size 56 bytes, uECC.o(.text))
[Stack]

- Max Depth = 200
- Call Chain = XYcZ_add ⇒ vli_modMult_fast ⇒ vli_mmod_fast ⇒ vli_sub

[Calls]

- >> vli_modMult_fast
- >> vli_modSub
- >> vli_set

[Called By]

- >> uECC_verify

vli_modMult_n (Thumb, 166 bytes, Stack size 232 bytes, uECC.o(.text))
[Stack]

- Max Depth = 300
- Call Chain = vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> vli_rshift1
- >> vli_set
- >> vli_clear
- >> vli_mult

[Called By]

- >> uECC_verify

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

- >> uECC_verify
- >> vli_modMult_n
- >> vli_modInv

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

- >> uECC_verify
- >> EccPoint_double_jacobian
- >> vli_modInv

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

- >> uECC_verify
- >> EccPoint_double_jacobian

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

- >> uECC_verify
- >> vli_modMult_n
- >> XYcZ_add
- >> EccPoint_double_jacobian
- >> vli_modInv
- >> vli_mmod_fast

vli_cmp (Thumb, 38 bytes, Stack size 8 bytes, uECC.o(.text))
[Stack]

- Max Depth = 8
- Call Chain = vli_cmp

[Called By]

- >> uECC_verify
- >> vli_modAdd
- >> vli_modInv
- >> vli_mmod_fast

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

- >> vli_modMult_n
- >> EccPoint_double_jacobian
- >> vli_modInv

vli_modAdd (Thumb, 40 bytes, Stack size 16 bytes, uECC.o(.text))
[Stack]

- Max Depth = 32
- Call Chain = vli_modAdd ⇒ vli_sub

[Calls]

- >> vli_cmp
- >> vli_sub
- >> vli_add

[Called By]

- >> EccPoint_double_jacobian

vli_modSub (Thumb, 30 bytes, Stack size 16 bytes, uECC.o(.text))
[Stack]

- Max Depth = 32
- Call Chain = vli_modSub ⇒ vli_sub

[Calls]

- >> vli_sub
- >> vli_add

[Called By]

- >> uECC_verify
- >> XYcZ_add
- >> EccPoint_double_jacobian

vli_modMult_fast (Thumb, 24 bytes, Stack size 72 bytes, uECC.o(.text))
[Stack]

- Max Depth = 144
- Call Chain = vli_modMult_fast ⇒ vli_mmod_fast ⇒ vli_sub

[Calls]

- >> vli_mmod_fast
- >> vli_mult

[Called By]

- >> uECC_verify
- >> XYcZ_add
- >> apply_z
- >> EccPoint_double_jacobian

vli_bytesToNative (Thumb, 36 bytes, Stack size 8 bytes, uECC.o(.text))
[Stack]

- Max Depth = 8
- Call Chain = vli_bytesToNative

[Called By]

- >> uECC_verify

schedule_transmit (Thumb, 26 bytes, Stack size 0 bytes, serial_handler_uart.o(.text))
[Calls]

- >> __NVIC_SetPendingIRQ

[Called By]

- >> serial_handler_event_send
- >> UARTE0_UART0_IRQHandler

char_rx (Thumb, 124 bytes, Stack size 48 bytes, serial_handler_uart.o(.text))
[Stack]

- Max Depth = 112
- Call Chain = char_rx ⇒ serial_handler_event_send ⇒ fifo_push

[Calls]

- >> fifo_is_full
- >> serial_handler_event_send
- >> fifo_push
- >> __NVIC_SetPendingIRQ

[Called By]

- >> UARTE0_UART0_IRQHandler

__NVIC_SetPendingIRQ (Thumb, 26 bytes, Stack size 0 bytes, serial_handler_uart.o(.text))
[Called By]

- >> char_rx
- >> schedule_transmit

error_code_translate (Thumb, 58 bytes, Stack size 0 bytes, mesh_aci.o(.text))
[Called By]

- >> serial_command_handler

serial_command_handler (Thumb, 326 bytes, Stack size 64 bytes, mesh_aci.o(.text))
[Stack]

- Max Depth = 1068 + Unknown Stack Size
- Call Chain = serial_command_handler ⇒ bootloader_cmd_send ⇒ bl_cmd_handler ⇒ dfu_mesh_timeout ⇒ signature_check ⇒ uECC_verify ⇒ vli_modMult_n ⇒ vli_mult ⇒ muladd

[Calls]

- >> serial_handler_event_send
- >> bootloader_cmd_send
- >> __aeabi_memcpy
- >> error_code_translate
- >> serial_wait_for_completion
- >> transport_tx_evt_set
- >> transport_tx_evt_get

[Called By]

- >> mesh_aci_command_check

### Undefined Global Symbols

_handle_redirection (ARM, 0 bytes, Stack size 0 bytes, UNDEFINED, UNUSED)
[Called By]