1. 认识RTL8189FS WiFi模块
如果你正在玩嵌入式Linux开发板,想要给设备添加WiFi功能,RTL8189FS是个不错的选择。这款芯片性价比高,功耗控制得不错,而且Linux内核支持也相对成熟。我这些年做过不少嵌入式WiFi驱动移植,Realtek的方案算是比较友好的,特别是对于刚开始接触BSP开发的工程师来说。
RTL8189FS是一款SDIO接口的WiFi模块,很多国产开发板都用这个方案。它支持2.4GHz频段,最高速率150Mbps,对于大多数物联网设备来说完全够用。最重要的是,Realtek提供了完整的Linux驱动源码,这给我们移植调试带来了很大便利。
在实际项目中,我遇到过各种WiFi模块,RTL8189FS的稳定性算是中上水平。特别是在信号较弱的环境下,它的重连机制表现不错。不过想要让它正常工作,需要做好驱动移植和配置,这也是本文要重点讲解的内容。
2. 硬件原理图分析
拿到开发板的第一件事就是看原理图。这个步骤千万不能省,我吃过亏,曾经因为没仔细看原理图,调试了两天都没发现是电源引脚接错了。
首先找到WiFi模块的接口部分。RTL8189FS是SDIO接口,所以要先确认接在哪个SDIO控制器上。一般是SD0、SD1这样的标注。然后重点看几个关键引脚:
电源引脚(VCC)通常是3.3V,要确认供电是否稳定。我习惯用万用表实测一下电压,有时候原理图标注和实际电压会有微小差异。使能引脚(ENABLE)很重要,这个引脚需要正确拉高才能启动模块。还有唤醒引脚(HOST_WAKE)和设备唤醒引脚(DEVICE_WAKE),这些用于电源管理。
有一次我调试的时候发现模块能识别但无法扫描网络,最后发现是host wake引脚没配置正确。所以建议把每个引脚的功能都仔细核对,特别是中断相关的引脚。
SDIO的数据线和时钟线也要注意。CLK频率要符合规范,数据线最好等长走线。如果信号质量不好,可以适当调整驱动强度。我在RK3566平台上就遇到过因为CLK线太长导致的不稳定问题。
3. 内核配置与驱动编译
内核配置是驱动移植的关键步骤。Realtek提供了多种配置方式,我推荐先用menuconfig图形界面查看可选配置,然后再修改defconfig文件。
首先确保MMC子系统已经启用:
CONFIG_MMC=y
CONFIG_MMC_BLOCK=y
CONFIG_MMC_SDHCI=y
无线网络相关的配置项要特别注意:
CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y
CONFIG_WLAN=y
CONFIG_WLAN_VENDOR_REALTEK=y
RTL8189FS的驱动建议编译为模块,这样调试起来更方便:
CONFIG_RTL8189FS=m
编

2412

被折叠的 条评论
为什么被折叠?



