|
你好:
我用的板子是256MB TQ2440 我同学的是64MB的 TQ2440 内核都是2.6.30.4 然后我两以几乎一样的方式(内核配置除了NAND的地方大小不一样外其他都一样)驱动USI WIFI WM-G-MR-09这个SDIO口的模块 但结果发现我的板子不能加载此WIFI的固件( helper_sd.bin和sd8686.bin) 而我同学的却可以。我的信息如下:
#insmod libertas.ko
#insmod libertas_sdio.ko helper_name=helper_sd.bin fw_name=sd8686.bin
libertas_sdio: Libertas SDIO driver
libertas_sdio: Copyright Pierre Ossman
libertas_sdio mmc0:0001:1: firmware: requesting helper_sd.bin
libertas: failed to load helper firmware
libertas_sdio: probe of mmc0:0001:1 failed with error -110
我同学(板子是64的TQ2440)启动信息如下:
#insmod libertas.ko
#insmod libertas_sdio.ko helper_name=helper_sd.bin fw_name=sd8686.bin
libertas_sdio: Libertas SDIO driver
libertas_sdio: Copyright Pierre Ossman
libertas_sdio mmc0:0001:1: firmware: requesting helper_sd.bin
libertas_sdio mmc0:0001:1: firmware: requesting sd8686.bin
libertas: 00:24:7e:a7:12:21, fw 9.70.3p24, cap 0x00000303
libertas: PREP_CMD: command 0x00a3 failed: 2
libertas: PREP_CMD: command 0x00a3 failed: 2
libertas: eth1: Marvell WLAN 802.11 adapter
然后无线网卡就正常工作啦 可是我的不行
我通过打印信息得知实在内核drivers/net/wireless/libertas/if_sdio.c中这两个函数读出来的东西不一样:
req_size = sdio_readb(card->func, IF_SDIO_RD_BASE, &ret);
if (ret)
goto release;
req_size |= sdio_readb(card->func, IF_SDIO_RD_BASE + 1, &ret) << 8;
if (ret)
goto release;
if (req_size != 0)
break;
64M的读出来的是16 我的读出来的是0 这是load第一个固件时 在load第二个固件时也是这地方出来的值不一样 其他没区别
所以我就发帖问下 这大概是啥原因 我两几乎一样东西 除了64 与256 的差别 是不是文件系统镜像的原因 还是板子硬件原因(我同学说两板子硬件线路是一样的 ) 请指点下方向 |
|