SD 卡存储结构(空卡)

Posted Li-Yongjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SD 卡存储结构(空卡)相关的知识,希望对你有一定的参考价值。

格式化

windows 下查看


U盘(F:) 是个神马玩意?

linux 下查看

哦,上面那个 U盘(F:) 就是这里的 【未分配】,4M 大小,也就是 /dev/sdc

$ ls /dev/sdc*
/dev/sdc  /dev/sdc1

来看看这 4M 是个神马玩意,

liyongjun@Box:~/project/board/IMX6ULL/uboot/alientek_uboot$ sudo dd if=/dev/sdc of=f.bin bs=1M count=4
[sudo] liyongjun 的密码: 
记录了4+0 的读入
记录了4+0 的写出
4194304字节(4.2 MB,4.0 MiB)已复制,0.0578493 s,72.5 MB/s
liyongjun@Box:~/project/board/IMX6ULL/uboot/alientek_uboot$ sudo hexdump -C f.bin 
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001b0  00 00 00 00 00 00 00 00  b6 c0 61 80 00 00 00 82  |..........a.....|
000001c0  03 00 0b dc d4 c8 00 20  00 00 00 60 ed 00 00 00  |....... ...`....|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00400000

哦吼,整个4M就这一点数据,比我的脸还干净。

分析一下:
起始扇区号:0x00002000 = 8192,也就是 4M 位置(512 * 8192)
该分区扇区总数:0x00ed6000 = 15556608,也就是 7.4G,和上图完全吻合
参考:MBR、EBR与DBR详解

U盘(G:)

U盘(G:) 对应 /dev/sdc1,看下其开头 512 字节信息

DBR:

偏移 长度 说明
0x00  3   跳转指令(跳过开头一段区域)
0x03  8   OEM名称常见值是MSDOS5.0.
0x0b  2   每个扇区的字节数。取值只能是以下几种:512,1024,2048或是4096。设为512会取得最好的兼容性
0x0d  1   每簇扇区数。 其值必须中2的整数次方,同时还要保证每簇的字节数不能超过32K
0x0e  2   保留扇区数(包括启动扇区)此域不能为0,FAT12/FAT16必须为1,FAT32的典型值取为32
0x10  1   文件分配表数目。 NumFATS,任何FAT格式都建议为2
0x11  2   最大根目录条目个数, 0 for fat32, 512 for fat16
0x13  2   总扇区数(如果是0,就使用偏移0x20处的4字节值)0 for fat32
0x15  1   介质描述 0xF8 单面、每面80磁道、每磁道9扇区
		  		  0xF9 双面、每面80磁道、每磁道9扇区
		  		  0xFA 单面、每面80磁道、每磁道8扇区
		  		  0xFB 双面、每面80磁道、每磁道8扇区
		  		  0xFC 单面、每面40磁道、每磁道9扇区
		  		  0xFD 双面、每面40磁道、每磁道9扇区
		  		  0xFE 单面、每面40磁道、每磁道8扇区
		  		  0xFF 双面、每面40磁道、每磁道8扇区
		  		  无沦此域写入什么数值,同时也必须在FAT[0]的低字节写入相同的值,这是因为早期的MSDOS 1.x使 用该字节来判定是何种存储介质
0x16  2   每个文件分配表的扇区(FAT16),0 for fat32
0x18  2   每磁道的扇区, 0x003f
0x1a  2   磁头数,0xff
0x1c  4   隐藏扇区, 与MBR中地址0x1C6开始的4个字节数值相等
0x20  4   总扇区数(如果超过65535使用此地址,小于65536参见偏移0x13,对FAT32,此域必须是非0)
0x24  4   每个FAT表占用扇区数。(FAT32特有)
0x24  1   物理驱动器个数(FAT16),由操作系统决定
0x25  1   当前磁头(FAT16),格式化FAT卷时必须设为0
0x26  1   签名(FAT16),扩展引导标记(0x29)用于指明此后的3个域可用
0x27  4   ID (FAT16)
0x28  2   Flags (FAT32特有)
		  Bits0-3:不小于0的FAT(active FAT)数目,只有在镜像(mirrorig)禁止时才有效。
		  Bits 4-6: 保留
		  Bits 70,FAT实时镜像到所有的FAT表中,1 ,只有一个活动的FAT表。这个表就是Bits0-3所指定的
		  Bits8-15:保留
0x2a  2   版本号 (FAT32特有)
0x2c  4   根目录起始簇 (FAT32),一般为2
0x2b  11  卷标(非FAT32)
0x30  2   FSInfo 扇区 (FAT32) bootstrap
0x32  2   启动扇区备份 (FAT32)如果不为0,表示在保留区中引导记录的备数据所占的扇区数,通常为6同时不建议使用6以外的其他数值
0x34  2   保留未使用 (FAT32) 此域用0填充
0x36  8   FAT文件系统类型(如FAT、FAT12、FAT16)含"FAT"就是PBR,否则就是MBR
0x3e  2   操作系统自引导代码
0x40  1   Bios设备代号 (FAT32)
0x41  1   未使用 (FAT32)
0x42  1   标记 (FAT32)
0x43  4   卷序号 (FAT32)
0x47  11  卷标(FAT32)
0x52  8   FAT文件系统类型(FAT32)
0x1be 64  partitions table, DOS_PART_TBL_OFFSET
		  0X1BE ~0X1CD 16 talbe entry for Partition 1
		  0X1CE ~0X1DD 16 talbe entry for Partition 2
		  0X1DE ~0X1ED 16 talbe entry for Partition 3
		  0X1EE ~0X1FD 16 talbe entry for Partition 4
		  talbe entry for Partition:
		  Offse length content
		  0 1 boot indicator(80h=active)
		  1 3 start chs , (Cylinder, Head, Sector )
		  4 1 type descriptor(0x0b is 32bit fat,0x83 is ext2/3/4 )
		  5 3 end chs
		  8 4 start sector
		  12 4 partition size(unit is sectors)
0x1FE 2   扇区结束符(0x55 0xAA) 结束标志:MBR的结束标志与DBR,EBR的结束标志相同。

参考:FAT32文件系统格式详解

以上是关于SD 卡存储结构(空卡)的主要内容,如果未能解决你的问题,请参考以下文章

SD 卡存储结构(空卡)

SD 卡存储结构(系统盘)

SD 卡存储结构(系统盘)

SD 卡存储结构(系统盘)

sD卡和内置sD卡和内置存储分别啥区别

SD卡文件读取(FAT文件模式)