linux sdio wifi驱动知识总结(一)

这两周在tq imx6ul下调一个迈威88w8801sdio wifi模组,最后尴尬的发现tq imx6ul并不支持sdio wifi。至于不支持的原因会在后面简单说一下,小弟才疏学浅如果有大佬在tqimx6ul上成功移植过sdio wifi,也请多多指教,好了现在进入正题吧。

首先我们要搞清楚SDIO WIFI是什么,SDIO WIFI首先是一个网络设备,然后才是一个块设备。一个网络设备驱动程序,必须要具有的是收包发包函数、网络设备注册函数。接下来参照宋宝华《Linux设备驱动开发详解-基于最新的Linux4.0内核》简单介绍一下网络设备驱动程序。

Linux对网络设备驱动定义了4个层次,这4个层次为网络协议接口层、网络设备接口层、提供实际功能的设备驱动功能层和网络设备与媒介层。

(1)网络设备协议接口层向网络层协议提供统一的数据包发送接口,不论上层协议是ARP还是IP,都通过dev_queue_xmit()函数发送数据,并通过netif_rx函数接收数据。这一层的存在使得上层协议独立于具体的设备.

(2)网络设备接口层向协议层提供统一的用于描述具体网络设备属性和操作的结构体net_deive,该结构体是设备驱动功能层中各函数的容器。实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构。

(3)设备驱动功能层的各函数是网络设备接口层net_device数据结构的具体成员,是驱使网络设备硬件完成相应动作的程序,它通过hard_start_xmit()函数启动发送操作,并通过网络设备上的中断触发接收操作。

(4)网络设备与媒介层是完成数据包发送和接收的物理实体,包括网络适配器和具体的传输媒介、网络适配器被设备驱动功能层中的函数在物理上驱动。对于Linux而言,网络设备和媒介可以是虚拟的。

在sdio wifi涉及到网络设备部分的代码,基本上也是按照Linux网络设备驱动框架。对Linux网络设备驱动的介绍就到这,如果后面还涉及到的话再深入。接下来介绍sdio协议。

sdio卡(Secure Digital Input and Output)安全数字输入输出卡,是基于并且兼容sdio内存卡的。它的兼容性包括机械、电气、电源、信号传递和软件。sdio卡专注于提供高速数据i/o口应用在低功耗的消费类移动电子产品中。

sdio卡分为两种,全速SDIO卡和低速SDIO卡。全速SDIO卡支持SPI、1位和4位SD传输模式,时钟频率在0~25MHZ之间。全速SDIO卡传输速率最快能达到10M/秒。低速SDIO卡仅需支持SPI和1位SD传输模式,4位SD传输模式是可选的,时钟频率仅在0~400KHZ之间。低速卡的目标应用是以最小的硬件开支支持低速I/ O能力。低速卡支持类似调制解调器、条码扫描仪和GPS接受器等应用。对“组合”卡(存储器+ SDIO)而言,全速和4位操作对卡内存储器和SDIO部分都是强制要求的。在博文中我只对这两周调试sdio wifi时所涉及到的知识做一次总结,希望能再加深一下自己对sdio wifi的理解,估计在以后很长一段时间自己也不会再搞sdio wifi了,写个博文用作备忘也是极好的。首先要配置Linux内核支持SDIO WIFI:

make menuconfig

Networking support->

Wireless->

配置如图所示:

Device driver->

MMC/SD/SDIO card support ->

配置如图所示

比较关键的选项是Networking support->Wireless下的 cfg80211 wireless extensions compatibility

和Device driver->MMC/SD/SDIO card support 下的SDIO UART/GPS class support  。

如果不按照上面的配置的话,装载sdio wifi的驱动时将会报有关80211的错误和sdio_claim_host()函数找不到的错误。

因为刚才说了,sdiowifi首先是一个网络设备,其次是一个块设备, 所以在Linux下需要mmc子系统的支持。

原文:https://blog.csdn.net/qq_23235811/article/details/80554239

原文地址:https://www.cnblogs.com/Ph-one/p/12434612.html

时间: 2024-10-10 16:23:56

linux sdio wifi驱动知识总结(一)的相关文章

Linux 下wifi 驱动开发(三)—— SDIO接口WiFi驱动浅析

SDIO-Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈.可以实现用户主平台数据通过SDIO口到无线网络之间的转换.SDIO具有数据传输快,兼容SD.MMC接口等特点. 对于SDIO接口的wifi,首先,它是一个sdio的卡的设备.然后具备了wifi的功能.所以.注冊的时候还是先以sdio的卡的设备去注冊的. 然后检測到卡之后就要驱动他的wifi功能了.显然,他是用sdio的协议,通过发命令和数据来控制的.以

Linux 下wifi 驱动开发(一)—— WiFi基础知识解析

 一.WiFi相关基础概念 1.什么是wifi  我们看一下百度百科是如何定义的: Wi-Fi是一种可以将个人电脑.手持设备(如pad.手机)等终端以无线方式互相连接的技术,事实上它是一个高频无线电信号.[1]  无线保真是一个无线网络通信技术的品牌,由Wi-Fi联盟所持有.目的是改善基于IEEE 802.11标准的无线网路产品之间的互通性.有人把使用IEEE 802.11系列协议的局域网就称为无线保真.甚至把无线保真等同于无线网际网路(Wi-Fi是WLAN的重要组成部分). wifi 英文全称

Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析

转: http://blog.csdn.net/zqixiao_09/article/details/51146149 前面学习了SDIO接口的WiFi驱动,现在我们来学习一下USB接口的WiFi驱动,二者的区别在于接口不同.而USB接口的设备驱动,我们前面也有学习,比如USB摄像头驱动.USB鼠标驱动,同样都符合LinuxUSB驱动结构: USB设备驱动(字符设备.块设备.网络设备) | USB 核心 | USB主机控制器驱动 不同之处只是在于USB摄像头驱动是字符设备,而我们今天要学习的Wi

linux安装wifi驱动,开热点

本次安装的debian系统安装的时候提示wifi硬件需要安装非自由固件才能运行,并告诉本硬件要安装的固件名字叫做iwlwifi-2030-6.ucode.是iwlwifi驱动适配我的wireless硬件型号2230的驱动. 系统安装完毕之后可以使用apt-get install iwlwifi直接安装.之后可以正常使用wifi了.但是使用的是intel-wirelees网卡的通用wifi驱动.我想安装本网卡型号的最新驱动.方法如下: 1.使用lspci命令,查看本网卡型号为2230,去https

Linux SDIO总线驱动(二)

驱动: 以SDIO为例其会采用mmc_attach_sdio来实现驱动和设备的匹配,其本质还是根据sdio_bus的匹配规则来实现匹配.在mmc_attach_sdio中首先是mmc匹配一个bus,即采用何种bus来进行mmc bus来处理host.在这里需要理解一点就是在SDIO中,对于SD卡存储器mmc为实体设备,而对于非SD卡存储器,如SDIO接口的设备,则mmc则表征为bus,这个比较重要.除了mmc bus外还存在SDIO_BUS. /* * Starting point for SD

Linux SDIO总线驱动(一)

SDIO卡 SDIO卡是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备,目前根据SDIO协议的SPEC,SDIO接口支持的设备总类有蓝牙,网卡,电视卡等. SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令.由于这个,SDIO和SD卡规范间的一个重要区别是增加了低速标准,低速卡的目标应用是以最小的硬件开始来支持低速I/O能力.低速卡支持类似调制解调

SDIO 接口的wifi驱动

1.sdio接口层解析 SDIO总线   SDIO总线 和 USB总线 类似,SDIO也有两端,其中一端是HOST端,另一端是device端.所有的 通信 都是 由HOST端 发送 命令 开始的,Device端只要能解析命令,就可以相互通信. CLK信号:HOST给DEVICE的 时钟信号,每个时钟周期传输一个命令. CMD信号:双向 的信号,用于传送 命令 和 反应. DAT0-DAT3 信号:四条用于传送的数据线. VDD信号:电源信号. VSS1,VSS2:电源地信号. SDIO热插拔原理

WIFI基本知识整理

WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总结和整理,便于后续的学习.因为无线网络中涉及术语很多,并且许多协议都是用英文描述,所以有些地方翻译出来会有歧义,这种情况就直接英文来描述了. 主要内容: 一.基本概述 二.实践基础 三.一些原理 四.补充 五.其它 一.基本概述 ============================ 1.有线和无线网络 目前有线网络中最著名的是以太网(Ethenet),但是无线网络WLAN是一个很有前景的发展领域,虽然可能不会

【智能家居篇】wifi驱动的理解(3)——usb接口在wifi模块中的角色

转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 上一篇文章已经提到USB接口在wifi模块中的最重要两个函数是usb_read_port()和usb_write_port().那它们是怎么和wifi扯上关系的呢?我们可以从以下三个方面去分析: 1.首先需要明确wifi模块是USB设备,主控(CPU)端是USB主机: 2.USB主机若需要对wifi模块进行数据的读写时,就必须经过USB接口: 3.既然涉及到数据的读写操作,必然要用相应的读写函数,那么usb_re