从块设备角度谈MMC数据传输过程

本文探讨了MMC数据传输的过程,从块设备层的用户操作开始,经过文件系统转换,封装成BIO结构体并放入请求队列。接着,详细介绍了核心层的MMC协议内存管理和Host层的硬件操作。通过分析mmc_request函数和mmc_queue_thread函数,展示了数据如何最终通过Host主机控制层实现硬件上的直接操作,从而深入理解MMC的架构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有块设备知道,实际块设备就是把对设备的操作先存到请求队列里,然后在执行请求队列,以实现相同的请求可以一次性操作完,提高效率。


MMC卡分为了:

         块设备层:用户操作MMC卡,文件系统就会转化为对ll_wr_block的调用,把操作封装为BIO结构体,然后放到请求队列,最后调用用户提供的请求队列处理函数来统一操作。

         核心层:实现MMC协议相关内存,如卡初始化。

        Host层:这个层实际实现主机控制器mmc_host,这部分和硬件嘻息息相关,如发送命令、说数据的硬件操作之类就在这里实现的,他也是协议真正让卡运行起来的基底。Host层通过调用核心层的协议让卡运行起来。



我们队MMC卡的操作势必会调用到块设备的请求处理函数来解决:mq->queue = blk_init_queue(mmc_request, lock);

现在我们最关键的就是如何从块设备层数据操作一直提交到协议层的操作,协议层最终通过Host主机控制层实现硬件上的直接操作,这个搞懂了就基本熟悉MMC的架构了。


static void mmc_request(struct request_queue *q)
{

if (!mq) {
while ((req = blk_fetch_request(q)) != NULL) {
req->cmd_flags |= REQ_QUIET;
__b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值