# Static Call Graph for image C:\Documents and Settings\NGadish\My Documents\Datalogger Board\EVAL-ADXL345Z-DB Files\datalogger.axf

#<CALLGRAPH># ARM Linker, RVCT4.0 [Build 728]: Last Updated: Tue May 18 16:17:07 2010

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

### Call chain for Maximum Stack Depth:

main ⇒ InitFs ⇒ file_fopen ⇒ fs_findFreeFile ⇒ fs_findFile ⇒ dir_findinDir ⇒ fat_LogicToDiscCluster ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

### Functions with no stack information

- Reset_Handler
- __user_initial_stackheap

### Function Pointers

- Reset_Handler
- Undef_Handler
- SWI_Handler
- PAbt_Handler
- DAbt_Handler
- IRQ_Handler
- FIQ_Handler
- __main
- main
- _snputc
- _printf_input_char

### Global Symbols

Reset_Handler (ARM, 0 bytes, Stack size unknown bytes, aduc702x.o(RESET))
[Address Reference Count : 1]

- aduc702x.o(RESET)

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

- >> __rt_entry
- >> __scatterload

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

- >> __main

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

- >> __rt_entry

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

__scatterload_copy (ARM, 40 bytes, Stack size unknown bytes, __scatter_copy.o(!!handler_copy), UNUSED)

__scatterload_zeroinit (ARM, 44 bytes, Stack size unknown bytes, __scatter_zi.o(!!handler_zi), UNUSED)

_printf_d (ARM, 0 bytes, Stack size unknown bytes, _printf_d.o(.ARM.Collect$$_printf_percent$$00000009))
[Stack]

- Max Depth = 88 + Unknown Stack Size
- Call Chain = _printf_d ⇒ _printf_int_dec ⇒ _printf_int_common ⇒ _printf_post_padding

[Calls]

- >> _printf_int_dec (via Veneer)

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

- >> __printf (via Veneer)

_printf_s (ARM, 0 bytes, Stack size unknown bytes, _printf_s.o(.ARM.Collect$$_printf_percent$$00000014))
[Stack]

- Max Depth = 40 + Unknown Stack Size
- Call Chain = _printf_s ⇒ _printf_string ⇒ _printf_cs_common ⇒ _printf_str ⇒ _printf_post_padding

[Calls]

- >> _printf_string (via Veneer)

_printf_percent_end (ARM, 0 bytes, Stack size unknown bytes, _printf_percent_end.o(.ARM.Collect$$_printf_percent$$00000017))

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

- Max Depth = 8 + Unknown Stack Size
- Call Chain = __rt_lib_init ⇒ _fp_init

[Calls]

- >> _fp_init (via Veneer)

[Called By]

- >> __rt_entry_li (via Veneer)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- >> __rt_exit_ls (via Veneer)

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

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

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

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

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

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

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

- >> __main
- >> __scatterload_rt2

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

__rt_entry_sh (ARM, 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 (ARM, 0 bytes, Stack size unknown bytes, rtentry2.o(.ARM.Collect$$rtentry$$0000000A))
[Stack]

- Max Depth = 8 + Unknown Stack Size
- Call Chain = __rt_entry_li ⇒ __rt_lib_init ⇒ _fp_init

[Calls]

- >> __rt_lib_init (via Veneer)

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

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

- >> exit (via BX)

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

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

- >> exit (via Veneer)

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

- >> __rt_lib_shutdown (via Veneer)

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

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

- >> _sys_exit (via Veneer)

__user_initial_stackheap (ARM, 0 bytes, Stack size unknown bytes, aduc702x.o(.text))
[Called By]

- >> __user_setup_stackheap

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

__use_no_semihosting_swi (ARM, 4 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED)

__2snprintf (Thumb, 50 bytes, Stack size 32 bytes, noretval__2snprintf.o(.text))
[Stack]

- Max Depth = 136 + Unknown Stack Size
- Call Chain = __2snprintf ⇒ _printf_char_common ⇒ __printf

[Calls]

- >> _sputc
- >> _printf_char_common

[Called By]

- >> SensorLoop
- >> InitFs

_printf_pre_padding (Thumb, 48 bytes, Stack size 16 bytes, _printf_pad.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = _printf_pre_padding

[Calls]

- >> __ARM_common_call_via_r2

[Called By]

- >> _printf_int_common
- >> _printf_str

_printf_post_padding (Thumb, 36 bytes, Stack size 16 bytes, _printf_pad.o(.text))
[Stack]

- Max Depth = 16
- Call Chain = _printf_post_padding

[Calls]

- >> __ARM_common_call_via_r2

[Called By]

- >> _printf_int_common
- >> _printf_str

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

- Max Depth = 32
- Call Chain = _printf_str ⇒ _printf_post_padding

[Calls]

- >> _printf_post_padding
- >> _printf_pre_padding
- >> __ARM_common_call_via_r2

[Called By]

- >> _printf_cs_common

_printf_int_dec (Thumb, 94 bytes, Stack size 32 bytes, _printf_dec.o(.text))
[Stack]

- Max Depth = 88
- Call Chain = _printf_int_dec ⇒ _printf_int_common ⇒ _printf_post_padding

[Calls]

- >> __rt_udiv10 (via Veneer)
- >> _printf_int_common
- >> _printf_truncate_unsigned (Weak Reference)
- >> _printf_truncate_signed (Weak Reference)

[Called By]

- >> _printf_d (via Veneer)

__printf (Thumb, 332 bytes, Stack size 32 bytes, __printf_flags_wp.o(.text))
[Stack]

- Max Depth = 32 + Unknown Stack Size
- Call Chain = __printf

[Calls]

- >> _printf_percent (via Veneer)
- >> __ARM_common_call_via_r2
- >> __ARM_common_call_via_r1

[Called By]

- >> _printf_char_common

strlen (Thumb, 64 bytes, Stack size 8 bytes, strlen.o(.text))
[Stack]

- Max Depth = 8
- Call Chain = strlen

[Called By]

- >> SensorLoop

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

- >> _memset

[Called By]

- >> file_normalToFatName (via Veneer)

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

- Max Depth = 4
- Call Chain = __aeabi_memclr4

[Called By]

- >> InitFs (via Veneer)

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

__rt_memclr_w (ARM, 84 bytes, Stack size 4 bytes, rt_memclr_w.o(.text), UNUSED)

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

- >> __rt_memclr

__aeabi_idiv (ARM, 0 bytes, Stack size 8 bytes, aeabi_sdivfast.o(.text), UNUSED)

__aeabi_idivmod (ARM, 556 bytes, Stack size 8 bytes, aeabi_sdivfast.o(.text))
[Stack]

- Max Depth = 8
- Call Chain = __aeabi_idivmod

[Called By]

- >> fs_initFs (via Veneer)

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

_printf_int_common (Thumb, 182 bytes, Stack size 40 bytes, _printf_intcommon.o(.text))
[Stack]

- Max Depth = 56
- Call Chain = _printf_int_common ⇒ _printf_post_padding

[Calls]

- >> _printf_post_padding
- >> _printf_pre_padding
- >> __ARM_common_call_via_r2

[Called By]

- >> _printf_int_dec

_printf_char_common (Thumb, 38 bytes, Stack size 72 bytes, _printf_char_common.o(.text))
[Stack]

- Max Depth = 104 + Unknown Stack Size
- Call Chain = _printf_char_common ⇒ __printf

[Calls]

- >> __printf

[Called By]

- >> __2snprintf

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

- >> __2snprintf

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

- noretval__2snprintf.o(.text)

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

- Max Depth = 40
- Call Chain = _printf_cs_common ⇒ _printf_str ⇒ _printf_post_padding

[Calls]

- >> _printf_mbtowc (Weak Reference)
- >> _printf_str

[Called By]

- >> _printf_string
- >> _printf_char

_printf_char (Thumb, 16 bytes, Stack size 0 bytes, _printf_char.o(.text), UNUSED)
[Calls]

- >> _printf_cs_common

_printf_string (Thumb, 8 bytes, Stack size 0 bytes, _printf_char.o(.text))
[Stack]

- Max Depth = 40
- Call Chain = _printf_string ⇒ _printf_cs_common ⇒ _printf_str ⇒ _printf_post_padding

[Calls]

- >> _printf_cs_common

[Called By]

- >> _printf_s (via Veneer)

__aeabi_memclr (ARM, 0 bytes, Stack size 0 bytes, rt_memclr.o(.text), UNUSED)

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

- >> _memset_w

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

- >> __aeabi_memset

__rt_udiv10 (ARM, 44 bytes, Stack size 0 bytes, rtudiv10.o(.text))
[Called By]

- >> _printf_int_dec (via Veneer)

__user_setup_stackheap (ARM, 96 bytes, Stack size 8 bytes, sys_stackheap_outer.o(.text))
[Stack]

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

[Calls]

- >> __user_initial_stackheap
- >> __user_perproc_libspace

[Called By]

- >> __rt_entry_sh

exit (Thumb, 12 bytes, Stack size 0 bytes, exit.o(.text))
[Calls]

- >> _call_atexit_fns (Weak Reference)
- >> __rt_exit (via Veneer)

[Called By]

- >> __rt_entry_main

__user_libspace (ARM, 12 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED)

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

- >> __user_setup_stackheap

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

__rt_fp_status_addr (ARM, 16 bytes, Stack size 0 bytes, rt_fp_status_addr_intlibspace.o(.text))
[Called By]

- >> _fp_init

__aeabi_uidiv (ARM, 0 bytes, Stack size 0 bytes, aeabi_sdivfast.o(.text_udiv), UNUSED)

__aeabi_uidivmod (ARM, 40 bytes, Stack size 0 bytes, aeabi_sdivfast.o(.text_udiv))
[Calls]

- >> __arm_div4
- >> __arm_div8
- >> __arm_div12
- >> __arm_div16
- >> __arm_div_large_positive

[Called By]

- >> file_fwrite (via Veneer)
- >> fs_initFs (via Veneer)
- >> debug_printf (via Veneer)
- >> ioman_getSector (via Veneer)

DAbt_Handler (ARM, 48 bytes, Stack size 24 bytes, datalogger.o(i.DAbt_Handler))
[Stack]

- Max Depth = 80 + Unknown Stack Size
- Call Chain = DAbt_Handler ⇒ debug_printf

[Calls]

- >> redLight (via Veneer)
- >> greenLight (via Veneer)
- >> debug_printf (via Veneer)

[Address Reference Count : 1]

- aduc702x.o(RESET)

FIQ_Handler (ARM, 44 bytes, Stack size 24 bytes, datalogger.o(i.FIQ_Handler))
[Stack]

- Max Depth = 80 + Unknown Stack Size
- Call Chain = FIQ_Handler ⇒ debug_printf

[Calls]

- >> redLight (via Veneer)
- >> greenLight (via Veneer)
- >> debug_printf (via Veneer)

[Address Reference Count : 1]

- aduc702x.o(RESET)

I2C_WRITE (Thumb, 90 bytes, Stack size 16 bytes, xl345_io_bb.o(i.I2C_WRITE))
[Stack]

- Max Depth = 16
- Call Chain = I2C_WRITE

[Called By]

- >> xl345Write
- >> xl345Read

IRQ_Handler (ARM, 232 bytes, Stack size 56 bytes, datalogger.o(i.IRQ_Handler))
[Stack]

- Max Depth = 104
- Call Chain = IRQ_Handler ⇒ xl345Read ⇒ I2C_WRITE

[Calls]

- >> xl345Read (via Veneer)

[Address Reference Count : 1]

- aduc702x.o(RESET)

InitFs (Thumb, 306 bytes, Stack size 128 bytes, datalogger.o(i.InitFs))
[Stack]

- Max Depth = 656 + Unknown Stack Size
- Call Chain = InitFs ⇒ file_fopen ⇒ fs_findFreeFile ⇒ fs_findFile ⇒ dir_findinDir ⇒ fat_LogicToDiscCluster ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> mkdir
- >> fs_umount
- >> file_write
- >> file_fopen
- >> file_fclose
- >> efs_init
- >> debug_printf
- >> __aeabi_memclr4 (via Veneer)
- >> __2snprintf

[Called By]

- >> main

Initialize (Thumb, 224 bytes, Stack size 24 bytes, datalogger.o(i.Initialize))
[Stack]

- Max Depth = 60
- Call Chain = Initialize ⇒ xl345Write ⇒ I2C_WRITE

[Calls]

- >> xl345Write
- >> i2cinit
- >> UART_Config

[Called By]

- >> main

PAbt_Handler (ARM, 48 bytes, Stack size 24 bytes, datalogger.o(i.PAbt_Handler))
[Stack]

- Max Depth = 80 + Unknown Stack Size
- Call Chain = PAbt_Handler ⇒ debug_printf

[Calls]

- >> redLight (via Veneer)
- >> greenLight (via Veneer)
- >> debug_printf (via Veneer)

[Address Reference Count : 1]

- aduc702x.o(RESET)

SWI_Handler (ARM, 44 bytes, Stack size 24 bytes, datalogger.o(i.SWI_Handler))
[Stack]

- Max Depth = 80 + Unknown Stack Size
- Call Chain = SWI_Handler ⇒ debug_printf

[Calls]

- >> redLight (via Veneer)
- >> greenLight (via Veneer)
- >> debug_printf (via Veneer)

[Address Reference Count : 1]

- aduc702x.o(RESET)

SensorLoop (Thumb, 788 bytes, Stack size 64 bytes, datalogger.o(i.SensorLoop))
[Stack]

- Max Depth = 592 + Unknown Stack Size
- Call Chain = SensorLoop ⇒ file_fopen ⇒ fs_findFreeFile ⇒ fs_findFile ⇒ dir_findinDir ⇒ fat_LogicToDiscCluster ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> xl345Read
- >> fs_umount
- >> file_write
- >> file_fopen
- >> file_fclose
- >> efs_init
- >> debug_printf
- >> strlen
- >> __2snprintf

[Called By]

- >> main

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

- >> Initialize

Undef_Handler (ARM, 48 bytes, Stack size 24 bytes, datalogger.o(i.Undef_Handler))
[Stack]

- Max Depth = 80 + Unknown Stack Size
- Call Chain = Undef_Handler ⇒ debug_printf

[Calls]

- >> redLight (via Veneer)
- >> greenLight (via Veneer)
- >> debug_printf (via Veneer)

[Address Reference Count : 1]

- aduc702x.o(RESET)

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

- >> __printf

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

- >> _printf_int_common
- >> __printf
- >> _printf_str
- >> _printf_post_padding
- >> _printf_pre_padding

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

- >> __rt_exit_exit (via Veneer)

debug_printf (Thumb, 460 bytes, Stack size 56 bytes, debug_printf.o(i.debug_printf))
[Stack]

- Max Depth = 56 + Unknown Stack Size
- Call Chain = debug_printf

[Calls]

- >> __aeabi_uidivmod (via Veneer)

[Called By]

- >> main
- >> SensorLoop
- >> InitFs
- >> Undef_Handler (via Veneer)
- >> SWI_Handler (via Veneer)
- >> PAbt_Handler (via Veneer)
- >> FIQ_Handler (via Veneer)
- >> DAbt_Handler (via Veneer)

dir_addCluster (Thumb, 66 bytes, Stack size 32 bytes, dir.o(i.dir_addCluster))
[Stack]

- Max Depth = 320 + Unknown Stack Size
- Call Chain = dir_addCluster ⇒ fat_allocClusterChain ⇒ fs_getLastCluster ⇒ fat_getNextClusterChain ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> fs_getLastCluster
- >> fs_initClusterChain
- >> fat_allocClusterChain
- >> fs_clearCluster

[Called By]

- >> fs_findFreeFile

dir_createDefaultEntry (Thumb, 42 bytes, Stack size 8 bytes, dir.o(i.dir_createDefaultEntry))
[Stack]

- Max Depth = 12
- Call Chain = dir_createDefaultEntry ⇒ memCpy

[Calls]

- >> memCpy

[Called By]

- >> file_fopen

dir_createDirectoryEntry (Thumb, 48 bytes, Stack size 24 bytes, dir.o(i.dir_createDirectoryEntry))
[Stack]

- Max Depth = 184 + Unknown Stack Size
- Call Chain = dir_createDirectoryEntry ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_relSect
- >> part_getSect
- >> memCpy

[Called By]

- >> file_fopen

dir_findinDir (Thumb, 360 bytes, Stack size 104 bytes, dir.o(i.dir_findinDir))
[Stack]

- Max Depth = 336 + Unknown Stack Size
- Call Chain = dir_findinDir ⇒ fat_LogicToDiscCluster ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> fat_LogicToDiscCluster
- >> part_relSect
- >> part_getSect
- >> fs_clusterToSector
- >> strMatch
- >> dir_findinRootArea

[Called By]

- >> fs_findFreeFile
- >> fs_findFile

dir_findinRootArea (Thumb, 310 bytes, Stack size 72 bytes, dir.o(i.dir_findinRootArea))
[Stack]

- Max Depth = 232 + Unknown Stack Size
- Call Chain = dir_findinRootArea ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_relSect
- >> part_getSect
- >> strMatch

[Called By]

- >> dir_findinDir

dir_getFatFileName (Thumb, 88 bytes, Stack size 32 bytes, dir.o(i.dir_getFatFileName))
[Stack]

- Max Depth = 56 + Unknown Stack Size
- Call Chain = dir_getFatFileName ⇒ file_normalToFatName

[Calls]

- >> file_normalToFatName
- >> memCpy
- >> memClr

[Called By]

- >> fs_findFreeFile
- >> mkdir
- >> file_fopen

dir_getFileStructure (Thumb, 48 bytes, Stack size 24 bytes, dir.o(i.dir_getFileStructure))
[Stack]

- Max Depth = 184 + Unknown Stack Size
- Call Chain = dir_getFileStructure ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_relSect
- >> part_getSect

[Called By]

- >> file_fopen

dir_setFileSize (Thumb, 40 bytes, Stack size 16 bytes, dir.o(i.dir_setFileSize))
[Stack]

- Max Depth = 176 + Unknown Stack Size
- Call Chain = dir_setFileSize ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_relSect
- >> part_getSect

[Called By]

- >> file_fwrite
- >> file_fclose

dir_setFirstCluster (Thumb, 50 bytes, Stack size 16 bytes, dir.o(i.dir_setFirstCluster))
[Stack]

- Max Depth = 176 + Unknown Stack Size
- Call Chain = dir_setFirstCluster ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_relSect
- >> part_getSect

[Called By]

- >> file_fopen

dir_updateDirectoryEntry (Thumb, 50 bytes, Stack size 24 bytes, dir.o(i.dir_updateDirectoryEntry))
[Stack]

- Max Depth = 184 + Unknown Stack Size
- Call Chain = dir_updateDirectoryEntry ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_relSect
- >> part_getSect
- >> memCpy

[Called By]

- >> file_fclose

disc_initDisc (Thumb, 64 bytes, Stack size 16 bytes, disc.o(i.disc_initDisc))
[Stack]

- Max Depth = 168 + Unknown Stack Size
- Call Chain = disc_initDisc ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> ioman_releaseSector
- >> ioman_getSector
- >> ex_getPartitionField

[Called By]

- >> efs_init

efs_init (Thumb, 126 bytes, Stack size 16 bytes, efs.o(i.efs_init))
[Stack]

- Max Depth = 200 + Unknown Stack Size
- Call Chain = efs_init ⇒ fs_initFs ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_initPartition
- >> ioman_init
- >> fs_initFs
- >> disc_initDisc
- >> if_initInterface

[Called By]

- >> SensorLoop
- >> InitFs

ex_getPartitionField (Thumb, 84 bytes, Stack size 4 bytes, extract.o(i.ex_getPartitionField))
[Stack]

- Max Depth = 4
- Call Chain = ex_getPartitionField

[Called By]

- >> disc_initDisc

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

- >> fs_initFs

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

- >> fs_initFs

fat_LogicToDiscCluster (Thumb, 266 bytes, Stack size 48 bytes, fat.o(i.fat_LogicToDiscCluster))
[Stack]

- Max Depth = 232 + Unknown Stack Size
- Call Chain = fat_LogicToDiscCluster ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_relSect
- >> part_getSect
- >> fat_getSectorAddressFatEntry
- >> fat_getNextClusterAddressWBuf

[Called By]

- >> dir_findinDir
- >> fat_countClustersInChain
- >> file_fwrite

fat_allocClusterChain (Thumb, 368 bytes, Stack size 48 bytes, fat.o(i.fat_allocClusterChain))
[Stack]

- Max Depth = 288 + Unknown Stack Size
- Call Chain = fat_allocClusterChain ⇒ fs_getLastCluster ⇒ fat_getNextClusterChain ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> fs_getLastCluster
- >> part_relSect
- >> part_getSect
- >> fat_setNextClusterAddressWBuf
- >> fat_getSectorAddressFatEntry
- >> fat_getNextClusterAddressWBuf

[Called By]

- >> dir_addCluster
- >> file_fwrite

fat_countClustersInChain (Thumb, 62 bytes, Stack size 40 bytes, fat.o(i.fat_countClustersInChain))
[Stack]

- Max Depth = 272 + Unknown Stack Size
- Call Chain = fat_countClustersInChain ⇒ fat_LogicToDiscCluster ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> fat_LogicToDiscCluster

[Called By]

- >> file_fwrite

fat_getNextClusterAddress (Thumb, 160 bytes, Stack size 24 bytes, fat.o(i.fat_getNextClusterAddress))
[Stack]

- Max Depth = 184 + Unknown Stack Size
- Call Chain = fat_getNextClusterAddress ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_relSect
- >> part_getSect
- >> fat_getSectorAddressFatEntry

[Called By]

- >> fs_getNextFreeCluster

fat_getNextClusterAddressWBuf (Thumb, 128 bytes, Stack size 24 bytes, fat.o(i.fat_getNextClusterAddressWBuf))
[Stack]

- Max Depth = 184 + Unknown Stack Size
- Call Chain = fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_relSect
- >> part_getSect
- >> fat_getSectorAddressFatEntry

[Called By]

- >> fat_getNextClusterChain
- >> fat_allocClusterChain
- >> fat_LogicToDiscCluster

fat_getNextClusterChain (Thumb, 208 bytes, Stack size 40 bytes, fat.o(i.fat_getNextClusterChain))
[Stack]

- Max Depth = 224 + Unknown Stack Size
- Call Chain = fat_getNextClusterChain ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_relSect
- >> part_getSect
- >> fat_getSectorAddressFatEntry
- >> fat_getNextClusterAddressWBuf

[Called By]

- >> fs_getLastCluster

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

- >> fat_getNextClusterChain
- >> fat_getNextClusterAddress
- >> fat_allocClusterChain
- >> fat_LogicToDiscCluster
- >> fat_setNextClusterAddress
- >> fat_setNextClusterAddressWBuf
- >> fat_getNextClusterAddressWBuf

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

- >> mkdir
- >> file_fopen

fat_setNextClusterAddress (Thumb, 226 bytes, Stack size 24 bytes, fat.o(i.fat_setNextClusterAddress))
[Stack]

- Max Depth = 184 + Unknown Stack Size
- Call Chain = fat_setNextClusterAddress ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_relSect
- >> part_getSect
- >> fat_getSectorAddressFatEntry

[Called By]

- >> mkdir
- >> file_fopen

fat_setNextClusterAddressWBuf (Thumb, 206 bytes, Stack size 24 bytes, fat.o(i.fat_setNextClusterAddressWBuf))
[Stack]

- Max Depth = 184 + Unknown Stack Size
- Call Chain = fat_setNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_relSect
- >> part_getSect
- >> fat_getSectorAddressFatEntry

[Called By]

- >> fat_allocClusterChain

file_fclose (Thumb, 96 bytes, Stack size 16 bytes, file.o(i.file_fclose))
[Stack]

- Max Depth = 200 + Unknown Stack Size
- Call Chain = file_fclose ⇒ dir_updateDirectoryEntry ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> fs_hasTimeSupport
- >> dir_updateDirectoryEntry
- >> dir_setFileSize
- >> memClr

[Called By]

- >> SensorLoop
- >> InitFs

file_fopen (Thumb, 704 bytes, Stack size 96 bytes, file.o(i.file_fopen))
[Stack]

- Max Depth = 528 + Unknown Stack Size
- Call Chain = file_fopen ⇒ fs_findFreeFile ⇒ fs_findFile ⇒ dir_findinDir ⇒ fat_LogicToDiscCluster ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> fs_setFirstClusterInDirEntry
- >> fs_initClusterChain
- >> dir_setFirstCluster
- >> dir_getFileStructure
- >> dir_createDirectoryEntry
- >> dir_createDefaultEntry
- >> memCpy
- >> fs_giveFreeClusterHint
- >> fs_getNextFreeCluster
- >> fs_findFreeFile
- >> fs_findFile
- >> fat_setNextClusterAddress
- >> fat_giveEocMarker
- >> dir_getFatFileName

[Called By]

- >> SensorLoop
- >> InitFs

file_fwrite (Thumb, 398 bytes, Stack size 80 bytes, file.o(i.file_fwrite))
[Stack]

- Max Depth = 368 + Unknown Stack Size
- Call Chain = file_fwrite ⇒ fat_allocClusterChain ⇒ fs_getLastCluster ⇒ fat_getNextClusterChain ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_directSectorWrite
- >> fat_countClustersInChain
- >> fat_allocClusterChain
- >> fat_LogicToDiscCluster
- >> dir_setFileSize
- >> part_relSect
- >> part_getSect
- >> memCpy
- >> fs_clusterToSector
- >> __aeabi_uidivmod (via Veneer)

[Called By]

- >> file_write

file_normalToFatName (Thumb, 270 bytes, Stack size 24 bytes, file.o(i.file_normalToFatName))
[Stack]

- Max Depth = 24 + Unknown Stack Size
- Call Chain = file_normalToFatName

[Calls]

- >> __aeabi_memset (via Veneer)

[Called By]

- >> fs_findFile
- >> dir_getFatFileName

file_write (Thumb, 30 bytes, Stack size 8 bytes, file.o(i.file_write))
[Stack]

- Max Depth = 376 + Unknown Stack Size
- Call Chain = file_write ⇒ file_fwrite ⇒ fat_allocClusterChain ⇒ fs_getLastCluster ⇒ fat_getNextClusterChain ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> file_fwrite

[Called By]

- >> SensorLoop
- >> InitFs

fs_clearCluster (Thumb, 104 bytes, Stack size 24 bytes, fs.o(i.fs_clearCluster))
[Stack]

- Max Depth = 184 + Unknown Stack Size
- Call Chain = fs_clearCluster ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_relSect
- >> part_getSect
- >> memClr

[Called By]

- >> dir_addCluster
- >> mkdir

fs_clusterToSector (Thumb, 38 bytes, Stack size 4 bytes, fs.o(i.fs_clusterToSector))
[Stack]

- Max Depth = 4
- Call Chain = fs_clusterToSector

[Called By]

- >> dir_findinDir
- >> file_fwrite
- >> mkdir

fs_findFile (Thumb, 218 bytes, Stack size 56 bytes, fs.o(i.fs_findFile))
[Stack]

- Max Depth = 392 + Unknown Stack Size
- Call Chain = fs_findFile ⇒ dir_findinDir ⇒ fat_LogicToDiscCluster ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> dir_findinDir
- >> file_normalToFatName

[Called By]

- >> fs_findFreeFile
- >> mkdir
- >> file_fopen

fs_findFreeFile (Thumb, 110 bytes, Stack size 40 bytes, fs.o(i.fs_findFreeFile))
[Stack]

- Max Depth = 432 + Unknown Stack Size
- Call Chain = fs_findFreeFile ⇒ fs_findFile ⇒ dir_findinDir ⇒ fat_LogicToDiscCluster ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> dir_findinDir
- >> dir_addCluster
- >> fs_findFile
- >> dir_getFatFileName

[Called By]

- >> mkdir
- >> file_fopen

fs_getLastCluster (Thumb, 64 bytes, Stack size 16 bytes, fs.o(i.fs_getLastCluster))
[Stack]

- Max Depth = 240 + Unknown Stack Size
- Call Chain = fs_getLastCluster ⇒ fat_getNextClusterChain ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> fat_getNextClusterChain

[Called By]

- >> dir_addCluster
- >> fat_allocClusterChain

fs_getNextFreeCluster (Thumb, 50 bytes, Stack size 16 bytes, fs.o(i.fs_getNextFreeCluster))
[Stack]

- Max Depth = 200 + Unknown Stack Size
- Call Chain = fs_getNextFreeCluster ⇒ fat_getNextClusterAddress ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> fat_getNextClusterAddress

[Called By]

- >> mkdir
- >> file_fopen

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

- >> mkdir
- >> file_fopen

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

- >> file_fclose

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

- >> dir_addCluster
- >> file_fopen

fs_initFs (Thumb, 336 bytes, Stack size 24 bytes, fs.o(i.fs_initFs))
[Stack]

- Max Depth = 184 + Unknown Stack Size
- Call Chain = fs_initFs ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> ex_getb32
- >> fs_verifySanity
- >> part_relSect
- >> part_getSect
- >> ex_getb16
- >> __aeabi_uidivmod (via Veneer)
- >> __aeabi_idivmod (via Veneer)

[Called By]

- >> efs_init

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

- >> file_fopen

fs_umount (Thumb, 18 bytes, Stack size 8 bytes, fs.o(i.fs_umount))
[Stack]

- Max Depth = 120
- Call Chain = fs_umount ⇒ part_flushPart ⇒ ioman_flushRange ⇒ ioman_flushSector ⇒ if_writeBuf ⇒ sd_writeSector ⇒ sd_Command

[Calls]

- >> part_flushPart

[Called By]

- >> SensorLoop
- >> InitFs

fs_verifySanity (Thumb, 140 bytes, Stack size 8 bytes, fs.o(i.fs_verifySanity))
[Stack]

- Max Depth = 8
- Call Chain = fs_verifySanity

[Called By]

- >> fs_initFs

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

- >> Undef_Handler (via Veneer)
- >> SWI_Handler (via Veneer)
- >> PAbt_Handler (via Veneer)
- >> FIQ_Handler (via Veneer)
- >> DAbt_Handler (via Veneer)

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

- >> Initialize

if_initInterface (Thumb, 146 bytes, Stack size 16 bytes, aduc702x_spi.o(i.if_initInterface))
[Stack]

- Max Depth = 88
- Call Chain = if_initInterface ⇒ sd_getDriveSize ⇒ sd_Command

[Calls]

- >> sd_getDriveSize
- >> sd_State
- >> sd_Init

[Called By]

- >> efs_init

if_readBuf (Thumb, 16 bytes, Stack size 8 bytes, aduc702x_spi.o(i.if_readBuf))
[Stack]

- Max Depth = 72
- Call Chain = if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> sd_readSector

[Called By]

- >> ioman_putSectorInCache

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

- >> sd_writeSector
- >> sd_readSector
- >> sd_getDriveSize
- >> sd_State
- >> sd_Init
- >> sd_Command

if_writeBuf (Thumb, 12 bytes, Stack size 8 bytes, aduc702x_spi.o(i.if_writeBuf))
[Stack]

- Max Depth = 56
- Call Chain = if_writeBuf ⇒ sd_writeSector ⇒ sd_Command

[Calls]

- >> sd_writeSector

[Called By]

- >> ioman_flushSector
- >> ioman_directSectorWrite

ioman_directSectorWrite (Thumb, 306 bytes, Stack size 24 bytes, ioman.o(i.ioman_directSectorWrite))
[Stack]

- Max Depth = 80
- Call Chain = ioman_directSectorWrite ⇒ if_writeBuf ⇒ sd_writeSector ⇒ sd_Command

[Calls]

- >> memCpy
- >> if_writeBuf
- >> ioman_setAttr

[Called By]

- >> part_directSectorWrite

ioman_findUnusedSpot (Thumb, 192 bytes, Stack size 16 bytes, ioman.o(i.ioman_findUnusedSpot))
[Stack]

- Max Depth = 16
- Call Chain = ioman_findUnusedSpot

[Called By]

- >> ioman_getSector

ioman_flushRange (Thumb, 130 bytes, Stack size 24 bytes, ioman.o(i.ioman_flushRange))
[Stack]

- Max Depth = 104
- Call Chain = ioman_flushRange ⇒ ioman_flushSector ⇒ if_writeBuf ⇒ sd_writeSector ⇒ sd_Command

[Calls]

- >> ioman_setAttr
- >> ioman_flushSector

[Called By]

- >> part_flushPart

ioman_flushSector (Thumb, 126 bytes, Stack size 24 bytes, ioman.o(i.ioman_flushSector))
[Stack]

- Max Depth = 80
- Call Chain = ioman_flushSector ⇒ if_writeBuf ⇒ sd_writeSector ⇒ sd_Command

[Calls]

- >> if_writeBuf
- >> ioman_setAttr

[Called By]

- >> ioman_flushRange
- >> ioman_releaseSector
- >> ioman_getSector

ioman_getSector (Thumb, 814 bytes, Stack size 56 bytes, ioman.o(i.ioman_getSector))
[Stack]

- Max Depth = 152 + Unknown Stack Size
- Call Chain = ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> __aeabi_uidivmod (via Veneer)
- >> ioman_setAttr
- >> ioman_putSectorInCache
- >> ioman_flushSector
- >> ioman_findUnusedSpot

[Called By]

- >> disc_initDisc
- >> part_getSect

ioman_init (Thumb, 126 bytes, Stack size 16 bytes, ioman.o(i.ioman_init))
[Stack]

- Max Depth = 16
- Call Chain = ioman_init

[Calls]

- >> memClr

[Called By]

- >> efs_init

ioman_putSectorInCache (Thumb, 98 bytes, Stack size 24 bytes, ioman.o(i.ioman_putSectorInCache))
[Stack]

- Max Depth = 96
- Call Chain = ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> if_readBuf
- >> ioman_setAttr

[Called By]

- >> ioman_releaseSector
- >> ioman_getSector

ioman_releaseSector (Thumb, 206 bytes, Stack size 16 bytes, ioman.o(i.ioman_releaseSector))
[Stack]

- Max Depth = 112
- Call Chain = ioman_releaseSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> ioman_putSectorInCache
- >> ioman_flushSector

[Called By]

- >> disc_initDisc
- >> part_relSect

ioman_setAttr (Thumb, 42 bytes, Stack size 8 bytes, ioman.o(i.ioman_setAttr))
[Stack]

- Max Depth = 8
- Call Chain = ioman_setAttr

[Called By]

- >> ioman_putSectorInCache
- >> ioman_flushSector
- >> ioman_flushRange
- >> ioman_directSectorWrite
- >> ioman_getSector

main (Thumb, 68 bytes, Stack size 896 bytes, datalogger.o(i.main))
[Stack]

- Max Depth = 1552 + Unknown Stack Size
- Call Chain = main ⇒ InitFs ⇒ file_fopen ⇒ fs_findFreeFile ⇒ fs_findFile ⇒ dir_findinDir ⇒ fat_LogicToDiscCluster ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> SensorLoop
- >> Initialize
- >> InitFs
- >> debug_printf

[Address Reference Count : 1]

- rtentry2.o(.ARM.Collect$$rtentry$$0000000D)

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

- >> ioman_init
- >> fs_clearCluster
- >> dir_getFatFileName
- >> mkdir
- >> file_fclose

memCpy (Thumb, 28 bytes, Stack size 4 bytes, plibc.o(i.memCpy))
[Stack]

- Max Depth = 4
- Call Chain = memCpy

[Called By]

- >> dir_updateDirectoryEntry
- >> dir_createDirectoryEntry
- >> dir_createDefaultEntry
- >> file_fwrite
- >> dir_getFatFileName
- >> mkdir
- >> file_fopen
- >> ioman_directSectorWrite

mkdir (Thumb, 346 bytes, Stack size 80 bytes, ui.o(i.mkdir))
[Stack]

- Max Depth = 512 + Unknown Stack Size
- Call Chain = mkdir ⇒ fs_findFreeFile ⇒ fs_findFile ⇒ dir_findinDir ⇒ fat_LogicToDiscCluster ⇒ fat_getNextClusterAddressWBuf ⇒ part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> part_relSect
- >> part_getSect
- >> memCpy
- >> memClr
- >> fs_giveFreeClusterHint
- >> fs_getNextFreeCluster
- >> fs_findFreeFile
- >> fs_findFile
- >> fs_clusterToSector
- >> fs_clearCluster
- >> fat_setNextClusterAddress
- >> fat_giveEocMarker
- >> dir_getFatFileName

[Called By]

- >> InitFs

part_directSectorWrite (Thumb, 28 bytes, Stack size 8 bytes, partition.o(i.part_directSectorWrite))
[Stack]

- Max Depth = 88
- Call Chain = part_directSectorWrite ⇒ ioman_directSectorWrite ⇒ if_writeBuf ⇒ sd_writeSector ⇒ sd_Command

[Calls]

- >> ioman_directSectorWrite

[Called By]

- >> file_fwrite

part_flushPart (Thumb, 30 bytes, Stack size 8 bytes, partition.o(i.part_flushPart))
[Stack]

- Max Depth = 112
- Call Chain = part_flushPart ⇒ ioman_flushRange ⇒ ioman_flushSector ⇒ if_writeBuf ⇒ sd_writeSector ⇒ sd_Command

[Calls]

- >> ioman_flushRange

[Called By]

- >> fs_umount

part_getSect (Thumb, 28 bytes, Stack size 8 bytes, partition.o(i.part_getSect))
[Stack]

- Max Depth = 160 + Unknown Stack Size
- Call Chain = part_getSect ⇒ ioman_getSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> ioman_getSector

[Called By]

- >> fat_getNextClusterChain
- >> fat_getNextClusterAddress
- >> dir_findinDir
- >> fat_allocClusterChain
- >> fat_LogicToDiscCluster
- >> dir_updateDirectoryEntry
- >> dir_setFirstCluster
- >> dir_setFileSize
- >> dir_getFileStructure
- >> dir_createDirectoryEntry
- >> file_fwrite
- >> fs_initFs
- >> fs_clearCluster
- >> fat_setNextClusterAddress
- >> mkdir
- >> fat_setNextClusterAddressWBuf
- >> fat_getNextClusterAddressWBuf
- >> dir_findinRootArea

part_initPartition (Thumb, 50 bytes, Stack size 0 bytes, partition.o(i.part_initPartition))
[Called By]

- >> efs_init

part_relSect (Thumb, 16 bytes, Stack size 8 bytes, partition.o(i.part_relSect))
[Stack]

- Max Depth = 120
- Call Chain = part_relSect ⇒ ioman_releaseSector ⇒ ioman_putSectorInCache ⇒ if_readBuf ⇒ sd_readSector ⇒ sd_Command

[Calls]

- >> ioman_releaseSector

[Called By]

- >> fat_getNextClusterChain
- >> fat_getNextClusterAddress
- >> dir_findinDir
- >> fat_allocClusterChain
- >> fat_LogicToDiscCluster
- >> dir_updateDirectoryEntry
- >> dir_setFirstCluster
- >> dir_setFileSize
- >> dir_getFileStructure
- >> dir_createDirectoryEntry
- >> file_fwrite
- >> fs_initFs
- >> fs_clearCluster
- >> fat_setNextClusterAddress
- >> mkdir
- >> fat_setNextClusterAddressWBuf
- >> fat_getNextClusterAddressWBuf
- >> dir_findinRootArea

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

- >> Undef_Handler (via Veneer)
- >> SWI_Handler (via Veneer)
- >> PAbt_Handler (via Veneer)
- >> FIQ_Handler (via Veneer)
- >> DAbt_Handler (via Veneer)

sd_Command (Thumb, 86 bytes, Stack size 24 bytes, sd.o(i.sd_Command))
[Stack]

- Max Depth = 24
- Call Chain = sd_Command

[Calls]

- >> if_spiSend

[Called By]

- >> sd_writeSector
- >> sd_readSector
- >> sd_getDriveSize
- >> sd_State

sd_Init (Thumb, 266 bytes, Stack size 24 bytes, sd.o(i.sd_Init))
[Stack]

- Max Depth = 24
- Call Chain = sd_Init

[Calls]

- >> if_spiSend

[Called By]

- >> if_initInterface

sd_State (Thumb, 78 bytes, Stack size 16 bytes, sd.o(i.sd_State))
[Stack]

- Max Depth = 40
- Call Chain = sd_State ⇒ sd_Command

[Calls]

- >> if_spiSend
- >> sd_Command

[Called By]

- >> if_initInterface

sd_getDriveSize (Thumb, 172 bytes, Stack size 48 bytes, sd.o(i.sd_getDriveSize))
[Stack]

- Max Depth = 72
- Call Chain = sd_getDriveSize ⇒ sd_Command

[Calls]

- >> if_spiSend
- >> sd_Command

[Called By]

- >> if_initInterface

sd_readSector (Thumb, 162 bytes, Stack size 40 bytes, sd.o(i.sd_readSector))
[Stack]

- Max Depth = 64
- Call Chain = sd_readSector ⇒ sd_Command

[Calls]

- >> if_spiSend
- >> sd_Command

[Called By]

- >> if_readBuf

sd_writeSector (Thumb, 120 bytes, Stack size 24 bytes, sd.o(i.sd_writeSector))
[Stack]

- Max Depth = 48
- Call Chain = sd_writeSector ⇒ sd_Command

[Calls]

- >> if_spiSend
- >> sd_Command

[Called By]

- >> if_writeBuf

strMatch (Thumb, 36 bytes, Stack size 8 bytes, plibc.o(i.strMatch))
[Stack]

- Max Depth = 8
- Call Chain = strMatch

[Called By]

- >> dir_findinDir
- >> dir_findinRootArea

xl345Read (Thumb, 250 bytes, Stack size 32 bytes, xl345_io_bb.o(i.xl345Read))
[Stack]

- Max Depth = 48
- Call Chain = xl345Read ⇒ I2C_WRITE

[Calls]

- >> I2C_WRITE

[Called By]

- >> SensorLoop
- >> IRQ_Handler (via Veneer)

xl345Write (Thumb, 94 bytes, Stack size 20 bytes, xl345_io_bb.o(i.xl345Write))
[Stack]

- Max Depth = 36
- Call Chain = xl345Write ⇒ I2C_WRITE

[Calls]

- >> I2C_WRITE

[Called By]

- >> Initialize

_fp_init (ARM, 24 bytes, Stack size 8 bytes, fpinit.o(x$fpl$fpinit))
[Stack]

- Max Depth = 8
- Call Chain = _fp_init

[Calls]

- >> __rt_fp_status_addr

[Called By]

- >> __rt_lib_init (via Veneer)

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

### Local Symbols

__arm_div_large_positive (ARM, 0 bytes, Stack size unknown bytes, aeabi_sdivfast.o(.text))
[Called By]

- >> __aeabi_uidivmod

__arm_div16 (ARM, 0 bytes, Stack size unknown bytes, aeabi_sdivfast.o(.text))
[Called By]

- >> __aeabi_uidivmod

__arm_div12 (ARM, 0 bytes, Stack size unknown bytes, aeabi_sdivfast.o(.text))
[Called By]

- >> __aeabi_uidivmod

__arm_div8 (ARM, 0 bytes, Stack size unknown bytes, aeabi_sdivfast.o(.text))
[Called By]

- >> __aeabi_uidivmod

__arm_div4 (ARM, 0 bytes, Stack size unknown bytes, aeabi_sdivfast.o(.text))
[Called By]

- >> __aeabi_uidivmod

_printf_input_char (Thumb, 10 bytes, Stack size 0 bytes, _printf_char_common.o(.text))
[Address Reference Count : 1]

- _printf_char_common.o(.text)

### Undefined Global Symbols

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

- >> exit

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

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

- >> _printf_cs_common

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

- >> _printf_int_dec

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

- >> _printf_int_dec