浅析Linux下sdio接口对sd卡硬件检测流程

static struct pxamci_platform_data luther_mci_platform_data = {

.detect_delay    = 20,//检测到sd设备插入之后,延时detect_delay个tick之后,执行函数

.ocr_mask    = MMC_VDD_32_33|MMC_VDD_33_34,

.init         = luther_mci_init,

.setpower    = luther_mci_setpower,

.exit        = luther_mci_exit,

};

在luther_init()->

//luther_mmc_slot[0].gpio_cd = mfp_to_gpio(MFP_CFG_PIN(GPIO8_GPIO_MMC_DETECT));

所以设置GPIO8作为sd卡插入的中断检测IO

//pxamci_probe()->该函数是和platform的设备匹配上之后,会立即调用的probe

//host->pdata->init(&pdev->dev, pxamci_detect_irq, mmc); 将mmc作为devid的传递参数

//就是调用设备函数luther_mci_platform_data->luther_mci_init()

//request_irq(cd_irq, luther_detect_int,IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,"MMC card detect", data);

//这样将中断注册到了物理硬件系统

当GPIO8检测到电平变化,将触发pxamci_detect_irq()中断处理函数,

该函数会继续调用mmc_detect_change()->mmc_schedule_delayed_work(&host->detect, delay);调度该host的自动检测函数

对于host->detect的初始化是这样完成的:

pxamci_probe()->mmc_alloc_host()申请平台SD单元对应的mmc_host结构体->

INIT_DELAYED_WORK(&host->detect, mmc_rescan)创建该平台SD单元对应的sdio设备插入

检测内核work_queue工作队列函数mmc_rescan->mmc_rescan()这是一个共用函数,如果有4个SD卡控制器在你的arm平台上,

那么4个SD控制器将分别对应4个mmc_host结构体,分别对应4个sdio设备插入检测内核work_queue工作队列,

但工作队列都将调用mmc_rescan()这1个函数,所以linux内核的面向对象的类共用机制做得很好->

使用mmc_alloc_host()函数申请的平台mmc_host结构体,没有对其分配bus总线指针,仅分配了它所属的parent,即这个mmc不属于某个bus,所以这个mmc_host对应的dev也不会从任何bus总线上分配到任何driver驱动,这也是应该的.

mmc_attach_sdio()->mmc_attach_bus(host, &mmc_sdio_ops);

mmc_sdio_init_card()->sdio_init_func()->sdio_alloc_func()->这样当detect到sdio设备之后,

将分配dev对应的sdio_func结构题,

调用sdio_read_func_cis()的cistpl_manfid()来填充sd卡的vendor,这样当wlan驱动probe的时候,

就会和wlan驱动的id表中的vendor尝试匹配,如果成功,那么wlan驱动将接管该检测到的sd卡[gliethttp_20080626].

Linux下测试sdio,浅析Linux下sdio接口对sd卡硬件检测流程相关推荐

  1. ARM树莓派高级开发——linux内核源码、树莓派源码编译、SD卡挂载

    文章目录 linux内核开发基础(linux内核源码.树莓派源码编译.SD卡挂载) 树莓派等芯片带操作系统的启动过程 linux内核源码树 Linux内核源代码目录树结构: 树莓派Linux源码配置 ...

  2. sdio接口_单片机基础 —— 使用SDMMC接口读写SD卡数据

    本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SDMMC外设读取SD卡数据. 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM32L4 ...

  3. sd 芯片测试软件,sd卡芯片检测工具基础知识解析

    原标题:sd卡芯片检测工具基础知识解析 sd卡芯片检测工具是芯片行业常用的设备之一,那么用户在使用sd卡芯片检测工具的时候需要注意哪些问题呢? sd卡芯片检测工具主要测试内容有信道内测试用来测试接收器 ...

  4. linux 动态库建立,浅析linux下静态库和动态库的建立和使用

    在粤嵌学了很多知识,我们把常用的公用函数放在一起做成一个函数库,可以供其他程序共同使用,函数库本质上说,是一个可执行代码的二进制形式,可被操作系统载入内存执行.linux下的库分为两种:静态库,后缀名 ...

  5. linux hdparm 测试磁盘io,Linux hdparm命令

    Linux hdparm命令 Linux hdparm命令用于显示与设定硬盘的参数. hdparm可检测,显示与设定IDE或SCSI硬盘的参数. 语法 hdparm [-CfghiIqtTvyYZ][ ...

  6. 《树莓派学习指南(基于Linux)》——1.4 将Raspbian烧录到SD卡

    本节书摘来异步社区<树莓派学习指南(基于Linux)>一书中的第1章,第1.4节,作者:[英]Peter Membrey ,[澳]David Hows ,更多章节内容可以访问云栖社区&qu ...

  7. linux内核开发基础(linux内核源码、树莓派源码编译、SD卡挂载)

    首先下载树莓派linux内核源码: 下载网址:https://github.com/raspberrypi/linux 在树莓派使用指令:uname -r查看当前树莓派的版本号,然后选择对应的linu ...

  8. fat32 linux 打包工具_一个方便的用于创建树莓派 SD 卡镜像的程序 | Linux 中国

    开始在 Mac 上使用 Raspberry Pi Imager.-- James Farrell(作者) 有多种购买树莓派的方法,根据你的购买渠道的不同,可能附带或不附带操作系统.要在树莓派上安装操作 ...

  9. Linux笔记(开机自动将kerne log保存到SD卡中)

    有时候为了测试机器的稳定性,需要煲机测试几天的情况,这个时候机器已经封装好,不能再接串口线出来. 为了追溯问题,就需要将log信息保存下来. 于是就需要这样一个功能:系统启动后,自动将kernel的l ...

  10. 《Linux操作系统 - RK3288开发笔记》第3章 G-3288-02 SD卡启动及变砖恢复

    G-3288-02出厂默认已经烧写了Android系统,但Android系统不一定满足需求,因此会进行系统移植,当移植的系统在升级过程中出现意外,无法启动,直接变砖了,导致无法重新升级,这个不要慌,可 ...

最新文章

  1. 搞一个短信验证码登录,难吗?四步搞定!
  2. 【UOJ#388】【UNR#3】配对树(线段树,dsu on tree)
  3. glance服务上传镜像的时候,报错HTTPInternalServerError (HTTP 500)
  4. LeetCode Queue Reconstruction by Height(贪心)
  5. es head插件安装_ES笔记概述与安装
  6. ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类
  7. Spring-- ApplicationContext
  8. php 算法 二进制文件,关于PHP二进制流 逐bit的低位在前算法(详解)_PHP教程
  9. 计算机通识/14:算法常识/算法常识-01
  10. SSD Network Architecture--keras version
  11. 用FileZilla搭建的Ftp其他电脑无法访问的问题
  12. Hadoop笔记整理(二):HDFS
  13. 鸿蒙系统在哪里,“安卓系统”和“鸿蒙系统”区别在哪里?网友:根本就是一个天上一个地下...
  14. opencv实现摄像头的实时人脸识别
  15. 【转】 【技巧 】 数学难题大揭秘:减少计算错误的技术
  16. Tomcat配置优化(一)
  17. MATLAB及Simulink----基本知识简介
  18. 仿热血江湖帮战客方.申请人物列表
  19. 物联网项目——具体分工
  20. Ext.form.DateField控件属性说明

热门文章

  1. 2020年,程序员如何优雅地赚更多的钱?
  2. zebradesigner2教程_ZebraDesigner pro 2免费版
  3. 智慧城管管理平台和监控系统建设方案
  4. python五子棋双人对弈_基于python的socket实现单机五子棋到双人对战
  5. 最简单的基于FFMPEG的封装格式转换器(致敬雷霄骅)
  6. NetworkManager 替代工具 wicd
  7. android 直播推流sdk,大牛直播Android推流端SDK说明
  8. 高可用分布式系统架构图
  9. 人工神经网络理论及应用第三章课后题答案
  10. Flutter-防京东商城项目-修改收货地址 删除收货地址-43