sdio 驱动_usb接口安装驱动失败

sdio 驱动_usb接口安装驱动失败1.简介1.1SDIO接口应用场景SDIO通过SD的I/O管脚来连接外部的外围device并传输数据。这些外围设备,我们称为SDIO设备,常见的有:Wi-Ficard(无线网络卡)CMOSsensorcard(照相模块)GPScardGSM/GPRSmodemcardBluetoothcardRadio/TVcard2.硬件接口2.1SDIO总线SDIO总线和USB总线类似,SDIO也有两端,其中一端是HOST端,另一端是d

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1. 简介

1.1 SDIO接口应用场景

  • SDIO 通过 SD 的 I/O 管脚来连接外部的外围 device 并传输数据。这些外围设备,我们称为 SDIO 设备,常见的有:
    • Wi-Fi card(无线网络卡)
    • CMOS sensor card(照相模块)
    • GPS card
    • GSM/GPRS modem card
    • Bluetooth card
    • Radio/TV card

1.2 SDIO速度

  • SDIO1.0标准定义了两种类型的SDIO卡:
    • 全速的SDIO卡,传输率可以超过100Mbps
    • 低速的SDIO卡,时钟频率在0至400KHz之间

1.3 SDIO传输模式

  • 支持的工作模式
    • SPI模式:标准的SPI模式
    • 1-bit 模式:cmd line、 data line、clk line、irq Line
    • 4-bit模式:1 cmd line 、3 data line、clk
  • 在SPI模式中,第8脚位被当成中断信号。其它脚位的功能和通信协定与SD记忆卡的标准规范一样。在SDIO总线定义中,DAT1信号线复用为中断线。在SDIO的1BIT模式下DAT0用来传输数据,DAT1用作中断线。在SDIO的4BIT模式下DAT0-DAT3用来传输数据,其中DAT1复用作中断线
    在这里插入图片描述

2. 硬件接口

2.1 SDIO 总线

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

2.2 SDIO命令

  • SDIO总线上都是HOST端发起请求,然后DEVICE端回应请求

  • SDIO 命令由6个字节(48位)组成
    在这里插入图片描述

  • Command:用于开始传输的命令,是由HOST端发往DEVICE端的。其中命令是通过CMD信号线传送的

  • Response:响应是DEVICE返回的HOST的命令,作为Command的响应。也是通过CMD线传送的。

  • Data:数据是双向的传送的。可以设置为1线模式,也可以设置为4线模式。数据是通过DAT0-DAT3信号线传输的。

  • 命令与响应:SDIO的每次操作都是由HOST在CMD线上发起一个CMD,对于有的CMD,DEVICE需要返回Response,有的则不需要

  • 读命令

    • 首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,会将数据放在4位的数据线上,在传送数据的同时会跟随着CRC校验码。当整个读传送完毕后,HOST会再次发送一个命令,通知DEVICE操作完毕,DEVICE同时会返回一个响应
    • 从机在收到主机相关命令后,开始发送数据块给主机,所有数据块都带CRC校验(由硬件自动处理),单个数据块读的时候,在收到1个数据块以后即可以停止了,不需要发送停止命令(CMD12)。但是多块数据读的时候,SD卡将一直发送数据给主机,直到接到主机发送的STOP命令(CMD12)。
    • 相关命令
(1)发送 CMD17 (单块)或 CMD18 (多块)读命令,返回 0x00
(2)接收数据开始令牌 0xfe (或 0xfc ) + 正式数据 512Bytes + CRC 校验 2Bytes,
     默认正式传输的数据长度是 512Bytes ,可用CMD16 设置块长度。

在这里插入图片描述

  • 写命令
    • 首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,会将数据放在4位的数据线上,在传送数据的同时会跟随着CRC校验码。当整个写传送完毕后,HOST会再次发送一个命令,通知DEVICE操作完毕,DEVICE同时会返回一个响应。
    • 数据块写操作同数据块读操作基本类似,只是数据块写的时候,多了一个繁忙判断,新的数据块必须在SD卡非繁忙的时候发送。这里的繁忙信号由SD卡拉低SDIO_D0,以表示繁忙,SDIO硬件自动控制,不需要我们软件处理
(1)发送 CMD24 (单块)或 CMD25 (多块)写命令,返回 0x00
(2)发送数据开始令牌 0xfe (或 0xfc ) + 正式数据 512Bytes + CRC 校验 2Bytes

在这里插入图片描述

  • SD卡擦出
(1)发送 CMD32,跟一个参数来指定首个要擦除的起始地址(SD手册上说是块号)
(2)发送 CMD33,指定最后的地址
(3)发送 CMD38,擦除指定区间的内容

3. Linux SDIO WIFI驱动

  • SDIO 接口的 wifi,首先,它是一个 sdio 卡 设备,然后具备了 wifi 的功能,所以 SDIO 接口的 WiFi 驱动就是在 wifi 驱动外面套上了一个 SDIO 驱动 的外壳
  • SDIO驱动代码目录:drivers/mmc 下有 mmc卡、sd卡、sdio 卡驱动
  • 驱动分层:主机驱动层(实现SDIO驱动) => 核心层(向上向下接供接口) => 设备驱动层(WiFi设备)
  • core目标(CORE层):代码位于drivers/mmc/core目录下,其中是媒体卡的通用代码。包括 core.c host.c stdio.c
  • 核心层的功能
    • 不同协议和规范的实现
    • 为 HOST 层的驱动提供了接口函数
    • 完成了 SDIO 总线注册
    • 对应 ops 操作
    • 支持 mmc 的代码
  • host目录(HOST层):host 目录(HOST 层)是根据不同平台而编写的 host 驱动
  • WiFi驱动流程:
rockchip_wifi_init_module_rkwifi //创建了一个内核线程 wifi_init_thread
—wifi_init_thread //->
——dhd_module_init
———dhd_wifi_platform_register_drv // 查找设备,注册 wifi 驱动,注册成功调用后面的 bcmdhd_wifi_plat_dev_drv_probe
————wifi_ctrlfunc_register_drv
————|—bus_find_device //查找 wifi 设备
————|—platform_driver_register(&wifi_platform_dev_driver) //注册 wifi 驱动
————bcmdhd_wifi_plat_dev_drv_probe //->
—————dhd_wifi_platform_load //两个操作
——————wl_android_init //1. wlan 初始化
——————dhd_wifi_platform_load_sdio //2. 根据 接口类型 usb、sdio、pcie 选择不同的操作
———————dhd_bus_register // 注册成功就调用 dhd_sdio.dhdsdio_probe
————————bcmsdh_register(&dhd_sdio)
————————|—bcmsdh_register_client_driver
————————|——sdio_register_driver(&bcmsdh_sdmmc_driver) //注册成功调用 bcmsdh_sdmmc_probe
————————|———bcmsdh_sdmmc_probe //->
————————|———sdioh_probe
————————dhdsdio_probe
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186495.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 阿里算法内推笔试题

    阿里算法内推笔试题#include#include#include#include#include#include#include#include#definepi3.1415926#defineNUM10000usingnamespace

  • 如何用qq裁剪图片并使用_ps裁剪比例怎么自定义

    如何用qq裁剪图片并使用_ps裁剪比例怎么自定义QQ图像自定义剪裁功能:一:主布局界面二:点击控件触发事件后效果图三:拍照完之后效果图四:裁剪界面效果图五:点击相册后返回的图片效果图六:裁剪完从相册PICK的保存后的效果图

  • 一文轻松掌握python语言命名规则(规范)

    一文轻松掌握python语言命名规则(规范)和C/C++、Java等语言一样,python在命名上也有一套约定俗成的规则,符合规范的命名可以让程序的可读性大大增加,从而使得代码的逻辑性增强,易于自己和其他协作者在以后的拓展中理解代码的意义,从而提高编写代码的效率。我们在平常编写程序的时候需要注意以下几点:一、python变量名命名的硬性规则1.1.变量名大小写敏感python变量名区分大小写,也就是Student和student在…

  • SNMP协议具体解释

    SNMP协议具体解释

  • 区块链工程师需要掌握哪些技能?

    作者:Annchain(本文一切著作权归annchain技术团队所有,未经许可,不得转载。若需转载请联系页尾二维码。) 从2017年开始,区块链逐步成为互联网的风口浪尖。曝光度的激增带来了人才市场的火爆。 区块链所要求的知识并非什么特殊的或者新兴的知识,除了密码学领域的知识需要专门了解之外,其他知识和技能几乎都是一些比较通用的网络开发核心知识。 由于区块链行业涉及到的范…

  • 【2022最新Java面试宝典】—— Java基础知识面试题(91道含答案)

    【2022最新Java面试宝典】—— Java基础知识面试题(91道含答案)目录一、Java概述1.何为编程2.什么是Java3.jdk1.5之后的三大版本4.Jdk和Jre和JVM的区别5.什么是跨平台性?原理是什么6.Java语言有哪些特点7.什么是字节码?采用字节码的最大好处是什么8.什么是Java程序的主类?应用程序和小程序的主类有何不同?9.Java应用程序与小程序之间有那些差别?10.Java和C++的区别11.OracleJDK和OpenJDK的对比二、基础语法数据类型12.Java有哪些数据类型13.switch是否能作用在by

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号