linux识别sd卡_kafka存储结构

linux识别sd卡_kafka存储结构浅析Linux下sdio接口对sd卡硬件检测流程staticstructpxamci_platform_dataluther_mci_platform_data={.detect_delay=20,//检测到sd设备插入之后,延时detect_delay个tick之后,执行函数.ocr_mask=MMC_VDD_32_33|MMC_VDD_33_34,.init…

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

Jetbrains全系列IDE稳定放心使用

浅析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].

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186462.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java运行机制是什么_JAVA运行机制

    java运行机制是什么_JAVA运行机制这一篇我们来简单理解一下JAVA的运行机制大概可以分为三大部分1.编写程序2.编译程序3.运行程序1.编写程序编写程序就是我们前面说的源代码这些源代码都有特殊的语法例如main函数他是jdk中一个比较特殊的函数他必须要使用特定的语法来编写(在前面加上public等关键字来修饰)源代码就像是程序的灵魂,程序的实现是由源代码来就决定的就像一块橡皮泥,你想把它变成什么样子完成由你来决定2.编译程序…

    2022年7月7日
    30
  • Windows和Linux下查看Apache、MySQL、PHP版本

    Windows和Linux下查看Apache、MySQL、PHP版本

    2021年10月8日
    74
  • 最低公共祖先java_满族的祖先是

    最低公共祖先java_满族的祖先是原题链接题目描述如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。输入格式第一行包含三个正整数 N,M,SN,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。接下来 N-1N−1 行每行包含两个正整数 x, yx,y,表示 xx 结点和 yy 结点之间有一条直接连接的边(数据保证可以构成树)。接下来 MM 行每行包含两个正整数 a, ba,b,表示询问 aa 结点和 bb 结点的最近公共祖先。输出格式输出包含 MM 行,每行包含一个正整数,依次为每一个询问的结果。输入

    2022年8月8日
    6
  • Linux系统打不开gedit文本编辑器

    Linux系统打不开gedit文本编辑器写实验发现打不开gedit,报错如下:Unabletoinitserver:无法连接:拒绝连接(gedit:1289):Gtk-WARNIING**:20:46:00.562:cannotopendisplay于是收录各种gedit不能用原因如下(错误提示不一定和上面一样):原因1:vnc连接被禁用了。这种情况下一般虚拟机也没连上网(打开浏览器显示没网),打开虚拟机设置>选项>vnc连接,启用。具体参数设置可看链接(Vmware官网,将虚拟机配置为V..

    2022年7月26日
    56
  • 动态链接库(DLL)初始化例程失败_无法装入solidworks DLL文件

    动态链接库(DLL)初始化例程失败_无法装入solidworks DLL文件关于solidworks中的:动态链接库(DLL)初始化例失败的解决方法

    2022年10月21日
    4
  • Pytorch中tensor和numpy互相转换[通俗易懂]

    Pytorch中tensor和numpy互相转换[通俗易懂]https://blog.csdn.net/AugustMe/article/details/113841470

    2022年10月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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