Fix the MPU (was a no-op stub), add peripheral devices, wire them
into the tc27x SoC, and add the tc39xb SoC with TC397B machine.
The peripheral device models originate from the EFS-OpenSource
QEMU fork [1], targeting QEMU 9.x. This series ports them to
the current QEMU 11.x baseline with API fixes and adds TC3x
register support needed for Zephyr RTOS boot.
[1] https://github.com/EFS-OpenSource/qemu-tricore-patches
Changes from the EFS baseline:
- Ported to QEMU 11 APIs (resettable phases, const class_init,
CharFrontend, hw/core/sysbus.h, DEVICE_LITTLE_ENDIAN, etc.)
- STM: fixed address from 0xF0000000 to 0xF0001000
- IR: fixed address from 0xF0038000 to 0xF0037000
- SCU: added PLL locked status for Zephyr clock driver
- STM: switched to monotonic counter for deterministic timing
Patches 1-3: Fix memory protection registers, implement MPU,
add tc39x CPU model.
Patches 4-7: Add IR, ASCLIN UART, STM timer, SCU devices.
Patch 8: Wire peripherals into tc27x SoC.
Patch 9: Update MAINTAINERS (Orphan -> Maintained).
Patch 10: Add tc39xb SoC and KIT_AURIX_TC397_TRB machine.
Interrupt delivery and TC1.8 ISA will follow in separate series.
Single-core emulation only (CPU0). Tested with bare-metal
firmware on TC277 and TC397B boards. Existing TCG tests pass.
The downstream release with TC4x and interrupt support is
maintained at [2].
[2] https://gitlab.com/linumiz/infineon/release/qemu-aurix
Signed-off-by: Parthiban Nallathambi <parthiban@linumiz.com>
---
Parthiban Nallathambi (10):
target/tricore: replace legacy DPM/CPM CSFRs with CPXE/DPRE/DPWE
target/tricore: implement memory protection in get_physical_address
target/tricore: add tc39x CPU model
hw/intc: add TriCore interrupt router
hw/char: add TriCore ASCLIN UART controller
hw/timer: add TriCore System Timer Module (STM)
hw/tricore: add System Control Unit (SCU) device
hw/tricore: wire peripherals into tc27x SoC
MAINTAINERS: take over TriCore and add peripheral file paths
hw/tricore: add tc39xb SoC and KIT_AURIX_TC397_TRB machine
MAINTAINERS | 9 +-
hw/char/Kconfig | 3 +
hw/char/meson.build | 1 +
hw/char/tricore_asclin.c | 457 +++++++++++++++++++++++++++++++++++++++
hw/intc/Kconfig | 3 +
hw/intc/meson.build | 1 +
hw/intc/tricore_ir.c | 264 ++++++++++++++++++++++
hw/timer/Kconfig | 4 +
hw/timer/meson.build | 2 +
hw/timer/tricore_stm.c | 328 ++++++++++++++++++++++++++++
hw/tricore/Kconfig | 15 ++
hw/tricore/meson.build | 2 +
hw/tricore/tc27x_soc.c | 62 ++++++
hw/tricore/tc39xb_soc.c | 366 +++++++++++++++++++++++++++++++
hw/tricore/triboard.c | 32 ++-
hw/tricore/tricore_scu.c | 240 ++++++++++++++++++++
include/hw/char/tricore_asclin.h | 89 ++++++++
include/hw/intc/tricore_ir.h | 62 ++++++
include/hw/timer/tricore_stm.h | 76 +++++++
include/hw/tricore/tc27x_soc.h | 13 ++
include/hw/tricore/tc39xb_soc.h | 115 ++++++++++
include/hw/tricore/triboard.h | 2 +
include/hw/tricore/tricore_scu.h | 103 +++++++++
target/tricore/cpu.c | 8 +
target/tricore/csfr.h.inc | 20 +-
target/tricore/helper.c | 242 ++++++++++++++++++++-
26 files changed, 2504 insertions(+), 15 deletions(-)
---
base-commit: 81cc5f39aa3042e9c0b2ea772b42a2c8b1488e76
change-id: 20260531-dev-ifx-tricore-upstream-rebase-minimal-e18f56d421a6
Thanks,
--
Parthiban Nallathambi <parthiban@linumiz.com>