Skip to content

第三十二周:跨核共享内存驱动抽象(ov-shm)+ K3 IPC 联调推进

一、本周完成事项

1. ov-shm:设备树驱动的跨核共享内存 + notifier 抽象(QEMU 跑通)

共享内存地址来源从 amp.toml 编译期常量改为 DT 驱动 probe

  • 新增 modules/ov-shmShmDriver(compatible ov,rt-async-amp,probe 读 reg 得基址)+ PeerNotifier trait(ClintMsipNotifier 后端,fence(Release) + 写 MSIP 通知对端);
  • intercom 重构:基址改 AtomicUsize先初始化共享内存再发布基址(防 ISR 读到未初始化 ring buffer);
  • its/rt-async-shm.dtsi:共享内存节点单一真相源,AP/rt-async 两侧 DTS 宏参数化引用同一节点;
  • xtaskcompile_dtb 升级为 cc -E → dtc 编译链 + 依赖追踪。

验证:QEMU 端到端 user-test-rpc/user-test-sched 全通过。

2. K3 IPC 双核通信联调

  • K3 DTS:新增 rt-async@c0800000 共享内存节点(SRAM 68KB,与 AP 侧对齐);
  • mailbox.rsMboxK3 实现 PeerNotifiersignal(0) 触发 AP 中断),MBX4 probe 后注册进 NOTIFIER slot;
  • ipc_demo:K3 RT24 侧 IPC demo——弹性忙等处理 + MBX4 recv().await 中断唤醒(IRQ 69);intercom.rs 移植到 ov-shm 基址 + mailbox 通知;
  • user-test-mbox:AP 侧自测——ioctl 软件注入 new_msg 验证 mailbox→APLIC→IMSIC→CPU→handler 全链路;
  • 构建链:k3-flash.sh 支持 K3_TARGET 刷任意 rcpu1 bin;xtask 新增构建目标;StarryOS 构建重构为 tg-xtask(--smp 1 强制单核)。

3. tgoskits(StarryOS 侧)改动整理与三分支隔离

将 tgoskits 上的 K3/AIA/AMP 改动从上游 fork 点 55d59092e 起按主题整理并隔离为三个递进分支,逐层叠加、便于独立追溯与合入上游:

dev 55d59092e tgoskits主线

  │  全部从此处 fork

feat/riscv-aia riscv的aia支持(qemu上进行开发和测试)
│  56cd7e15d  订正 AIA 代码质量
│  (IMSIC + APLIC 驱动、IRQ domain、axvm 中断)

│  +15 commits(K3 适配层)
│  feat(k3-sdhci / k3-ufs / pxa-uart)
│  feat(zicbom) / feat(axcpu) riscv64 context
│  K3 COM260 board config + FIT fastboot

feat/k3-board-support    k3的适配相关(目前有ufs、zicbom、串口)
│  7d0475ea9  fix some-serial (PXA UART)

│  +2 commits(AMP 异步多核)
│  feat(rt-shm): AMP IPC driver /dev/rt_shm
│  fix(starry-kernel): K3 mailbox4 IRQ domain

feat/rt-async-amp   ◄── 本工作区主目标分支

本分支上的关键提交:

提交内容
6554cec8b(08-02)UFS 升级 HS-G3(上周增量整理提交):cc hello.c 57s → 1.52s,dd 读 494.6 MB/s、写 170.3 MB/s
03b7d922f(08-06)修复 mailbox4 IRQ domain:硬编码 RISCV_PLIC_DOMAIN(4)(不可注册,真板走 APLIC)→ 改 FDT 解析;新增 TEST_MBOX 自测。真板 domain=9, irq=217, selftest OK
7d0475ea9(08-07)修复 PXA UART RX 卡死(PXA27x Errata #20,CTI 丢失):对齐 Linux serial_spacemit.c,drain 时 toggle IER[RTOIE] + NO_INT 兜底排空。真板快速输入不再丢字/乱码

二、存在问题 / 待办

  • StarryOS 在K3上的python运行环境(?)
  • K3 StarryOS 网卡驱动/USB驱动

三、下周计划

  1. 上板联调 K3 IPC:AP /dev/rt_shm ↔ rt-async mailbox4 双向 RPC 跑通后提交;
  2. 按手册确认小车物理串口连线,推进 RT24 域驱动小车。

四、相关提交位置

仓库提交/位置说明
主仓eefa2df(master)ov-shm:DT 驱动共享内存 + notifier 抽象
主仓工作区未提交K3 IPC demo + user-test-mbox + mailbox PeerNotifier + 构建链
tgoskitsfeat/riscv-aia-coreAIA 基线(IMSIC/APLIC/IRQ domain,与 feat/riscv-aia 同 commit)
tgoskitsfeat/k3-board-supportK3 板级(aia-core +15:SDHCI/UFS/GMAC/PXA-UART/Zicbom/FIT)
tgoskitsfeat/rt-async-amp主目标分支(k3-board +2:rt-shm / mailbox4 IRQ domain)