硬件原理
上一节中提到,USB_OTG2作为host通过usb hub扩展出4路usb,其中两路连接到2个Type-A插座,另外两路分别连接板载wifi模块RTL8723DU和扩展板的4G模块。
添加驱动
本节介绍如何将wifi模块RTL8723DU驱动添加进入内核,RTL8723DU还具备蓝牙功能,在下节介绍。
RTL8723DU驱动在ELF 1开发板资料包2-Linux 源代码 02-1 驱动源码8_realtekwifirealtek.tar.bz2中,此文件夹中有rtl8188EUS、rt8189ES、rtl8723BU、rtl8723DU四款wifi模块的驱动,我们一并都添加进内核源码中。
一、将realtek.tar.bz2压缩文件放入到内核源码drivers/net/wireless/下,并在此目录下解压缩:
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga/drivers/net/wireless$ tar -xvf realtek.tar.bz2 |
二、打开realtek文件夹,我们可以看到这几个wifi模块的驱动,以及Kconfig和Makefile文件。
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga/drivers/net/wireless/realtek$ ls |
在drivers/net/wireless/Makefile中增加对realtek中文件的编译:
obj-y += realtek/ |
在drivers/net/wireless/Kconfig中增加对realtek下Kconfig的引用:
source “drivers/net/wireless/realtek/Kconfig” |
三、配置内核
添加完成驱动文件之后,我们打开make menuconfig图形配置界面,配置以下内容:
Device Drivers -> USB support |
在以下路径添加80211编译进内核:
Networking support -> Wireless |
在以下路径打开下图选项:
Device Drivers -> Network device support -> Wireless LAN |
最后进入以下路径,将rtL8723du编译成为ko模块:
Device Drivers -> Network device support ->Wireless LAN ->Realtek wifi |
四、替换配置文件
通过make menuconfig修改的内容写入到了.config文件,当使用make imx6ull_elf1_defconfig配置内核源码时,.config文件会被覆盖,因此,需要替换原有的imx6ull_elf1_defconfig。
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ cp .config arch/arm/configs/imx6ull_elf1_defconfig |
编译测试
编译内核、设备树和模块并拷贝到开发板:
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ ./build.sh elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/zImage root@172.16.0.175:/run/media/mmcblk1p1/ elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/dts/imx6ull-elf1-emmc.dtb root@172.16.0.175:/run/media/mmcblk1p1/ elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp .tmp/rootfs/modules.tar.bz2 root@172.16.0.175:~/ |
在开发板上解压打包好的模块到根目录:
root@ELF1:~# tar -xvf modules.tar.bz2 -C / |
进行sync操作后重启开发板:
重启后lsmod查看模块,我们可以发现8723du的模块已经正常加载了。
root@ELF1:~# lsmod |
使用WiFi上网脚本测试:
root@ELF1:~# elf1_cmd_wifi.sh -i 8723 -s ELFBOARD -p elfboard |
参数-s之后的参数是无线wifi的ssd,-p之后的参数是wifi密码,请根据实际的wifi环境进行配置。
使用ifconfig命令查看当前生成的wlan0网卡信息:
然后我们测试wlan0连接因特网的情况,ping www.elfboard.com
root@ELF1:~# ping www.elfboard.com -c 4 |
打印信息如下: