Repository navigation
Releases: linumiz/qemu-tricore
Releases · linumiz/qemu-tricore
Release list
QEMU TriCore AURIX v1.0.0: TC3x and TC4x SoC Emulation
QEMU emulation support for Infineon AURIX TriCore TC3x and TC4x microcontroller families, enabling Zephyr RTOS development and CI without hardware.
Based on upstream QEMU v11.0.0-rc4 (da6c4fe60fee).
Supported Machines
| Machine | SoC | ISA | Zephyr Board |
|---|---|---|---|
KIT_AURIX_TC397B_TRB |
TC39XB (B-Step) | TC1.6.2P | qemu_tc3x |
KIT_A3G_TC4D7_LITE |
TC4DX | TC1.8P | qemu_tc4x |
KIT_AURIX_TC277_TRB(TC27XD) is also included but not tested. Use at your own risk.
Peripheral Models
- Interrupt Router (tricore_ir): SRN-based interrupt controller with TC3x/TC4x SRC bit layout dispatch, PIPN/CCPN priority evaluation
- ASCLIN UART: ASC mode with TX/RX FIFO, interrupt-driven operation, TC3x/TC4x register map variants
- System Timer (STM): 64-bit free-running counter, CMP0/CMP1 compare match interrupts, dynamic clock update
- System Control Unit (SCU): CCUCONx clock dividers, PMCSR idle/halt for
k_cpu_idle() - TC4x Clock: PLL0/PLL1/PLL2, CCUCONx divider tree, fSPB/fSTM/fCPU derivation from external oscillator
ISA Extensions (over upstream TC1.3.1)
- TC1.6.2P: RFH, 16-bit CALLI, tc37x/tc39x CPU models
- TC1.8P: CMPSWAP.W, SWAPMSK.W, CRC32B.W, CRC32L.W, POPCNT.W, SHUFFLE, CLO.B/H, CLS.B/H, WAIT, DIV64/DIV64U, double-precision FPU (ADD.D, SUB.D, MUL.D, DIV.D, CMP.D, FTOD, DTOF, MADD/MSUB.D variants), tc4x CPU model
Key Fixes
- MFCR/MTCR TCG global aliasing for ICR and PCXI (fixes
arch_irq_lockwithin same translation block) - WAIT instruction stores correct return PC (
pc_succ_insn) for interrupt resume - ISYNC deferred halt via
pmcsr_sleep_pending(avoids blocked re-entrant I/O from MMIO context) - PCXI save uses bitwise OR for upper/lower context link field
- DISABLE emits branch after helper call (prevents fall-through execution)
- PCON/DCON CSFRs with auto-clear PCON1.PCINV
Validated Zephyr Samples (v4.4.0-rc3 + TriCore port)
samples/hello_world(withk_msleep)samples/philosopherstests/kernel/context(all 9 subtests includingtest_cpu_idle)samples/posix/uname(withCONFIG_SHELL=y)- Min-heap sample
Usage
qemu-system-tricore -machine KIT_AURIX_TC397B_TRB -kernel zephyr.elf -nographic
qemu-system-tricore -machine KIT_A3G_TC4D7_LITE -kernel zephyr.elf -nographic
Issues
Report bugs at: https://github.com/linumiz/qemu-tricore/issues
Credits
- Christoph Seitz (Infineon) -- TC4x clock, interrupt router rework, ISA 1.8 opcodes, double-precision FPU, CPU model refactoring
- Andreas Konopik, David Brenken (EFS) -- original TC27x SoC, SCU, STM, ASCLIN foundations
- Georg Hofstetter, Bastian Koppelmann -- paravirtualization device, early ASCLIN work
Contact:
- Parthiban Nallathambi - parthiban@linumiz.com