Linux环境下使用WIFI模块:WIFI驱动移植

WIFI驱动移植

实验平台

内核版本:Linux-4.19.5
开发板:SAMSUNG JZ2440
WIFI模块:Ralink rt3070

查看WIFI设备的PID

直接将WIFI模块接到电脑的USB插口,然后在windows的设备管理器->网络适配器中可以看到插入的USB-WIFI设备
Linux环境下使用WIFI模块:WIFI驱动移植_第1张图片
右键属性->详细信息->硬件ID
Linux环境下使用WIFI模块:WIFI驱动移植_第2张图片
可以看到这款WIFI模块的PID为0x3070。
通过这个网站 http://linuxwireless.sipsolutions.net/en/users/Devices/USB/,我们可以看一下目前内核是否可以支持这个usb设备
Linux环境下使用WIFI模块:WIFI驱动移植_第3张图片

配置内核

在内核的无线网络目录下搜索该WIFI模块的PID“0x3070”,grep "0x3070" -nR
Linux环境下使用WIFI模块:WIFI驱动移植_第4张图片
说明支持该WIFI模块的文件为rt2800usb.c,所以我们要把该文件编译到内核里面去,到对应的目录**rt2x00/**下打开Makefile文件可以看到
Linux环境下使用WIFI模块:WIFI驱动移植_第5张图片
说明我们需要配置 CONFIG_RT2800USB这个选项。

通过make menuconfig中的search功能,可以知道需要配置哪些选项
Linux环境下使用WIFI模块:WIFI驱动移植_第6张图片
这边给出我用的Ralink rt3070 WIFI模块的配置项
Linux环境下使用WIFI模块:WIFI驱动移植_第7张图片
接着编译内核make uImage和模块make modules
查看相应的模块文件
在这里插入图片描述
最后把uImage和4个模块文件放到网络文件夹下等待测试。

测试WIFI模块

用新内核启动开发板,挂载开发板的文件系统到虚拟机上,加载4个模块文件。这边需要注意一定要按顺序,不然在加载模块的时候会报错。
Linux环境下使用WIFI模块:WIFI驱动移植_第8张图片
模块全部加载完成以后我们插入USB-WIFI模块
在这里插入图片描述
使用ifconfig wlan0 192.168.9.123给模块配置IP地址,发现会报错
在这里插入图片描述
原来是每一个WIFI模块厂家都配备了一个固件库,我这边用的是rt2870.bin,只要把这个文件放到 /lib/firmware/ 目录下就行。
我们重新执行一次ifconfig wlan0 192.168.9.123,然后查看一下IP
Linux环境下使用WIFI模块:WIFI驱动移植_第9张图片
发现IP配置成功,并且WIFI模块的指示灯在闪烁。

你可能感兴趣的:(WIFI模块)