4137|8

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于SD卡上移植 FAT 文件系统时的 初始化工作,遇到点问题 [复制链接]

//读引导区信息(MASTER BOOT RECODER) MBR区  
ReadBlock(0);// 读MBR结构  前446个都是0,从447开始为分区信息 (64个字节)
//PartInfo = *((struct partrecord *)((struct partsector *)BUFFERtemp)->psPart);//得到分区表信息 DPT部分

// 2008-11-20修改
struct partsector * pttt=(struct partsector*)BUFFERtemp;
PartInfo=*( struct partrecord*)pttt->psPart;
// 读操作系统引导记录区(DOS BOOT RECODER) DBR信息     
// 启动扇区号在PartInfo.prStartLBA中

///////////////////////////////////////////////////////////////////////////////
以上的代码,读取后,获得值都在BUFFERtemp,并强制给结构后, 通过观察,都对
///////////////////////////////////////////////////////////////////////////////

if(PartInfo.prStartLBA>1000)PartInfo.prStartLBA=0;//非启动型盘

ReadBlock(PartInfo.prStartLBA);//读取启动扇区信息 DBR
///////////////////////////////////////////////////////////////////////////////
不能理解的是第一句话,PartInfo.prStartLBA 这个值,大于 1000后, 又赋予了 "0"
然而接着又读了, 和上面读MBR内容时,读了相同的地址, 内容肯定也是一样的了
///////////////////////////////////////////////////////////////////////////////

bpb = (struct bpb710 *) ((struct bootsector710 *) BUFFERtemp)->bsBPB;//得到bpb信息   

////////////////////////////////////////////////////////////////////////////////
// 这里的 bpb信息, 即等于  从BUFFERtemp数组的 12-- 53 的内容,
// 在这个函数里, 共读了 2次, 地址都是从 "0"开始的, 内容也都是一样的应该
// 而BUFFERtemp数组的 12-- 53 的内容,两次读的结果 全都是 00
// 导致下面的代码,走不到 FAT16里,而走到了 FAT32里, 但在FAT32的判断里
// 所有的信息都是 "0" , 磁盘大小啊,扇区数啊等
/////////////////////////////////////////////////////////////////////////////

FirstDataSector=PartInfo.prStartLBA;//第一个数据开始区(DBR所在区域)
//得到fat根目录所在扇区
if(bpb->bpbFATsecs)// bpbFATsecs非0,为FAT16,FAT表所占的扇区数在bpbFATsecs里
{
//putsf("This is a FAT16 Card");
}
else// bpbFATsecs是0,为FAT32,FAT表所占的扇区数在bpbBigFATsecs里
{            return 0;       
}  


有人做过么?

最新回复

我的SD还没搞定呢   详情 回复 发表于 2009-12-4 19:15
点赞 关注

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
什么平台啊?SPI接口?

我只在2440上弄过,在单片机上弄就没有哦。
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我用的是ARM7, SPI接口也是

和SD的底层通讯都没有问题的, 只是这个读,MBR, 和读 DBR ,怎么读的是同一个地方呢?

bpb = (struct bpb710 *) ((struct bootsector710 *) BUFFERtemp)->bsBPB;//得到bpb信息
全是"00"

因此,最后进入FAT32里了,但所有的信息,如磁盘大小,扇区信息等,都是"00"

 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
SD卡没有MBR,启动盘才有,SD卡里的MBR只记录了第一个扩展分区的位置,其它都是0,所以你如果读到第0个扇区开头几个字节不是DBR开头几个字节的话,就跳到DPT去,把第一个扩展分区的位置读出来,注意是第一个扩展分区,前面还有个主分区。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
if(PartInfo.prStartLBA>1000)PartInfo.prStartLBA=0;//非启动型盘

ReadBlock(PartInfo.prStartLBA);//读取启动扇区信息 DBR

首先DBR扇区不会超过1000,所以他在这里做了判断if(PartInfo.prStartLBA>1000)PartInfo.prStartLBA=0;//非启动型盘
DBR扇区一般为0或者32、64
接着就读取ReadBlock(PartInfo.prStartLBA);//读取启动扇区信息 DBR
出现你上边的情况,怀疑是你的SD卡驱动还没有全,只考虑了小容量的SD卡,你最好先拿256M的SD卡来试
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

6
 


事情的起因是源于下面这样的一则广告贴(目前幸运还没有被删除,可以链接成功):
[/url]

事情的发展是在这个贴:

我在移动平台专区被封权限是为什么?这个要找谁?
[url=http://topic.eeworld.net/u/20081118/08/cf7d0af3-35cc-4fb7-9dc2-4567041b89e5.html?seed=1367941736 ]


事情的最新进展是这样的:

[抗议]对硬件/嵌入开发的某些版主武断,简单,粗暴的执法方式表示严重的抗议!  
[/url]

当小贩被野蛮城管打死后之eeworld版
[url=http://topic.eeworld.net/u/20081120/09/8af968cb-af00-4ddb-8604-dab1fb5421be.html?seed=613093649]


我重申一下,我一直不是在为我发广告贴辩护,我是在为处理此事的过程中受到的不合理对待即wxf0204 武断,简单,粗暴加野蛮的方式执法的行为,就我看跟城官差不多,对残踏我作为eeworld网友尊严,无视我作为eeworld网友存在的言行进行回击,悍卫我作为eeworld网友所具有的最基本的权利,而且之前连一个申诉的地方都没有,也没有找到班主封ID,删除留言的规定!

别人城管也不会第一次去执法看到有小贩就直接打死,也会先劝导,就第一次收了别人小贩的东西也会开个条说一下情况,开个清单,收了什么,什么时候来取,要受到何种处罚,你们这帮斑猪不通人性,看到小贩直接毙了,之前之后,不声不响,不闻不问,不通人性,比城管还城管...................
而且还不知反省,以暴抑暴,导致事件恶性循环!

大家注意抗议的主题,不是对删除贴子,封ID有异议,对此贴前已经说的很清楚,现在的问题是抗议某些斑猪或者大部分斑猪在处理此事时粗暴的方式,野蛮的态度,狭隘的思想,如果在封ID之前给予警告,封ID之后对被封ID用户说明情况如确认被封的具体原因,封的时间以及当前所犯事件的严重程度等,事情何以至此,现在某些斑主为撑面子,继续执迷不悟!

再者跟城管没得比,别人城管之前还有警告,收了东西之后还要开个单子,通知什么时候去取回,有什么处罚,你们的粗野方式就是直接毙了,一了百了,跟原始人一样,难不成eeworld都是这样,真没人性化,我看别的论坛都是有流程,有说明,有警告,有通知!而且应该还有申诉的渠道,不能一手遮天,一毙完事!


知会一下,举手之劳,别的论坛都这么做......你们不这么做就是不通人性.........你自己想下,你这样野蛮,我为何要惧怕你的淫威,你以为你是谁,做错事直接闷棍打死,真正怎么死的都不知,...........不给没有前科的人以任何机会,手段之残忍,心恨之至极...........令人发指........让人不服,还不让辩解.....................




 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

7
 
楼主有没有SD卡的驱动的,能不能给发一份,我现在要搞ARM92410上的文件系统移植,可就是不知道SD卡的驱动是怎么弄的,ARM7上的也可以啊,研究了老久了
email:xuxiaohuahhh@163.com
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

8
 
好了

谢谢各位

是我自己疏忽了字节对齐问题 嘿嘿, 查了一天,终于好了
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
我的SD还没搞定呢
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表