linux wifi驱动开发 二,Linux 下wifi 驱动开发(二)—— WiFi模块浅析
一、什么是wifi 模块
百度百科上这样定义:
Wi-Fi模块又名串口Wi-Fi模块,属于物联网传输层,功能是将串口或TTL电平转为符合Wi-Fi无线网络通信标准的嵌入式模块,内置无线网络协议IEEE802.11b.g.n协议栈以及TCP/IP协议栈。传统的硬件设备嵌入Wi-Fi模块可以直接利用Wi-Fi联入互联网,是实现无线智能家居、M2M等物联网应用的重要组成部分。
二、WiFi 模块主要分类
Wi-Fi模块可分为三类:
a – 通用Wi-Fi模块
比如手机、笔记本、平板电脑上的USBorSDIO接口模块,Wi-Fi协议栈和驱动是在安卓、Windows、iOS的系统里跑的,是需要非常强大的CPU来完成应用;
b – 路由器方案Wi-Fi模块
典型的是家用路由器,协议和驱动是借助拥有强大Flash和Ram资源的芯片加Linux操作系统;
c – 嵌入式Wi-Fi模块
32位单片机,内置Wi-Fi驱动和协议,接口为一般的MCU接口如UART等。适合于各类智能家居或智能硬件单品。
我觉得这里有必要了解一下普通Wi-Fi模块与嵌入式Wi-Fi模块的区别:
我们都知道笔记本、手机、平板电脑等这类产品具有强大的CPU和大容量的存储器进行网络通信数据的处理和存储,因此在使用WIFI时不需要额外的MCU,完全借助其高速处理器和庞大的软件系统。但是对于家电,仪表,LED灯等智能家居产品,因为该类产品的主控芯片可能是成本很低、功能简单的MCU,因此这类产品无法支持普通Wi-Fi的功能。同时,还有一个重要的原因就是普通WIFI的功耗比较高,而嵌入式WIFI在功耗上做了很大的改善,比较适合对功耗要求高的无线家电设备。
基于上述原因,各个无线厂商相继推出了嵌入式WIFI模块。嵌入式WIFI模块的特点是软硬件集成度高,整个嵌入式WIFI模块集成了射频收发器、MAC、WIFI驱动、所有WIFI协议、无线安全协议、一键连接等。总之,一句话:嵌入式WIFI应物联网而生!
下面我们针对嵌入式WIFI与普通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驱动、同时需要依赖主机的网络协议栈等软件平台资源,
从整体软件层面上看,属于网络设备,使用时需要遵循网络相关的协议。
下面是笔者所用一款USB接口的WiFi模块原理图:
三、WiFi模块主要功能
Wifi 模块 包括两种类型的拓扑形式:基础网(Infra)和自组网(Adhoc),要说明无线网络的拓扑形式,首先要了解两个基本概念:
a – AP
也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就是一个AP。
b – STA站点
每一个连接到无线网络中的终端(如笔记本电脑、PDA及其它可以联网的用户设备)都可称为一个站点。
1、基于AP组建的基础无线网络(Infra)
Infra:也称为基础网,是由AP创建,众多STA加入所组成的无线网络,这种类型的网络的特点是AP是整个网络的中心,网络中所有的通信都通过AP来转发完成。
附:
笔者所用WiFi模块有两种系统设置:无线网类型AP 和Infra
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、被动型串口设备联网
被动型串口设备联网指的是,在系统中所有设备一直处于被动的等待连接状态,仅由后台服务器主动发起与设备的连接,并进行请求或下传数据的方式。典型的应用,如某些无线传感器网络,每个传感器终端始终实时的在采集数据,但是采集到的数据并没有马上上传,而是暂时保存在设备中。
而后台服务器则周期性的每隔一段时间主动连接设备,并请求上传或下载数据。
此时,后台服务器实际上作为TCP Client端,而设备则是作为TCP Server端主要特性2.4GHz, IEEE 802.11b/g内部PCB天线,可选外部天线支持基于AP的网络(Infrastructure)/对等网络Ad-Hoc (IBSS))/ 虚拟AP 模式 ,IPHONE/IPAD/Android 设备也能不用AP/路由器而直接连接支持802.11i加密方式:WEP-64/128,TKIP (WPA-PSK) and AES(WPA2-PSK)MCU内置TCP/IP协议栈3路UART串行接口(其中1路支持DMA 模式, 全功能串口,波特率最高支持921.6Kbps)SPI接口、I2S/PCM接口Digital Video端口高达24个GPIO口(部分GPIO将会和上述接口复用)全功能TCP/IP协议栈,TCP/IP传输带宽达到10Mbps以上支持三种带有定时自动唤醒功能的WiFi节能模式
linux wifi驱动开发 二,Linux 下wifi 驱动开发(二)—— WiFi模块浅析相关推荐
- linux网卡驱动离线安装_Linux下网卡驱动的安装
//Linux下网卡驱动的安装 //从intel网站上下载下来的Linux驱动是e1000-5.2.52.tar.gz rpm -qa|grep kernel- //source查看是否安装了这个包, ...
- Linux驱动_设备树下LED驱动
前言 学习完设备树基础知识后,完成设备树下LED驱动实验 一.修改设备树文件 在设备书根/节点下添加子节点led信息: alphaled {status = "okay";comp ...
- 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)
. 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...
- ti linux 开发环境,Ubuntu下搭建MSP430开发环境(MSPGCC)
上回讲到已经成功编译了源代码,生成了可执行文件,接下来就是要连接仿真器,下载可执行文件了.mspgcc中连接仿真其用的是mspdebug(功能上类似与openocd),连接成功之后它也能够充当gdbs ...
- linux网卡驱动离线安装_linux下网卡驱动安装全过程
方法一,用RPM包安装驱动程序方法: 1.将驱动程序文件bcm5700-.src.rpm复制到一个临时目录中,并在此目录中运行以下命令:rpm –ivh bcm5700-.src.rpm 2.运行以下 ...
- php连接mysql开发环境_Windows下安装PHP开发环境
一.Apache 因为Apache官网只提供源代码,如果要使用必须得自己编译,这里我选择第三方安装包Apache Lounge.首先下载并安装vc redist,这是Apache运行必需的一个组件.下 ...
- mac php开发套件_Mac 下搭建 PHP 开发环境的步骤
php 的本地开发环境,搭建很简单,成功启动三个进程就可以了,步骤如下: 1.安装服务器端编程语言:PHP,并启动 php-fpm 进程: php-fpm 2.安装 Web 服务器:Nginx; 2. ...
- linux编译c如何延时,linux和windows下,C/C++开发的延时函数,sleep函数
简介: 函数名: sleep 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned seconds); 在VC中使用带上头文件 #include 在gcc编译器中,使用 ...
- Android软件安全开发实践(下)
Android软件安全开发实践(下) Android开发是当前最火的话题之一,但很少有人讨论这个领域的安全问题.本系列将分两期,探讨Android开发中常见的安全隐患和解决方案.第一期将从数据存储.网 ...
- wifi linux 驱动分析,Linux 下wifi 驱动开发(二)—— WiFi模块浅析
一.什么是wifi 模块百度百科上这样定义: Wi-Fi模块又名串口Wi-Fi模块,属于物联网传输层,功能是将串口或TTL电平转为符合Wi-Fi无线网络通信标准的嵌入式模块,内置无线网络协议IEEE8 ...
最新文章
- 轻松获取LAMP,LNMP环境编译参数配置
- 让seo效果起死回生的妙招
- Ubuntu安装教程【超多图】
- EXCEL利用VBA自由控制图表绘图区大小
- 企业服务总线需求说明
- 成田机场坐access到品川_@马大哈们:北京有三座机场了,以后订票别选错哦!大兴机场今试飞...
- 二叉树已知先序和中序输出后序
- flink web ui提交任务时出现Server Respoonse Message-Internal server error
- lintcode-514-栅栏染色
- .ajax 自定义headers,Ajax设置自定义请求头的两种方法
- 基于Java+SpringBoot+vue+element实现家具购物销售网站详细设计和实现
- kodi刮削器 中文_教你PLEX插件播放4K不能使用KODI解码导致卡顿的解决办法
- java 下周的第一天,Java - 如何计算每周的第一天和最后一天
- Loadrunner请求自定义的http(json)文件and参数化
- 使用Sigar采系统信息
- 多糖类水凝胶构建制备介绍(瑞禧多糖水凝胶简述)
- ArcGIS水文分析实战教程(4)地形预处理
- Java企业微信号开发之微信网页授权和获取用户信息
- CSPJ2019T4(加工零件)题解
- 如何使用Angular Router在Angular 9应用程序中创建导航
热门文章
- 适合学生党和上班族的祛痘方法
- R语言数据可视化之美:专业图表绘制指南
- leetcode 739. Daily Temperatures 每日温度(中等)
- 微信公众号还适合投资和创业吗?
- 一次装系统惨痛的翻车经历
- 哪有什么太迟,世界多的是大器晚成
- Python爬虫120例之案例58,手机APP爬虫,“武器库”的准备and皮皮虾APP的测试
- 【AI视野·今日CV 计算机视觉论文速览 第158期】Mon, 23 Sep 2019
- The authentication type 10 is not supported
- 阿里技术专家甘盘:浅谈双十一背后的支付宝LDC架构和其CAP分析(含phil补充)