转:https://www.cnblogs.com/hellokitty2/p/10981084.html SDIO接口 一、SDIO简介 SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO...SDIO1.0标准定义了两种类型的SDIO卡: 1.全速的SDIO卡,传输率可以超过100Mbps; 2.低速的SDIO卡,支援的时脉速率在0至400KHz之间。...二、SDIO总线 SDIO总线和USB总线类似,SDIO总线也有两端,其中一端是主机(HOST)端,另一端是设备端(DEVICE),采用HOST- DEVICE这样的设计是为了简化DEVICE的设计,所有的通信都是由...在SDIO总线定义中,DAT1信号线复用为中断线。在SDIO的1BIT模式下DAT0用来传输数据,DAT1用作中断线。...三、SDIO命令 SDIO总线上都是HOST端发起请求,然后DEVICE端回应请求,其中请求和回应中会包含数据信息: 1.
总线,总线,总要陷进里面。这世界上的信号都一样,但是总线却成千上万,让人头疼。 总的来说,总线有三种:内部总线、系统总线和外部总线。...布线简单:仅需使用2条IIC总线或3条SPI总线 SDIO SDIO是SD型的扩展接口,除了可以接SD卡外,还可以接支持SDIO接口的设备,插口的用途不止是插存储卡。...SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令。...高速卡支持网卡,电视卡还有“组合”卡等,组合卡指的是存储器+SDIO。 SDIO和SD卡的SPEC间的又一个重要区别是增加了低速标准。SDIO卡只需要SPI和1位SD传输模式。...对组合卡来说,全速和4BIT操作对卡内存储器和SDIO部分都是强制要求的。 在非组合卡的SDIO设备里,其最高速度要只有达到25M,而组合卡的最高速度同SD卡的最高速度一样,要高于25M。
4、MMC子系统框架 这里的MMC子系统框架包含了Linux的SDIO驱动架构,所以姑且将其看作SDIO的驱动架构。...linux/driver/mmc目录下有三个子目录:card 、core、host,分别表示区块层、核心层、主机控制层。...Linux MMC子系统主要分成三个部分: MMC核心层:完成不同协议和规范的实现,为host层和设备驱动层提供接口函数。...原文链接:https://blog.csdn.net/qq_27809619/article/details/120281476 5、SDIO总线协议 SDIO总线 和 USB总线 类似,SDIO也有两端...对于SDIO总线,它的HOST端是开发板mmc控制器,而device端则是各种带SDIO接口的模块,比如SDIO WiFi模块。
,PCIe规范中引入,比较快 – endpoint,x86主板上内置设备的总线号一般为0,而外挂EP的总线号一般从1开始 Figure 3-1 Type0 Header Figure 3-2 Type1...,所以总线编号是8位。...但对于大型系统而言,这是不够的,所以,引入了域的概念,每个PCI域可以拥有最多256个总线,每个总线上可支持32个设备,所以设备号是5位,而每个设备上最多可有8种功能,所以功能号是3位 – I210一般连接在...pcibios_init x86 BIOS专门提供了针对PCI总线的操作,这些操作里就包括了总线枚举的整个过程,Linux kernel中的宏CONFIG_PCI_BIOS。...在系统加电以后自检时,就会完成对PCI总线的枚举,之后Linux对PCI配置空间的访问都是通过BIOS调用的形式进行,提供有这些功能和服务的BIOS就称之为PCI BIOS 。
SDIO接口的WIFI: 1、WIFI是一个sdio卡设备 2、具备wifi功能 SDIO接口的WIFI驱动就是在WIFI外面套上一个SDIO驱动的外壳 SDIO部分代码结构: drivers/...CORE 层完成: 不同协议和规范的实现 为 HOST 层的驱动提供了接口函数 完成了 SDIO 总线注册 对应 ops 操作 以及支持 mmc 的代码 host 目录(HOST 层)是根据不通平台而编写的...| | – dongle | | – include | | – shared | | – wl 这里主要内容到bcmsdio,dhd和wl三个目录下,驱动的入口在dhd/sys/dhd_linux.c...[/include/linux/mmc/host.h]SDIO接口驱动的实现,数据结构体 struct mmc_host 用来描述卡控制器 struct mmc_card 用来描述卡 struct.../devices cat uevent 扫描mmc硬件总线,也就是检测mmc硬件总线上是否有挂载card。
大家好,又见面了,我是你们的朋友全栈君 1、sdio接口层解析 SDIO总线 SDIO总线和USB总线类似,SDIO也有两端,其中一端是HOST端,另一端是device端。.../include/linux/mmc/host.h struct mmc_host 用来描述卡控制器 struct mmc_card 用来描述卡 struct mmc_driver 用来描述...(host->card->sdio_func[i]); //将sdio功能设备挂载到sdio_bus_types总线 附:mmc_card结构体中sdio_func[]赋值为分配的sdio_fun结构体...Sdio设备的驱动由sdio_driver结构体定义,sdio_register_driver函数将该设备驱动挂载到sdio_bus_type总线上。...If_sdio_probe函数分析 Linux网络设备驱动中的重要数据结构:struct net_device 和 struct net_device_ops sdio_register_driver
2 rt_spi_rw案例2.1 案例说明案例功能:基于Linux-RT系统,演示T3/A40i(ARM Cortex-A7)与PGL25G/Spartan-6(FPGA)处理器之间的SPI通信(单线模式...ARM端实现SDIO Master功能a.打开SDIO设备节点,如:/dev/generic_sdio0。b.发送数据至SDIO总线,以及从SDIO总线读取数据。c.打印发送和接收速率。...b.SDIO Master发起读数据时,FPGA从BRAM读取2KByte通过SDIO总线传输给SDIO Master。...图 6 ARM端程序流程图测试结果本次测试指定SDIO总线通信时钟频率为25MHz(最高50MHz),则理论通信速率为:(25 x 4 / 8)MB/s = 12.5MB/s。...ARM端功能a)基于Linux子系统V4L2。b)通过CSI总线,采集指定帧数数据。c)计算总耗时。d)打印平均采集速率,并校验最后一帧图像的数据。
为了此目的,就引入了I2S(inter-IC sound)数字总线协议接口。 I2S规范 I2S总线只能用来处理audio data,而别的信号比如控制信号,编码信号则交给别的模块处理。
2、SDIO总线 SDIO总线 和 USB总线 类似,SDIO也有两端,其中一端是HOST端,另一端是device端。...卡 4、SDIO命令 SDIO总线上都是HOST端发起请求,然后DEVICE端回应请求。...[ /include/linux/mmc/host.h ] struct mmc_host 用来描述卡控制器 struct mmc_card 用来描述卡 struct mmc_driver...HOST层驱动分析在 前面的系列文章中 Linux SD卡驱动开发(二) —— SD 卡驱动分析HOST篇 有详细阐述,下面只简单回顾一下一些重要函数处理 1、编写Host层驱动 这里参考的是...通过sdio_register_driver函数将SDIO设备驱动加载进内核,其实就是挂载到sdio_bus_type总线上去。
在SDIO总线定义中,DAT1信号线复用为中断线。在SDIO的1BIT模式下DAT0用来传输数据,DAT1用作中断线。...硬件接口 2.1 SDIO 总线 SDIO总线 和 USB总线 类似,SDIO也有两端,其中一端是HOST端,另一端是device端。...命令 SDIO总线上都是HOST端发起请求,然后DEVICE端回应请求 SDIO 命令由6个字节(48位)组成 Command:用于开始传输的命令,是由HOST端发往DEVICE端的。...Linux SDIO WIFI驱动 SDIO 接口的 wifi,首先,它是一个 sdio 卡 设备,然后具备了 wifi 的功能,所以 SDIO 接口的 WiFi 驱动就是在 wifi 驱动外面套上了一个...包括 core.c host.c stdio.c 核心层的功能: 不同协议和规范的实现 为 HOST 层的驱动提供了接口函数 完成了 SDIO 总线注册 对应 ops 操作 支持 mmc 的代码 host
,其数据的传输又与SDIO_D[7:0]有关(最高可以配置8位数据总线宽度)。...复位情况下,SDIO_D0用于数据传输,初始化后主机可以改变数据总线的宽度通过(ACMD6命令设置)。 SDIO与外围设备的命令与响应均是通过SDIO_CMD来完成的。...这里我们可以调用SDIO_SendCommand()这个库函数,用来通过SDIO总线的SDIO_CMD以SDIO_CK这样的频率,对外围设备如SD卡发送CMD命令,并且可以获取响应数据。...其实这里对SD卡的初始化只是为了激活SD卡,开启SDIO总线与SD卡之间的通信。真正的初始化需要一大串命令。...②、唤醒完了以后,我们就可以通过SDIO总线,给SD卡发送命令。
下面进入今天的话题——总线、设备和驱动模型的探究。 设想一个叫 GITCHAT 的网卡,它需要接在 CPU 的内部总线上,需要地址总线、数据总线和控制总线,以及中断 pin 脚等。 ?...没错,Linux 内核里就是运用了这种设计思想去对设备和驱动进行适配隔离的,只不过在内核里我们不叫做适配层,而取名为总线,意为通过这个总线去把驱动和对应的设备绑定一起,如图: ?...基于这种设计思想,Linux 把设备驱动分为了总线、设备和驱动三个实体,这三个实体在内核里的职责分别如下: ?...最底层是不同板子的板级文件代码,中间层是内核的总线,最上层是对应的驱动,现在描述板级的代码已经和驱动解耦了,这也是 Linux 设备驱动模型最早的实现机制,但随着时代的发展,就像是人类的贪婪促进了社会的进步一样...完美的 Linux 怎么会允许这样的事情存在,于是乎,设备树(DTS)就登向了历史舞台,下一篇内容将探讨设备树的实现原理和用法。 【部分内容整理于宋宝华老师课程】
//本文主要参考《野火Linux实战开发指南》 上次跟大家分享了设备模型的一些东西,包括总线、设备、驱动等的一些概念,还有他们之间的联系。...因为在Linux当中,对于I2C、SPI、USB这些常见类型的物理总线来说,Linux内核会自动创建与之相应的驱动总线,因此I2C设备、SPI设备、 USB设备自然是注册挂载在相应的总线上。...它们也就没有相应的物理总线,比如led、rtc时钟、蜂鸣器、按键等等,Linux内核将不会为它们创建相应的驱动总线。...为了使这部分设备的驱动开发也能够遵循设备驱动模型,Linux内核引入了一种虚拟的总线——平台总线(platform bus)。...> #include #include #include #include <linux/fs.h
SDIO总线介绍SDIO(Secure Digital lnput and Output),即安全数字输入输出接口。SDIO总线协议是由SD协议演化而来,它主要是对SD协议进行了一些扩展。...SDIO总线主要是为SDIO卡提供一个高速的I/O能力,并伴随着较低的功耗。SDIO总线不但支持SDIO卡,而且还兼容SD内存卡。...支持SDIO的设备比如手机和相机不仅能支持SD卡,TF卡,随着SDIO硬件设备的扩充SDIO总线的外围能够支持更多的SDIO设备比如Bluetooth,WIFI,GPS,Camera sensor等,它们的识别过程跟...ARM端sdio_test案例实现SDIO Master功能,具体如下:(1)打开SDIO设备节点,如:/dev/generic_sdio0;(2)发送数据至SDIO总线,以及从SDIO总线读取数据;(.../sdio_test -h执行如下命令,ARM通过SDIO总线写入随机数据至FPGA DRAM,然后读出数据、进行数据校验,同时打印SDIO总线读写速率和误码率,如下图所示。Target#.
支持三种不同的数据总线模式:1位(默认)、4位和8位。...SDIO总线和USB总线类似,SDIO总线也有两端,其中一端是主机(HOST)端,另一端是设备端(DEVICE),采用HOST- DEVICE这样的设计是为了简化DEVICE的设计,所有的通信都是由HOST...SDIO的HOST可以连接多个DEVICE。 SDIO信号和接口 复位后SDIO_D0用于数据传输。初始化后主机可以改变数据总线的宽度(通过ACMD6命令设置)。...在SDIO总线定义中,DAT1信号线复用为中断线。在SDIO的1BIT模式下DAT0用来传输数据,DAT1用作中断线。...而如果收到长响应,则依次存放在SDIO_RESP1~SDIO_RESP4里面 SDIO数据定时器寄存器 SDIO_DTIMER 寄存器用于存储以卡总线时钟(SDIO_CK)为周期的数据超时时间,
card / SDIO将会取代GPIO式的SPI接口 总线 与USB总线类似,有两端,host端,device端,host端发命令,device端解析命令,然后可以互通 CLK:host...热插拔原理 方法:设置定时器检查/插拔中断检测 硬件:例如GPG10(EINT18)用于检测SD卡,GPG10为高电平,即未插入SD卡,GPG10为低电平,即插入了SD卡 命令 总线上...驱动) Linux-5.4.rc8源码 文件路径 /include/linux/mmc/host.h struct mmc_host SD控制器结构定义 struct mmc_card...帧的数据,主机接收802.3帧,固件负责转换 天线收到数据,firmware处理放在buffer中,产生中断,主机收到中断去读取buffer数据 1)注册&&匹配 /include/linux...); 总线函数 /include/linux/device.h /** * struct bus_type – The bus type of the device * * @
是因为windows自带了USB总线驱动程序, USB总线驱动程序负责: 识别USB设备,给USB设备找到对应的驱动程序 新接入的USB设备的默认地址(编号)是0,在未分配新编号前,PC主机使用0地址和它通信...然后USB总线驱动程序都会给它分配一个地址(编号) PC机想访问USB总线上某个USB设备时,发出的命令都含有对应的地址(编号) USB是一种主从结构。...一个传输方向下 传输方向都是基于USB主机的立场说的, 比如:鼠标的数据是从鼠标传到PC机, 对应的端点称为"中断输入端点" 其中端点0是设备的默认控制端点, 既能输出也能输入,用于USB设备的识别过程 同样linux...其中usb_bus_type是一个全局变量, 它和我们之前学的platform平台总线相似,属于USB总线, 是Linux中bus的一种....如下图所示,每当创建一个USB设备,或者USB设备驱动时,USB总线都会调用match成员来匹配一次,使USB设备和USB设备驱动联系起来.
8位总线模式下数据传输速率可达48MHz。 ⑥数据和命令输出使能信号,用于控制外部双向驱动器。 二、SDIO框图以及SDIO时钟 复位后SDIO_D0用于数据传输。...初始化后主机可以改变数据总线的宽度(通过ACMD6命令设置)。如果一个多媒体卡接到了总线上,则SDIO_D0、SDIO_D[3:0]或SDIO_D[7:0]可以用于数据传输。...3、F1:AHB总线接口时钟(HCLK/2):该时钟用于驱动SDIO的AHB总线接口,其频率为HCLK/2=36Mhz。...F4:APB2总线接口时钟(PCLK2):该时钟用于驱动SDIO的APB2总线 接口,其频率为PCLK2=84Mhz。...7、SDIO数据定时器寄存器(SDIO_DTIMER) 该寄存器用于存储以卡总线时钟(SDIO_CK)为周期的数据超时时间,一个计数器将从SDIO_DTIMER寄存器加载数值,并在数据通道状态机(
文章针对Linux驱动开发而写,以助于理解SD卡驱动,不会涉及过多硬件内容。 纲要: 1. SD卡介绍 2. SD卡硬件规范 3. SD卡指令规范 4. SD卡寄存器 1....在SPI模式中,片选线分别连接到主机各GPIO口,数据线在同一条总线上。 因为SPI模式的数据线在同一总线上,所以需要片选来选择不同的储存卡;SD模式分别连接到主机,不需要片选线。 3....SDIO命令:预留给SDIO设备使用(CMD5也是预留给SDIO设备),在SD卡官方文档中没有说明具体用途 ? ?...Linux驱动对SD卡做初始化会经过如下步骤: CMD0上电重置到idle状态(防止一些机型关机不掉电,如某些FPGA平台)->ACMD41获取SD卡支持的电压信息(还需要通过主机控制器设置电压)->CMD2...SDIO:CMD0之后执行CMD5,CMD5只有SDIO类型才会有响应。 MMC:ACMD 41换为CMD1,ACMD类命令只有SD或SDIO卡才有响应。
寄存器信息 5.1.2.2 2.emmc 信息 5.1.2.3 3、性能验证节点 5.2 常见问题 Linux MMC 开发指南 1 前言 1.1 文档简介 介绍 Linux 内核中 SD/MMC 子系统的接口及使用方法...1.3 适用范围 产品名称 内核版本 驱动文件 A133 Linux-5.4 sunxi_mmc* h616 Linux-5.4 sunxi_mmc* v853 Linux-4.9 sunxi_mmc*...R853 Linux-4.9 sunxi_mmc* F133 Linux-5.4 sunxi_mmc* 2 模块介绍 2.1 模块功能介绍 Linux 提供了 MMC 子系统来实现对各种 SD/MMC...卡的 High speed sd-uhs-sdr50 SDIO 卡的 uhs-sdr50 sd-uhs-ddr50 SDIO 卡的 uhs-ddr50 sd-uhs-sdr104 SDIO 卡的 uhs-sdr104...为了描述方便,这里设定 base 目录这一概念,其中 X 代表控制器号; 内核 linux4.9 base=/sys/devices/platform/soc/sdcX 内核 linux5.4 base
领取专属 10元无门槛券
手把手带您无忧上云