AM335x添加WiFi模块WILC1000
基于TI 的PSDK的linux和文件系统添加wilc1000。sdk版本:ti-processor-sdk-linux-am335x-evm-06.03.00.106。
1.硬件连接
wilc1000 ---------------- am335x
RESET_N -------------- GPMC_A6------------- gpio1_22
WAKE ----------------------GPMC_BEN1 ----------gpio1_28
IRQN -----------------------GPMC_CSN0 ----------gpio1_29
SDCLK---------------------MMC0_CLK
SD_CMD------------------MMC0_CMD
SD_DATA0-3-------------MMC0_DATA0-3
SDIO_SPI_CFG ----------接地 (P10的配置引脚,固定接地为SDIO通迅模式)
2.驱动库准备
基于linux内核4.xx.xx版本的源码:
Microchip ATWILC Wireless Devices · GitHubResources for using Microchip ATWILC Wireless Devices on Linux - Microchip ATWILC Wireless Deviceshttps://github.com/linux4wilc2.1 驱动源码添加
从上述源码仓库中下载Driver项目目录下的源码包并解压。
2.1.1 源码拷贝
将文件夹:wilc整个拷贝至linux源码目录中:ti-processor-sdk-linux-am335x-evm-06.03.00.106/board-support/linux-4.19.94+gitAUTOINC+be5389fd85-gbe5389fd85/drivers/staging
保留原wilc1000目录不去动它,两个平级。
2.1.2 修改MakeFile
修改staging目录下的MakeFile文件:
将 obj-$(CONFIG_WILC) += wilc1000/ 改成 :obj-$(CONFIG_WILC) += wilc/
2.1.3 修改Kconfig
修改staging目录下的Kconfig文件:
将source "drivers/staging/wilc1000/Kconfig" 改成:source "drivers/staging/wilc/Kconfig"
2.2 wifi固件拷贝
下载源码仓库中firmware项目目录的内容,并解压。
将mhcp文件夹拷贝至ti-processor-sdk-linux-am335x-evm-06.03.00.106/board-support/linux-4.19.94+gitAUTOINC+be5389fd85-gbe5389fd85/firmware。这步可能不需要,主要是看到wilc的驱动说明里说,新版本WIFI固件会编译进内核,所以先拷贝(其实最终,WIFI测试的时候,WIFI固件还是在测试时间动态发送给wifi模块然后再运行的)。
同时,将mhcp文件夹拷贝至根文件系统中:lib/firmware/
2.3 添加config配置
我使用的是修改Ti的tisdk_am335x-evm_defconfig 文件,因为Ti的sdk编译使用menuconfig界面配置无效,最终会被内核编译时,make linux时,使用tisdk_am335x-evm_defconfig 内容替换。
添加如下
CONFIG_WLAN_VENDOR_MCHP=y
CONFIG_WILC=m
CONFIG_WILC_SDIO=m
以上配置,参考WILC的驱动移植说明文档,在git里有下载链接。从后续测试情况看,CONFIG_WILC应该是y就行了,因为m也无法产生.ko模块。
其中WILC_SDIO依赖CFG80211 && INET && MMC,而所依赖的几项,原来已经配置过了。注意CFG80211,在WIFI测试的时候会讲。
2.4 添加设置树
添加如下:
mmc1_pins: pinmux_mmc1_pins {pinctrl-single,pins = </* AM33XX_IOPAD(0x960, PIN_INPUT | MUX_MODE7) */ /* spio0_cs1.gpio0_6 */AM33XX_IOPAD(0x8fc, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_dat0.mmc0_dat0 */AM33XX_IOPAD(0x8f8, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_dat1.mmc0_dat1 */AM33XX_IOPAD(0x8f4, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_dat2.mmc0_dat2 */AM33XX_IOPAD(0x8f0, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_dat3.mmc0_dat3 */AM33XX_IOPAD(0x904, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_cmd.mmc0_cmd */AM33XX_IOPAD(0x900, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_clk.mmc0_clk */AM33XX_IOPAD(0x858, PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpmc_a6 reset*/AM33XX_IOPAD(0x878, PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpmc_ben1 chipen*/AM33XX_IOPAD(0x87c, PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_csn0 irq*/>;};&mmc1 {vmmc-supply = <&vmmcsd_fixed>;pinctrl-names = "default";pinctrl-0 = <&mmc1_pins>;// non-removable;bus-width = <4>;status = "okay";wilc_sdio@0 {compatible = "microchip,wilc1000", "microchip,wilc3000";irq-gpios = <&gpio1 29 0>;reset-gpios = <&gpio1 22 1>; //<&gpio1 22 GPIO_ACTIVE_LOW>;chip_en-gpios = <&gpio1 28 1>;interrupt-parent = <&gpio1>;interrupts = <29 0x2>; /* Falling edge only */// clocks = <&pck1>;// clock-names = "rtc_clk";// assigned-clocks = <&pck1>;// assigned-clock-rates = <32768>;status = "okay";reg = <0>;bus-width = <4>;};
};
2.5 编译
shell中cd到sdk根目录ti-processor-sdk-linux-am335x-evm-06.03.00.106/。
make linux-clear
make linux
编译驱动没有报错,设备树配置容易出错。最终得到wilc-sdio.ko模块。再三确认,没有wilc.ko模块。因为测试时,按atmel文档是先安装wilc.ko模块。忽略不用管便可。
注:源码包里的设备树配置,reset,en有效都是0,如下
reset-gpios = <&gpio1 22 0>; //<&gpio1 22 GPIO_ACTIVE_LOW>;
chip_en-gpios = <&gpio1 28 0>;
虽然能用,但是用示波器量,en引脚的电平并没有反向,还是一样的,但低电平脉宽不正常。这部分参考了网友的设置:
AM335X BeagleBoneBlack wilc3000蓝牙wifi驱动移植_MC_J的博客-CSDN博客
3. WIFI测试
3.1 驱动模块安装
将wilc-sdio.ko拷贝至/lib/modules/4.19.94-gbe5389fd85/kernel/drivers/staging/wilc
确保之前WIFI固件已拷贝至lib/firmware/。2.2节有描述。
在wilc-sdio.ko目录下,执行 insmod wilc-sdio.ko。但会出错,如下。
/wilc# insmod wilc-sdio.ko
[ 88.260186] wilc_sdio: module is from the staging directory, the quality is unknown, you have been warned.
[ 88.274813] wilc_sdio: Unknown symbol cfg80211_inform_bss_frame_data (err -2)
[ 88.283120] wilc_sdio: Unknown symbol cfg80211_scan_done (err -2)
[ 88.291112] wilc_sdio: Unknown symbol cfg80211_remain_on_channel_expired (err -2)
[ 88.299387] wilc_sdio: Unknown symbol cfg80211_ref_bss (err -2)
[ 88.305453] wilc_sdio: Unknown symbol cfg80211_find_ie_match (err -2)
[ 88.313364] wilc_sdio: Unknown symbol cfg80211_disconnected (err -2)
[ 88.320555] wilc_sdio: Unknown symbol wiphy_new_nm (err -2)
[ 88.326216] wilc_sdio: Unknown symbol cfg80211_ready_on_channel (err -2)
[ 88.333931] wilc_sdio: Unknown symbol wiphy_register (err -2)
[ 88.340321] wilc_sdio: Unknown symbol cfg80211_put_bss (err -2)
[ 88.346476] wilc_sdio: Unknown symbol ieee80211_get_channel (err -2)
[ 88.353796] wilc_sdio: Unknown symbol wiphy_unregister (err -2)
[ 88.360765] wilc_sdio: Unknown symbol cfg80211_get_bss (err -2)
[ 88.366796] wilc_sdio: Unknown symbol cfg80211_mgmt_tx_status (err -2)
[ 88.374337] wilc_sdio: Unknown symbol ieee80211_channel_to_frequency (err -2)
[ 88.382177] wilc_sdio: Unknown symbol cfg80211_rx_mgmt (err -2)
[ 88.388827] wilc_sdio: Unknown symbol cfg80211_get_p2p_attr (err -2)
[ 88.395265] wilc_sdio: Unknown symbol ieee80211_frequency_to_channel (err -2)
[ 88.403414] wilc_sdio: Unknown symbol cfg80211_find_vendor_ie (err -2)
[ 88.411496] wilc_sdio: Unknown symbol cfg80211_connect_done (err -2)
[ 88.419173] wilc_sdio: Unknown symbol wiphy_free (err -2)
insmod: ERROR: could not insert module wilc-sdio.ko: Unknown symbol in module
是因为缺少依赖模块cfg80211.ko模块。所以要先 安装 cfg80211.ko再安装wilc-sdio.ko。
其实还有直接识别依赖自动安装的指令modprobe wilc-sdio。要想使用modprobe 需要先depmod。
cd到wilc-sdio的目录,即/lib/modules/4.19.94-gbe5389fd85/kernel/drivers/staging/wilc
cd /lib/modules/4.19.94-gbe5389fd85/kernel/drivers/staging/wilcdepmod // 这时,会自动为目录下的ko模块创建依赖关系 ,在/lib/modules/4.19.94-gbe5389fd85/kernel的文件modules.dep中 操作过后,模块信息已被记录,此时在文件系统的任意目录都可以执行modprobe指令。modprobe wilc-sdio //不要后缀.ko, 自动先安装 cfg80211,然后再安装wilc-sdio 安装完成后,即可看到wlan0无线网卡
正常安装后信息:
root@am335x-evm:/lib/modules/4.19.94-gbe5389fd85/kernel/drivers/staging/wilc# cd ~
root@am335x-evm:~# modprobe wilc-sdio
[ 658.706632] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 658.878954] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 658.893357] wilc_sdio: module is from the staging directory, the quality is unknown, you have been warned.
[ 658.927438] Registering wifi device
[ 658.930973] Max scan ids= 10,Max scan IE len= 1000,Signal Type= 1,Interface Modes= 844
[ 658.955773] Initializing Locks ...
[ 658.975673] wifi_pm : 0
[ 658.997477] wilc_sdio mmc0:0001:1: succesfully got gpio_reset
[ 659.003400] wilc_sdio mmc0:0001:1: succesfully got gpio_chip_en
[ 659.052433] wifi_pm : 1
[ 659.066825] wilc_sdio mmc0:0001:1: succesfully got gpio_reset
[ 659.083410] wilc_sdio mmc0:0001:1: succesfully got gpio_chip_en
[ 659.140057] wilc_sdio mmc0:0001:1: Driver Initializing success
root@am335x-evm:~# [ 659.287039] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_mac_open]MAC OPEN[76a1e170] wlan0
[ 659.311024] WILC POWER UP
[ 659.323226] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_init_host_int]Host[76a1e170][8831ded1]
[ 659.336117] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_mac_open]*** re-init ***
[ 659.349653] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_wlan_init]Initializing WILC_Wlan
[ 659.365461] wilc_sdio mmc0:0001:1: SDIO speed: 50000000
[ 659.385204] wilc_sdio mmc0:0001:1: chipid 001003a0
[ 659.403571] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_wlan_initialize]WILC Initialization done
[ 659.426636] wilc_sdio mmc0:0001:1 wlan0: INFO [wlan_initialize_threads]Initializing Threads ...
[ 659.447824] wilc_sdio mmc0:0001:1 wlan0: INFO [wlan_initialize_threads]Creating kthread for transmission
[ 659.471783] wilc_sdio mmc0:0001:1 wlan0: INFO [wlan_initialize_threads]Creating kthread for Debugging
[ 659.481913] wilc_sdio mmc0:0001:1: got gpio_irq successfully
[ 659.504321] wilc_sdio mmc0:0001:1 wlan0: INFO [init_irq]IRQ request succeeded IRQ-NUM= 79
[ 659.518559] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_wlan_get_firmware]Detect chip WILC1000
[ 659.532769] wilc_handle_isr,>> UNKNOWN_INTERRUPT - 0x00000000
[ 659.542031] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_wlan_get_firmware]loading firmware mchp/wilc1000_wifi_firmware.bin
[ 659.564507] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_wlan_get_firmware]WLAN firmware: mchp/wilc1000_wifi_firmware.bin
[ 659.604947] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_firmware_download]Downloading Firmware ...
[ 659.613951] wilc_wlan_firmware_downloadDownloading firmware size = 144876
[ 659.634809] wilc_wlan_firmware_download Offset = 126916
[ 659.641579] wilc_wlan_firmware_download Offset = 144876
[ 659.646845] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_firmware_download]Download Succeeded
[ 659.660034] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_start_firmware]Starting Firmware ...
[ 659.671027] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_start_firmware]Waiting for FW to get ready ...
[ 659.797963] cfg_indicate_rx: Info message received
[ 659.803285] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_start_firmware]Firmware successfully started
[ 659.828104] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_wlan_initialize]WILC Firmware Ver = WILC_WIFI_FW_REL_15_6 Build: 12804
[ 659.843042] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_init_fw_config]Start configuring Firmware
[ 659.998277] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_mac_open]Mac address: 60:8a:10:b6:68:62
[ 660.006796] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Setting mcast List with count = 1.
[ 660.016540] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[0]: 33:33:00:00:00:01
[ 660.041675] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Setting mcast List with count = 2.
[ 660.051410] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[0]: 33:33:00:00:00:01
[ 660.060472] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[1]: 01:00:5e:00:00:01
[ 660.076985] wilc_sdio mmc0:0001:1 wlan0: INFO [set_power_mgmt]dev [wlan0]
[ 660.086195] wilc_sdio mmc0:0001:1 wlan0: INFO [set_power_mgmt] Power save Enabled= 1 , TimeOut = -1
[ 660.131505] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Setting mcast List with count = 3.
[ 660.141250] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[0]: 33:33:00:00:00:01
[ 660.150297] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[1]: 01:00:5e:00:00:01
[ 660.159311] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[2]: 33:33:ff:b6:68:62
[ 660.184399] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Setting mcast List with count = 4.
[ 660.194144] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[0]: 33:33:00:00:00:01
[ 660.203187] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[1]: 01:00:5e:00:00:01
[ 660.212203] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[2]: 33:33:ff:b6:68:62
[ 660.221220] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[3]: 01:80:c2:00:00:00
[ 660.263214] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Setting mcast List with count = 5.
[ 660.272946] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[0]: 33:33:00:00:00:01
[ 660.281998] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[1]: 01:00:5e:00:00:01
[ 660.291018] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[2]: 33:33:ff:b6:68:62
[ 660.300030] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[3]: 01:80:c2:00:00:00
[ 660.309045] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[4]: 01:80:c2:00:00:03
[ 660.330315] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Setting mcast List with count = 6.
[ 660.340000] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[0]: 33:33:00:00:00:01
[ 660.349047] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[1]: 01:00:5e:00:00:01
[ 660.358063] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[2]: 33:33:ff:b6:68:62
[ 660.367068] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[3]: 01:80:c2:00:00:00
[ 660.376081] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[4]: 01:80:c2:00:00:03
[ 660.385101] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[5]: 01:80:c2:00:00:0e
[ 662.042010] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Setting mcast List with count = 7.
[ 662.051858] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[0]: 33:33:00:00:00:01
[ 662.060968] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[1]: 01:00:5e:00:00:01
[ 662.070051] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[2]: 33:33:ff:b6:68:62
[ 662.079121] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[3]: 01:80:c2:00:00:00
[ 662.088200] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[4]: 01:80:c2:00:00:03
[ 662.097269] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[5]: 01:80:c2:00:00:0e
[ 662.106312] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[6]: 33:33:00:00:00:fb
[ 662.139624] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Setting mcast List with count = 8.
[ 662.149329] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[0]: 33:33:00:00:00:01
[ 662.158379] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[1]: 01:00:5e:00:00:01
[ 662.167395] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[2]: 33:33:ff:b6:68:62
[ 662.176398] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[3]: 01:80:c2:00:00:00
[ 662.185426] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[4]: 01:80:c2:00:00:03
[ 662.194443] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[5]: 01:80:c2:00:00:0e
[ 662.203455] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[6]: 33:33:00:00:00:fb
[ 662.212471] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_set_multicast_list]Entry[7]: 33:33:00:01:00:03
注1:小插曲,因为每次开机都必须执行安装指令,安装完,重启配置几次后,再执行modprobe wilc-sdio,弹出以下信息
[ 658.706632] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 658.878954] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 658.893357] wilc_sdio: module is from the staging directory, the quality is unknown, you have been warned.
后就没有任何 东西。ifconfig -a后并没有出现wlan0网卡,但lsmod能看到cfg80211,wilc-sdio模块已安装成功。不停重启,断电均无效。后来检测,发现,芯片的复位引脚驱动不对,复位引脚短路。修复后就可以正常通讯了。
注2:加载wifi固件成功后,启动固件运行,会提示超时,Failed to start firmware。在如下位置 ,提示的不是成功,是超时失败,后来修复复位引脚后也成功,没找到其他原因。
[ 659.604947] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_firmware_download]Downloading Firmware ...
[ 659.613951] wilc_wlan_firmware_downloadDownloading firmware size = 144876
[ 659.634809] wilc_wlan_firmware_download Offset = 126916
[ 659.641579] wilc_wlan_firmware_download Offset = 144876
[ 659.646845] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_firmware_download]Download Succeeded
[ 659.660034] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_start_firmware]Starting Firmware ...
[ 659.671027] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_start_firmware]Waiting for FW to get ready ...
[ 659.797963] cfg_indicate_rx: Info message received
[ 659.803285] wilc_sdio mmc0:0001:1 wlan0: INFO [wilc_start_firmware]Failed to start firmware
但按github源码的问题反馈里,维护人员一直强调,等待固件运行,会有个wifi模块会产生中断,如果我们的linux驱动没有接收到中断,会产生超时,错误这种 状态。
WILC1000 - "Failed to start firmware" on 4.1.15 kernel - SPI interface · Issue #87 · linux4wilc/driver · GitHub
我也从板子上量了irq中断线,确实并没有产生中断。修复复位引脚后,wifi模块也能正常使用。好像就没有用外部中断线。
注3:在wilc-sdio.ko模块正确安装,且wlan0能运行后,调用reboot指令使系统复位,系统启动后,无法再加载wilc-sdio模块。
经测试发现逻辑:
a)复位重启前,ifconfig wlan0 down,重启后可正常安装
b)复位重启前,rmmod wilc-sdio卸载模块后,重启可正常安装
c) 在重启后,无法安装的条件 前,复位WIFI模块,失能WIFI模块,即(reset,en引脚拉低),再使能,再安装模块,均没有用。
d)复位后,但内核 不重启。此时,复位WIFI模块,重启后可正常安装
后经调试发现,只要WIFI正常启动后,没有去让网卡下线或卸载模块,WIFI模块一直处于正常工作 状态,而此时linux内核重启,会造成mmc0初始化失败,所以重启后安装时,mmc0无效无法安装。但这个错误,在安装时没有信息提示。
解决办法:
系统复位时,关机服务添加代码,ifconfig wlan0 down
在uboot阶段,控制WIFI模块的复位引脚,我们用的是BBB的UBOOT,所以直接在启动环境变量参数增加一个:gpio clear 54,置低复位脚,然后在启动内核时gpio set 54。
以上操作后,系统启动后,modproge wilc-sdio模块加载成功。
3.2 WIFI功能测试:
添加几个配置文件,以下摘抄手册,其中DHCP部分,我系统是systemd的启动方式,不一样,没有按下面的操作,我也滑额外的配置,目前能直接使用:
3.2.1 Station模式测试
手机开热点,测试指令如下:
// 以下指令是非加密连接。# wpa_supplicant -iwlan0 -Dnl80211 -c /etc/wilc_wpa_supplicant.conf &# wpa_cli -p/var/run/wpa_supplicant ap_scan 1# wpa_cli -p/var/run/wpa_supplicant add_network # wpa_cli -p/var/run/wpa_supplicant set_network 0 ssid '"User_AP"' // User_AP替换为热点SSID# wpa_cli -p/var/run/wpa_supplicant set_network 0 key_mgmt NONE # wpa_cli -p/var/run/wpa_supplicant select_network 0 // 这步才会连入手机热点,前面都没有效提示信息
开始ping测试,由于我们的板子还有有线网口,所以ping 需要指定网卡。
ping -I wlan0 www.baidu.com 很不辛,ping外网不成功
另一台笔记本也接入同一个手机热点,接着ping笔记本IP
ping -I wlan0 192.168.73.55
此时是ping成功的。
注:所以有个疑问,为什么ping外网没成功,笔记本连手机热点,是可能上网的。如果有朋友测试成功,知道原因,麻烦告知下,万分感谢。
TCP测试的,server client的QT代码包分享,免分下载,希望CSDN不要调分:
TcpClient :TcpClient测试-QT文档类资源-CSDN下载
TcpServer:TcpServer测试-QT文档类资源-CSDN下载
演示如下:服务器,本机IP,填写本地主机的IP即可。点监听,成功后会显示如下,监听按键变成断开,即成功。
如下,客户端,服务器IP填写已处于监听状态的服务器IP地址,点连接即可。整个TCP服务器,客户端在AM335x的板子上已测试通过,板子不方便截图,在Windows下运行截个图直观的展示下。
参考:
https://github.com/linux4wilc/driver
WILC1000 - "Failed to start firmware" on 4.1.15 kernel - SPI interface · Issue #87 · linux4wilc/driver · GitHub
AM335X BeagleBoneBlack wilc3000蓝牙wifi驱动移植_MC_J的博客-CSDN博客
一种调试IO方法参考:
failed to get GPIO · Issue #49 · linux4wilc/driver · GitHub
AM335x添加WiFi模块WILC1000相关推荐
- AM335x移植WIFI模块RTL8818EUS
文章目录 硬件平台 移植步骤 1. 修改内核配置 2. 编译驱动文件 3. 驱动模块安装 4. AP模式 5. Station模式 6. AP + Station并发模式 错误 硬件平台 芯片:AM3 ...
- 【程序】Marvell 88W8686 WiFi模块(WM-G-MR-09)创建或连接热点,并使用lwip2.0.3建立http服务器(20180312版)
该程序是旧版本!最新版本为20180706版: https://blog.csdn.net/ZLK1214/article/details/80941657 本程序所用的单片机型号为:STM32F10 ...
- 基于MT7688模块的开发笔记12——给MT7688开发板添加WiFi功能
使用原厂的SDK,生成的内核镜像没有WiFi,需要自己动手添加WiFi驱动. 网卡驱动文件: MT7628_LinuxAP_V4.0.1.3_DPA_20150216.tar.bz2 下载地址: ht ...
- wifi linux 驱动分析,Linux 下wifi 驱动开发(二)—— WiFi模块浅析
一.什么是wifi 模块百度百科上这样定义: Wi-Fi模块又名串口Wi-Fi模块,属于物联网传输层,功能是将串口或TTL电平转为符合Wi-Fi无线网络通信标准的嵌入式模块,内置无线网络协议IEEE8 ...
- 嵌入式linux系统,给WIFI模块增加一个开关
最近做一个项目,电力RTU通信管理主板,CPU选用流行的AM335X.公司之前的RTU监视采用LCD,LCD有主要三个缺陷,1.功耗大:2.容易损坏:3.操作不是很方便.后来公司决定采用WEB方案来开 ...
- Arduino--ESP8266物联网WIFI模块(贝壳物联)--数据上传服务器(单数据接口)
一.简介 随着移动物联网的发展,各场景下对于物联控制.数据上传.远程控制的诉求也越来越多,基于此乐鑫科技推出了便宜好用性价比极高的wifi物联模块--ESP8266,话不多少我们先来看看这个神奇的模块 ...
- 无线抄表免费透传云服务器,两个WIFI模块USR-WIFI232-B2连接有人云实现远程一对一透传...
本案例基于STA模式的无线网络配置: 数据流向:PC端串口调试软件----1号A2/B2设备-----有人云透传组----2号A2/B2设备---PC端串口调试软件 客户实际应用:串口设备---A2/ ...
- Linux 开发板4G转WiFi热点 手机连接热点上网(三 WiFi模块的移植及AP的建立)
这里对WiFi模块的驱动就不做详细介绍,本篇文章可能会涉及两款WiFi模块,一个是USB接口的WiFi模块,一个是SDIO接口的wifi模块,即AP6212,平台可能涉及爱特梅尔和三星的4418两个平 ...
- Linux 下wifi 驱动开发(二)—— WiFi模块浅析
一.什么是wifi 模块 百度百科上这样定义: Wi-Fi模块又名串口Wi-Fi模块,属于物联网传输层,功能是将串口或TTL电平转为符合Wi-Fi无线网络通信标准的嵌入式模块,内置无线网络协议IEEE ...
最新文章
- LINUX 数据盘的格式化与挂载
- Memcached 工作原理
- matlab impyramid图像金字塔
- 什么是简单的分析SQL注入漏洞
- java常见面试题——java常见笔试题
- AudioBuffer
- 如何在数据源是空的时候,gridview显示表头(万能)
- 互联网的职场红利已经没了
- 几点减几点怎么列算式_结婚邀请函怎么写样板 结婚邀请函有哪几点是必写的...
- CAD如何导出天正各版本DWG图纸?CAD图形导出教程
- 如何下载全国行政边界线(国界、省界、县界、乡镇界)
- linux系统系统安装,深度linux操作系统安装图文教程
- Linux下用rm删除的文件的恢复方法
- VC2005-应用程序正常初始化失败-0xc0150002
- 【GAMES101】作业4(提高)含Bazier曲线的反走样处理
- [c语言]在程序中检测键盘按键
- easypermission坑_Android 权限管理(原生、EasyPermissions、RxPermissions)-阿里云开发者社区...
- 直波导与微环的耦合——Lumerical仿真1
- 分享Silverlight/WPF/Windows Phone一周学习导读(11月22日-28日)
- c语言二目运算符. -