Skip to content

Supported Ports ​

RMP is ported by construction, not by accident: the same kernel source builds for sixteen architecture families, from an 8-bit AVR to a Cortex-M55 and a RISC-V microcontroller. Each port keeps the platform layer thin, so the generic kernel is exercised by real hardware rather than hidden behind a large board-support package.

Architecture families ​

FamilyExample chipsToolchains
ARMv6-MSTM32F030F4, STM32G071RB, STM32L071CB, HC32L136K8Keil, IAR, GCC
ARMv7-MSTM32F103/F107/F303/F405/F429/F767/H743Keil, IAR, GCC
ARMv8-MNuvoton M2351KIAAE (M23), STM32N657X0 (M55)Keil, IAR, GCC
ARMv7-RTI TMS570LS0432 (R4), TMS570LC4357 (R5)CCS
RV32WCH CH32V307 (IMAC/IMAFC), SiFive FE310GCC, MounRiver, FreedomStudio
AVRATmega328P, ATmega1284P, ATmega2560Atmel Studio, GCC
MSP430MSP430F149, MSP430FR5994, MSP430G2553CCS
RL78Renesas R5F104PJCCRL / E2 Studio
PIC24PIC24FJ128GA010MPLAB XC16
dsPIC33EdsPIC33EP512MU810MPLAB XC16
MIPS32PIC32MZ2048EFM100MPLAB XC32
C28xTMS320F2812, TMS320F28335CCS
MOS 6502RP2A03 (Famicom / NES)CC65
unSPSunplus SPCE061AUNSP IDE
Z80Z84C0004 / TP-801Z88DK
x86 Linux32-bit Linux via ptraceGCC

ARMv6-M, ARMv7-M and RV32 also have virtualized platform layers for RVM — see Virtualized ports below.

Build projects ​

Every folder below is a complete, openable project. The vendor HAL packages that some of them need live in the M0A00_Library repository.

ToolchainProjectsNotes
Keil uVision 5RVMDK-* (13)Cortex-M0/M0+/M3/M4/M7/M23/M55, including an F429 coverage build
IAR EWARMEWARM-* (5)Cortex-M23/M4/M7/M55
GCC MakefileGCCMF-* (14)Cortex-M and RISC-V, plus GCCMF-X86L (Linux) and lwIP variants
MounRiver StudioMRS-* (2)CH32V307, with and without lwIP
Code Composer StudioCCS-* (7)MSP430, MSP430X, C28x, Cortex-R4/R5
MPLAB XMPLAB-* (3)PIC24, dsPIC33E, PIC32MZ
Atmel StudioATS-* (3)ATmega328P/1284P/2560
E2 StudioE2STUDIO-* (1)RL78
FreedomStudioFreedomStudio-* (1)SiFive FE310 (RV32)
CC65CC65MF-* (1)Famicom / NES
UNSP IDEUNSPIDE-* (1)SPCE061A
Static analysisCPPCHECK-LINTcppcheck / PC-lint integration

Browse everything in the Project tree — each folder has its own README with board-specific instructions.

Toolchains ​

  • GCC / Clang-LLVM
  • Keil uVision (ARMCC / ARMCLANG)
  • IAR EWARM (ICCARM)
  • Code Composer Studio
  • MPLAB X XC16 / XC32
  • Vendor IDEs: Atmel Studio, E2 Studio, MounRiver Studio, FreedomStudio, UNSP IDE, CC65, Z88DK

Other toolchains are not recommended or supported at this point. Because the kernel is plain C99 with a small platform layer, adding one is usually a matter of providing the context-switch assembly and the tick source.

Virtualized ports ​

Three platform layers target RVM rather than bare metal:

LayerCoresUsed by
Include/Platform/A6M_RVMARMv6-MSTM32L071CB
Include/Platform/A7M_RVMARMv7-MSTM32F405RG, STM32F767IG
Include/Platform/RV32P_RVMRV32CH32V307

The virtualized build keeps the kernel ABI intact and routes every privileged operation through the monitor, which is why the same benchmark suite can measure both bare-metal and virtualized performance. See the RVM project for the monitor side.

Deliberate limits ​

RMP targets microcontrollers and single cores on purpose. PIC18 (hardware stack), AVR32 (in decline), x86-64 and Cortex-A (MMU) are out of scope, and multi-core microcontrollers are not supported because their cores are usually asymmetric and lack cache coherency. The Why RMP page lists the recommended alternatives for each case.

An official work of EDI, released into the public domain.

GitHub·Discord·QQ 群 1038895132·rtospro.com