1、把驱动放到内核文件夹中(linux/drivers/net/wireless),对应的驱动可以在网上下载
2、修改该目录下的Kconfig和Makefile文件
3、配置内核(make menuconfig)
配置支持IEEE 802.11,选中8189模块,这里选择直接编译进内核,也可选择编译成模块,然后再动态加载即可。
配置支持Wifi设备
4、编译内核(make)
5、用新的内核镜像重新启动开发板
输入命令ifconfig -a,出现wlan0说明模块加载成功,这就是RTL8189对应的网卡
6、对网络进行配置
对无线网络进行配置需要借助一些工具(wpa_supplicant),wpa_supplicant依赖于openssl和libnl库,所以需要先交叉编译好这两个库
openssl库移植
cpp
tar -xvf openssl-1.1.1d.tar.gz
mkdir openssl
./Configure linux-armv4 shared no-asm --prefix=/home/yan/linux/IMX6ULL/tool/openssl CROSS_COMPILE=arm-linux-gnueabihf-
make
make install
最后将lib下的libcrypto、libssl库拷贝到根文件系统lib目录下
libnl库移植
cpp
tar -vxzf libnl-3.2.23.tar.gz
mkdir libnl
./configure --host=arm-linux-gnueabihf --prefix=/home/yan/linux/IMX6ULL/tool/libnl/
make
make install
最后将lib目录下所有文件拷贝到根文件系统/usr/lib目录下
wpa_supplicant移植
cpp
tar -vxzf wpa_supplicant-2.7.tar.gz
cd wpa_supplicant/
cp defconfig .config
打开.config文件,在里面指定交叉编译器、openssl、libnl库的头文件路径
cpp
CC = arm-linux-gnueabihf-gcc
#openssl 库和头文件路径
CFLAGS += -I/home/yan/linux/IMX6ULL/tool/openssl/include
LIBS += -L/home/yan/linux/IMX6ULL/tool/openssl/lib -lssl -lcrypto
#libnl 库和头文件路径
CFLAGS += -I/home/yan/linux/IMX6ULL/tool/libnl/include/libnl3
LIBS += -L/home/yan/linux/IMX6ULL/tool/libnl/lib
cpp
export PKG_CONFIG_PATH=/home/yan/linux/IMX6ULL/tool/libnl/lib/pkgconfig:$PKG_CONFIG_PATH
make
编译结束后会在当前目录下生成wpa_cli和wpa_supplicant两个工具,把它拷贝到根文件系统的/usr/bin目录下
7、WiFi联网
打开wlan0网卡
cpp
ifconfig wlan0 up
在etc目录下创建wpa_supplicant.conf文件
内容:
cpp
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1
network={
ssid="ChinaNet-53F3"
psk="88888888"
}
创建/var/run/wpa_supplicant目录
cpp
mkdir /var/run/wpa_supplicant -p
连接WiFi
cpp
wpa_supplicant -Dnl80211 -c /etc/wpa_supplicant.conf -i wlan0 &
获取IP地址
cpp
udhcpc -i wlan0
如果此时ifconfig没有IPV4地址
输入一下命令
cpp
ifconfig wlan0 192.168.2.101
以下是驱动移植遇到的问题:
开发板网卡已经起来并且有IP地址了,但是ping windows ping不通,ping ubuntu也不通,但是windows 和 Ubuntu ping开发板可以。
①把windows防火墙关了
②Ubuntu和开发板不在同一网段,解决办法:手动配置一下IP地址
之后ping百度好像也不通:没有设置网关
cpp
route add default gw 192.168.2.1 dev wlan0