1、WiFi driver驱动框架

  • 应用层
  • BSD socket层
  • TCP/IP协议层
  • IP层
  • 网络设备层
  • MAC层(802.11)
    (包括扫描、认证、关联、省电状态)
  • 设备驱动层

2、SDIO-Wifi模块

1、SDIO-Wifi模块介绍

SDIO-Wifi模块是基于SDIO接口的符合WiFi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户主平台数据通过SDIO口到无线网络之间的转换。SDIO具有传输数据快,兼容SD、MMC接口等特点。

对于SDIO接口的WiFi,首先,它是一个SDIO的卡设备,然后具备了WiFi的功能。所以,注册的时候还是先以sdio设备去注册,然后检测到卡之后再去实现它的wifi功能。显然,他是用SDIO的协议,通过发命令和数据来控制实现WiFi功能。

SDIO 故名思义,就是 SD 的 I/O 接口(interface)的意思,不过这样解释可能还有点抽像。更具体的说明,SD 本来是记忆卡的标准,但是现在也可以把 SD 拿来插上一些外围接口使用,这样的技术便是 SDIO

所以 SDIO 本身是一种相当单纯的技术,透过 SD 的 I/O 引脚来连接外围,并且透过 SD 上的 I/O 数据引脚与这些外围传输数据,而且 SD 协会会员也推出很完整的 SDIO stack 驱动程序,使得 SDIO 外围(我们称为 SDIO 卡)的开发与应用变得相当热门。目前常见的 SDIO 外围(SDIO 卡)有:

  • Wi-Fi card(无线网络卡)
  • CMOS sensor card(照相模块)
  • GPS card
  • GSM/GPRS modem card
  • Bluetooth card

SD卡与SDIO卡的异同

1.SD卡使用的是SD卡协议,而SDIO卡使用的是SDIO协议;协议不一样,初始化/读写方式都不一样
2.ARK1600控制器既支持SD卡也支持SDIO卡,在驱动上完全可以做到同一个卡槽既支持SD卡也支持SDIO卡,甚至combo卡,因此在驱动上有个判断过程,判断插进来的是SD卡还是SDIO卡
3.两者的引脚定义不一样,尽管引脚个数都一样

2、SDIO的传输模式有三种:

  • SPI mode(required)
  • 1-bit mode
  • 4-bit mode

依据 SD 标准,所有的 SD(记忆卡)与 SDIO(外围)都必须支持 SPI mode,因此 SPI mode 是「required」。

3、SDIO的硬件电路

可以看到,SDIO接口总共有七个引脚,分别是DAT0-3(数据),CLK(时钟),CMD(命令),VIO(电源)。

4、MMC子系统框架

这里的MMC子系统框架包含了Linux的SDIO驱动架构,所以姑且将其看作SDIO的驱动架构。

linux/driver/mmc目录下有三个子目录:card 、core、host,分别表示区块层、核心层、主机控制层。其中card层、core层是Linux封装好的、标准的东西,不需要修改,需要修改的是host层,这一层需要驱动开发工程师根据平台来完成。

Linux MMC子系统主要分成三个部分:

  • MMC核心层:完成不同协议和规范的实现,为host层和设备驱动层提供接口函数。MMC核心层由三个部分组成:MMC,SD和SDIO,分别为三类设备驱动提供接口函数;
  • Host 驱动层:针对不同主机端的SDHC、MMC控制器的驱动;
  • Client 驱动层:针对不同客户端的设备驱动程序。如SD卡、T-flash卡、SDIO接口的GPS和wi-fi等设备驱动。

wifi驱动怎么知道使用那个sdio控制器?

读到这里不知道你们是不是有疑问,我们的SOC上有很多的sdio控制器,有些sdio控制器接emmc flash,有些接wifi模块,wifi驱动怎么知道我接在那个sdio控制器上呢?
其实是在wifi厂商提供的驱动里面会注册一个sdio_register_driver,当上电的时候我的emmc驱动会去扫描sdio的外围设备,当确认扫描到设备的时候会去读取设备的id即wifi模块的pid和vid,如果设备id匹配上了之后会调用使用sdio_register_driver注册进去的probe函数,从而确认我们的设备是接到那个sdio设备上。

usb wifi和sdio的wifi也是一样的,wifi模块插入usb口的时候,会读取usb模块的vid和pid,如果读取到的vid和pid和使用usb_register注册进去的设备的vid和pid是一样证明驱动匹配上了,然后调用probe函数。

原文链接:https://blog.csdn.net/qq_27809619/article/details/120281476

5、SDIO总线协议

SDIO总线 和 USB总线 类似,SDIO也有两端,其中一端是HOST端,另一端是device端。所有的通信都是由HOST端发送命令开始的,Device端只要能解析命令,就可以相互通信。 对于SDIO总线,它的HOST端是开发板mmc控制器,而device端则是各种带SDIO接口的模块,比如SDIO WiFi模块。

SDIO协议是由SD卡协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令。由于这个,SDIO和SD卡规范间的一个重要区别就是增加了低速标准。低速卡的目标应用是以最小的硬件来支持低速I/O能力。

SD总线通信是基于指令和数据比特流,起始位开始和停止位结束。SD总线通信有三个元素:

  • Command:由host发送到卡设备,使用CMD线发送;
  • Response:从card端发送到host端,作为对前一个CMD的相应,通过CMD线发送;
  • Data:即能从host传输到card,也能从card传输到host,通过data线传输。

详细的代码注册流程分析请参考:https://blog.csdn.net/weixin_45244289/article/details/110002248

https://blog.csdn.net/Enosji/article/details/121513074

WiFi模块 driver驱动框架(sdio接口、pcie接口)相关推荐

  1. 基于I.MX6UL平台的WIFI模块AP6214A 驱动移植

    基于I.MX6UL平台的WIFI模块AP6214A 驱动移植 IoT-6ULX简要介绍 IoT-6ULX,主要面向Internet Of Things应用,该产品集成了 ARM Cortex-A7 9 ...

  2. platform框架--Linux MISC杂项框架--Linux INPUT子系统框架--串行集成电路总线I2C设备驱动框架--串行外设接口SPI 设备驱动框架---通用异步收发器UART驱动框架

    platform框架 input. pinctrl. gpio 子系统都是 Linux 内核针对某一类设备而创建的框架, input子系统是管理输入的子系统 pinctrl 子系统重点是设置 PIN( ...

  3. WIFI模块RTL8723BU驱动移植

    这里写目录标题 1.硬件平台 2.移植步骤 1.硬件平台 正点原子imx6ull开发板,RTL8723BU模块,很多板载的就是这种,这个模块还有蓝牙功能.一般有USB接口的,sdio接口的,串口wif ...

  4. windows10 WIFI功能不能使用了、没有WIFI模块或驱动安装失败

    因为使用360什么系统修复之类的功能,手欠更新了网卡驱动.结果直接导致WIFI功能消失了. 例如下面这样,WIFI图标变成了一个地球图标了,而且打开之后没有WIFI 信息. 或者设备管理器查看,是这个 ...

  5. IOT-OS之RT-Thread(十五)--- SDIO设备对象管理 + AP6181(BCM43362) WiFi模块

    文章目录 一.AP6181 Wi-Fi模块简介 1.1 AP6181 硬件接口 1.2 AP6181 驱动层级 二 SDIO设备对象管理 2.1 SDIO Bus Driver 2.1.1 Host ...

  6. rt-thread SDIO驱动框架分析(SD卡驱动\SD Nand驱动)

    rt-thread SDIO驱动框架分析之SD卡驱动 文章目录 rt-thread SDIO驱动框架分析之SD卡驱动 1. 前言 2. SDIO通用驱动框架介绍 3. 文件架构分析 4. SDIO设备 ...

  7. linux 7260驱动程序,Debian 7.6安装Intel Wireless 7260 wifi模块驱动和固件的方法

    0.内核以及发行版 Version 信息 Debian 7.6 Wheezy Linux fyp-tp 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_ ...

  8. Android 开机自动加载新wifi模块驱动

    在android ROM 开发中经常会遇到产品更换wifi模块的情况,一般常见的wifi驱动android内核中自带都有,无需过多调试,要是碰上内核中没有的就需要根据厂商提供的驱动进行移植. wifi ...

  9. Linux 开发板4G转WiFi热点 手机连接热点上网(三 WiFi模块的移植及AP的建立)

    这里对WiFi模块的驱动就不做详细介绍,本篇文章可能会涉及两款WiFi模块,一个是USB接口的WiFi模块,一个是SDIO接口的wifi模块,即AP6212,平台可能涉及爱特梅尔和三星的4418两个平 ...

  10. 驱动框架2——内核驱动框架中LED的基本情况、初步分析

    以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除. 一.内核驱动框架中LED的基本情况 1.相关文件 (1)drivers/leds目录 驱动框架规定的LED这种硬件的驱动应该待的地方. (2 ...

最新文章

  1. 通过Mellanox ConnectX NIC使用XDP加速
  2. 智能车竞赛B车模车轮毂断裂原因所在
  3. 关于文章 Generating Impact-Based Summaries... By Mei qiaozhu
  4. [转]c++之菱形继承
  5. django的from组件
  6. 【今晚7点半】:华为云在数字人领域的技术探索与实践
  7. cv2 画多边形不填充_你不知道的4种方法:python方法绘制扇形
  8. 大前端快闪二:react开发模式 一键启动多个服务
  9. 小程序 switch 自定义_微信小程序自定义组件问题一:获取组件DOM元素
  10. 三维重建| iPad Pro2020 专业3D扫描应用程序 3D Scanner App(App Store可免费下载)
  11. python:实现恩尼格玛密码机算法(附完整源码)
  12. 移动和嵌入式人体姿态估计(Mobile and Embedded Human Pose Estimation)
  13. OpenCASCADE(OCC)读取STEP模型文件到XDE中
  14. ubunto18.04更新源详细操作
  15. C++ bit field 位域/位段
  16. 第7章第10节:分割式布局:纵向居中分割版面 [PowerPoint精美幻灯片实战教程]
  17. MyBatis入门(从零到一)
  18. outlook规则导出_如何在Outlook和Gmail之间导入和导出联系人
  19. 呆B笑话集锦大全(超强爆笑)
  20. Php ui 3dmax,Unity3d和3dMax美工功能简介

热门文章

  1. 【组合数学】 牡牛和牝牛
  2. 经典书籍《打开量化投资的黑箱》阅读心得
  3. RQNOJ 169 最小乘车费用
  4. 超全面!完全没有设计基础的新手如何做好PPT配色?(附神器)
  5. 严选chat_拔草 | 网易严选的零食,真的“严选”了吗?
  6. 非线性鲁棒控制器_Sliding Mode_滑模控制
  7. 微信抢红包微信 PHP代码实现
  8. 阿里云Linux安装软件镜像源
  9. 大牛直播SDK-Windows推送端使用说明
  10. Robotframework+Appium环境搭建