@startuml skinparam backgroundColor #EEEBDC box "Hardware" #FFC700 participant "Cortex-M" as cortexm participant "Ethos-U" as ethosu end box box "CMSIS Device" #0091BD participant "__VECTOR_TABLE" as ivec participant "Reset_Handler()" as reset end box box "Compiler" #FF6B00 participant "Runtime" as runtime end box box "Target" #95D600 participant "common" as common participant "corstone-300" as target end box box "Drivers" #00C1DE participant "NPU" as driver participant "UART" as uart participant "MPU" as mpu end box box "Application" #7D868C participant "main()" as main end box cortexm -> ivec++: ivec -> reset++: Reset_Handler() reset -> reset++: SystemInit() deactivate reset reset -> runtime++: __main() note over runtime Scatter loading Initializing stack and heap end note note over runtime Calling constructors end note runtime -> common++: init() [constructor] note over common The constructor is called after stack and heap have been initialized, but before the main() function is called end note common -> target++: targetSetup() target -> uart++: uart_init() return target -> driver++: ethosu_init() return target -> mpu++: loadAndEnableConfig() return return return runtime -> main++: main() note over main Running application end note @enduml