wifi linux 驱动分析,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 和InfraAP是将wifi模块当路由器使用,这样手机和电脑就可以直接连接wifi模块了。
Infra 是将wifi模块当基础设备使用,用于连接别的路由器。
wifi linux 驱动分析,Linux 下wifi 驱动开发(二)—— WiFi模块浅析相关推荐
- 【linux驱动分析】之dm9000驱动分析
[linux驱动分析]之dm9000驱动分析(一):dm9000原理及硬件分析 [linux驱动分析]之dm9000驱动分析(一):dm9000原理及硬件分析 [linux驱动分析]之dm9000驱动 ...
- 【linux驱动分析】之dm9000驱动分析(三):sk_buff结构分析
[linux驱动分析]之dm9000驱动分析(一):dm9000原理及硬件分析 [linux驱动分析]之dm9000驱动分析(二):定义在板文件里的资源和设备以及几个宏 [linux驱动分析]之dm9 ...
- 【SemiDrive源码分析】【MailBox核间通信】46 - Android侧 RPMSG_IPCC_RPC驱动分析(下) 之 RPMSG_IPCC_RPC驱动初始化、数据收发流程分析
[SemiDrive源码分析][MailBox核间通信]46 - Android侧 RPMSG_IPCC_RPC驱动分析(下) 之 RPMSG_IPCC_RPC驱动初始化.数据收发流程分析 三. rp ...
- Linux spi驱动分析(四)----SPI设备驱动(W25Q32BV)
一.W25Q32BV芯片简介 W25X是一系列SPI接口Flash芯片的简称,它采用SPI接口和CPU通信,本文使用的W25Q32BV容量为32M,具体特性如下: 1.1.基本特性 该芯片最大支持10 ...
- linux spidev 应用_Linux下SPI驱动的移植和应用程序的测试
Linux2.6.32下SPI驱动的移植如下图所示: 下面需要修改部分内核代码,具体操作如下: 1. 修改arch/arm/mach-s3c2440/mach-mini2440.c文件 在inclu ...
- 【linux驱动分析】misc设备驱动
misc设备驱动.又称混杂设备驱动. misc设备驱动共享一个设备驱动号MISC_MAJOR.它在include\linux\major.h中定义: #define MISC_ ...
- 孟宁的Linux内核分析,Linux内核分析-MOOC小结
Linux内核分析课程小结 目录: 在学习内核时一定要不断动手实验,才能更好的理解内核中的运作,之后才能学以致用. Linux内核分析(孟宁老师)课件列表: 短短几周过去了,但是内核学习却才开始... ...
- 免费分享:5本安卓开发经典书籍,Android 7编程入门经典(第4版),Android底层驱动分析和移植,底层驱动分析和移植
1.Android 7编程入门经典(第4版) 使用Android Studio 2 PDF 下载 下载地址: http://www.askwinds.com/r-c/down-info-02/579 ...
- linux前景分析,linux运维发展前景分析
原标题:linux运维发展前景分析 linux运维是随着近年来互联网的快速发展,相关岗位的需求量不断在增加,想从事相关行业的朋友也越来越多.很多人在选择学习linux运维之前,都会担心未来前景问题.上 ...
最新文章
- 二极管7种应用电路详解之五
- “金星生命论”乌龙事件新进展:那只是二氧化硫而已
- Linux C编程--进程间通信(IPC)5--System V IPC 机制2--信号量
- 树——通用树结点数目、高度和度数的实现
- 安装JDK时提示 IllegalArgumentException:Invalid characters in hostname的解决方法
- 隐马尔可夫模型中的Viterbi算法zz
- 穷举 百文百鸡
- 多核编程与单核多线程编程
- common lisp 学习第三天 函数、注释
- java uipath_10.3 UiPath如何调用Java
- 计算机算法设计与分析 递归实现快速排序和随机化实现快速排序
- u-boot之添加一块新板子的支持
- UVA750 UVALive5358 8 Queens Chess Problem题解
- python 生成嵌套字典
- 贝叶斯网络在疾病预测诊断中的应用与优化
- MDM页面UI升级介绍
- 解决elementui中多层弹窗el-dialog遮挡现象
- 对链表进行插入排序。从第一个元素开始,该链表可以被认为已经部分排序。每次迭代时,从输入数据中移除一个元素,并原地将其插入到已排好序的链表中。
- Clojure学习03:数据结构(集合)
- the unfamiliar words and sentences of《The Great Gatsby》1
热门文章
- html5仿浏览器,前端H5-仿QQ浏览器for mac之动画效果(一)
- 8086汇编4位bcd码_逆向工程——汇编基础[一]
- selenium定位方法(java实例)
- linux快速还原oracle,linux下恢复误删除oracle的数据文件
- java 2维数据便利_计算机等级考试二级java数组辅导
- python在实际中的作用_Python面向对象中__init__的实际作用是什么?
- 表变量是什么_为什么要使用二级指针?
- 【设计思想解读开源框架】java监听模式和观察者模式
- 升职加薪必看!如何试出一个Java开发者真正的水平
- 使用Pytorch从零搭建高精准度实时目标检测框架