第三十二周:跨核共享内存驱动抽象(ov-shm)+ K3 IPC 联调推进
一、本周完成事项
1. ov-shm:设备树驱动的跨核共享内存 + notifier 抽象(QEMU 跑通)
共享内存地址来源从 amp.toml 编译期常量改为 DT 驱动 probe:
- 新增
modules/ov-shm:ShmDriver(compatibleov,rt-async-amp,probe 读reg得基址)+PeerNotifiertrait(ClintMsipNotifier后端,fence(Release)+ 写 MSIP 通知对端); intercom重构:基址改AtomicUsize,先初始化共享内存再发布基址(防 ISR 读到未初始化 ring buffer);its/rt-async-shm.dtsi:共享内存节点单一真相源,AP/rt-async 两侧 DTS 宏参数化引用同一节点;xtask:compile_dtb升级为cc -E → dtc编译链 + 依赖追踪。
验证:QEMU 端到端 user-test-rpc/user-test-sched 全通过。
2. K3 IPC 双核通信联调
- K3 DTS:新增
rt-async@c0800000共享内存节点(SRAM 68KB,与 AP 侧对齐); - mailbox.rs:
MboxK3实现PeerNotifier(signal(0)触发 AP 中断),MBX4 probe 后注册进 NOTIFIER slot; ipc_demo:K3 RT24 侧 IPC demo——弹性忙等处理 + MBX4recv().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驱动
三、下周计划
- 上板联调 K3 IPC:AP
/dev/rt_shm↔ rt-async mailbox4 双向 RPC 跑通后提交; - 按手册确认小车物理串口连线,推进 RT24 域驱动小车。
四、相关提交位置
| 仓库 | 提交/位置 | 说明 |
|---|---|---|
| 主仓 | eefa2df(master) | ov-shm:DT 驱动共享内存 + notifier 抽象 |
| 主仓 | 工作区未提交 | K3 IPC demo + user-test-mbox + mailbox PeerNotifier + 构建链 |
| tgoskits | feat/riscv-aia-core | AIA 基线(IMSIC/APLIC/IRQ domain,与 feat/riscv-aia 同 commit) |
| tgoskits | feat/k3-board-support | K3 板级(aia-core +15:SDHCI/UFS/GMAC/PXA-UART/Zicbom/FIT) |
| tgoskits | feat/rt-async-amp | 主目标分支(k3-board +2:rt-shm / mailbox4 IRQ domain) |