RTOS小核与AMP
软件架构
V821采用Linux大核与RISC-V MCU小核协同。常电或快起方案可由BOOT0/U-Boot加载RTOS,也可由Linux remoteproc管理小核。

RTOS目录
rtos/board/v821_e907/ 板级配置
rtos/lichee/rtos/ RTOS内核和工程
rtos/lichee/rtos-components/ 组件
rtos/lichee/rtos-hal/ HAL驱动
编译
source build/envsetup.sh
lunch
mrtos
输出通常位于:
rtos/lichee/rtos/build/img/
├── rt_system.bin
├── rt_system.elf
├── rt_system.map
└── rt_system.syms
SDK会将镜像复制为:
device/config/chips/v821/configs/<board>/bin/amp_rv0.bin
清理和配置:
mrtos clean
mrtos menuconfig
内存布局
- Linux内核起始地址需满足4MB对齐。
- OpenSBI地址应固定并满足128KB对齐,同时配置PMP保护。
- RTOS、vring、rpbuf和no-map保留区不能重叠。
- U-Boot会重定位到DRAM末端,末端不能被大块保留内存占满。
remoteproc
板端检查:
ls /sys/class/remoteproc/
cat /sys/class/remoteproc/remoteproc0/state
echo start > /sys/class/remoteproc/remoteproc0/state
echo stop > /sys/class/remoteproc/remoteproc0/state
具体节点和启动方式取决于方案是否已经在BOOT阶段启动小核,不能重复启动同一个核。
通信
- vring:维护available和used队列。
- rpmsg:消息通道,适合控制和小数据。
- rpbuf:共享大块buffer,适合音视频数据。
- 中断/mailbox:通知对端队列或状态变化。
日志与调试
amp_shell用于AMP控制台。- trace log用于获取小核日志。
- 保留
rt_system.elf和.map用于地址符号化。 - 关注栈溢出、double free、共享buffer越界、缓存一致性和启动顺序。