欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

Linux下SD卡开发笔记(一)-SD 相关基础概念

程序员文章站 2022-03-26 14:35:06
系统性学习SD卡驱动开发的笔记...

一、SD卡简介

1.兼容MMC卡的设备也兼容SD卡

2.SD卡(32mm * 24mm * 2.1mm)比MMC卡(32mm * 24mm * 1.4mm)

3.总线接口

SD卡进行数据传输时有两种接口协议:SDIO (即对SD卡进行IO读写操作);SPI(通过SPIO总线协议与外围接口通信)。
Linux下SD卡开发笔记(一)-SD 相关基础概念

(1)SD BUS (采用SDIO interface)

Linux下SD卡开发笔记(一)-SD 相关基础概念

PIN NAME DESCRIPTION
1 DAT3 Date line3
2 CMD command/response line
3 VSS1 GND
4 VDD 3.3V power supply
5 CLK clock line
6 VSS2 GND
7 DAT0 Date line0
8 DAT1 Date line2
9 DAT3 Date line3

(2)SPI BUS

Linux下SD卡开发笔记(一)-SD 相关基础概念

PIN NAME DESCRIPTION
1 CS chip selsect for spi
2 MOSI master out slave in Data line
3 VSS1 GND
4 VDD 3.3V power supply
5 SCLK SPI clock line
6 VSS2 GND
7 MOSI master in slave out Dta line
8 NC not connected
9 NC not connect

补充. 微型SD卡(TF卡)在SPI模式下引脚的定义

Linux下SD卡开发笔记(一)-SD 相关基础概念

PIN NAME DESCRIPTION
1 NC X(not connected)
2 CS chip selsect for spi
3 MOSI master out slave in Data line
4 VDD 3.3V power supply
5 SCLK SPI clock line
6 VSS GND
7 MOSI master in slave out Dta line
8 NC X(not connected)

二、请求处理流程

1.第一阶段:卡识别阶段

通过命令使EMMC或SD卡处于以下五种状态:空闲(idle)、准备(ready)、识别(ident)、等待(stby)、不活动(ina)
Linux下SD卡开发笔记(一)-SD 相关基础概念

2.第二阶段:数据传输阶段

通过命令使MMC/SD处于:发送(data)、传输(tran)、接收(rcv)、程序(prg)、断开连接(dis)几种不同的状态。
Linux下SD卡开发笔记(一)-SD 相关基础概念

三、SD\MMC\TF设备在Linux中的结构层次

MMC/SD卡的记忆体在Linux中都是块设备(Block Device),设备驱动代码在Linux中有三个文件夹:cardcorehost

  • card层:把要操作的数据以块设备的方式在 SD/MMC 卡上进行读写;这部分代码实现了将 SD/MMC 卡管理为块设备
  • core层:整个SD卡的核心层,这部分代码完成了不同的协议和规范供用户调用,并为host层的驱动提供接口函数,在主机控制器和 SD/MMC(即 块设备) 之间进行数据传递
  • host层:这里的代码是针对不同主机的块设备驱动程序,包括RAM芯片中的 SDI控制器(支持对MMC/SD卡的控制,俗称MMC/SD主机控制器)和SDI控制器与MMC/SD卡的硬件接口电路。
    Linux下SD卡开发笔记(一)-SD 相关基础概念
      card(区块层)和core(核心层)是Linux系统已经封装好的,我们不需要修改。host(主控制器层)中提供与各芯片架构相关的文件,才是我们需要开发的部分。
      整个MMC/SD模块中最重要的部分是Core核心层,它提供了一系列的接口函数,对上将主机驱动注册到系统,给应用程序提供设备访问接口,对下提供了对主机控制器控制的方法及块设备请求的支持。对于主机控制器的操作就是对相关寄存器进行读写,而对于MMC/SD设备的请求处理则比较复杂。

本文地址:https://blog.csdn.net/m0_37983106/article/details/107333234

相关标签: 嵌入式