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
SDIO的传输模式有三种:
- SPI mode(required)
- 1-bit mode
- 4-bit mode
依据 SD 标准,所有的 SD(记忆卡)与 SDIO(外围)都必须支持 SPI mode,因此 SPI mode 是「required」。
可以看到,SDIO接口总共有七个引脚,分别是DAT0-3(数据),CLK(时钟),CMD(命令),VIO(电源)。
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函数。
5、SDIO总线协议
SDIO总线 和 USB总线 类似,SDIO也有两端,其中一端是HOST端,另一端是device端。所有的通信都是由HOST端发送命令开始的,Device端只要能解析命令,就可以相互通信。 对于SDIO总线,它的HOST端是开发板的控制器,而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
原文链接:https://blog.csdn.net/qq_27809619/article/details/120281476
————————————————