ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux rtl8189fs WiFi驱动移植

2022-02-23 16:36:01  阅读:329  来源: 互联网

标签:supplicant WiFi PLATFORM rtl8189fs 内核 CFLAGS linux DCONFIG wpa


wifi驱动移植
解压厂家给的驱动源码,进入到解压目录,修改Makefile

1.修改Makefile
先将平台支持修改为你自己用的平台,我是在rk1808上进行移植的,所以添加如下:

2.在Makefile里找到下面的位置:

ifeq ($(CONFIG_PLATFORM_ARM_RK3188), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_ROCKCHIPS
# default setting for Android 4.1, 4.2, 4.3, 4.4
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
# default setting for Power control
EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
#EXTRA_CFLAGS += -DRTW_SUPPORT_PLATFORM_SHUTDOWN
# default setting for Special function
ARCH := arm
CROSS_COMPILE := /home/android_sdk/Rockchip/Rk3188/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
KSRC := /home/android_sdk/Rockchip/Rk3188/kernel
MODULE_NAME := wlan
endif
//以下为自己添加,直接复制上面,修改即可
ifeq ($(CONFIG_PLATFORM_ARM_RK1808), y)**改为自己的平台,我的是rk1808**
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_ROCKCHIPS
# default setting for Android 4.1, 4.2, 4.3, 4.4
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
# default setting for Power control
EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
#EXTRA_CFLAGS += -DRTW_SUPPORT_PLATFORM_SHUTDOWN
# default setting for Special function
ARCH := arm64**架构体系**
CROSS_COMPILE := /media/gree/47037fce-de1d-40bd-8cd8-922f0e1edc8e/rk_docs/rk1808-sdk/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-**交叉编译器,建议是绝对路径**
KSRC := /media/gree/47037fce-de1d-40bd-8cd8-922f0e1edc8e/rk_docs/rk1808-sdk/kernel**内核源码路径**
MODULE_NAME := wlan**节点名称**
endif

 3.内核配置

在内核路径下,执行make menuconfig命令,通过图形化界面进行如下配置:

Device Drivers --->
  [*] Network device support --->
    [*] Wireless LAN --->
      <*> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)
      [*] Support downloading firmware images with Host AP driver
      [*] Support for non-volatile firmware download
      [*] Rockchip Wireless LAN support --->//rk平台支持的WiFi模组,其他平台可以自己修改Kconfig文件,将相应模组进入到内核支持
        [*] Wifi load driver when kernel bootup
        <*> Realtek 8189F SDIO Wifi

内核配置基本这么多,重新编译内核,更新内核.

执行ifconfig查看是否有wlan节点,有wlan说明驱动加载成功了,如果没有自己检查下gpio是否正确。

4.调试
1、查看wifi的服务进程是否启动,ps查看是否有wpa_supplicant进程,如果没有,手动启动:wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf
2、扫描周边ap,成功会打印OK,如果有错那就是驱动问题,根据log自行查看解决

  查看扫描结果wpa_cli -i wlan0 -p /var/run/wpa_supplicant scan_results有如下信息,说明WiFi正常工作

 3、连接热点

 保存退出,重新读取配置wpa_cli -i wlan0 -p /var/run/wpa_supplicant reconfigure

发起连接wpa_cli -i wlan0 -p /var/run/wpa_supplicant reconnect
ifconfig发现wlan0分配了IP,尝试ping一下百度:

 可以ping通,驱动移植完成。

总结
经过九九八十一难,终于调通了WiFi,这个过程真的艰辛,踩了很多坑,但是大体的步骤就是这样,遇到问题一定要检查最基本的是否正确。
我刚开始遇到的问题是rtw:error sd_cmd52 read fail,这种问题应该是驱动不匹配,千万别钻牛角尖,一直去解决这个问题,刚开始我是用的rk sdk里面的驱动,我换了模组厂给的驱动,重新编译解决了这个问题,但是遇到了新的问题,不报任何错,但是还是扫描不到周围的ap,经过不懈的努力,找到了解决方法,变异内核后出现了一个警告:

 我就尝试在编译的时候加上了CONFIG_DEBUG_SECTION_MISMATCH=y,说WiFi驱动入口函数少了__init,出口函数少了__exit,我就在相应的地方添加了,重新编译不报错,重新烧录内核,发现可以使用了。

过程之艰难啊,没有大佬指点,只能自己踩坑!!
————————————————
版权声明:本文为CSDN博主「菜鸟阳阳」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44836580/article/details/111634223 

标签:supplicant,WiFi,PLATFORM,rtl8189fs,内核,CFLAGS,linux,DCONFIG,wpa
来源: https://www.cnblogs.com/loongson-artc-lyc/p/15928009.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有