搜索
bottom↓
回复: 17

关于sd卡逻辑扇区与物理扇区的疑问

[复制链接]

出0入0汤圆

发表于 2010-1-26 15:26:54 | 显示全部楼层 |阅读模式
问题:
  我以CMD24写入1个扇区(512B),扇区地址为2A1(当然在写入命令时通过左移9位变成32位字节地址),通过WINHEX查询写入到54200开始的地址,经计算确实是2A1扇区。用VC在PC机上编程将卡中数据读出,所用函数需要设置逻辑扇区号,经过测试逻辑扇区号为218H,恰好将该扇区数据读出。由于不慎将0扇区覆盖,又通过格式化还原0扇区(就是所谓的DBR,DOS引导记录),再次用CMD24写入数据到2A1H,并用PC读数据时发现逻辑扇区号变了,仍用218H读到的不是原扇区的数据。因而有以下疑问:
1、用CMD24写入时给出的地址是逻辑地址还是物理地址?
   从实验看显然是物理地址,但许多帖子说是逻辑地址
2、某个物理地址对应的逻辑地址是多少?如何获得?
   从实验看逻辑地址与物理地址的对应关系与第0扇区有关,但是哪个字段?
3、两次读写时逻辑扇区号发生变化,原因是什么?

请高手指点

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2010-1-26 15:29:56 | 显示全部楼层
补充一点:
  在格式化之前,WINHEX可以显示某个扇区的物理扇区号及对应的逻辑扇区号,格式化后看不到了, WINHEX没有显示了,非常奇怪。

出0入0汤圆

发表于 2010-1-26 15:44:01 | 显示全部楼层
1、物理地址。
2、不知道。
3、不知道。

出0入0汤圆

发表于 2010-1-26 16:43:07 | 显示全部楼层
猜测一下,逻辑地址=物理地址+保留的扇区数,DBR可能在物理地址的零扇区,也可能不在零扇区。
如果不在零扇区,在零扇区的 0x1c6 有保留的扇区数。
用WinHex观察时,如果装入的是physical media就应该是物理地址。可能格式化后,保留的扇区数与原来不一样,所以逻辑地址改变。

出0入0汤圆

发表于 2010-1-26 18:13:01 | 显示全部楼层
1、读写物理扇区当然是物理地址,逻辑地址是文件系统来说的,如果你只把SD卡当FLASHROM来用,就不根本不涉及逻辑地址的概念
2、在文件系统中,逻辑地址是针对于某个分区的DBR来说的,如果DBR在100扇区,那么物理扇区150扇区,逻辑扇区是50
如果格式化后,逻辑与物理扇区一致,也就是DBR在0扇区,则在WINHEX中不显示物理扇区

出0入0汤圆

发表于 2010-1-27 10:16:49 | 显示全部楼层
我再说明一下,下位机是把sd 当成flash存储器,但上位机用vc读卡,要求卡中有完整的文件系统,并且需要知道数据起始的逻辑扇区号,否则上位机不知从哪里读。
我的卡只有一个分区,DBR始终在0扇区(物理)。在格式化后,逻辑与物理扇区号均不显示

出0入0汤圆

发表于 2010-1-27 10:21:54 | 显示全部楼层
我再说明一下,下位机是把sd 当成flash存储器,但上位机用vc读卡,要求卡中有完整的文件系统,并且需要知道数据起始的逻辑扇区号,否则上位机不知从哪里读。
我的卡只有一个分区,DBR始终在0扇区(物理)。在格式化后,逻辑与物理扇区号均不显示

出0入0汤圆

发表于 2010-3-30 20:13:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-16 10:33:28 | 显示全部楼层
我也遇到过类似的问题。

测试过三张卡,都是FAT系统:
一个128M的卡,物理扇区地址比逻辑扇区地址大32
一个2G的卡,物理扇区地址比逻辑扇区地址大63
一个4Ghc的卡,物理扇区地址比逻辑扇区地址大63

我都不知道该怎么读了。
不知道这个差值是定的吗,与什么有关系,卡类型?

出0入0汤圆

发表于 2011-5-16 10:52:48 | 显示全部楼层
终于找到偏移量的记录位置了,是在物理0扇区的第454-457字节,这四个字节从低到高表示了该磁盘物理扇区与逻辑扇区的差值。

出0入0汤圆

发表于 2011-8-15 10:05:49 | 显示全部楼层
回复【9楼】LCRPN
-----------------------------------------------------------------------

谢谢了,我找了好久,看到你的东西恍然大悟

出0入0汤圆

发表于 2011-8-20 08:36:14 | 显示全部楼层
回复【9楼】LCRPN
-----------------------------------------------------------------------
哥哥,你说错了,你说的是整个扇区大小而不是开始扇区位置,指向起始逻辑0扇区应该是450到453-----------------------------------------------------------------------

出50入0汤圆

发表于 2012-2-7 16:36:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-6-26 15:35:17 | 显示全部楼层
谢谢,有帮助

出0入0汤圆

发表于 2014-8-28 09:10:33 | 显示全部楼层
本帖最后由 bbl0707 于 2014-8-28 09:13 编辑

1、物理地址
2、逻辑地址 = 物理扇区地址-隐藏的扇区数(这个可以在MBR中读出)
3、发生变化是因为你重新格式化之后,MBR会被重新写入,会产生变化!

出0入0汤圆

发表于 2014-8-28 11:27:47 | 显示全部楼层
逻辑地址是给文件系统用的,MCU驱动SD写入当然是物理地址。二者偏移多少,要看格式化时的定义,同一张卡格式为FAT16/32,偏移是不同的。

出0入0汤圆

发表于 2014-12-16 16:16:37 | 显示全部楼层
为什么读取扇区0  数据不全是0???哪些数据代表什么。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 05:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表