Linux 驱动开发之WIFI设备分析2

Linux 驱动开发之WIFI设备分析2(基于Linux6.6)---简要介绍

 

 

一、什么是wifi 模块

 

WiFi模块是一种用于提供无线局域网(WLAN)连接的硬件组件,它允许设备通过Wi-Fi网络进行通信。WiFi模块通常集成了WiFi功能,使得嵌入式设备或物联网(IoT)设备能够与互联网或本地局域网(LAN)进行无线数据传输。

1.WiFi模块的组成部分

WiFi模块通常包含以下几个主要组成部分:

  1. 无线通信芯片:负责处理WiFi信号的发送和接收。常见的芯片如 ESP8266ESP32MTK(联发科)Qualcomm 等。
  2. 微控制器(MCU):用于控制WiFi模块的工作逻辑,如连接网络、管理数据传输等。
  3. 天线:用于接收和发送无线信号。WiFi模块可以内置天线或外接天线。
  4. 存储器:存储WiFi模块的固件和配置文件。
  5. 电源管理电路:确保WiFi模块能在各种电源条件下正常工作。

2.WiFi模块的工作原理

WiFi模块通过无线电波与路由器或无线接入点(AP)进行通信。其工作流程一般如下:

  1. 扫描网络:WiFi模块会扫描周围的无线网络,寻找可用的Wi-Fi信号。
  2. 连接网络:一旦发现可用网络,模块会尝试通过提供正确的密码(如果是加密网络)连接到该网络。
  3. 数据传输:连接成功后,WiFi模块会开始通过Wi-Fi网络进行数据传输,可以是上传数据到云端,或从互联网上下载数据。

3.常见的WiFi模块

  1. ESP8266:广泛使用的低成本Wi-Fi模块,具有较小的体积和强大的功能,常用于物联网(IoT)项目中。它支持 802.11b/g/n 协议,适合基础的无线联网应用。
  2. ESP32:是ESP8266的升级版,支持更强的功能,包括蓝牙、更多的GPIO接口、更高的处理能力和更多的存储空间,适用于更复杂的项目。
  3. Wemos D1 mini:这是一款基于ESP8266的开发板,适用于快速开发Wi-Fi项目。
  4. Raspberry Pi的WiFi模块:树莓派(Raspberry Pi)开发板通常内置WiFi模块,方便连接到无线网络。
  5. Arduino WiFi Shield:用于Arduino开发板的Wi-Fi扩展模块,可以使Arduino设备连接到Wi-Fi网络。

4.WiFi模块的应用场景

  1. 物联网(IoT):WiFi模块是IoT设备的核心组成部分之一,用于实现设备与互联网之间的无线连接。比如智能家居设备、智能灯泡、温湿度传感器等。
  2. 智能硬件:如智能音响、智能门锁、智能家电等,通过WiFi模块实现远程控制和数据传输。
  3. 远程监控系统:WiFi模块用于远程视频监控、摄像头数据上传等。
  4. 无线通信:用于移动设备、嵌入式设备等的无线通信。

 

 

 

二、WiFi 模块主要分类

1. 按芯片平台分类

WiFi模块的芯片平台通常决定了其性能、功能以及与其他硬件的兼容性。常见的芯片平台有:

  • ESP8266:一种低成本、功能强大的WiFi模块,广泛应用于物联网(IoT)和嵌入式系统。ESP8266支持802.11b/g/n协议,适合需要较低功耗和较小尺寸的项目。
  • ESP32:是ESP8266的升级版,具有更强的处理能力,支持双核处理器、蓝牙(BLE)、更多的GPIO引脚、更大的内存等,适用于复杂的应用场景。
  • MT7688/MT7697(联发科):这些芯片常用于需要较高数据处理能力和连接稳定性的应用,如路由器、智能家居控制器等。
  • Qualcomm Atheros(AR系列芯片):这些高性能芯片多用于高端设备,如智能家居产品、商用路由器等。
  • Atmel (Microchip):Atmel(现为Microchip)也提供WiFi解决方案,常用于嵌入式应用。

2. 按功能分类

WiFi模块可以根据其功能特性分为以下几类:

  • 基本WiFi模块:这些模块仅提供WiFi连接功能,适用于简单的联网任务,如ESP8266、ESP32等。这类模块通常包括基本的WiFi协议栈,用于设备与路由器或接入点(AP)的通信。

  • 带处理器的WiFi模块(WiFi SoC):这些模块不仅提供WiFi连接,还集成了微控制器(MCU)功能。常见的例子如ESP32,它除了WiFi功能外,还可以进行数据处理和控制任务,适合较为复杂的应用。

  • WiFi扩展模块:这类模块通常作为附加模块,通过SPI、UART等接口与主控制器(如Arduino或树莓派)连接,为主控制器提供WiFi连接能力。常见的有ESP8266 WiFi Shield、Arduino WiFi Shield等。

3. 按工作模式分类

WiFi模块可以根据其工作模式分类,这通常与设备的使用场景和应用需求相关:

  • 站点模式(Station Mode, STA):在这种模式下,WiFi模块作为客户端连接到已有的Wi-Fi网络(如家庭路由器)。大多数WiFi模块默认使用站点模式。

  • 接入点模式(Access Point Mode, AP):在接入点模式下,WiFi模块本身充当一个无线热点,其他设备可以连接到该热点。这种模式常见于无线设备之间的点对点通信,或者在没有外部路由器时使用。

  • 混合模式(SoftAP+STA模式):在这种模式下,WiFi模块既能作为客户端连接到现有Wi-Fi网络,同时也能作为无线接入点,允许其他设备通过Wi-Fi连接到它。这种模式常用于设备之间的局部网络。

4. 按数据传输速率分类

根据Wi-Fi模块支持的传输速率不同,也可以将其分为以下几类:

  • 低速模块:支持802.11b协议的WiFi模块,通常用于简单的数据传输和控制应用。这类模块的速率较低,约为11 Mbps。例如,部分老旧的WiFi模块可能仅支持这一协议。

  • 中速模块:支持802.11g协议的WiFi模块,传输速率较高,约为54 Mbps,适用于一般的数据传输和流媒体应用。

  • 高速模块:支持802.11n或更高协议的WiFi模块(如802.11ac/ax),支持更高的传输速率(可达数百兆比特或千兆比特),适合高清视频流、快速数据传输和大规模的设备连接等高带宽需求的应用。

5. 按应用场景分类

WiFi模块还可以按具体的应用场景进行分类,常见的应用包括:

  • 物联网(IoT)WiFi模块:这类模块通常用于低功耗、短距离通信的场景。它们广泛应用于智能家居、环境监测、传感器、智能穿戴设备等IoT产品中,典型代表如ESP8266、ESP32等。

  • 工业级WiFi模块:这类模块通常用于工业自动化、远程监控等场景,要求高稳定性、长距离和抗干扰能力。它们可能具有更强的抗噪声能力和更高的传输稳定性。

  • 嵌入式WiFi模块:用于各种嵌入式设备中,如自动售货机、智能仪表、远程控制系统等,这类模块通常兼具小体积和强大的集成能力。

6. 按功耗分类

WiFi模块根据功耗的不同,可以分为以下几类:

  • 低功耗WiFi模块:适用于电池供电的设备,如可穿戴设备、传感器节点等。ESP8266和ESP32都有低功耗模式,适合这类应用。

  • 普通功耗WiFi模块:适用于一般的家庭和办公环境中,电源通常来自于稳定的电源适配器,不太需要过多关注功耗。

7. 按支持的WiFi标准分类

WiFi模块还可以按支持的WiFi标准进行分类:

  • 802.11b/g/n模块:这些模块支持较为基础的Wi-Fi标准,传输速度较低,适用于一般的家庭和小型应用。

  • 802.11ac/ax模块:这些模块支持更高速的Wi-Fi标准,适用于高清视频流、大文件传输和高带宽应用,适合现代家庭和办公环境。

针对嵌入式WIFI与普通WIFI来进行对比:

 

嵌入式WIFI模块

普通WIFI模块

适用范围

无线家电、仪表、智能灯泡等智能家居设备

笔记本、手机、平板电脑等

主控芯片

模块上集成的MCU

x86 CPU、ARM等高速微处理器

接口

UART、SPI、I2C、SDIO

USB、SDIO

功耗

产品

TI的CC3200系列、MXCHIP系列、ASIX系列

、Atheros的HF-LPA系列等

瑞昱RTL81xx系列、威盛VT系列、雷凌RT系列、

博通BCM、Marvell、高通Atheros等

开发设计

内置WIFI驱动、MAC、WIFI协议、无线安全协议等,

所有的网络软件封装成一个UART或SPI接口的设备,

使用简单,只需要往UART或者SPI收发数据即可。

从整体软件层面上看,不属于网络设备。

需要在主机添加WIFI驱动、同时需要依赖主机的网络协议栈等软件平台资源,

从整体软件层面上看,属于网络设备,使用时需要遵循网络相关的协议。

8.USB接口WiFi模块原理图的主要组成部分:

  1. USB接口控制器

    • 功能:将WiFi模块与主机(如电脑、树莓派、嵌入式系统等)进行通信。通常使用USB 2.0或USB 3.0标准。
    • 常见芯片:FTDI(用于串口转USB)、Prolific等USB转接芯片,或直接集成了USB控制器的WiFi芯片(如Broadcom、Qualcomm、Realtek等)。
    • 工作原理:当模块插入主机时,USB控制器负责数据传输、供电管理以及设备识别等任务。
  2. WiFi芯片(无线通信模块)

    • 功能:处理无线网络的连接、数据传输和接收。WiFi芯片通常包括一个无线电发射/接收单元(RF部分)和一个数字信号处理单元(baseband部分),也可能包括一个处理器来管理网络协议栈。
    • 常见芯片:Realtek RTL8188、Qualcomm Atheros AR9271、Broadcom BCM43143、Cypress CYW43340等。
    • 工作原理:WiFi芯片使用调制解调技术处理无线信号,并通过无线电频率(RF)收发无线数据流。
  3. 天线接口

    • 功能:提供信号接收和发射的接口,通常是一个SMA或IPX连接器,接驳外部天线。
    • 工作原理:天线通过无线电波进行信号传输和接收。良好的天线设计和定位是保证WiFi信号强度和稳定性的关键。
  4. 电源管理模块

    • 功能:提供WiFi模块所需的稳定电源,一般通过USB供电。电源模块可以包含电压转换电路、稳压器和电源滤波器等,确保WiFi芯片稳定工作。
    • 工作原理:USB接口提供的是5V电源,但WiFi芯片的工作电压通常低于5V,因此需要电压转换(例如,3.3V)和稳压器来确保芯片获得适当的电源。
  5. 数据处理与协议栈

    • 功能:WiFi模块内可能会集成一个小型的处理器(例如,MCU),用于运行TCP/IP协议栈或其他网络协议,从而使得WiFi模块能够实现网络连接、数据加密和传输等功能。也可以在主机端运行协议栈并通过USB接口与WiFi芯片通信。
    • 工作原理:WiFi模块通过内置的协议栈或主机计算机上的驱动程序来进行网络通信,如进行连接管理、数据传输、加密解密等操作。
  6. 控制接口

    • 功能:WiFi模块通常会有一些控制引脚,例如复位引脚、使能引脚(ENABLE)、引导模式引脚(BOOT)等,用于控制芯片的启动、复位和模式切换。
    • 工作原理:主机通过控制信号来控制WiFi模块的工作状态,例如在初始化时复位WiFi模块或切换工作模式。
  7. 驱动和固件

    • 功能:USB WiFi模块通常需要特定的驱动程序和固件才能在操作系统中正常工作。驱动程序负责控制模块的操作并实现与主机的通信,而固件则运行在WiFi芯片上,处理WiFi协议栈、连接管理等任务。
    • 工作原理:固件通常通过USB接口与主机系统通信,驱动程序通过控制WiFi模块的各项功能(如扫描网络、连接Wi-Fi等)。

9.USB WiFi模块原理图概述:

|----------------------------|
|    USB接口控制器          |<----->|    主机 (PC/嵌入式)       |
|----------------------------|      |--------------------------|
          |                                |  
          v                                v  
|----------------------------|      |---------------------------|
|    电源管理模块           |      |  WiFi协议栈、驱动         |
|----------------------------|      |---------------------------|
          |                                |
          v                                v
|----------------------------|      |---------------------------|
|    WiFi芯片              |      |           网络连接        |
|  (包含RF、Baseband、处理器) |----->|        数据处理/传输     |
|----------------------------|      |---------------------------|
          |                                |
          v                                v
|----------------------------|      |---------------------------|
|      天线接口             |<----->|    无线信号传输与接收     |
|----------------------------|      |---------------------------|

 

三、WiFi模块主要功能

Wifi 模块 包括两种类型的拓扑形式:基础网(Infra)自组网(Adhoc),要说明无线网络的拓扑形式,首先要了解两个基本概念:

a -- AP

       也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就是一个AP

b -- STA站点

       每一个连接到无线网络中的终端(如笔记本电脑、PDA及其它可以联网的用户设备)都可称为一个站点。


1、基于AP组建的基础无线网络(Infra)

Infra:也称为基础网,是由AP创建,众多STA加入所组成的无线网络,这种类型的网络的特点是AP是整个网络的中心,网络中所有的通信都通过AP来转发完成

附:  

AP是将wifi模块当路由器使用,这样手机和电脑就可以直接连接wifi模块了。

 Infra 是将wifi模块当基础设备使用,用于连接别的路由器。

2、基于自组网的无线网络(Adhoc)

      Adhoc:也称为自组网,是仅由两个及以上STA自己组成,网络中不存在AP,这种类型的网络是一种松散的结构,网络中所有的STA都可以直接通信

3、安全机制

     本模块支持多种无线网络加密方式,能充分保证用户数据的安全传输,包括:WEP64/WEP128/ TKIP/CCMP(AES) WEP/WPA-PSK/WPA2-PSK。

4、快速联网

      本模块支持通过指定信道号的方式来进行快速联网。在通常的无线联网过程中,会首先对当前的所有信道自动进行一次扫描,来搜索准备连接的目的AP创建的(或Adhoc)网络。本模块提供了设置工作信道的参数,在已知目的网络所在信道的条件下,可以直接指定模块的工作信道,从而达到加快联网速度的目的。

5、地址绑定

     本模块支持在联网过程中绑定目的网络BSSID地址的功能。根据802.11协议规定,不同的无线网络可以具有相同的网络名称(也就是SSID/ESSID),但是必须对应一个唯一的BSSID 地址。非法入侵者可以通过建立具有相同的SSID/ESSID的无线网络的方法,使得网络中的STA联接到非法的AP上,从而造成网络的泄密。通过BSSID地址绑定的方式,可以防止STA 接入到非法的网络,从而提高无线网络的安全性。

6、无线漫游

    本模块支持基于802.11协议的无线漫游功能。无线漫游指的是为了扩大一个无线网络的覆盖范围,由多个AP共同创建一个具有相同的SSID/ESSID的无线网络,每个AP用来覆盖不同的区域,接入到网络的STA可以根据所处位置的选择信号最强的AP接入,而且随着STA的移动自动在不同的AP之间切换。

四、工作方式

1、主动型串口设备联网

      主动型串口设备联网指的是由设备主动发起连接,并与后台服务器进行数据交互(上传或下载)的方式。典型的主动型设备,如无线POS机,在每次刷卡交易完成后即开始连接后台服务器,并上传交易数据。PUSH型串口设备联网的拓扑结构如右图所示。其中,后台服务器作为TCP Server端,设备通过无线AP/路由器接入到网络中,并作为TCP Client端。

2、被动型串口设备联网

      被动型串口设备联网指的是,在系统中所有设备一直处于被动的等待连接状态,仅由后台服务器主动发起与设备的连接,并进行请求或下传数据的方式。典型的应用,如某些无线传感器网络,每个传感器终端始终实时的在采集数据,但是采集到的数据并没有马上上传,而是暂时保存在设备中。

4.1、无线工作模式

在 Linux 中,WiFi 模块可以工作在不同的模式,以下是几种常见的工作模式:

  • Managed 模式(客户端模式)

    • 这是最常见的工作模式,设备(如笔记本、智能手机等)通过 WiFi 连接到现有的无线接入点(如家庭路由器或公共WiFi热点)。
    • Managed 模式下,设备需要通过 SSID 扫描并选择网络,并使用 WPAWPA2 进行安全认证。
  • Access Point 模式(接入点模式)

    • 这种模式下,WiFi 网卡充当一个无线接入点(AP),允许其他设备通过 WiFi 连接到它。通常用于创建一个小型的无线局域网。
    • 设备充当 AP,提供一个 SSID,并允许其他设备通过该接入点进行通信。
  • Ad-hoc 模式

    • 也称为点对点模式,WiFi 设备直接连接到另一个 WiFi 设备,而无需通过中介的接入点(如路由器)。这种模式通常用于设备间快速的无线连接,缺乏中心化管理。
  • Monitor 模式

    • 在监控模式下,WiFi 网卡能够捕获无线信道上的所有数据包,包括其他设备发送的未加密的和加密的数据包。这种模式主要用于网络嗅探和无线网络分析(如使用 Wiresharkairmon-ng 等工具进行嗅探)。
  • Mesh 模式

    • 在这种模式下,WiFi 设备通过无线网状网络进行通信,适用于需要广泛覆盖区域的网络,例如农村地区或灾区应急通信。

4.2、WiFi 网络管理工具

在 Linux 系统中,WiFi 连接的管理通常通过以下工具和服务来实现:

  • wpa_supplicant

    • wpa_supplicant 是 Linux 中用于管理 WiFi 连接的核心工具,支持 WPA 和 WPA2 加密协议。它负责连接到 WiFi 网络,处理身份验证过程。
    • 配置文件:/etc/wpa_supplicant/wpa_supplicant.conf 用于设置连接的 SSID、加密方式等信息。
  • NetworkManager

    • NetworkManager 是一个管理 Linux 系统中网络连接的工具,它能够处理有线和无线网络接口的配置。NetworkManager 提供了一个更友好的界面来管理网络连接,支持 GUI、CLI(nmcli)、D-Bus API 等。
  • iwiwconfig

    • iw 是一个现代的无线配置工具,用于显示和配置无线设备。它通常用于扫描无线网络、设置信道等。
    • iwconfig 是旧版的无线配置工具,功能类似,但有些较新的 Linux 发行版已经不再推荐使用它。
  • ifconfigip

    • 这些工具用于查看和配置网络接口,包括 WiFi 网络接口。

4.3、WiFi 配置和管理

  • 连接到网络: 使用 wpa_supplicantNetworkManager,你可以配置 WiFi 连接。通常,用户需要提供 SSID 和密码来连接到加密的 WiFi 网络。

  • 扫描可用网络: 使用 iw dev wlan0 scan 可以扫描周围可用的 WiFi 网络,并获取 SSID、信号强度、加密类型等信息。

  • 查看连接状态: 使用 iwconfignmcli 命令来查看当前的 WiFi 连接状态,显示已连接的网络名称(SSID)、信号强度、传输速率等信息。

4.4、WiFi 配置示例

1.通过 wpa_supplicant 配置:

  1. 编辑 /etc/wpa_supplicant/wpa_supplicant.conf 文件,添加你的网络配置:

  • network={
        ssid="YourSSID"
        psk="YourPassword"
    }
    
  • 启动 wpa_supplicant

  • sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
    
  • 获取 IP 地址:

  • sudo dhclient wlan0
    

2.使用 nmcli(NetworkManager CLI):

  1. 扫描并连接到网络:
nmcli device wifi list
nmcli device wifi connect "YourSSID" password "YourPassword"

 

 

你可能感兴趣的:(Linux内核子系统,linux,驱动开发,运维)