SDIO
文章平均质量分 78
分析TI平台的SDIO驱动,包括MMC和SDMMC,以SDMMC为主
可以飞的话
4年嵌入式应用开发,4年驱动驱动开发,涉及的平台有海思、瑞芯微和TI,沉淀并且分享工作的心得,希望能借此能认识更多的人。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【SDIO】【SDMMC】硬件层
Linux内核使用MMC子系统统一管理MMC、SD和SDIO等存储设备。MMC通信协议通过命令(CMD)、响应(RESP)和数据(DAT)三类信息流实现主机与设备的交互。硬件上采用CLK时钟同步、CMD命令传输和DAT0-7数据总线(可配置4/8位模式)的三线制设计。内核抽象出CID、CSD等关键寄存器管理设备信息,并通过状态机机制完成设备枚举和初始化流程(包括CMD0复位、CMD8版本检查、CMD2获取CID等关键命令)。SD卡在FTL层实现了LBA逻辑地址到物理块的映射,为上层提供统一的块设备接口。整个原创 2025-11-01 14:31:47 · 899 阅读 · 0 评论 -
【SDIO】【SDMMC】host层详解
本文介绍了MMC/SD主机控制器驱动架构中的关键数据结构和工作原理。核心结构包括mmc_host(描述主机控制器)、mmc_card(描述存储卡设备)和mmc_driver(描述设备驱动)。mmc_host通过mmc_host_ops结构将具体控制器操作抽象出来,实现核心层与硬件控制器的解耦。文章详细分析了mmc_host结构体中的关键参数,如工作频率、电压范围、能力标志等,以及mmc_card结构体对卡类型的区分和特性描述。整体架构通过分层设计,将设备管理、控制器操作等不同功能模块化,提高了系统的可扩展性原创 2025-10-24 17:42:23 · 922 阅读 · 0 评论 -
【SDIO】【MMC】core层详解
本文介绍了Linux内核中MMC/SD卡驱动核心层的实现机制。核心层通过抽象共性操作,封装了对MMC/SD卡的基本控制功能,包括设备识别、设置、读写等操作流程。文章详细分析了核心层的初始化过程,包括MMC总线的注册(生成/sys/bus/mmc节点)和主机控制器类的注册(生成/sys/class/mmc_host目录)。通过bus_ops结构体和mmc_ops等操作集合,实现了对不同类型存储卡(MMC、SD、SDIO)的差异化支持,并提供了热插拔检测、电源管理、硬件复位等关键功能接口。原创 2025-10-24 14:25:04 · 396 阅读 · 0 评论 -
【SDIO】【SDMMC】block层详解
本文分析了Linux内核中MMC/SD卡块设备驱动的实现机制。主要包含以下内容:1) 块设备驱动的初始化流程,包括register_blkdev注册块设备、mmc_register_driver注册驱动到MMC总线;2) MMC块设备的核心数据结构mmc_blk_data及其初始化过程;3) 关键函数mmc_blk_probe的实现细节,描述了设备探测、请求队列初始化和分区管理等核心功能;4) 同步机制和错误处理流程。该驱动采用标准的块设备驱动框架,通过request_queue实现异步I/O请求处理,支持原创 2025-10-18 15:30:37 · 940 阅读 · 0 评论 -
【SDIO】【SDMMC】【驱动框架】
本文介绍了Linux内核中的MMC子系统架构及初始化过程。MMC子系统统一管理MMC、SD和SDIO三种相关技术,分为Host层(主控制器驱动)、Core层(协议实现)和Card层(块设备驱动)三个层次。子系统初始化包括总线、控制器和块设备三部分,分别位于drivers/mmc目录下的host、core和card子目录。主设备号179用于标识SD/MMC卡块设备,core层还提供主控制器对象管理接口。整体架构清晰体现了Linux内核设备驱动的分层设计思想。原创 2025-10-17 14:11:11 · 354 阅读 · 0 评论 -
【SDIO】【SDMMC】SDMMC快速使用
本文介绍了SD卡的基本技术参数和调试方法。主要内容包括:1)SD卡9个引脚功能说明;2)6种内部寄存器功能描述;3)不同协议规范下的速度等级划分;4)SD/SDHC/SDXC三种容量规格对比;5)设备树配置示例,详细说明时钟、总线宽度等关键参数;6)调试信息查看方法,包括/sys节点下的时钟、电压等参数查询;7)插入/拔出SD卡时的关键日志信息。文章为SD卡的技术应用和调试提供了系统性的参考信息。原创 2025-10-16 09:15:33 · 891 阅读 · 0 评论 -
【SDIO】【SDMMC】应用层fio和dd测速
fio和dd测试读速率差异的主要原因是实现机制不同: 并发性: fio使用异步IO和并行处理(iodepth=32),可同时提交多个IO请求 dd是单线程串行处理,每次只能执行一个IO操作 IO机制: fio采用libaio引擎,支持批量IO提交和异步完成 dd使用同步阻塞IO,每次read/write都需等待完成 缓冲策略: fio预分配多个缓冲区,支持并行读写 dd仅使用1-2个缓冲区,无预读机制 系统调用: fio通过io_submit/io_getevents批量处理IO dd每次执行单个read/原创 2025-10-18 15:25:55 · 388 阅读 · 0 评论 -
【SDIO】【EMMC】EMMC驱动快速使用
摘要: 本文介绍了eMMC存储器的基本原理与配置方法。eMMC集成了控制器,采用标准接口管理闪存,开发者只需遵循协议即可操作。原理图分析重点说明了电源(VCC、VCCQ)、地线(VSS/VSSQ)以及信号线(CLK、CMD、DATA等)的连接设计。设备树配置部分详细解析了时钟参数(assigned-clocks/rates)、工作模式(HS200/HS400)等关键设置项。最后提供了三种调试方法:通过/sys节点查看实际工作频率、使用k3conf工具查询eMMC时钟状态,以及通用时钟树监控方式。原创 2025-10-16 09:11:01 · 742 阅读 · 0 评论 -
【MMC】【FIO测试】
本文介绍了fio存储性能测试工具的使用方法。fio作为专业测试工具结果准确,但需要移植相关库且测试门槛较高。使用前需用dd命令清空测试分区(mmcbik0p10),否则可能导致读速率误差。文中提供了具体的读写测试命令:读测试采用128k块大小、32队列深度和4线程;写测试采用4k随机写入模式。两种测试均需先执行echo 3清除缓存,并设置1G测试数据量和100秒运行时间。测试结果通过group_reporting汇总显示,图示展示了实际测试效果。原创 2025-10-17 14:05:22 · 291 阅读 · 0 评论
分享