野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5515|回复: 1

[经验\资料] 驱动移植之rtl8723 wifi驱动移植

[复制链接]
发表于 2023-1-9 10:18:41 | 显示全部楼层 |阅读模式
本帖最后由 おおおじ。 于 2023-1-9 14:04 编辑

前言
野火imx6ull板子已经添加了RTL8188cus的wifi驱动,但使用其他型号wifi则需添加相应的驱动,野火相关教程文档暂时没有相应教程,笔者这里在开发过程中移植了rtl8723bu的wifi驱动,移植和调试过程分享给大家,希望对大家有所帮助。
该教程不仅适用rtl8723bu型号,其他型号的也同样适用,也请看完本教程后再对比野火适配的RTL8188cus wifi驱动,两者大同小异。


一、驱动移植
虚拟机环境:ubuntu18.04
开发板:imx6ull
开发板镜像:野火debian 2022_10_08镜像

搭建编译内核环境
sudo apt install make gcc-arm-linux-gnueabihf gcc bison flex libssl-dev dpkg-dev lzop

获取内核源码
初次编译内核(如果之前编译过可以不用重新编译)
野火论坛202301090904188006..png

获取驱动源码
将驱动源码移动到内核源码ebf_linux_kernel_6ull_depth1/drivers/net/wireless目录下
野火论坛202301091025357463..png

在ebf_linux_kernel_6ull_depth1/drivers/net/wireless/Makefile添加:
obj-$(CONFIG_RTL8723BU) += rtl8723bu/
野火论坛202301090907174260..png

在ebf_linux_kernel_6ull_depth1/drivers/net/wireless/Kconfig添加
source  "drivers/net/wireless/rtl8723bu/Kconfig"
野火论坛202301090907465435..png

修改驱动源码ebf_linux_kernel_6ull_depth1/drivers/net/wireless/rtl8723bu/Makefile
将CONFIG_PLATFORM_I386_PC 改为n,添加CONFIG_PLATFORM_FS_MX6ULL = y
野火论坛202301090908118618..png

继续在ebf_linux_kernel_6ull_depth1/drivers/net/wireless/rtl8723bu/Makefile添加平台信息:

ifeq ($(CONFIG_PLATFORM_FS_MX6ULL), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
ARCH := arm
CROSS_COMPILE := arm-linux-gnueabihf-
KSRC ?= /home/hyw/ebf_linux_kernel_6ull_depth1/build_image/build
endif

野火论坛202301090908403670..png
其中
EXTRA_CFLAGS小端模式
ARCHarm 平台
CROSS_COMPILE交叉编译器
KSRC内核所在目录 (需按实际路径填写)
注意,ebf_linux_kernel_6ull_depth1/build_image/build ,/build_image/build是编译内核生成的目录,用来存放内核的,需要提前编译一次内核,否则没有这个内核目录,文档开头已经介绍如何初级编译内核。如需查看详情,请参考https://doc.embedfire.com/linux/imx6/driver/zh/latest/linux_driver/exper_env.html  2.1.2.2. 进行编译  小节

在ebf_linux_kernel_6ull_depth1/arch/arm/configs/npi_v7_defconfig将驱动编译为模块
CONFIG_RTL8723BU=m
野火论坛202301090909476573..png
也可以=y编译进内核,这里为了调试方便编译成模块,实际可以=y编译进内核


(或者使用图像界面选中,编译为模块,效果和直接在ebf_linux_kernel_6ull_depth1/arch/arm/configs/npi_v7_defconfig添加CONFIG_RTL8723BU=m 一样
操作了上面可以不用操作以下步骤:
sudo apt install libncurses-dev
make menuconfig KCONFIG_CONFIG=arch/arm/configs/npi_v7_defconfig  ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
野火论坛202301090912244457..png
野火论坛202301090912347762..png
然后选择右下角save进行保存)

编译驱动:
#清除之前编译环境
make mrproper
#编译内核模块
make ARCH=arm npi_v7_defconfig
make modules ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8
野火论坛202301090914163199..png

野火论坛202301090914325508..png

驱动生成在ebf_linux_kernel_6ull_depth1/drivers/net/wireless/rtl8723bu目录下
野火论坛202301090915033441..png

二、驱动加载测试
将驱动模块发送到开发板
野火论坛202301091026456422..png

使用命令insmod 8723bu.ko 加载驱动
野火论坛202301090916367660..png

三、网络连接

ifconfig  -a 查看网卡
野火论坛202301090920565563..png

打开wifi
sudo ip link set wlan0 up

搜索附近的wifi
iw dev wlan0 scan | grep SSID

野火论坛202301090923558470..png

打开/etc/wpa_supplicant/wpa_supplicant.conf文件配置wifi相关账号密码:
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

野火论坛202301090924177728..png

network={
    ssid="wifi账号"
    psk="wifi密码"
    priority=1
}

保存内容后退出,并使用以下命令连接wifi
sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf &

申请动态ip
udhcpc -b -i wlan0

野火论坛202301090924518400..png

野火论坛202301090925012539..png

可能存在的问题,因为笔者一开始连了网线,路由表没有新添加的rtl8723路由信息
所以要添加路由网关信息
sudo route add default gw 192.168.10.1
野火论坛202301090925222759..png

网络测试
ping baidu.com -I wlan0
野火论坛202301090925432521..png

四、开机自动加载模块
(如果是编译进内核此步骤可以省略)

先将驱动模块放到/lib/modules/4.19.35-imx6目录下
野火论坛202301091140321519..png

执行sudo depmod -a建立依赖
野火论坛202301090929192402..png

查看依赖
cat  modules.depa
野火论坛202301090929413879..png

在/etc/modules文件中添加该模块即可实现开机自动加载
野火论坛202301090933232557..png

重启后输入lsmod可以查看加载情况
野火论坛202301090933552887..png

如果是将驱动编译进内核,请参考https://doc.embedfire.com/lubancat/build_and_deploy/zh/latest/building_image/kernel_download/kernel_download.html替换内核即可,(编译成驱动模块则忽略此替换内核步骤)

五、开机自动连接wifi
(请先确认前面扫描过wifi并在/etc/wpa_supplicant/wpa_supplicant.conf填写正确的wifi信息)
systemctl enable autowifi.service
systemctl status autowifi.service
野火论坛202301090936422627..png

重启开发板输入ifconfig -a查看wlan0 的ip并进行测试
野火论坛202301090940121393..png

(如果是其他系统可能没有autowifi.service服务,请根据当前使用的系统,按前面手动连接的步骤,添加自启动脚本/服务)
野火论坛202301091403447518..png

六、野火适配的RTL8188cus驱动
内核源码ebf_linux_kernel_6ull_depth1/drivers/net/wireless目录下
野火论坛202301090959393985..png
移植方法和以上介绍的大同小异,区别是野火将驱动编译进了内核,感兴趣的朋友自行研究下。

七、附件
提供驱动源码和编译生成的.ko文件
rtl8723bu .zip (23.56 MB, 下载次数: 6)





评分

参与人数 1火花 +10 收起 理由
lrz + 10 超越了野火小师妹!

查看全部评分

回复

使用道具 举报

发表于 2023-1-11 08:52:01 | 显示全部楼层
顶,手把手教程
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-3-28 19:36 , Processed in 0.033169 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表