从现象看,当前问题大概率不是 host 侧 yami.ko 编译或加载本身导致的。lspci 能看到 LA1234 的前提是 LA1234 已经作为 PCIe Endpoint 正常启动,并且 PCIe link 已经训练成功。
如果 LA1234 端目前没有烧写/启动任何程序,那么 i.MX95 侧通过 lspci 看不到 LA1234 是合理的。需要先让 LA1234 从支持的 boot source 启动 LA12xx 端 BSP/FreeRTOS/PCIe EP firmware,使其完成 PCIe Endpoint 初始化后,i.MX95 作为 Root Complex 才能枚举到该设备。
hostsw_la12xx/kernel_driver/yami.ko 是 host Linux 侧 LA12xx PCIe driver。它通常是在 PCIe 设备已经能被 host 枚举后,再负责 LA12xx 进一步初始化,例如 PCIe inbound/outbound window、e200 OS boot、VSPA image boot、IPC/RFIC 等。它不能在 LA1234 端完全未启动 PCIe EP 的情况下,让设备直接出现在 lspci 中。
建议先按以下方向检查:
- 确认 LA1234 boot mode/boot source 是否正确,LA1234 端是否已启动包含 PCIe Endpoint driver 的 LA12xx BSP/FreeRTOS image。
- 确认 LA1234 PCIe controller 配置为 EP,i.MX95 侧配置为 RC。
- 检查 PCIe REFCLK、PERST#、power sequence、SerDes lane 设置、lane width/speed 是否匹配。
- i.MX95 侧先执行
dmesg | grep -i pcie、echo 1 > /sys/bus/pci/rescan、lspci -nn -vv,确认是否有任何 endpoint 枚举。
- 若仍无设备,建议先用一个已知可工作的 PCIe endpoint 接到 i.MX95,确认 i.MX95 RC 侧硬件和 device tree/kernel 配置没有问题;然后再回到 LA1234 侧检查 EP boot 和硬件连接。
关于如何烧写 LA1234,需要使用 LA12xx SDK/BSP 中提供的 LA1234/LA12xx 端 boot image 和对应烧写流程。公开的 hostsw_la12xx 仓库主要是 host 侧软件,FreeRTOS 端代码不在该仓库中,因此需要参考 LA12xx SDK User Guide / BSP release package 中关于 LA12xx board boot 和 image programming 的章节。