wifi 88w8782固件传输完成,cmd id 0xa9超时

发布于 2019-01-17 11:28:36
    本帖最后由 _Tony_ 于 2019-1-17 14:17 编辑


请教一个问题,MCU是ARM9,使用RT-Thread SDIO驱动框架能成功读写sd卡,换成88w8782 wifi传输完固件,发送命令0xa9(HostCmd_CMD_FUNC_INIT)响应超时了,具体log见附件。请问一下,这一般是什么原因造成的?

wlan: Loading MWLAN driver
vendor=0x02DF device=0x9121 class=0 function=1
rx_work=0 cpu_num=1
Wlan: FW download over, firmwarelen=254036 downloaded 254036
WLAN FW is active
Timeout cmd id (32.560000) = 0xa9, act = 0x0
a9 00 08 00 01 00 00 00 00 00 00 00 00 00 00 00
BSS type = 0 BSS role= 0
------------Dump info-----------
Commmand Timeout
pending command id: 0x3 ioctl_buf=00000000
pending command id: 0xd9 ioctl_buf=00000000
pending command id: 0xe4 ioctl_buf=00000000
pending command id: 0xe4 ioctl_buf=00000000
pending command id: 0xd6 ioctl_buf=00000000
pending command id: 0x1e ioctl_buf=00000000
pending command id: 0x83 ioctl_buf=00000000
pending command id: 0xdf ioctl_buf=00000000
pending command id: 0x28 ioctl_buf=00000000
No pending scan command






下载附件[log.txt]

查看更多

关注者
0
被浏览
1.8k
9 个回答
aozima
aozima 2019-01-21
命令0xa9的响应是resp是哪种类型? 是否驱动中没有支持?
_Tony_
_Tony_ 2019-01-21
    本帖最后由 _Tony_ 于 2019-1-21 16:44 编辑


aozima 发表于 2019-1-21 15:54
命令0xa9的响应是resp是哪种类型? 是否驱动中没有支持?

以下是对应的log,看着是有响应的。wlan_init_fw 返回对应是MLAN_STATUS_PENDING,不知道有没有什么影响?

DNLD_CMD (46.265000): 0xa9, act 0x0, len 8, seqno 0x1
DNLD_CMD:
a9 00 08 00 01 00 00 00
Enter: wlan_sdio_host_to_card
Enter: wlan_write_data_sync
[D/SDIO] CMD:53 ARG:0x92000100 RES:R5 rw:w len:256 blksize:256
[I/SDIO] resp[0] = 0x00002000
Leave: wlan_write_data_sync
SDIO Blk Wr:
0c 00 01 00 a9 00 08 00 01 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Leave: wlan_sdio_host_to_card
Leave: wlan_dnld_cmd_to_fw
Leave: wlan_exec_next_cmd
Leave: mlan_main_process
Leave: wlan_init_fw
wlan_init_fw returned ret=0x1
Leave: mlan_init_fw
Enter: wlan_cmd_timeout_func
Timeout cmd id (66.331000) = 0xa9, act = 0x0
a9 00 08 00 01 00 00 00 00 00 00 00 00 00 00 00
BSS type = 0 BSS role= 0

aozima
aozima 2019-01-21
>[D/SDIO] CMD:53 ARG:0x92000100 RES:R5 rw:w len:256 blksze:256
我是说这个,你看下是否有没处理全的响应类型,每个命令可能有自己对应的响应类型
另外,SDIO也可以用逻辑分析仪来抓,这样比较直观。抓的时候速度调低些。

aozima
aozima 2019-01-21
看了你日志,可能我理解有误,你这个A9是你WIFI模块本身的命令。
不是SDIO的。

所以你得检查模块和固件本身。
1。 A9之外其它的命令是否有响应?还是A9是第一个?
2。 固件是否成功下载进去了?可能下载的数据出了错?
3。 固件本身是否与模块匹配? 不然固件可能 无法2次boot
4。 more...
_Tony_
_Tony_ 2019-01-21
aozima 发表于 2019-1-21 16:51
看了你日志,可能我理解有误,你这个A9是你WIFI模块本身的命令。
不是SDIO的。


1、0x00a9(HostCmd_CMD_FUNC_INIT)是第一个发出的模块命令,后续也都无法识别,后面有丢出信息
QUEUE_CMD: cmd=0xa9 is queued
QUEUE_CMD: cmd=0x3 is queued
QUEUE_CMD: cmd=0xd9 is queued
...
------------Dump info-----------
Commmand Timeout
pending command id: 0x3 ioctl_buf=00000000
pending command id: 0xd9 ioctl_buf=00000000
pending command id: 0xe4 ioctl_buf=00000000
...
2、固件有传输过去了。若固件在传输过程中传输错误,会报CRC错误,并多次尝试重传,都失败后,会提示固件传输失败并终止传输。
3、固件是 \packages\wlanmarvell-latest\FwImage 对应型号的镜像,应该不会错的。wifi packages是latest版本;
_Tony_
_Tony_ 2019-11-18
问题解决了,忘记结贴了!
将SD主机时钟一直开着,空闲的时候也让时钟一直在跑,就没出现crc错误,wifi模块也能正常驱动使用了!
可能空闲时候关闭SD时钟,通过其他方式也可以解决问题,后面没有再去深究了。
aozima
aozima 2019-11-18
见过有些芯片要靠SDIO时钟活着,不能关掉省电。
甚至要求SDIO只能是特定的几个频率。
这应该和芯片的硬件设计有关。
_Tony_
_Tony_ 2019-11-18
aozima 发表于 2019-11-18 19:00
见过有些芯片要靠SDIO时钟活着,不能关掉省电。
甚至要求SDIO只能是特定的几个频率。
这应该和芯片的硬件设 ...


感谢前段时间的指导,感恩!:handshake

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友