我的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....
大神帮分析一下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
// 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对写驱动程序是否有区别?
感谢原子的帮助!
---------------------------------
这个问题“1,逻辑扇区在物理扇区的8192扇区,通过winhex找到的,程序里哪里能获得这个偏移量信息 ”刚才找到答案了,怪自己没研究仔细,物理第一个扇区有偏移值....
其他问题还是不明白
---------------------------------
看来坛里的一些帖子,发现自己理解错了很多东西,收货很多,现在最不懂的是什么时候需要sector = sector<<9; 我看你的程序里面也都有address<<9,是扇区转换为字节地址?如果为CARDTYPE_SDV2HC就不用转换了吗?为什么?
一周热门 更多>