源:http://blog.163.com/zhaojun_xf/blog/static/30050580201151410635516/
在调试SD卡时,大家都喜欢使用扇区进行验证。也就是说,一般都是通过读写扇区数据进行比较,或者读取第0扇区的数据,在通过WinHex软件打开启动扇区进行比较。这种方法对于1G的SD卡或部分2G的SD卡可能是对的,但是对于有些2G的SD卡和大于2G的SD卡来说就不一定对了。
对于小容量的SD卡来说,一般没有MBR,所以读第0扇区就是在WinHex软件里边查看的启动扇区,所以很容易进行验证。但是对于大容量的SD卡来说,由于里边有MBR,而一般读取第0扇区,读出的就是MBR的内容;而在WinHex里边一般都隐藏了MBR部分,而直接显示启动扇区。所以读取的第0扇区和启动扇区的数据当然是不对的,所以容易让实验者认为读取是数据有误。
1. 那么怎样使用WinHex软件查看SD卡有没有MBR呢:
如果打开磁盘时选择的是逻辑驱动器,那么是看不到MBR的,只能看到数据从启动扇区开始的信息;如果采用物理磁盘方式打开,就可以查看分区信息了。
2. 打开一张Kingston 2G的SD卡的MBR
我们需要注意的是画线的64个字节数据,一个有4个分区表,但是除了第1个分区外,其他数据为零,也就是说只有一个分区。这个分区的启动扇区在上图棕色方框里,即:0x0000003F的地方,所以,我们读取0x0000003F就能读取启动扇区了。
3. 打开启动扇区
用SD卡读取0x0000003F扇区进行比较就可以了。SDReadSingleBolck(0x3F, SDBuf); 读取的数据如下:
4. 打开一个Kingston 1G SD卡,从图可以看出,此卡没有MBR,第0扇区就是启动扇区。