基于S3C2410的SD卡linux驱动工作原理(二)

2019-07-13 08:03发布

作者:刘洪涛,华清远见嵌入式学院金牌讲师,ARM公司授权ATC讲师。 序:我在讲嵌入式Linux驱动开发班的时候,发现不少学员对SD卡驱动这块比较感兴趣,课下来找我探讨。而在很多技术论坛,也有不少人问这方面的问题,所以就想写一下这方面的内容,希望对大家的学习能有所帮助。 前几天写了篇“基于S3C2410的SD卡linux驱动工作原理(一)”,说了下脱离操作系统如何在S3C2410上实现SD卡的读写。了解了脱离操作系统的工作原理后,现在可以思考linux是如何管理管理SD卡的了。Linux中SD驱动可以分为3层:块设备层(mmc_block.c ,mmc_sysfs.c,mmc_queue.c)、mmc协议层(mmc.c)、sd驱动层(s3c2410_sdi.c)。 下面从以下几个方面理解驱动: 1、s3c2410_sdi.c代码初始化过程; 2、SD卡块设备注册过程; 3、request及数据传输的实现。 下面介绍的过程参考的代码是我们华清远见培训中心在教学中使用的一套代码,内核版本是2.6.8,其它版本过程类似。 一、s3c2410_sdi.c代码初始化过程 初始化sd卡 二、SD卡块设备注册过程 DMA写 三、request及数据传输的实现 DMA读 end