第六周周报(8.2-8.8)
本周暂缓 K3 AI core 驱动开发。当前影响后续工作的主要问题不是 AI core 驱动本身,而是底层基础设施仍不完善。因此,本周工作重点转向补齐 K3 的 USB、DMA/cache 一致性和中断平台支持,为后续 AI runtime 和上层设备驱动提供稳定的运行基础。
本周工作概览
本周主要完成和推进了三项基础设施工作:
- 为 K3 接入 DWC3 兼容层,为上层
crabusb驱动提供可靠的 DWC3 控制器支持。 - 基于 RISC-V Zicbom 扩展为 K3 实现缓存一致性工具,并在 UFS 驱动中使用,修复 UFS 驱动中的 cache 不一致问题;同时打通 UFS 链路,并在 NOP OUT 成功后建立高速通信链路。
- 将郑昱实现的 APLIC 及其他中断平台驱动接入 Starry,补齐 K3 平台中断控制相关的基础支持。
K3 DWC3 兼容层
本周为 K3 接入 DWC3 兼容层,目标是把 K3 实际的 USB 控制器能力适配到上层通用的 DWC3 驱动接口,为 crabusb 提供稳定的控制器访问路径。
这项工作主要解决了平台控制器和上层 USB 驱动之间的适配问题,使上层驱动不需要直接依赖 K3 的平台细节。完成兼容层接入后,后续可以在相对统一的 DWC3 控制器模型上继续调试 USB host、设备枚举和传输流程。
当前 USB 设备枚举链路仍存在问题,设备还不能稳定完成完整枚举。问题正在进一步排查,后续需要结合控制器初始化、端口状态变化、枚举请求和传输完成状态逐段定位。 应用
不同板子的具体区别
│ ├─ U盘驱动 / HID鼠标 / UVC摄像头 / USB串口 │ ↑ │ 基本通用 │ ├─ USB core │ 枚举、descriptor、endpoint、control transfer │ ↑ │ 基本通用 │ ├─ Host Controller Driver │ xHCI / EHCI / OHCI / DWC2 … │ ↑ │ 看控制器类型 │ ├─ SoC platform glue │ clock / reset / IRQ / DMA / power / syscon │ ↑ │ SoC差异巨大 │ ├─ PHY │ USB2 PHY / USB3 PHY │ ↑ │ SoC差异巨大 │ └─ USB物理接口
APLIC 与中断平台驱动接入 Starry
本周将郑昱实现的 APLIC 以及其他中断平台驱动接入 Starry,补齐 K3 平台的中断控制和平台中断分发支持。
这部分工作为后续设备驱动提供了必要的中断基础。USB 控制器、UFS 控制器以及其他外设都依赖正确的中断路由和处理流程,APLIC 接入后,Starry 可以进一步在统一的平台中断框架下承接这些设备的中断事件。
本周问题与判断
- USB 设备枚举链路存在问题:DWC3 兼容层已经接入,但 USB 设备枚举尚未稳定完成。目前正在从控制器初始化、端口状态、枚举请求和传输完成状态等环节逐段排查。
- K3 的 non-coherent DMA 需要显式维护 cache 一致性:本周 UFS 问题表明,DMA cache 操作是 K3 平台驱动正常工作的基础设施,而不是某个单独驱动的局部细节。后续新接入的 DMA 设备都需要明确 cache clean/invalidate 的边界。
- AI core 驱动暂缓推进:在 USB、DMA/cache 和中断等基础设施尚未稳定之前,继续推进 AI core 驱动会增加联调成本。因此本周先集中补齐平台基础能力,待底层运行环境更可靠后再恢复 AI core 驱动开发。
后续工作
- 继续排查 USB 设备枚举失败问题,确认 DWC3 控制器初始化、端口状态变化和控制传输链路是否符合预期。
- 继续完善 K3 non-coherent DMA 的使用规范,将 Zicbom cache 同步工具推广到 USB、GMAC 等其他 DMA 设备驱动。
- 基于已经接入的 APLIC 和平台中断驱动,继续验证 USB、UFS 等设备的中断处理路径。
- 待基础设施稳定后,恢复 K3 AI core 驱动开发,并继续推进 AI runtime 的真板验证。