Tina Linux 适配 RTL8733bs WIFI 模块:从设备树到网络连接全流程解析
1. 硬件接口配置与设备树修改第一次接触RTL8733bs这个Wi-Fi/蓝牙二合一模块时我花了两天时间才搞明白硬件连接和设备树配置的关系。这个模块通过SDIO接口与全志V853主控通信蓝牙部分则使用UART接口。下面我就把踩过的坑和验证过的正确配置分享给大家。在Tina Linux中设备树配置位于tina-v853/device/config/chips/v853/configs/perf1/board.dts。我们需要重点关注三个部分首先是Wi-Fi模块的基础配置。这里需要特别注意电源管理很多同学反映模块无法启动八成是电压没配对soc03000000 { wlan: wlan0 { compatible allwinner,sunxi-wlan; pinctrl-0 wlan_pins_a; pinctrl-names default; clock-names 32k-fanout0; clocks clk_fanout0; wlan_busnum 0x1; wlan_power_num 1; wlan_power1 axp2101-dcdc1; wlan_io_regulator axp2101-dcdc1; wlan_power_voltage 3300000; // 3.3V是标准电压 wlan_io_voltage 3300000; wlan_regon pio PH 11 1 0x1 0x2 0; // 使能引脚配置 wlan_hostwake pio PG 7 14 0x1 0x2 0; // 唤醒引脚 chip_en; power_en; status okay; wakeup-source; }; }SDIO接口配置也很关键这决定了Wi-Fi模块能否正常通信。我遇到过因为bus-width配错导致传输速率极低的情况sdc1 { bus-width 4; // 4线模式必须正确配置 no-mmc; no-sd; cap-sd-highspeed; sunxi-dis-signal-vol-sw; cap-sdio-irq; keep-power-in-suspend; // 休眠保持供电 ignore-pm-notify; max-frequency 50000000; // 50MHz时钟 ctl-spec-caps 0x8; status okay; };蓝牙部分相对简单主要是UART配置。注意流控根据实际硬件决定是否启用uart3 { pinctrl-names default, sleep; pinctrl-0 uart3_pins_active; pinctrl-1 uart3_pins_sleep; uart-supply ®_dcdc1; status okay; };配置完成后建议先用dtc工具验证设备树语法是否正确。在Tina Linux环境下可以执行dtc -I dtb -O dts -o test.dts /sys/firmware/devicetree/base查看生成的dts文件是否包含你的配置。2. 内核驱动集成与编译驱动移植是个技术活RTL8733bs的驱动需要特别注意编译选项。我建议先在PC上解压驱动包看看README文件里面往往有重要的平台适配说明。首先把驱动源码放到指定位置cp -r rtl8733bs/ lichee/linux-4.9/drivers/net/wireless/然后修改wireless目录下的Makefile增加编译规则。这里有个细节要注意CONFIG_前缀必须和Kconfig里保持一致# 在lichee/linux-4.9/drivers/net/wireless/Makefile末尾添加 obj-$(CONFIG_RTL8733BS) rtl8733bs/Kconfig的修改也很关键这决定了你在menuconfig里能不能找到这个驱动# 在lichee/linux-4.9/drivers/net/wireless/Kconfig末尾添加 source drivers/net/wireless/rtl8733bs/Kconfig接下来是最容易出错的编译选项配置。执行make kernel_menuconfig后需要依次进入Device Drivers →Network device support →Wireless LAN →找到Realtek 8733BS SDIO WiFi选项按Y选中特别注意这几个关键配置CONFIG_RTL8733ByCONFIG_SDIO_HCIyCONFIG_PLATFORM_ARM_SUNxIy编译完成后建议先用modinfo检查生成的ko文件modinfo 8733bs.ko确认驱动版本和依赖项是否正确。3. 固件部署与模块管理很多开发者在这里栽跟头驱动加载成功但Wi-Fi无法正常工作八成是固件问题。RTL8733bs需要特定的固件文件通常以.bin或.txt结尾。固件应该放在这个目录package/firmware/linux-firmware/rtl8733bs/在menuconfig中需要额外勾选固件选项make menuconfig →Firmware →linux-firmware →选中rtl8733bs-firmware模块管理配置在target/allwinner/v853-perf1/modules.mk中这里有个技巧AUTOLOAD参数决定了驱动是否自动加载define KernelPackage/net-rtl8733bs SUBMENU:$(WIRELESS_MENU) TITLE:RTL8733BS support (staging) DEPENDS: rtl8733bs-firmware IPV6 USES_REALTEK FILES:$(LINUX_DIR)/drivers/net/wireless/rtl8733bs/8733bs.ko AUTOLOAD:$(call AutoProbe,rtl8733bs) endef系统启动后可以通过以下命令检查驱动和固件是否正常加载dmesg | grep rtl lsmod | grep 8733如果发现固件加载失败检查/lib/firmware/rtl8733bs/目录是否存在以及固件文件权限是否正确应该是644。4. 网络服务配置与连接测试驱动搞定后网络配置就是临门一脚了。Tina Linux默认使用wpa_supplicant进行Wi-Fi连接管理配置文件路径很关键。首先确保init.d脚本正确配置这个文件负责开机自动加载驱动# target/allwinner/v853-perf1/busybox-init-base-files/etc/init.d/rc.modules insmod /lib/modules/4.9.191/8733bs.ko wpa_supplicant -B -i wlan0 -c /etc/wifi/wpa_supplicant/wpa_supplicant.conf wpa_supplicant配置模板在这里package/allwinner/wireless/wifimanager2.0/files/wpa_supplicant.conf实际配置示例ap_scan1 network{ ssid你的WiFi名称 pskWiFi密码 key_mgmtWPA-PSK priority5 }烧录系统后按顺序执行以下命令测试ifconfig wlan0 up # 启动网卡 wpa_cli -i wlan0 reconfigure # 重载配置 udhcpc -i wlan0 # 获取IP ping www.baidu.com # 测试网络如果遇到连接问题可以开启调试模式wpa_supplicant -d -i wlan0 -c /etc/wifi/wpa_supplicant/wpa_supplicant.conf最后提醒大家RTL8733bs的蓝牙和Wi-Fi共用天线如果同时使用可能会有干扰建议在设备树中根据实际需求关闭不需要的功能。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2460311.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!