realtek wifi驱动常见问题-可优化调整点

2024-03-28 20:44

本文主要是介绍realtek wifi驱动常见问题-可优化调整点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

俗话说好记性不如烂笔头,最近在新产品上使用realtek 8192 wifi芯片时,发现之前做过的一些优化,有些模糊,因此想在这里记录下当前和之后realtek相关的wifi驱动遇到的一些问题。

-----再牛逼的梦想,也抵不住傻逼般的坚持! --2024-03-28 10:46

文章目录

  • 前言
  • 一、驱动移植注意事项
  • 二、驱动启动流程分析
    • 初始化函数主要做的事情:
    • wifi驱动的probe的过程
  • 二、常见问题分析
    • 问题1.
    • 2.驱动优化处理
  • 总结


前言

当下国内使用的wifi、ble主要有如下几个芯片厂商:realtek(瑞昱),broadcom(博通),乐鑫,物奇,南方硅谷等等,wifi通常分两种开发方式,一种是soc芯片多用于iot(物联网产品),使用rtos,rthread等实时操作系统,可以基于wifi模组进行二次开发;另外一种虽然wifi fw(固件)也是soc,但是fw一般由芯片厂商维护,需要挂在一个主控(ARM)芯片进行使用,主控与wifi模组通过sdio/usb进行交互,fw与主控端的wifi驱动进行交互,wifi驱动通过内核cfg80211或mac80211与开源库wpa_supplicant/hostapd进行交互。上层封装自己的业务通过wpa_supplicant/hostapd对wifi进行操作;(这里写的可能不清楚下面简单写下代码层次)


APP
wpa_supplicant / hostapd
cfg80211
mac80211 (wifi若是fullmac架构,则mac80211部分位于wifi驱动中)
wifi drv
fw


有点扯远了,回归正题,接下来从,驱动移植,常见问题处理,wifi相关优化几个方面来记录,本次以rtl8192fu为例,其他芯片一般都大同小异

一、驱动移植注意事项

一般来说编译指定kernel产物路径,ARCH,CROSS_COMPILE 即可,可以自己在外层写一个Makefile, 增加自己业务先关的编译选项,编译过程遇到问题,建议自行学习分析,哪里报错看哪里,不要怂,也不要担心解决不了,淦就完了,这个算是嵌入式基础了。

这里需要注意几个点:
1.驱动加载前,先通过cat /proc/bus/usb/devices查看wifi usb节点是否识别到。若未识别到,则需先排查硬件或主控usb驱动是否正常。

内核配置:

驱动配置:
驱动配置基本位于根目录下的Makefile
CONFIG_80211W 关闭该配置,该配置使用WPA3时才需要。

二、驱动启动流程分析

module_init(rtw_drv_entry);(入口)
module_exit(rtw_drv_halt);
找到这两个函数,就分别找到了初始化和退出函数

初始化函数主要做的事情:

(1)打开wifi模块的电源,会根据不同的平台不同的模块进行处理;
(2)初始化挂起锁,这个后边再分析,猜是防止多线程同时挂起模块时会引起模块问题;
(3)驱动注册标志位置1;
(4)注册usb驱动,因为我们的模块接口是USB接口的,所以对系统来说其实就是个USB设备,自然要注册usb驱动。

注册的usb驱动中主要提供的接口如下:
(1)probe探测函数
(2)disconnet函数
(3)idtable列表,表示支持的设备的PIDVID信息
(4)挂起和唤醒函数

wifi驱动的probe的过程

1.处理特殊设备
2.初始化dvobj_priv
3.初始化wlan0的无线网络节点:
(1)识别芯片的型号和硬件型号并记录在wlan0的接口描述结构体中;
(2)根据芯片型号将一些处理函数的地址赋给wlan0的描述结构体;
(3)为结构体的intf_start和intf_stop两个成员赋值,这两个函数会在ifconfig wlan0 up和down的时候被调用;
(4)将一些直接操作结构体的函数地址赋值到结构体中;
(5)获取芯片的版本信息,并从芯片的eeprom中读取芯片的mac地址等信息,赋值到结构体中;
(6)初始化一些software资源,这里需要进一步分析;
(7)设置mac地址。

二、常见问题分析

问题1.

问题描述:手机连接设备软ap热点,无数据传输,一段时间后自动断开
可能导致的问题:设备为软AP配网时,若手机连接设备AP热点,中间出现断连,手机很可能重新连接到路由器,最终导致软AP配网失败。
问题分析:该问题有可能是wifi驱动中默认开启了power save机制导致
修改方法:修改驱动根目录下的Makefile,将CONFIG_POWER_SAVING = y改为 n,关闭该功能。
问题验证:除使用手机连接配网进行验证,还可以通过抓包,查看beacon帧如下字段查看修改是否生效;
802.11 Management Beacon中
Traffic Indication Map -> Bitmap Control (Traffic Ind)

2.驱动优化处理

  1. 驱动裁剪
    a. 日志裁剪
    (根目录Makefile中CONFIG_RTW_DEBUG = y设置为n,或通过CONFIG_RTW_LOG_LEVEL调整日志等级)
    b.功能裁剪
    CONFIG_P2P = y
    android相关文件不编译,CONFIG_RTW_ANDROID设置为0
  2. 功能优化
    a.设备出流能力
    (1)修改rtw_rts_thresh 这个根据实际使用场景来修改。(个人这边修改为512)
    (2) rtw_preamble,这个也是根据自己需求进行修改。默认是long GI, 如果环境比较干净可以修改为short GI 以提升吞吐

总结

未完待续 – 上班搬砖

这篇关于realtek wifi驱动常见问题-可优化调整点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/856651

相关文章

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

Java JAR 启动内存参数配置指南(从基础设置到性能优化)

《JavaJAR启动内存参数配置指南(从基础设置到性能优化)》在启动Java可执行JAR文件时,合理配置JVM内存参数是保障应用稳定性和性能的关键,本文将系统讲解如何通过命令行参数、环境变量等方式... 目录一、核心内存参数详解1.1 堆内存配置1.2 元空间配置(MetASPace)1.3 线程栈配置1.

MySQL 5.7彻底卸载与重新安装保姆级教程(附常见问题解决)

《MySQL5.7彻底卸载与重新安装保姆级教程(附常见问题解决)》:本文主要介绍MySQL5.7彻底卸载与重新安装保姆级教程的相关资料,步骤包括停止服务、卸载程序、删除文件和注册表项、清理环境... 目录一、彻底卸载旧版本mysql(核心步骤)二、MySQL 5.7重新安装与配置三、常见问题解决总结废话不多

90%的人第一步就错了! 顺利登录wifi路由器后台的技巧

《90%的人第一步就错了!顺利登录wifi路由器后台的技巧》登录Wi-Fi路由器,其实就是进入它的后台管理页面,很多朋友不知道该怎么进入路由器后台设置,感兴趣的朋友可以花3分钟了解一下... 你是不是也遇到过这种情况:家里网速突然变慢、想改WiFi密码却不知道从哪进路由器、新装宽带后完全不知道怎么设置?别慌

Java 字符串操作之contains 和 substring 方法最佳实践与常见问题

《Java字符串操作之contains和substring方法最佳实践与常见问题》本文给大家详细介绍Java字符串操作之contains和substring方法最佳实践与常见问题,本文结合实例... 目录一、contains 方法详解1. 方法定义与语法2. 底层实现原理3. 使用示例4. 注意事项二、su

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.