[AIROC™ Wi-Fi + BT] CYW4343W SDIO接口在Linux驱动下的吞吐量瓶颈

[复制链接]
11|5
t61000 发表于 2026-9-17 12:44 | 显示全部楼层 |阅读模式
在i.MX6平台上移植CYW4343W Wi-Fi模组。使用SDIO接口连接,理论上应该能达到一定速率,但实际iperf测试TCP吞吐量只有理论值的一半左右。通过逻辑分析仪抓取SDIO波形,发现总线利用率并不高,存在不少空闲间隙。怀疑是主机端SDIO控制器的时钟配置或驱动层的块大小(Block Size)设置不合理。请问大家有优化的经验吗?比如调整SDIO Clock Divisor或者修改Firmware中的聚合帧(Aggregation)设置?
海滨消消 发表于 2026-9-17 16:26 | 显示全部楼层
有用户测过类似配置的 i.MX RT1062 + CYW4343W,iperf 默认设置下 TCP 吞吐只有 14 Mbps 左右,但同一套硬件换个路由器结果就变了。这说明路由器兼容性和信道环境影响很大,不全是主机端 SDIO 的问题。
cr315 发表于 2026-9-17 21:40 | 显示全部楼层
CYW4343W 数据手册明确写了 SDIO 支持 4-bit 高速模式,50MHz 时钟下理论带宽 200 Mbps。你实测只有一半,意味着有效载荷率只有 50%,这对 TCP 来说其实不算太离谱,但逻辑分析仪看到大量空闲间隙就不正常了。
duo点 发表于 2026-9-18 10:11 | 显示全部楼层
i.MX6 的 SDIO 时钟分频计算在 Linux 内核里有过多次修复记录。FreeBSD 的提交日志显示 i.MX6 SDHC 的分频器计算曾经完全写错,补丁修了 prescale 和 divisor 的循环逻辑。如果你的内核版本较老,很可能踩的是同一个坑。
jcky001 发表于 2026-9-18 16:38 | 显示全部楼层
检查一下 i.MX6 的 USDHC 时钟设置。NXP 社区有人反馈默认 SDIO 时钟是 50MHz,但驱动实际算出来的分频比可能把时钟压到了 25MHz 甚至更低,导致总线利用率上不去。可以在 clock.c 里打印实际时钟频率确认。
onlycook 发表于 2026-9-17 16:28 | 显示全部楼层
驱动层面值得先确认的是块大小。CYW4343W 的 Function 2(WLAN 功能)最大块大小是 512 字节,检查 Linux 驱动里 SDIO 块传输有没有用满这个值。如果驱动还在用 64 或 128 字节的小块,总线空闲间隙多就是理所当然的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

292

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0