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

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Wed Jan 02 14:20:10 2019

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

### Call chain for Maximum Stack Depth:

doCmdWriteBlock ⇒ flashWriteBlock ⇒ Program

### Mutually Recursive functions

- NMI_Handler ⇒ NMI_Handler
- HardFault_Handler ⇒ HardFault_Handler
- SVC_Handler ⇒ SVC_Handler
- PendSV_Handler ⇒ PendSV_Handler
- SysTick_Handler ⇒ SysTick_Handler
- ADC_OVR_IRQHandler ⇒ ADC_OVR_IRQHandler

  ### Function Pointers

  - ADC_OVR_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - ADC_SEQA_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - ADC_SEQB_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - ADC_THCMP_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - BOD_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - CMP_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - CTIMER0_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - DAC0_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - FLASH_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - HardFault_Handler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - I2C0_IRQHandler from sl_hostif_i2c.o(i.I2C0_IRQHandler) referenced from keil_startup.o(RESET)
  - I2C1_IRQHandler from sl_hostif_i2c.o(i.I2C1_IRQHandler) referenced from keil_startup.o(RESET)
  - MRT_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - NMI_Handler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - PININT0_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - PININT1_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - PININT2_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - PININT3_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - PININT4_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - PININT5_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - PININT6_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - PININT7_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - PendSV_Handler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - Reset_Handler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - SPI0_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - SPISlaveAssert from sl_hostif_spi.o(i.SPISlaveAssert) referenced from sl_hostif_spi.o(.constdata)
  - SPISlaveDeAssert from sl_hostif_spi.o(i.SPISlaveDeAssert) referenced from sl_hostif_spi.o(.constdata)
  - SPISlaveRecvData from sl_hostif_spi.o(i.SPISlaveRecvData) referenced from sl_hostif_spi.o(.constdata)
  - SPISlaveSendData from sl_hostif_spi.o(i.SPISlaveSendData) referenced from sl_hostif_spi.o(.constdata)
  - SVC_Handler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - SysTick_Handler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - SystemInit from system.o(i.SystemInit) referenced from keil_startup.o(.text)
  - UART0_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - UART1_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - WDT_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - WKT_IRQHandler from keil_startup.o(.text) referenced from keil_startup.o(RESET)
  - __main from entry.o(.ARM.Collect$$$$00000000) referenced from keil_startup.o(.text)
  - doCmdBoot from sl_hostif.o(i.doCmdBoot) referenced from sl_hostif.o(.constdata)
  - doCmdCheckImage from sl_hostif.o(i.doCmdCheckImage) referenced from sl_hostif.o(.constdata)
  - doCmdGetVersion from sl_hostif.o(i.doCmdGetVersion) referenced from sl_hostif.o(.constdata)
  - doCmdPageErase from sl_hostif.o(i.doCmdPageErase) referenced from sl_hostif.o(.constdata)
  - doCmdPageRead from sl_hostif.o(i.doCmdPageRead) referenced from sl_hostif.o(.constdata)
  - doCmdPageWrite from sl_hostif.o(i.doCmdPageWrite) referenced from sl_hostif.o(.constdata)
  - doCmdProbe from sl_hostif.o(i.doCmdProbe) referenced from sl_hostif.o(.constdata)
  - doCmdReadBlock from sl_hostif.o(i.doCmdReadBlock) referenced from sl_hostif.o(.constdata)
  - doCmdReadSubBlock from sl_hostif.o(i.doCmdReadSubBlock) referenced from sl_hostif.o(.constdata)
  - doCmdReset from sl_hostif.o(i.doCmdReset) referenced from sl_hostif.o(.constdata)
  - doCmdSectorErase from sl_hostif.o(i.doCmdSectorErase) referenced from sl_hostif.o(.constdata)
  - doCmdWhoAmI from sl_hostif.o(i.doCmdWhoAmI) referenced from sl_hostif.o(.constdata)
  - doCmdWriteBlock from sl_hostif.o(i.doCmdWriteBlock) referenced from sl_hostif.o(.constdata)
  - doCmdWriteSubBlock from sl_hostif.o(i.doCmdWriteSubBlock) referenced from sl_hostif.o(.constdata)
  - loopHostIfSPI from sl_hostif_spi.o(i.loopHostIfSPI) referenced from sl_main.o(i.main)
  - main from sl_main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)
  - secondaryLoaderEntry from sl_app_entry.o(i.secondaryLoaderEntry) referenced from sl_app_entry_place.o(.ARM.__AT_0x00001F00)

  ### Global Symbols

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

  - keil_startup.o(.text)

  _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))

  _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
  [Calls]

  - >> __scatterload

  __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
  [Called By]

  - >> __scatterload

  _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))

  _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))

  _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))

  __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))

  __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))

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

  - keil_startup.o(RESET)

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

  - >> secondaryLoaderEntry

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

  - >> doCleanBoot

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

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

  HardFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, keil_startup.o(.text))
  [Calls]

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

  SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, keil_startup.o(.text))
  [Calls]

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

  PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, keil_startup.o(.text))
  [Calls]

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

  SysTick_Handler (Thumb, 2 bytes, Stack size 0 bytes, keil_startup.o(.text))
  [Calls]

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

  ADC_OVR_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, keil_startup.o(.text))
  [Calls]

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

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

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

  - keil_startup.o(RESET)

  __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)

  __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text))
  [Stack]

  - Max Depth = 12
  - Call Chain = __aeabi_uidivmod
  [Called By]
  - >> SystemCoreClockUpdate

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

  - >> doCmdWriteSubBlock
  - >> flashReadPage
  - >> flashReadBlock

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

  - >> doCmdReadSubBlock

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

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

  - >> doCmdWriteSubBlock
  - >> _memset$wrapper
  - >> __aeabi_memclr

  __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

  __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

  __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_memset

  __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

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

  _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_memset

  __scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text))
  [Calls]

  - >> __main_after_scatterload
  [Called By]
  - >> _main_scatterload

  __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)

  Chip_CRC_Deinit (Thumb, 10 bytes, Stack size 8 bytes, crc_8xx.o(i.Chip_CRC_Deinit))
  [Stack]

  - Max Depth = 8
  - Call Chain = Chip_CRC_Deinit
  [Calls]
  - >> Disable_Periph_Clock
  [Called By]
  - >> computeCrc32
  - >> computeAppCRC

  Chip_CRC_Init (Thumb, 10 bytes, Stack size 8 bytes, crc_8xx.o(i.Chip_CRC_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = Chip_CRC_Init
  [Calls]
  - >> Enable_Periph_Clock
  [Called By]
  - >> computeCrc32
  - >> computeAppCRC

  Chip_GPIO_DeInit (Thumb, 10 bytes, Stack size 8 bytes, gpio.o(i.Chip_GPIO_DeInit))
  [Stack]

  - Max Depth = 8
  - Call Chain = Chip_GPIO_DeInit
  [Calls]
  - >> Disable_Periph_Clock
  [Called By]
  - >> CleanUpSystem

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

  - >> Program
  - >> EraseSector
  - >> ErasePages

  Chip_I2CS_XferHandler (Thumb, 120 bytes, Stack size 16 bytes, i2cs_8xx.o(i.Chip_I2CS_XferHandler))
  [Stack]

  - Max Depth = 16
  - Call Chain = Chip_I2CS_XferHandler
  [Called By]
  - >> loopHostIfI2C

  Chip_SPIS_FindSSEL (Thumb, 30 bytes, Stack size 12 bytes, spis_8xx.o(i.Chip_SPIS_FindSSEL))
  [Stack]

  - Max Depth = 12
  - Call Chain = Chip_SPIS_FindSSEL
  [Called By]
  - >> SPI_Slave_Handler

  CleanUpSystem (Thumb, 40 bytes, Stack size 8 bytes, sl_main.o(i.CleanUpSystem))
  [Stack]

  - Max Depth = 16
  - Call Chain = CleanUpSystem ⇒ shutdownInterfaceSPI
  [Calls]
  - >> shutdownInterfaceSPI
  - >> Chip_GPIO_DeInit
  - >> Disable_Periph_Clock
  [Called By]
  - >> doCleanBoot

  ConfigSWM (Thumb, 70 bytes, Stack size 20 bytes, swm.o(i.ConfigSWM))
  [Stack]

  - Max Depth = 20
  - Call Chain = ConfigSWM
  [Called By]
  - >> SPI_Init

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

  - >> shutdownInterfaceSPI
  - >> Chip_GPIO_DeInit
  - >> CleanUpSystem
  - >> Chip_CRC_Deinit

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

  - >> main
  - >> Chip_CRC_Init

  ErasePages (Thumb, 94 bytes, Stack size 24 bytes, flashprg.o(i.ErasePages))
  [Stack]

  - Max Depth = 24
  - Call Chain = ErasePages
  [Calls]
  - >> GetSecNum
  [Called By]
  - >> flashErasePage

  EraseSector (Thumb, 80 bytes, Stack size 16 bytes, flashprg.o(i.EraseSector))
  [Stack]

  - Max Depth = 16
  - Call Chain = EraseSector
  [Calls]
  - >> GetSecNum
  [Called By]
  - >> flashWriteBlock
  - >> flashEraseSector

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

  - >> boot_App_ImageCheck

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

  - >> main

  GPIOSetBitValue (Thumb, 46 bytes, Stack size 12 bytes, gpio.o(i.GPIOSetBitValue))
  [Stack]

  - Max Depth = 12
  - Call Chain = GPIOSetBitValue
  [Called By]
  - >> main
  - >> Hostif_DeAssertIRQ
  - >> Hostif_AssertIRQ

  GPIOSetDir (Thumb, 46 bytes, Stack size 12 bytes, gpio.o(i.GPIOSetDir))
  [Stack]

  - Max Depth = 12
  - Call Chain = GPIOSetDir
  [Called By]
  - >> main
  - >> boot_App_ImageCheck
  - >> processHostIfPacket

  Hostif_AssertIRQ (Thumb, 20 bytes, Stack size 8 bytes, sl_hostif.o(i.Hostif_AssertIRQ))
  [Stack]

  - Max Depth = 20
  - Call Chain = Hostif_AssertIRQ ⇒ GPIOSetBitValue
  [Calls]
  - >> GPIOSetBitValue
  [Called By]
  - >> processHostIfPacket

  Hostif_DeAssertIRQ (Thumb, 20 bytes, Stack size 8 bytes, sl_hostif.o(i.Hostif_DeAssertIRQ))
  [Stack]

  - Max Depth = 20
  - Call Chain = Hostif_DeAssertIRQ ⇒ GPIOSetBitValue
  [Calls]
  - >> GPIOSetBitValue
  [Called By]
  - >> main
  - >> processHostIfPacket
  - >> doCmdProbe
  - >> SPISlaveAssert

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

  - >> main

  I2C0_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, sl_hostif_i2c.o(i.I2C0_IRQHandler))
  [Stack]

  - Max Depth = 48
  - Call Chain = I2C0_IRQHandler ⇒ loopHostIfI2C ⇒ Chip_I2CS_XferHandler
  [Calls]
  - >> loopHostIfI2C
  [Address Reference Count : 1]
  - keil_startup.o(RESET)

  I2C1_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, sl_hostif_i2c.o(i.I2C1_IRQHandler))
  [Stack]

  - Max Depth = 48
  - Call Chain = I2C1_IRQHandler ⇒ loopHostIfI2C ⇒ Chip_I2CS_XferHandler
  [Calls]
  - >> loopHostIfI2C
  [Address Reference Count : 1]
  - keil_startup.o(RESET)

  Program (Thumb, 86 bytes, Stack size 24 bytes, flashprg.o(i.Program))
  [Stack]

  - Max Depth = 24
  - Call Chain = Program
  [Calls]
  - >> GetSecNum
  [Called By]
  - >> flashWritePage
  - >> flashWriteBlock

  SPI_Init (Thumb, 82 bytes, Stack size 8 bytes, sl_main.o(i.SPI_Init))
  [Stack]

  - Max Depth = 28
  - Call Chain = SPI_Init ⇒ ConfigSWM
  [Calls]
  - >> setupInterfaceSPI
  - >> ConfigSWM
  [Called By]
  - >> main

  SPI_Slave_Handler (Thumb, 112 bytes, Stack size 24 bytes, sl_hostif_spi.o(i.SPI_Slave_Handler))
  [Stack]

  - Max Depth = 36
  - Call Chain = SPI_Slave_Handler ⇒ Chip_SPIS_FindSSEL
  [Calls]
  - >> Chip_SPIS_FindSSEL
  - >> SPI_Slave_Tx_Blocking
  - >> SPI_Slave_Rx_Blocking
  [Called By]
  - >> loopHostIfSPI

  SPI_Slave_Rx_Blocking (Thumb, 40 bytes, Stack size 8 bytes, sl_hostif_spi.o(i.SPI_Slave_Rx_Blocking))
  [Stack]

  - Max Depth = 8
  - Call Chain = SPI_Slave_Rx_Blocking
  [Called By]
  - >> SPI_Slave_Handler

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

  - >> SPI_Slave_Handler

  SystemCoreClockUpdate (Thumb, 118 bytes, Stack size 16 bytes, system.o(i.SystemCoreClockUpdate))
  [Stack]

  - Max Depth = 28
  - Call Chain = SystemCoreClockUpdate ⇒ __aeabi_uidivmod
  [Calls]
  - >> __aeabi_uidivmod
  [Called By]
  - >> main

  SystemInit (Thumb, 62 bytes, Stack size 8 bytes, system.o(i.SystemInit))
  [Stack]

  - Max Depth = 8
  - Call Chain = SystemInit
  [Address Reference Count : 1]
  - keil_startup.o(.text)

  __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)

  __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)

  __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)

  boot_App_ImageCheck (Thumb, 92 bytes, Stack size 16 bytes, sl_main.o(i.boot_App_ImageCheck))
  [Stack]

  - Max Depth = 48
  - Call Chain = boot_App_ImageCheck ⇒ checkAppCRC ⇒ computeAppCRC ⇒ Chip_CRC_Init
  [Calls]
  - >> GPIOGetPinValue
  - >> GPIOSetDir
  - >> checkAppCRC
  - >> pinCheckValidHostif
  [Called By]
  - >> boot_ImageCheck

  boot_ImageCheck (Thumb, 24 bytes, Stack size 8 bytes, sl_main.o(i.boot_ImageCheck))
  [Stack]

  - Max Depth = 56
  - Call Chain = boot_ImageCheck ⇒ boot_App_ImageCheck ⇒ checkAppCRC ⇒ computeAppCRC ⇒ Chip_CRC_Init
  [Calls]
  - >> boot_App_ImageCheck
  - >> doCleanBoot
  [Called By]
  - >> main

  checkAppCRC (Thumb, 40 bytes, Stack size 8 bytes, sl_crc_check.o(i.checkAppCRC))
  [Stack]

  - Max Depth = 32
  - Call Chain = checkAppCRC ⇒ computeAppCRC ⇒ Chip_CRC_Init
  [Calls]
  - >> computeAppCRC
  [Called By]
  - >> boot_App_ImageCheck
  - >> doCmdWriteBlock
  - >> doCmdCheckImage

  computeAppCRC (Thumb, 88 bytes, Stack size 16 bytes, sl_crc_check.o(i.computeAppCRC))
  [Stack]

  - Max Depth = 24
  - Call Chain = computeAppCRC ⇒ Chip_CRC_Init
  [Calls]
  - >> Chip_CRC_UseCRC32
  - >> Chip_CRC_Init
  - >> Chip_CRC_Deinit
  [Called By]
  - >> checkAppCRC

  computeCrc32 (Thumb, 46 bytes, Stack size 16 bytes, sl_crc_check.o(i.computeCrc32))
  [Stack]

  - Max Depth = 24
  - Call Chain = computeCrc32 ⇒ Chip_CRC_Init
  [Calls]
  - >> Chip_CRC_UseCRC32
  - >> Chip_CRC_Init
  - >> Chip_CRC_Deinit
  [Called By]
  - >> doCmdWriteSubBlock
  - >> doCmdWriteBlock
  - >> doCmdReadSubBlock
  - >> doCmdReadBlock
  - >> doCmdPageWrite
  - >> doCmdPageRead

  doCleanBoot (Thumb, 16 bytes, Stack size 8 bytes, sl_main.o(i.doCleanBoot))
  [Stack]

  - Max Depth = 24
  - Call Chain = doCleanBoot ⇒ CleanUpSystem ⇒ shutdownInterfaceSPI
  [Calls]
  - >> CleanUpSystem
  - >> bootValidApp
  [Called By]
  - >> boot_ImageCheck
  - >> doCmdBoot

  doCmdBoot (Thumb, 14 bytes, Stack size 8 bytes, sl_hostif.o(i.doCmdBoot))
  [Stack]

  - Max Depth = 32
  - Call Chain = doCmdBoot ⇒ doCleanBoot ⇒ CleanUpSystem ⇒ shutdownInterfaceSPI
  [Calls]
  - >> doCleanBoot
  [Address Reference Count : 1]
  - sl_hostif.o(.constdata)

  doCmdCheckImage (Thumb, 18 bytes, Stack size 16 bytes, sl_hostif.o(i.doCmdCheckImage))
  [Stack]

  - Max Depth = 48
  - Call Chain = doCmdCheckImage ⇒ checkAppCRC ⇒ computeAppCRC ⇒ Chip_CRC_Init
  [Calls]
  - >> checkAppCRC
  [Address Reference Count : 1]
  - sl_hostif.o(.constdata)

  doCmdGetVersion (Thumb, 12 bytes, Stack size 0 bytes, sl_hostif.o(i.doCmdGetVersion))
  [Address Reference Count : 1]

  - sl_hostif.o(.constdata)

  doCmdPageErase (Thumb, 28 bytes, Stack size 16 bytes, sl_hostif.o(i.doCmdPageErase))
  [Stack]

  - Max Depth = 48
  - Call Chain = doCmdPageErase ⇒ flashErasePage ⇒ ErasePages
  [Calls]
  - >> flashErasePage
  [Address Reference Count : 1]
  - sl_hostif.o(.constdata)

  doCmdPageRead (Thumb, 42 bytes, Stack size 16 bytes, sl_hostif.o(i.doCmdPageRead))
  [Stack]

  - Max Depth = 40
  - Call Chain = doCmdPageRead ⇒ computeCrc32 ⇒ Chip_CRC_Init
  [Calls]
  - >> flashReadPage
  - >> computeCrc32
  [Address Reference Count : 1]
  - sl_hostif.o(.constdata)

  doCmdPageWrite (Thumb, 62 bytes, Stack size 24 bytes, sl_hostif.o(i.doCmdPageWrite))
  [Stack]

  - Max Depth = 56
  - Call Chain = doCmdPageWrite ⇒ flashWritePage ⇒ Program
  [Calls]
  - >> flashWritePage
  - >> computeCrc32
  [Address Reference Count : 1]
  - sl_hostif.o(.constdata)

  doCmdProbe (Thumb, 44 bytes, Stack size 8 bytes, sl_hostif.o(i.doCmdProbe))
  [Stack]

  - Max Depth = 28
  - Call Chain = doCmdProbe ⇒ Hostif_DeAssertIRQ ⇒ GPIOSetBitValue
  [Calls]
  - >> Hostif_DeAssertIRQ
  - >> NVIC_SystemReset
  - >> pinCheckValidHostif
  [Address Reference Count : 1]
  - sl_hostif.o(.constdata)

  doCmdReadBlock (Thumb, 56 bytes, Stack size 24 bytes, sl_hostif.o(i.doCmdReadBlock))
  [Stack]

  - Max Depth = 48
  - Call Chain = doCmdReadBlock ⇒ computeCrc32 ⇒ Chip_CRC_Init
  [Calls]
  - >> flashReadBlock
  - >> computeCrc32
  [Address Reference Count : 1]
  - sl_hostif.o(.constdata)

  doCmdReadSubBlock (Thumb, 88 bytes, Stack size 24 bytes, sl_hostif.o(i.doCmdReadSubBlock))
  [Stack]

  - Max Depth = 48
  - Call Chain = doCmdReadSubBlock ⇒ computeCrc32 ⇒ Chip_CRC_Init
  [Calls]
  - >> flashReadBlock
  - >> computeCrc32
  - >> __aeabi_memcpy4
  [Address Reference Count : 1]
  - sl_hostif.o(.constdata)

  doCmdReset (Thumb, 4 bytes, Stack size 0 bytes, sl_hostif.o(i.doCmdReset))
  [Calls]

  - >> NVIC_SystemReset
  [Address Reference Count : 1]
  - sl_hostif.o(.constdata)

  doCmdSectorErase (Thumb, 26 bytes, Stack size 16 bytes, sl_hostif.o(i.doCmdSectorErase))
  [Stack]

  - Max Depth = 40
  - Call Chain = doCmdSectorErase ⇒ flashEraseSector ⇒ EraseSector
  [Calls]
  - >> flashEraseSector
  [Address Reference Count : 1]
  - sl_hostif.o(.constdata)

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

  - sl_hostif.o(.constdata)

  doCmdWriteBlock (Thumb, 182 bytes, Stack size 32 bytes, sl_hostif.o(i.doCmdWriteBlock))
  [Stack]

  - Max Depth = 72
  - Call Chain = doCmdWriteBlock ⇒ flashWriteBlock ⇒ Program
  [Calls]
  - >> flashWriteBlock
  - >> computeCrc32
  - >> checkAppCRC
  [Address Reference Count : 1]
  - sl_hostif.o(.constdata)

  doCmdWriteSubBlock (Thumb, 152 bytes, Stack size 24 bytes, sl_hostif.o(i.doCmdWriteSubBlock))
  [Stack]

  - Max Depth = 64
  - Call Chain = doCmdWriteSubBlock ⇒ flashWriteBlock ⇒ Program
  [Calls]
  - >> flashWriteBlock
  - >> computeCrc32
  - >> __aeabi_memset
  - >> __aeabi_memcpy
  [Address Reference Count : 1]
  - sl_hostif.o(.constdata)

  flashErasePage (Thumb, 40 bytes, Stack size 8 bytes, sl_flash.o(i.flashErasePage))
  [Stack]

  - Max Depth = 32
  - Call Chain = flashErasePage ⇒ ErasePages
  [Calls]
  - >> ErasePages
  [Called By]
  - >> doCmdPageErase

  flashEraseSector (Thumb, 26 bytes, Stack size 8 bytes, sl_flash.o(i.flashEraseSector))
  [Stack]

  - Max Depth = 24
  - Call Chain = flashEraseSector ⇒ EraseSector
  [Calls]
  - >> EraseSector
  [Called By]
  - >> doCmdSectorErase

  flashReadBlock (Thumb, 34 bytes, Stack size 8 bytes, sl_flash.o(i.flashReadBlock))
  [Stack]

  - Max Depth = 8
  - Call Chain = flashReadBlock
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> doCmdReadSubBlock
  - >> doCmdReadBlock

  flashReadPage (Thumb, 30 bytes, Stack size 8 bytes, sl_flash.o(i.flashReadPage))
  [Stack]

  - Max Depth = 8
  - Call Chain = flashReadPage
  [Calls]
  - >> __aeabi_memcpy
  [Called By]
  - >> doCmdPageRead

  flashWriteBlock (Thumb, 70 bytes, Stack size 16 bytes, sl_flash.o(i.flashWriteBlock))
  [Stack]

  - Max Depth = 40
  - Call Chain = flashWriteBlock ⇒ Program
  [Calls]
  - >> Program
  - >> EraseSector
  [Called By]
  - >> doCmdWriteSubBlock
  - >> doCmdWriteBlock

  flashWritePage (Thumb, 36 bytes, Stack size 8 bytes, sl_flash.o(i.flashWritePage))
  [Stack]

  - Max Depth = 32
  - Call Chain = flashWritePage ⇒ Program
  [Calls]
  - >> Program
  [Called By]
  - >> doCmdPageWrite

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

  - >> main

  loopHostIfI2C (Thumb, 46 bytes, Stack size 24 bytes, sl_hostif_i2c.o(i.loopHostIfI2C))
  [Stack]

  - Max Depth = 40
  - Call Chain = loopHostIfI2C ⇒ Chip_I2CS_XferHandler
  [Calls]
  - >> Chip_I2CS_XferHandler
  [Called By]
  - >> I2C1_IRQHandler
  - >> I2C0_IRQHandler

  loopHostIfSPI (Thumb, 20 bytes, Stack size 8 bytes, sl_hostif_spi.o(i.loopHostIfSPI))
  [Stack]

  - Max Depth = 44
  - Call Chain = loopHostIfSPI ⇒ SPI_Slave_Handler ⇒ Chip_SPIS_FindSSEL
  [Calls]
  - >> SPI_Slave_Handler
  [Address Reference Count : 1]
  - sl_main.o(i.main)

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

  - Max Depth = 56
  - Call Chain = main ⇒ boot_ImageCheck ⇒ boot_App_ImageCheck ⇒ checkAppCRC ⇒ computeAppCRC ⇒ Chip_CRC_Init
  [Calls]
  - >> GPIOInit
  - >> boot_ImageCheck
  - >> SPI_Init
  - >> startHostIfSPI
  - >> GPIOSetDir
  - >> GPIOSetBitValue
  - >> processHostIfPacket
  - >> hostIfPacketPending
  - >> Hostif_Init
  - >> Hostif_DeAssertIRQ
  - >> Enable_Periph_Clock
  - >> SystemCoreClockUpdate
  [Address Reference Count : 1]
  - entry9a.o(.ARM.Collect$$$$0000000B)

  pinCheckValidHostif (Thumb, 62 bytes, Stack size 8 bytes, sl_pin_manager.o(i.pinCheckValidHostif))
  [Stack]

  - Max Depth = 8
  - Call Chain = pinCheckValidHostif
  [Called By]
  - >> boot_App_ImageCheck
  - >> doCmdProbe
  - >> secondaryLoaderEntry

  processHostIfPacket (Thumb, 132 bytes, Stack size 24 bytes, sl_hostif.o(i.processHostIfPacket))
  [Stack]

  - Max Depth = 44
  - Call Chain = processHostIfPacket ⇒ Hostif_DeAssertIRQ ⇒ GPIOSetBitValue
  [Calls]
  - >> startHostIfSPI
  - >> GPIOSetDir
  - >> Hostif_DeAssertIRQ
  - >> Hostif_AssertIRQ
  [Called By]
  - >> main

  secondaryLoaderEntry (Thumb, 22 bytes, Stack size 8 bytes, sl_app_entry.o(i.secondaryLoaderEntry))
  [Stack]

  - Max Depth = 16
  - Call Chain = secondaryLoaderEntry ⇒ pinCheckValidHostif
  [Calls]
  - >> pinCheckValidHostif
  - >> secondaryLoaderAppEntry
  [Address Reference Count : 1]
  - sl_app_entry_place.o(.ARM.__AT_0x00001F00)

  setupInterfaceSPI (Thumb, 42 bytes, Stack size 8 bytes, sl_hostif_spi.o(i.setupInterfaceSPI))
  [Stack]

  - Max Depth = 8
  - Call Chain = setupInterfaceSPI
  [Calls]
  - >> Chip_SPI_Enable
  [Called By]
  - >> SPI_Init

  shutdownInterfaceSPI (Thumb, 28 bytes, Stack size 8 bytes, sl_hostif_spi.o(i.shutdownInterfaceSPI))
  [Stack]

  - Max Depth = 8
  - Call Chain = shutdownInterfaceSPI
  [Calls]
  - >> Disable_Periph_Clock
  [Called By]
  - >> CleanUpSystem

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

  - >> main
  - >> processHostIfPacket
  - >> SPISlaveDeAssert

  ### Local Symbols

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

  - >> computeCrc32
  - >> computeAppCRC

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

  - >> doCmdReset
  - >> doCmdProbe

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

  - >> setupInterfaceSPI

  SPISlaveAssert (Thumb, 8 bytes, Stack size 8 bytes, sl_hostif_spi.o(i.SPISlaveAssert))
  [Stack]

  - Max Depth = 28
  - Call Chain = SPISlaveAssert ⇒ Hostif_DeAssertIRQ ⇒ GPIOSetBitValue
  [Calls]
  - >> Hostif_DeAssertIRQ
  [Address Reference Count : 1]
  - sl_hostif_spi.o(.constdata)

  SPISlaveDeAssert (Thumb, 30 bytes, Stack size 4 bytes, sl_hostif_spi.o(i.SPISlaveDeAssert))
  [Stack]

  - Max Depth = 4
  - Call Chain = SPISlaveDeAssert
  [Calls]
  - >> startHostIfSPI
  [Address Reference Count : 1]
  - sl_hostif_spi.o(.constdata)

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

  - sl_hostif_spi.o(.constdata)

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

  - sl_hostif_spi.o(.constdata)

  ### Undefined Global Symbols