跳到主要内容

构建配置

Feature 的职责从“选择 ax-driver 子模块和单个 Ax*Device 类型”调整为“选择要链接的 rdrive probe module、driver core、rdif 能力和 runtime wrapper”。构建配置通过 axbuild 把上层 app/system 的需求映射到具体的 ax-driver feature。

Feature 映射

旧 feature 语义新 feature 语义
ax-driver启用宿主设备 probe 主线,即 rdrive
virtio-blk / virtio-net链接 VirtIO probe 和对应 rdif-block / rdif-eth 注册
virtio-gpu链接 rdif-display / rd-display probe
virtio-input链接 rdif-input / rd-input probe
virtio-socket链接 rdif-vsock / rd-vsock probe
driver-*链接具体硬件 driver core 和 OS glue probe
bus-*链接总线枚举或控制器 probe,例如 PCIe
动态平台通过 FDT/ACPI/somehal 平台事实发现设备,不走 ax_driver_*Ops 回灌

MMIO 与 PCI feature 要分开表达,例如 virtio-gpu-mmiovirtio-gpu-pci 都是 probe module,而不是上层设备类型选择。

ax-driver Feature

drivers/ax-driver/Cargo.toml 定义了按领域能力和具体硬件组织的 feature。基础 feature 选择能力边界和 runtime:

feature启用
blockrdif-block、block OS glue
netrd-net、net OS glue
displayrdif-display、display OS glue
inputrdif-input、input OS glue
vsockrdif-vsock、vsock OS glue
pciPCIe controller、PCI endpoint 枚举
pinctrlrdif-pinctrl
irqIRQ binding resolver
serialrdif-serialsome-serial

VirtIO feature 组合能力边界和 PCI transport:

feature组合
virtio-blkblock + virtio + pci
virtio-netnet + virtio + pci
virtio-gpudisplay + virtio + pci
virtio-inputinput + virtio + pci
virtio-socketvsock + virtio + pci

具体硬件 feature 链接对应的 driver core:

featuredriver core
ramdiskramdisk
nvmenvme-driver
rockchip-sdhcisdhci-host + sdmmc-protocol
rockchip-dwmmcdwmmc-host + sdmmc-protocol
phytium-mciphytium-mci-host + sdmmc-protocol
k230-sdhcisdhci-host + sdmmc-protocol
fxmacfxmac_rs
intel-neteth-intel
realtek-rtl8125realtek-rtl8125
aic8800-wifiaic8800 + sdhci-cv1800 + sdio-host
rknpurockchip-npu
rgarockchip-rga
jpegrockchip-jpeg
rk3588-pcierk3588-pci
rk3588-pwmrockchip-pwm + rdif-pwm
rockchip-dwc-xhcicrab-usb + Rockchip SoC
xhci-mmio / xhci-pcicrab-usb + MMIO/PCI transport

配置原则

  • 能力边界优先:feature 应先表达领域能力(block/net/display/...),再表达具体硬件(nvme/fxmac/...)。
  • transport 分离:MMIO 和 PCI transport 独立 feature,避免隐式耦合。
  • SoC 依赖显式:Rockchip 等平台依赖通过 rockchip-socrockchip-pm 显式声明,不隐式引入。
  • feature 不选平台路径:feature 选择链接哪些 probe module,不选择 FDT/ACPI/Static 平台来源。平台来源由 rdrive::init(Platform::...) 决定。