ax-driver
路径:
drivers/ax-driver类型:库 crate 分层:共享驱动聚合层 / ArceOS glue
ax-driver 是当前仓库的共享驱动聚合入口。重构后,旧驱动接口包组已移除,驱动实现、总线探测和 RDIF/rdrive adapter 集中在 drivers/ax-driver 以及 drivers/* 下的可复用 crate 中。
架构定位
ax-driver 负责把平台发现结果转成上层可消费的设备能力:
- 向下连接 FDT、PCI、VirtIO、SoC/板级驱动和 MMIO/DMA 能力。
- 向上通过
rdrive注册表和rdif-block、rd-net、rdif-display、rdif-input、rdif-vsock暴露设备。 - 在 ArceOS、StarryOS、Axvisor 之间复用驱动 core,同时把 OS glue 限定在 probe、iomap、IRQ 注册和运行时适配层。
主要模块
block/*、net/*、display/*、input/*、vsock/*:按设备类别组织驱动绑定和 RDIF adapter。virtio/*:封装 VirtIO transport 和块设备、网卡、显示、输入、vsock adapter。pci/*:处理 PCI/FDT 探测、BAR/window 资源和平台相关 PCIe glue。soc/*、usb/*、serial/*、time.rs:承载 SoC、USB、串口和 RTC 等平台设备 glue。
依赖关系
直接依赖
rdrive、rdif-block、rd-net、rdif-*:设备注册、查询和领域能力接口。dma-api、mmio-api、axklib:DMA、MMIO 和内核映射能力边界。virtio-drivers、pcie、SoC/板级驱动 crate:具体硬件协议或平台 glue。ax-alloc、ax-errno、ax-kspin等:分配、错误映射和同步路径。
开发约束
- 新驱动应保持 Driver Core / Capability Boundary / OS Glue 分层,portable core 不直接调用
iomap、IRQ 注册或任务调度 API。 - 上层模块应通过领域接口或
rdrive查询设备,不重新引入AllDevices式全局容器。 - 新增设备能力时,同步检查 feature、probe 路径、RDIF adapter 和对应 ArceOS/StarryOS/Axvisor 消费方。
验证
修改 ax-driver 或平台 glue 后,至少运行:
cargo xtask clippy --package ax-driver
cargo xtask clippy --package axplat-dyn
涉及 ArceOS 运行路径时,继续跑对应 cargo xtask arceos test qemu ... 用例。