check_fs(fs, bsect)读扇区问题

2019-08-14 06:01发布

我的8g sdhc,逻辑首扇区在物理的8192扇区
检测fat系统的时候
check_fs(fs, 0);读回正确数据
下面的
check_fs(fs, 8192);读回的全是0
如果先check_fs(fs, 8192);就能读回正确数据

后来调试发现
check_fs(fs, 8192);//读8192扇区数据
check_fs(fs, 8192);//读8192扇区数据

两句代码挨着,第一次读回数据正确,第二次读回的数据就全是0....
大神帮分析一下


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
lincolne
2019-08-14 08:54
昨晚看了 发现了问题是第一次调用读扇区函数,
// if ver = SD2.0 HC, sector need <<9
if(CardInfo.CardType != CARDTYPE_SDV2HC)
{
sector = sector<<9;
}
这里没执行,第二次调用的时候这里却执行了,导致第二次读回数据就错误了
除了sd卡初始化,应该没有其他地方对CardInfo.CardType 做改变啊...
现在还有另外个问题是
1,逻辑扇区在物理扇区的8192扇区,通过winhex找到的,程序里哪里能获得这个偏移量信息
2,我的是sandisk 8G SDHC ,属于2.0?或者3.0?你的那个驱动程序里没有对3.0的判断,3.0和2.0对写驱动程序是否有区别?



感谢原子的帮助!

一周热门 更多>