支持平台
RMP 的可移植性来自设计而非偶然:同一份内核源码可以构建到十六个架构家族, 从 8 位 AVR 一直到 Cortex-M55 与 RISC-V 微控制器。每个移植都保持平台层薄, 让通用内核接受真实硬件的检验,而不是躲在庞大的板级支持包后面。
架构家族
| 家族 | 示例芯片 | 工具链 | RVM 客机 |
|---|---|---|---|
| ARMv6-M | STM32F030F4、STM32G071RB、STM32L071CB、HC32L136K8 | Keil、IAR、GCC | 支持 |
| ARMv7-M | STM32F103/F107/F303/F405/F429/F767/H743 | Keil、IAR、GCC | 支持 |
| ARMv8-M | 新唐 M2351KIAAE(M23)、STM32N657X0(M55) | Keil、IAR、GCC | — |
| ARMv7-R | TI TMS570LS0432(R4)、TMS570LC4357(R5) | CCS | — |
| RV32 | 沁恒 CH32V307(IMAC/IMAFC)、SiFive FE310 | GCC、MounRiver、FreedomStudio | 支持 |
| AVR | ATmega328P、ATmega1284P、ATmega2560 | Atmel Studio、GCC | — |
| MSP430 | MSP430F149、MSP430FR5994、MSP430G2553 | CCS | — |
| RL78 | 瑞萨 R5F104PJ | CCRL / E2 Studio | — |
| PIC24 | PIC24FJ128GA010 | MPLAB XC16 | — |
| dsPIC33E | dsPIC33EP512MU810 | MPLAB XC16 | — |
| MIPS32 | PIC32MZ2048EFM100 | MPLAB XC32 | — |
| C28x | TMS320F2812、TMS320F28335 | CCS | — |
| MOS 6502 | RP2A03(红白机 / NES) | CC65 | — |
| unSP | 凌阳 SPCE061A | UNSP IDE | — |
| Z80 | Z84C0004 / TP-801 | Z88DK | — |
| x86 Linux | 通过 ptrace 运行的 32 位 Linux | GCC | — |
构建工程
下表中的每个目录都是一个完整、可直接打开的工程。部分工程所需的厂商 HAL 位于 M0A00_Library 仓库。
| 工具链 | 工程 | 说明 |
|---|---|---|
| Keil uVision 5 | RVMDK-*(13 个) | Cortex-M0/M0+/M3/M4/M7/M23/M55,含一个 F429 覆盖率工程 |
| IAR EWARM | EWARM-*(5 个) | Cortex-M23/M4/M7/M55 |
| GCC Makefile | GCCMF-*(14 个) | Cortex-M 与 RISC-V,另含 GCCMF-X86L(Linux)与 lwIP 变体 |
| MounRiver Studio | MRS-*(2 个) | CH32V307,带与不带 lwIP |
| Code Composer Studio | CCS-*(7 个) | MSP430、MSP430X、C28x、Cortex-R4/R5 |
| MPLAB X | MPLAB-*(3 个) | PIC24、dsPIC33E、PIC32MZ |
| Atmel Studio | ATS-*(3 个) | ATmega328P/1284P/2560 |
| E2 Studio | E2STUDIO-*(1 个) | RL78 |
| FreedomStudio | FreedomStudio-*(1 个) | SiFive FE310(RV32) |
| CC65 | CC65MF-*(1 个) | 红白机 / NES |
| UNSP IDE | UNSPIDE-*(1 个) | SPCE061A |
| 静态分析 | CPPCHECK-LINT | cppcheck / PC-lint 集成 |
全部工程可在 Project 目录 浏览——每个文件夹都有自己的 README,说明该板卡的构建与运行方法。
工具链
- GCC / Clang-LLVM
- Keil uVision(ARMCC / ARMCLANG)
- IAR EWARM(ICCARM)
- Code Composer Studio
- MPLAB X XC16 / XC32
- 厂商 IDE:Atmel Studio、E2 Studio、MounRiver Studio、FreedomStudio、 UNSP IDE、CC65、Z88DK
其他工具链目前不在推荐与支持范围内。由于内核是纯 C99 加一层很小的平台代码, 新增工具链通常只需要提供上下文切换汇编和 tick 来源。
虚拟化移植
有三个平台层面向 RVM 而不是裸机:
| 平台层 | 内核 | 使用者 |
|---|---|---|
Include/Platform/A6M_RVM | ARMv6-M | STM32L071CB |
Include/Platform/A7M_RVM | ARMv7-M | STM32F405RG、STM32F767IG |
Include/Platform/RV32P_RVM | RV32 | CH32V307 |
虚拟化构建保持内核 ABI 不变,所有特权操作经由监视器完成,因此同一套基准 测试可以同时测量裸机与虚拟化性能。监视器一侧见 RVM 项目。
刻意的边界
RMP 有意只面向微控制器和单核。PIC18(硬件栈)、AVR32(已衰落)、x86-64 与 Cortex-A(带 MMU)不在范围内;多核微控制器通常核心不对称且没有缓存一致性, 因此也不支持。各种情况的推荐替代方案见 为什么选择 RMP。
