天天

初识--物理扇区与逻辑扇区

0
阅读(21745)

昨天在STM32板上试了一天SD读取扇区操作都是错误,代码中直接读取0扇区(我本意为0扇区是逻辑0扇区),因为要用到FAT文件系统,但是读取的扇区从串口输出都无法和WINHEX看到(逻辑扇区)的一样,也想不出原因。今天无意中找到问题的原因。是物理扇区和逻辑扇区的区别。

下面是用WINHEX查看SD卡的信息:

图1:物理0扇区

图1显示的数据就是代码读取到的数据,跟图3我要的数据完全不一样。

物理扇区与逻辑扇区关系:逻辑地址=物理地址+保留的扇区数

物理0扇区记录着保留扇区数,位置为物理0扇区的 0x1c6 有保留的扇区数,跳转到F7(247)扇区,显示如图2。

图2:物理247扇区的内容

图3:逻辑0扇区

图2.3内容是一样的。看来问题可以解决了,只要读取扇区的时候加上保留扇区数就可以读取正确了。

但是我就很奇怪,为什么会读到物理0扇区呢,为什么不是逻辑0扇区呢,那怎样才能指定读到物理扇区或是逻辑扇区呢

 

注:点击查看logical sector或physical sector