# Static Call Graph for image .\Objects\LPC2148Master.axf

#<CALLGRAPH># ARM Linker, RVCT4.0 [Build 524]: Last Updated: Sat Nov 12 16:02:53 2022

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

### Call chain for Maximum Stack Depth:

### Mutually Recursive functions

- Undef_Handler ⇒ Undef_Handler
- SWI_Handler ⇒ SWI_Handler
- PAbt_Handler ⇒ PAbt_Handler
- DAbt_Handler ⇒ DAbt_Handler
- IRQ_Handler ⇒ IRQ_Handler
- FIQ_Handler ⇒ FIQ_Handler

  ### Function Pointers

  - Reset_Handler
  - Undef_Handler
  - SWI_Handler
  - PAbt_Handler
  - DAbt_Handler
  - IRQ_Handler
  - FIQ_Handler
  - __main
  - main
  - __I$use$semihosting

  ### Global Symbols

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

  - startup.o(RESET)

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

  - >> __rt_entry
  - >> __scatterload

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

  - >> __main

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

  - >> __rt_entry

  __scatterload_copy (ARM, 40 bytes, Stack size 0 bytes, __scatter_copy.o(!!handler_copy), UNUSED)
  [Calls]

  - >> __scatterload_copy
  [Called By]
  - >> __scatterload_copy

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

  - >> _printf_int_dec (via Veneer)

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

  - >> _fp_init (via Veneer)
  [Called By]
  - >> __rt_entry_li (via Veneer)

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

  - >> __rt_exit_ls (via Veneer)

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

  - >> __main
  - >> __scatterload_rt2

  __rt_entry_sh (ARM, 0 bytes, Stack size 0 bytes, rtentry4.o(.ARM.Collect$$rtentry$$00000004))
  [Calls]

  - >> __user_setup_stackheap

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

  - >> __rt_lib_init (via Veneer)

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

  - >> exit (via BX)

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

  - >> exit (via Veneer)

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

  - >> __rt_lib_shutdown (via Veneer)

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

  - >> _sys_exit

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

  - >> __user_setup_stackheap

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

  - >> __ARM_common_call_via_r2
  [Called By]
  - >> _printf_int_common

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

  - >> __ARM_common_call_via_r2
  [Called By]
  - >> _printf_int_common

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

  - >> __rt_udiv10 (via Veneer)
  - >> _printf_int_common
  - >> _printf_truncate_unsigned (Weak Reference)
  - >> _printf_truncate_signed (Weak Reference)
  [Called By]
  - >> _printf_d (via Veneer)

  __aeabi_idivmod (ARM, 384 bytes, Stack size 0 bytes, aeabi_sdiv.o(.text))
  [Called By]

  - >> oled_print_xy

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

  - >> _printf_post_padding
  - >> _printf_pre_padding
  - >> __ARM_common_call_via_r2
  [Called By]
  - >> _printf_int_dec

  __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 0 bytes, sys_stackheap_outer.o(.text))
  [Calls]

  - >> __user_perproc_libspace
  - >> __user_initial_stackheap
  [Called By]
  - >> __rt_entry_sh

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

  - >> __rt_exit (via Veneer)
  - >> _call_atexit_fns (Weak Reference)
  [Called By]
  - >> __rt_entry_main

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

  - >> __user_setup_stackheap

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

  - >> __rt_exit_exit

  __I$use$semihosting (ARM, 0 bytes, Stack size 0 bytes, use_no_semi.o(.text))
  [Address Reference Count : 1]

  - sys_exit.o(.text)

  __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_post_padding
  - >> _printf_pre_padding

  delay_ms (ARM, 48 bytes, Stack size 0 bytes, delay.o(i.delay_ms))
  [Called By]

  - >> oled_init
  - >> oled_example
  - >> i2c_wait_status

  i2c_init (ARM, 76 bytes, Stack size 0 bytes, i2c.o(i.i2c_init))
  [Called By]

  - >> oled_init

  i2c_start (ARM, 52 bytes, Stack size 0 bytes, i2c.o(i.i2c_start))
  [Calls]

  - >> i2c_wait_status
  [Called By]
  - >> oled_update
  - >> oled_cmd

  i2c_stop (ARM, 24 bytes, Stack size 0 bytes, i2c.o(i.i2c_stop))
  [Called By]

  - >> oled_update
  - >> oled_cmd

  i2c_wait_status (ARM, 88 bytes, Stack size 0 bytes, i2c.o(i.i2c_wait_status))
  [Calls]

  - >> delay_ms
  [Called By]
  - >> i2c_write
  - >> i2c_start

  i2c_write (ARM, 68 bytes, Stack size 0 bytes, i2c.o(i.i2c_write))
  [Calls]

  - >> i2c_wait_status
  [Called By]
  - >> oled_update
  - >> oled_cmd

  main (ARM, 20 bytes, Stack size 0 bytes, main.o(i.main))
  [Calls]

  - >> oled_example
  [Address Reference Count : 1]
  - rtentry2.o(.ARM.Collect$$rtentry$$0000000D)

  oled_clear (ARM, 20 bytes, Stack size 0 bytes, oled.o(i.oled_clear))
  [Calls]

  - >> oled_fill
  [Called By]
  - >> oled_reset
  - >> oled_example

  oled_cmd (ARM, 60 bytes, Stack size 0 bytes, oled.o(i.oled_cmd))
  [Calls]

  - >> i2c_write
  - >> i2c_stop
  - >> i2c_start
  [Called By]
  - >> oled_update
  - >> oled_on
  - >> oled_off
  - >> oled_init

  oled_example (ARM, 80 bytes, Stack size 0 bytes, demo.o(i.oled_example))
  [Calls]

  - >> oled_reset
  - >> oled_print_xy
  - >> oled_init
  - >> oled_fill
  - >> oled_clear
  - >> delay_ms
  [Called By]
  - >> main

  oled_fill (ARM, 52 bytes, Stack size 0 bytes, oled.o(i.oled_fill))
  [Calls]

  - >> oled_update
  [Called By]
  - >> oled_clear
  - >> oled_example

  oled_init (ARM, 280 bytes, Stack size 0 bytes, oled.o(i.oled_init))
  [Calls]

  - >> oled_cmd
  - >> i2c_init
  - >> delay_ms
  [Called By]
  - >> oled_example

  oled_off (ARM, 20 bytes, Stack size 0 bytes, oled.o(i.oled_off))
  [Calls]

  - >> oled_cmd
  [Called By]
  - >> oled_reset

  oled_on (ARM, 20 bytes, Stack size 0 bytes, oled.o(i.oled_on))
  [Calls]

  - >> oled_cmd
  [Called By]
  - >> oled_reset

  oled_print_xy (ARM, 432 bytes, Stack size 0 bytes, oled.o(i.oled_print_xy))
  [Calls]

  - >> __aeabi_idivmod
  - >> oled_update
  - >> oled_set_pixel
  - >> str_len
  [Called By]
  - >> oled_example

  oled_reset (ARM, 24 bytes, Stack size 0 bytes, oled.o(i.oled_reset))
  [Calls]

  - >> oled_on
  - >> oled_off
  - >> oled_clear
  [Called By]
  - >> oled_example

  oled_set_pixel (ARM, 292 bytes, Stack size 0 bytes, oled.o(i.oled_set_pixel))
  [Called By]

  - >> oled_print_xy

  oled_update (ARM, 176 bytes, Stack size 0 bytes, oled.o(i.oled_update))
  [Calls]

  - >> oled_cmd
  - >> i2c_write
  - >> i2c_stop
  - >> i2c_start
  [Called By]
  - >> oled_print_xy
  - >> oled_fill

  str_len (ARM, 32 bytes, Stack size 0 bytes, nstring.o(i.str_len))
  [Called By]

  - >> oled_print_xy

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

  - >> __rt_lib_init (via Veneer)

  ### Local Symbols

  Undef_Handler (ARM, 4 bytes, Stack size 0 bytes, startup.o(RESET))
  [Calls]

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

  SWI_Handler (ARM, 4 bytes, Stack size 0 bytes, startup.o(RESET))
  [Calls]

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

  PAbt_Handler (ARM, 4 bytes, Stack size 0 bytes, startup.o(RESET))
  [Calls]

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

  DAbt_Handler (ARM, 4 bytes, Stack size 0 bytes, startup.o(RESET))
  [Calls]

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

  IRQ_Handler (ARM, 4 bytes, Stack size 0 bytes, startup.o(RESET))
  [Calls]

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

  FIQ_Handler (ARM, 4 bytes, Stack size 0 bytes, startup.o(RESET))
  [Calls]

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

  ### Undefined Global Symbols

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

  - >> exit

  _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