SD卡SPI模式读取序列解析:地址0与0x2000读取差异疑问
SD卡SPI模式读取地址异常解析
读取地址0得到的数据是什么
你用CMD17读取物理地址0时,拿到的是SDHC卡的厂商预留隐藏区域数据。这个区域是卡的内部管理空间,用来存储出厂配置、校准信息等厂商专属内容,不对用户开放,所以不会出现在普通的整卡十六进制转储里。不同品牌的SD卡这部分内容没有统一格式,对用户来说没有实际使用意义。
为什么读取0x2000得到转储的扇区0数据
核心原因是你的SDHC卡的用户数据区域起始偏移为0x2000字节:
- 部分厂商会在SDHC卡的物理地址开头预留一段空间(你这里是0x2000字节,也就是16个512字节扇区)作为内部使用;真正的用户可访问区域(也就是你转储的内容)从物理地址0x2000开始。
- 你转储的“地址0(扇区0)”其实是用户逻辑地址的起始点,对应卡的物理地址0x2000,所以发送CMD17读取0x2000时,正好拿到预期的MBR或文件系统引导数据。
另外要注意:SDHC卡SPI模式下,CMD17的地址参数是物理字节地址(而非扇区地址),这也是偏移值以字节为单位的原因。
内容的提问来源于stack exchange,提问作者Filip
相关产品推荐
相关产品推荐

