flash0: Memory.MappedMemory @ sysbus 0x8000000
    size: 0x40000

sram0: Memory.MappedMemory @ sysbus 0x20000000
    size: 0x10000

timers4: Timers.STM32_Timer @ sysbus <0x40000800, +0x400>
    frequency: 10000000
    initialLimit: 0xffffffff
    ->nvic0@30

usart1: UART.STM32_UART @ sysbus <0x40011000, +0x400>
    ->nvic0@37

gpioa: GPIOPort.STM32_GPIOPort @ sysbus <0x40020000, +0x400>

gpiob: GPIOPort.STM32_GPIOPort @ sysbus <0x40020400, +0x400>

gpioc: GPIOPort.STM32_GPIOPort @ sysbus <0x40020800, +0x400>

gpiod: GPIOPort.STM32_GPIOPort @ sysbus <0x40020c00, +0x400>

gpioe: GPIOPort.STM32_GPIOPort @ sysbus <0x40021000, +0x400>

gpiof: GPIOPort.STM32_GPIOPort @ sysbus <0x40021400, +0x400>

gpiog: GPIOPort.STM32_GPIOPort @ sysbus <0x40021800, +0x400>

gpioh: GPIOPort.STM32_GPIOPort @ sysbus <0x40021c00, +0x400>

// autogenerated

userled: Miscellaneous.LED @ gpioc 0xd
    invert: true

gpioc:
    13 -> userled@0

nvic0: IRQControllers.NVIC @ {
    sysbus new Bus.BusPointRegistration { address: 0xe000e000; cpu: cpu0 }
}
    -> cpu0@0

cpu0: CPU.CortexM @ sysbus
    cpuType: "cortex-m4f"
    nvic: nvic0

i2c1: I2C.STM32F1_I2C @ sysbus 0x40005400
    EventInterrupt->nvic0@31
    ErrorInterrupt->nvic0@32

rtc: Timers.STM32F4_RTC @ sysbus 0x40002800
    AlarmIRQ->nvic0@41

rcc: Miscellaneous.STM32F4_RCC @ sysbus 0x40023800
    rtcPeripheral: rtc

spi1: SPI.STM32SPI @ sysbus 0x40013000
    series: STM32Series.F4
    IRQ->nvic0@35

adc1: Analog.STM32_ADC @ sysbus 0x40012000
    IRQ->nvic0@18

// st,stm32f4 overlay

sysbus:
    init:
        ApplySVD @https://dl.antmicro.com/projects/renode/svd/STM32F40x.svd.gz

// cortex-m overlay

dwt: Miscellaneous.DWT @ sysbus 0xE0001000
    frequency: 72000000

systemc: SystemC.SystemCPeripheral @ sysbus <0x9000000, 0x9000001>
    address: "127.0.0.1"
    timeSyncPeriodUS: 5000
