SD-scard-对应CMD指令集讲解

目录:
SD的基本寄存器和基础信息描述:

SCR 寄存器:
<该寄存器保存的SD的特殊性信息(例如支持的总线位宽,SD卡的版本),MMC卡没有此寄存器,获取该寄存器的数据需要从数据线读的>


CSD寄存器:
<SD的相对地址(SD卡已经保存在芯片内部) ,嵌入在SD卡内部>


OCR 寄存器:
<该寄存器保存着SD的可供电范围,并且区别是否为HC卡(根据返回的ORC回应第30位是否置1).>


CIA 参数描述:
<CIA (Card I/O Area)>


CID参数描述:
<SD卡的唯一ID号 也叫CID码>


CIS参数描述:
<标识号和长度加后续内容表示一个节点>


Card_Status寄存器
状态寄存器


SD卡的插入检测一般都是对应的中断触发脚,作为检测当前SD卡有没有被插入卡槽。

SD卡中的CMD命令子集:

CMD_0
当前指令位,进入空闲状态,该指令无灰度
CMD_1
读OCR寄存器,获取OCR寄存器里面的必要信息
CMD_2
发送CMD2,验证SD卡是否接入,长反馈(CID),广播获取卡的CID信息
CMD_3
发送CMD3,读取SD卡是否接入RCA (地址),短反馈 ,  广播获取SD卡所分配的相对地址
CMD_4
可选项:  SDIO不支持DSR 
CMD_6
选择服务: 在第1部分v1.10中添加了部分强制服务
CMD_7
发送CMD7,使能SD卡,如果参数值为0 , 即使取消所有选中SD卡
根据获取指定的RCA,选中SD卡,如果在选中一个卡的状态下,又选中其他的卡,那么之前的卡会自动取消选中,
如果发送地址0,则表示取消选中全部卡
CMD_8
(CMD8): 发送CMD8指令过去,CRC校验值与发送的值相同,说明当前SD卡支持SD2.0协议。
CMD_9
发送CMD9,读取CSD寄存器获取卡的相关信息, 获取SD相关的存储信息,如块大小,容量等
CMD_10
发送CMD10 ,  读取CID信息
CMD_12
发送CMD12,强制停止所有传输. 停止多块传输操作
CMD_13
cmd13获取卡的状态,其实本质就是读 Card_Status 寄存器 
CMD_16
设置SD卡的块大小,在CSD寄存器有对应的操作描述,
CMD17
设置SD卡按照单个区块进行操作, 使SD卡进入传输状态,读取单个块。这个命令需要附带对应的地址参数
也就是需要读取的那个地址,按照整块读取出来。
CMD18
设置SD卡按照多块进行操作 , 使SD卡进入传输状态,读取多个块,直到收到CMD12为止,当前操作
会一直按照地址顺序读下去,直到接收到停止命令。
CMD_24
使SD卡进入传输状态,写入单个块。
CMD_25
使SD卡进入传输状态,写入多个块 
其实CMD24-25 和 CMD 17-18作为相对应的方向操作,一个进行读,一个进行写。都有对应的单块和多块分别。
CMD_27
写CSD寄存器/修改CSD寄存器里的数据,(不建议)
CMD_28
设置写保护块的地址
CMD_29
擦除写保护块的地址
CMD_32:
设置擦除块的起始地址,作为连续擦除机制使用
CMD_33
设置擦除块的终止地址,作为连续擦除机制使用 
CMD_38
擦除所选择的块
CMD_55    ( 说明指令 )
特殊指令前命令,在发送ACMD类指令前,需要发送此命令 

SD卡中的ACMD命令子集:
要注意一下ACMD和CMD之间的区别,ACMD是特殊命令,但是发送方法和SDICARG和SDICCON的
命令发送一样,但是每次发送ACMD命令之前,一定要发送一条CMD55说明命令,发送CMD55之后说明下一条命令属于特殊命令集ACMD。

ACMD_6
设置SD卡的总线位宽,这个需要读取SCR确定
ACMD_13
SD卡状态
ACMD_41
获取SD电压值,作为测试当前SD卡的支持的协议,所需的电压值是否正常。
ACMD_51 
获取SD卡的SCR寄存器的值

下面SD卡状态为连续状态:

CMD55+ACMD51
SD卡发送CMD55+ACMD6配置为4bit数据传输模式(根据SCR读出来的值确定),MMC卡发送CMD6来设置位宽
CMD7 + CMD16
发送CMD7,使能SD卡,使其进入传输状态),接着发送CMD16设置块大小(根据前面读取的CSD信息确定)。
CMD17/CMD18
发送CMD17/CMD18,命令的参数需要根据初始化时所判断的卡类型填写,按字节或按块.
循环读取数据,
CMD32-CMD33
连续擦除对应连续地址块的内存

《会持续更新当前表–来源自网络整理》
关注微信公众号 一起学习 ( 技术Code城 )

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CVE-2019-0708 POC,检测工具 C:. │ cve_2019_0708.rb │ Dockerfile │ LICENSE │ list.txt │ README.md │ screenshot.png │ 使用说明.txt │ ├─docker │ entrypoint.sh │ setup.sh │ └─rdesktop-fork-bd6aa6acddf0ba640a49834807872f4cc0d0a773 │ .cvsignore │ asn.c │ bitmap.c │ bootstrap │ cache.c │ channels.c │ cliprdr.c │ config.guess │ config.sub │ configure.ac │ constants.h │ COPYING │ cssp.c │ ctrl.c │ disk.c │ disk.h │ ewmhints.c │ genauthors │ indent-all.sh │ install-sh │ iso.c │ licence.c │ lspci.c │ Makefile.in │ mcs.c │ mppc.c │ mst120.c │ orders.c │ orders.h │ parallel.c │ parse.h │ printer.c │ printercache.c │ proto.h │ proto.head │ proto.tail │ pstcache.c │ rdesktop │ rdesktop.c │ rdesktop.h │ rdesktop.spec │ rdp.c │ rdp5.c │ rdpdr.c │ rdpsnd.c │ rdpsnd.h │ rdpsnd_alsa.c │ rdpsnd_dsp.c │ rdpsnd_dsp.h │ rdpsnd_libao.c │ rdpsnd_oss.c │ rdpsnd_sgi.c │ rdpsnd_sun.c │ README │ scancodes.h │ scard.c │ scard.h │ seamless.c │ seamless.h │ secure.c │ serial.c │ ssl.c │ ssl.h │ tcp.c │ types.h │ utils.c │ xclip.c │ xkeymap.c │ xproto.h │ xwin.c │ ├─doc │ AUTHORS │ ChangeLog │ ctrl.txt │ HACKING │ ipv6.txt │ keymap-names.txt │ keymapping.txt │ keynums.png │ licensing.txt │ lspci-channel.txt │ makerelease.txt │ patches.txt │ rdesktop.1 │ rdpsnd-rec.txt │ rdpsnd.txt │ redirection.txt │ seamlessrdp-channel.txt │ TODO │ ├─keymaps │ ar │ common │ convert-map │ cs │ da │ de │ de-ch │ en-dv │ en-gb │ en-us │ en-us-intl │ es │ et │ fi │ fo │ fr │ fr-be │ fr-bepo │ fr-ca │ fr-ch │ he │ hr │ hu │ is │ it │ ja │ ko │ lt │ lv │ mk │ modifiers │ nl │ nl-be │ no │ pl │ pt │ pt-br │ ru │ sk │ sl │ sv │ th │ tr │ ├─tests │ brushtest.c │ brushtestMakefile │ notepadbehindwordpad.c │ ├─uiports │ makefile_nanox │ makefile_qt │ makefile_qte │ makefile_svga │ makefile_xxx │ nanoxreadme.txt │ nanoxwin.c │ qtereadme.txt │ qtewin.cpp │ qtewin.h │ qtreadme.txt │ qtwin.cpp │ qtwin.h │ readme.txt │ svgareadme.txt │ svgawin.c │ xxxwin.c │ └─vnc vnc.c vnc.h x11stubs.c x11stubs.h

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值