Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
aic8800
AIC8800 系列 WiFi 芯片驱动核心,通过 SDIO 总线通信。OS 无关:核心代码不直接
依赖任何操作系统运行时;定时、休眠、让步、任务派生等能力通过 aic8800::WifiRuntime
trait 注入,由上层 OS glue 在初始化时调用 aic8800::set_runtime 安装。
支持芯片:AIC8801、AIC8800DC、AIC8800D80、AIC8800D80X2。
用法
平台相关的资源(MMIO 映射、SDHCI 枚举、IRQ 注册)由上层 OS glue 负责;本 crate 从
一个已就绪的 SDIO host 开始完成芯片侧 bring-up,并返回一个 AicWifiNetDev——它
同时是数据面(rd_net::Net 设备)和控制面(实现 rd_net::WifiControl)。
// 1. OS glue 注入运行时能力(一次,进程级)
set_runtime;
// 2. 用已枚举好的 SDIO host 探测芯片,得到设备句柄
let mut wifi = probe?; // -> AicWifiNetDev
// 3. SoftAP 或 STA(rd_net::WifiControl)
wifi.start_ap_open?; // 开放 SoftAP
// wifi.connect("SSID", "password")?; // 或连接 STA
// 4. 把设备交给 ax-driver 注册进 rd-net / ax-net 设备模型
运行时能力通过 trait 注入,不直接依赖 OS crate:
aic8800::WifiRuntime—now_nanos/sleep_ms/yield_now/ 轮询任务派生等,由 OS glue 实现并经set_runtime安装。- 接收数据帧的唤醒走
rd_net::WifiControl::set_rx_wake注册的回调(SDIO Wi-Fi 走带外 RX,不经以太网 IRQ 框架)。
模块
src/
├── lib.rs # crate 入口,re-export(probe / WifiRuntime / set_runtime)
├── common/ # 芯片型号、SDIO 寄存器地址、CRC 等常量
├── runtime.rs # WifiRuntime 注入点(全局 set-once)
├── wireless/ # probe() 入口
├── fw/ # 固件加载
│ ├── chip/ # 芯片版本检测与验证
│ ├── config.rs # BSP 系统配置常量
│ ├── firmware/ # 固件二进制选择与上传
│ └── protocol/ # IPC 传输层 (SDIO CMD53 内存读写)
└── fdrv/ # WiFi 驱动核心
├── consts.rs # 协议常量
├── core/ # 总线管理、SDIO 传输、初始化、PollSet
├── crypto/ # WPA2-PSK 四次握手 (PRF、AES-CCM、MIC)
├── net/ # 网络设备适配 (rd-net / rdif-eth)
├── protocol/ # LMAC 命令/响应、扫描、连接、密钥安装
├── thread/ # RX/TX/AP 轮询任务
└── wifi/ # 高级 API (WifiClient) 和连接管理
支持的安全模式
- Open (无加密)
- WPA2-PSK / CCMP
固件
固件二进制(AICSemi 厂商 blob)不随 crate 分发,也不提交到仓库、不进发布
tarball。build.rs 在编译时把它们准备到 OUT_DIR/firmware/,src/fw/firmware/data.rs
再从那里 include_bytes! 嵌入;每个文件都按 SHA-256 逐字节校验。
build.rs 的固件来源优先级(命中即止):
$AIC8800_FIRMWARE_DIR/<name>— 显式本地缓存 / 离线镜像目录。- 仓库内
components/aic8800/firmware/<name>— 由cargo xtask预下载填充; 在本仓库内(含离线)编译时走这条,不联网。 - 从上游 pin 的 commit 下载 — 用于脱离本仓库的独立构建(如 crates.io)。
清单、摘要与上游 pin 见 build.rs 与
scripts/axbuild/src/firmware.rs(两份保持同步),
来源与文件列表见 firmware/README.md。
因此发布包可独立构建:
cargo publish校验 tarball 时会执行本 crate 的build.rs自行准备固件,不依赖仓库根目录cargo xtask的预下载副作用。
依赖
sdio-host-cv1800— SDIO 总线抽象 traitsdhci-cv1800— SG2002 SDHCI 控制器实现rd-net/rdif-eth/dma-api— 网络设备能力与WifiControl控制面 traitaes,hmac,sha1,pbkdf2— WPA2 密钥派生