blob: a129b0d5536144a3a616ce7b0cd1e2bf280d58cc [file] [log] [blame]
// Main Flash memory
// Upper size:
// STM32G0B1xx and STM32G0C1xx: 0x0807 FFFF; STM32G071xx and STM32G081xx: 0x0801 FFFF; STM32G051xx and
// STM32G061xx, STM32G031xx and STM32G041xx: 0x0800 FFFF.
flash: Memory.MappedMemory @ sysbus 0x08000000
size: 0x20000
ram: Memory.MappedMemory @ sysbus 0x20000000
size: 0xC000
nvic: IRQControllers.NVIC @ sysbus 0xE000E000
priorityMask: 0xF0
systickFrequency: 72000000
IRQ -> cpu@0
// This model's registers are not compatible with the EXTI in this MCU,
// it is currently here to support direct interrupts
exti: IRQControllers.STM32F4_EXTI @ sysbus 0x40021800
numberOfOutputLines: 34
firstDirectLine: 19
[0, 1] -> nvicInput5@[0, 1]
[2, 3] -> nvicInput6@[0, 1]
[4-15] -> nvicInput7@[0-11]
[23] -> nvic@[23]
[32, 33] -> nvicInput8@[0, 1]
[17, 18] -> nvicInput12@[0, 1]
nvicInput8: Miscellaneous.CombinedInput @ none
numberOfInputs: 2
-> nvic@8
nvicInput10: Miscellaneous.CombinedInput @ none
numberOfInputs: 2
-> nvic@10
nvicInput11: Miscellaneous.CombinedInput @ none
numberOfInputs: 9
-> nvic@11
nvicInput12: Miscellaneous.CombinedInput @ none
numberOfInputs: 2
-> nvic@12
nvicInput5: Miscellaneous.CombinedInput @ none
numberOfInputs: 2
-> nvic@5
nvicInput6: Miscellaneous.CombinedInput @ none
numberOfInputs: 2
-> nvic@6
nvicInput7: Miscellaneous.CombinedInput @ none
numberOfInputs: 12
-> nvic@7
nvicInput29: Miscellaneous.CombinedInput @ none
numberOfInputs: 4
-> nvic@29
cpu: CPU.CortexM @ sysbus
cpuType: "cortex-m0"
nvic: nvic
usart1: UART.STM32F7_USART @ sysbus 0x40013800
frequency: 200000000
IRQ -> nvic@27
usart2: UART.STM32F7_USART @ sysbus 0x40004400
frequency: 200000000
IRQ -> nvic@28
usart3: UART.STM32F7_USART @ sysbus 0x40004800
frequency: 200000000
IRQ -> nvicInput29@0
usart4: UART.STM32F7_USART @ sysbus 0x40004C00
frequency: 200000000
IRQ -> nvicInput29@1
usart5: UART.STM32F7_USART @ sysbus 0x40005000
frequency: 200000000
IRQ -> nvicInput29@2
usart6: UART.STM32F7_USART @ sysbus 0x40013C00
frequency: 200000000
IRQ -> nvicInput29@3
gpioPortA: GPIOPort.STM32_GPIOPort @ sysbus <0x50000000, +0x400>
modeResetValue: 0xEBFFFFFF
pullUpPullDownResetValue: 0x24000000
numberOfAFs: 8
[0-15] -> exti@[0-15]
gpioPortB: GPIOPort.STM32_GPIOPort @ sysbus <0x50000400, +0x400>
modeResetValue: 0xFFFFFFFF
pullUpPullDownResetValue: 0x00000000
numberOfAFs: 8
[0-15] -> exti@[0-15]
gpioPortC: GPIOPort.STM32_GPIOPort @ sysbus <0x50000800, +0x400>
modeResetValue: 0xFFFFFFFF
pullUpPullDownResetValue: 0x00000000
numberOfAFs: 8
[0-15] -> exti@[0-15]
gpioPortD: GPIOPort.STM32_GPIOPort @ sysbus <0x50000C00, +0x400>
modeResetValue: 0xFFFFFFFF
pullUpPullDownResetValue: 0x00000000
numberOfAFs: 8
[0-15] -> exti@[0-15]
gpioPortE: GPIOPort.STM32_GPIOPort @ sysbus <0x50001000, +0x400>
modeResetValue:0xFFFFFFFF
pullUpPullDownResetValue: 0x00000000
numberOfAFs: 8
[0-15] -> exti@[0-15]
gpioPortF: GPIOPort.STM32_GPIOPort @ sysbus <0x50001400, +0x400>
modeResetValue: 0xFFFFFFFF
pullUpPullDownResetValue: 0x00000000
numberOfAFs: 8
[0-15] -> exti@[0-15]
i2c1: I2C.STM32F7_I2C @ sysbus 0x40005400
EventInterrupt -> exti@23
i2c2: I2C.STM32F7_I2C @ sysbus 0x40005800
EventInterrupt -> exti@22
spi1: SPI.STM32SPI @ sysbus 0x40013000
IRQ -> nvic@25
spi2: SPI.STM32SPI @ sysbus 0x40003800
IRQ -> nvic@26
spi3: SPI.STM32SPI @ sysbus 0x40003C00
IRQ -> nvic@26
timer1: Timers.STM32_Timer @ sysbus 0x40012C00
frequency: 10000000
initialLimit: 0xFFFF
-> nvic@14
timer2: Timers.STM32_Timer @ sysbus 0x40000000
frequency: 10000000
initialLimit: 0xFFFFFFFF
-> nvic@15
timer3: Timers.STM32_Timer @ sysbus 0x40000400
frequency: 10000000
initialLimit: 0xFFFF
-> nvic@16
timer4: Timers.STM32_Timer @ sysbus 0x40000800
frequency: 10000000
initialLimit: 0xFFFF
-> nvic@16
timer6: Timers.STM32_Timer @ sysbus 0x40001000
frequency: 10000000
initialLimit: 0xFFFF
timer7: Timers.STM32_Timer @ sysbus 0x40001400
frequency: 10000000
initialLimit: 0xFFFF
-> nvic@18
timer14: Timers.STM32_Timer @ sysbus 0x40002000
frequency: 10000000
initialLimit: 0xFFFF
-> nvic@19
timer15: Timers.STM32_Timer @ sysbus 0x40014000
frequency: 10000000
initialLimit: 0xFFFF
-> nvic@20
timer16: Timers.STM32_Timer @ sysbus 0x40014400
frequency: 10000000
initialLimit: 0xFFFF
-> nvic@21
timer17: Timers.STM32_Timer @ sysbus 0x40014800
frequency: 10000000
initialLimit: 0xFFFF
-> nvic@22
fdcan1: CAN.STMCAN @ sysbus <0x40006400, +0x400>
fdcan2: CAN.STMCAN @ sysbus <0x40006800, +0x400>
rtc: Timers.STM32F4_RTC @ sysbus 0x40002800
AlarmIRQ -> exti@19
rcc: Python.PythonPeripheral @ sysbus 0x40021000
size: 0x400
initable: true
script: '''
if request.isInit:
lastVal = 0
data = {'hsion': 0, 'pllon': 0, 'sw': 0}
self.NoisyLog("%s on FLIPFLOP at offset 0x%x, value 0x%x, length %d, %s" % (str(request.type), request.offset, request.value, request.length, str(data)))
if request.isWrite:
if request.offset == 0x0:
# HSION [doc = "Bit 8 - HSI16 clock enable"]
data['hsion'] = (request.value >> 8) & 0x1
# PLLON [doc = "Bit 24 - PLL enable"]
data['pllon'] = (request.value >> 24) & 0x1
elif request.offset == 0x8:
# SW_W [doc = "Bits 0:2 - System clock switch"]
data['sw'] = request.value & 0x7
elif request.isRead:
lastVal = 1 - lastVal
if request.offset == 0x0:
# request.value = lastVal * 0x83
# RCC_CR [doc = "0x00 - Clock control register"]
# HSIRDY_R [doc = "Bit 10 - HSI16 clock ready flag"]
# PLLRDY [doc = "Bit 25 - PLL clock ready flag"]
request.value = (data['hsion'] << 10) | (data['pllon'] << 25)
elif request.offset == 0x4:
request.value = lastVal * 0xFFFFFFF8
elif request.offset == 0x24:
request.value = 0x0
else:
# RCC_CFGR [doc = "0x08 - Clock configuration register"]
# SWS_R [doc = "Bits 3:5 - System clock switch status"]
# request.value = lastVal * 0xFFFFFFFF
request.value = data['sw'] << 3
self.NoisyLog(" 0x%x (%s)" % (request.value, str(data)))
'''
dma1: DMA.STM32G0DMA @ sysbus 0x40020000
numberOfChannels: 7
0 -> nvic@9
[1, 2] -> nvicInput10@[0, 1]
[3-6] -> nvicInput11@[0-3]
dma2: DMA.STM32G0DMA @ sysbus 0x40020400
numberOfChannels: 5
[0-4] -> nvicInput11@[4-8]
adc: Analog.STM32F0_ADC @ sysbus 0x40012400
referenceVoltage: 3.3
externalEventFrequency: 1000
-> nvic@12
sysbus:
init:
Tag <0x40002C00, 0x40002FFF> "WWDG"
Tag <0x40003000, 0x400033FF> "IWDG"
Tag <0x40005C00, 0x40005FFF> "USB "
Tag <0x40006C00, 0x40006FFF> "CRS"
Tag <0x40007000, 0x400073FF> "PWR"
Tag <0x40007400, 0x400077FF> "DAC"
Tag <0x40007800, 0x40007BFF> "CEC"
Tag <0x40010000, 0x400103FF> "SYSCFG"
Tag <0x40015800, 0x40015BFF> "DBG"
Tag <0x40022000, 0x400223FF> "FLASH_INTERFACE"
Tag <0x40023000, 0x400233FF> "CRC"