Linux下测试sdio,浅析Linux下sdio接口对sd卡硬件检测流程
浅析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卡硬件检测流程相关推荐
- ARM树莓派高级开发——linux内核源码、树莓派源码编译、SD卡挂载
文章目录 linux内核开发基础(linux内核源码.树莓派源码编译.SD卡挂载) 树莓派等芯片带操作系统的启动过程 linux内核源码树 Linux内核源代码目录树结构: 树莓派Linux源码配置 ...
- sdio接口_单片机基础 —— 使用SDMMC接口读写SD卡数据
本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SDMMC外设读取SD卡数据. 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM32L4 ...
- sd 芯片测试软件,sd卡芯片检测工具基础知识解析
原标题:sd卡芯片检测工具基础知识解析 sd卡芯片检测工具是芯片行业常用的设备之一,那么用户在使用sd卡芯片检测工具的时候需要注意哪些问题呢? sd卡芯片检测工具主要测试内容有信道内测试用来测试接收器 ...
- linux 动态库建立,浅析linux下静态库和动态库的建立和使用
在粤嵌学了很多知识,我们把常用的公用函数放在一起做成一个函数库,可以供其他程序共同使用,函数库本质上说,是一个可执行代码的二进制形式,可被操作系统载入内存执行.linux下的库分为两种:静态库,后缀名 ...
- linux hdparm 测试磁盘io,Linux hdparm命令
Linux hdparm命令 Linux hdparm命令用于显示与设定硬盘的参数. hdparm可检测,显示与设定IDE或SCSI硬盘的参数. 语法 hdparm [-CfghiIqtTvyYZ][ ...
- 《树莓派学习指南(基于Linux)》——1.4 将Raspbian烧录到SD卡
本节书摘来异步社区<树莓派学习指南(基于Linux)>一书中的第1章,第1.4节,作者:[英]Peter Membrey ,[澳]David Hows ,更多章节内容可以访问云栖社区&qu ...
- linux内核开发基础(linux内核源码、树莓派源码编译、SD卡挂载)
首先下载树莓派linux内核源码: 下载网址:https://github.com/raspberrypi/linux 在树莓派使用指令:uname -r查看当前树莓派的版本号,然后选择对应的linu ...
- fat32 linux 打包工具_一个方便的用于创建树莓派 SD 卡镜像的程序 | Linux 中国
开始在 Mac 上使用 Raspberry Pi Imager.-- James Farrell(作者) 有多种购买树莓派的方法,根据你的购买渠道的不同,可能附带或不附带操作系统.要在树莓派上安装操作 ...
- Linux笔记(开机自动将kerne log保存到SD卡中)
有时候为了测试机器的稳定性,需要煲机测试几天的情况,这个时候机器已经封装好,不能再接串口线出来. 为了追溯问题,就需要将log信息保存下来. 于是就需要这样一个功能:系统启动后,自动将kernel的l ...
- 《Linux操作系统 - RK3288开发笔记》第3章 G-3288-02 SD卡启动及变砖恢复
G-3288-02出厂默认已经烧写了Android系统,但Android系统不一定满足需求,因此会进行系统移植,当移植的系统在升级过程中出现意外,无法启动,直接变砖了,导致无法重新升级,这个不要慌,可 ...
最新文章
- 搞一个短信验证码登录,难吗?四步搞定!
- 【UOJ#388】【UNR#3】配对树(线段树,dsu on tree)
- glance服务上传镜像的时候,报错HTTPInternalServerError (HTTP 500)
- LeetCode Queue Reconstruction by Height(贪心)
- es head插件安装_ES笔记概述与安装
- ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类
- Spring-- ApplicationContext
- php 算法 二进制文件,关于PHP二进制流 逐bit的低位在前算法(详解)_PHP教程
- 计算机通识/14:算法常识/算法常识-01
- SSD Network Architecture--keras version
- 用FileZilla搭建的Ftp其他电脑无法访问的问题
- Hadoop笔记整理(二):HDFS
- 鸿蒙系统在哪里,“安卓系统”和“鸿蒙系统”区别在哪里?网友:根本就是一个天上一个地下...
- opencv实现摄像头的实时人脸识别
- 【转】 【技巧 】 数学难题大揭秘:减少计算错误的技术
- Tomcat配置优化(一)
- MATLAB及Simulink----基本知识简介
- 仿热血江湖帮战客方.申请人物列表
- 物联网项目——具体分工
- Ext.form.DateField控件属性说明