OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 22408|回复: 53

FAT初始化修正(如你的SD卡在原子的实例中识别不了,可以试一下)

[复制链接]

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2124
金钱
2124
注册时间
2011-9-3
在线时间
124 小时
发表于 2011-10-25 22:40:48 | 显示全部楼层 |阅读模式

      最近由于玩STM32,里面原子的实例用到FAT系统,所以专门花了几天时间(只能抽业余时间)研究了FAT系统,发现原子实例中对FAT初始化代码有些问题,后咨询原子,经原子的反映,有些网友的SD卡也用不了,所以今晚就花了点时间重新整理了一下这个FAT初始化函数,经原子测试,原本不能用的SD卡可以使用了,现在把代码共享出来,让更多的M3友可以共享,如SD卡还不能用,可以跟贴反映。以下是代码(内含详细注释):

//以下FAT_Init1()函数为螃蟹重写的FAT初始化函数
 u8 dat[512];

u8 FAT_Init1(void)
{
 bootsector710 *bs  = 0;   //定义DBR结构体,包含BPB部分(12~90字节是BPB)
 bpb710        *bpb = 0;   //定义BPB结构体  
 partrecord    *pr  = 0;   //定义硬盘信息 结构休  (16字节)
 DWORD hidsec=0;     //隐藏的扇区数即为DBR在物理扇区的偏移量
 u32 Capacity; 
 Capacity = SD_GetCapacity(); //得到SD容量,单位为字节     
 if(Capacity<0xff)return 1;    

 if(SD_ReadSingleBlock(0,fat_buffer))return 2;   //读物理扇区0。即MBR(其中MBR内的硬盘分区表中有DBR的地址信息),如没有MBR,则为DBR。经测试,我的SD卡是有MBR的
 if(fat_buffer[0]!=0XEB&&fat_buffer[0]!=0XE9)      //如物理0扇区第一字节不为0XEB或0XE9,则存在MBR,否则不存在
 {  

  printf("此SD卡的物理扇区0为MBR\n");
  pr = (partrecord *)((partsector *)fat_buffer)->psPart;//first partition   第一分区
  hidsec=pr->prStartLBA; //隐藏的扇区 即DBR的物理扇区偏移
    printf("此SD卡的DBR的物理扇区为=%d\n",hidsec) ;
 }
 else
 {
  hidsec=0;  //无MBR,物理扇区0即为DBR
  printf("此SD卡不存在MBR,物理扇区0即为DBR,物理扇区0即为逻辑扇区0.\n");
  
 }
   if(SD_ReadSingleBlock(hidsec,fat_buffer))return 3; //取DBR数据,512字节
 printf("DBR物理扇区偏移量:%d \n",hidsec);
 bs = (bootsector710 *)fat_buffer;
 bpb = (bpb710 *)bs->bsBPB;
 if(bpb->bpbFATsecs)//detemine thd FAT type  //do not support FAT12
 {
  FAT32_Enable=0; //FAT16
  FATsectors   = bpb->bpbFATsecs;//FAT表占用的扇区数
  FirstDirClust = 2;
 }
 else
 {
  FAT32_Enable=1; //FAT32
  FATsectors   = bpb->bpbBigFATsecs;//FAT占用的扇区数
  FirstDirClust = bpb->bpbRootClust;
 }

 BytesPerSector = bpb->bpbBytesPerSec;      //每扇区字节数
 SectorsPerClust = (BYTE)bpb->bpbSecPerClust;//每簇扇区数
 FirstFATSector = bpb->bpbResSectors+hidsec;//第一个FAT表扇区
 RootDirCount = bpb->bpbRootDirEnts;  //根目录项数
 RootDirSectors = (RootDirCount*32)>>9;  //根目录占用的扇区数
 FirstDirSector = FirstFATSector+bpb->bpbFATs*FATsectors;//第一个目录扇区
 FirstDataSector = FirstDirSector+RootDirSectors;//第一个数据扇区
 printf("每扇区字节数:%d \n",BytesPerSector);
 printf("每簇扇区数:%d \n",SectorsPerClust);
 printf("第一个FAT表扇区:%d \n",FirstFATSector);
 printf("根目录项数:%d \n",RootDirCount);
 printf("根目录占用的扇区数:%d \n",RootDirSectors);
 return 0;
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-10-25 22:57:32 | 显示全部楼层
回复【楼主位】螃蟹爱虫:
---------------------------------
非常感谢.
此贴解决了我们开发板一个很大的问题,就是某些卡无法识别.现在按照这个代码修改fat_init函数即可识别绝大部分卡了(目前还没测试到未能识别的卡).

为表示感谢,送螃蟹爱虫我们的开发板一套.以资鼓励!
希望其他网友也多学习螃蟹的这种钻研精神,找到我们开发板的问题,发现问题,解决问题.同样可以获赠我们的开发板.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2124
金钱
2124
注册时间
2011-9-3
在线时间
124 小时
 楼主| 发表于 2011-10-27 00:01:37 | 显示全部楼层
顶一下,让更多人看到。。。
回复 支持 反对

使用道具 举报

头像被屏蔽

95

主题

159

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
442
金钱
442
注册时间
2011-3-22
在线时间
6 小时
发表于 2011-10-27 21:12:28 | 显示全部楼层
好样的,支持!虽然我现在还达不到那种要求,不过我还是会努力的!
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2124
金钱
2124
注册时间
2011-9-3
在线时间
124 小时
 楼主| 发表于 2011-10-27 22:40:37 | 显示全部楼层
~~~今天已收到原子赠送的板,板子非常的好,包装的非常心细,还带了红外遥控,刚测试了下,板子运行OK,非常感谢原子的馈赠,看来今年非完好M3不可了,不然可不好向原子交代,呵呵。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-10-28 00:51:40 | 显示全部楼层
回复【5楼】螃蟹爱虫:
---------------------------------
继续努力.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

34

帖子

0

精华

限制会员

积分
-80
金钱
-80
注册时间
2011-4-3
在线时间
1 小时
发表于 2011-10-28 15:58:31 | 显示全部楼层
赞一个!!哇,好样的。
会思考的键盘
回复 支持 反对

使用道具 举报

7

主题

74

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2011-9-3
在线时间
4 小时
发表于 2011-10-28 20:08:43 | 显示全部楼层
支持
回复 支持 反对

使用道具 举报

2

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2011-3-10
在线时间
4 小时
发表于 2011-10-29 05:44:33 | 显示全部楼层
顶一个,,,,原子不错,,,
回复 支持 反对

使用道具 举报

27

主题

274

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
472
金钱
472
注册时间
2011-11-2
在线时间
11 小时
发表于 2011-11-14 13:32:03 | 显示全部楼层
256金士顿TF卡不行  , 512M  TF卡测试成功!
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2011-11-14 14:33:44 | 显示全部楼层
刚接触fat,还在看资料呢,弱弱问一下,有没UICODE转GBK码的生成软件??在资料中只找到了点阵字库生成器。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-11-14 16:04:07 | 显示全部楼层
回复【11楼】Tardis:
---------------------------------
unicode转GBK码,貌似没得软件...
都是找的数组来的....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2011-11-14 18:49:36 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
哦~~
原来如此~~~
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2011-11-14 18:58:54 | 显示全部楼层
回复【楼主位】螃蟹爱虫:
---------------------------------
第一行的u8 dat[512]貌相没用,应该是u8 fat_buffer[512]吧?
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2124
金钱
2124
注册时间
2011-9-3
在线时间
124 小时
 楼主| 发表于 2011-11-14 20:23:31 | 显示全部楼层
回9楼,貌似256M的MBR信息都不一样了,已经找不到这么小的卡了。。呵呵
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2011-11-14 22:48:33 | 显示全部楼层
回复【15楼】螃蟹爱虫:
---------------------------------
确实,还是建议完善一下支持小容量的卡吧~~~
说不定有人就这么钻牛角尖,就要用这么小的卡,我这还有一张当年购买摩托罗拉E398随机附送的16M的TF卡呢,刚测试也无法识别卡。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2124
金钱
2124
注册时间
2011-9-3
在线时间
124 小时
 楼主| 发表于 2011-11-15 19:24:26 | 显示全部楼层
没必要了,假如你要做产品,对于市场上已经或者说很快就不存在的东西,没必要花这个心思去搞,就好比如说软盘,你还会去研究吗,,呵呵。。
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2011-11-15 20:47:49 | 显示全部楼层
回复【17楼】螃蟹爱虫:
---------------------------------
呵呵,这个还真不会去研究,话说,软盘已经成历史了,可以进博物馆了,现在如果想买软盘,还真找不到。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

26

主题

279

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
金钱
409
注册时间
2010-12-15
在线时间
0 小时
发表于 2011-11-18 13:51:40 | 显示全部楼层
hehe ,,LZ是好人,,经验丰富。。。技术精湛
STM32芯片---上海银洋电子021-53086303
欢迎来电15900733302??采购找张经理
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2124
金钱
2124
注册时间
2011-9-3
在线时间
124 小时
 楼主| 发表于 2011-11-18 16:25:00 | 显示全部楼层
技术精湛就谈不上,不过学技术的,重在交流啊,多交流才会进步!
回复 支持 反对

使用道具 举报

6

主题

114

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2011-2-28
在线时间
8 小时
发表于 2011-11-22 10:36:28 | 显示全部楼层
学习一下,之前发现TF卡片不行,自己解决不了。
我会很乐意与你交流的。
回复 支持 反对

使用道具 举报

48

主题

376

帖子

0

精华

高级会员

Rank: 4

积分
621
金钱
621
注册时间
2011-3-18
在线时间
7 小时
发表于 2011-11-22 14:13:56 | 显示全部楼层
good,好技術
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2011-11-22 15:57:17 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
请教一个问题,文件系统中定义变量都用DWORD定义,哦查询过相关资料,DWORD定义的是32位无符号整形,那为什么不用u32而用DWORD?是不是DWORD还有其他特殊的意思??
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-11-23 16:49:40 | 显示全部楼层
回复【23楼】Tardis:
---------------------------------
一样的,没改过来....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2011-11-23 17:57:55 | 显示全部楼层
回复【24楼】正点原子:
---------------------------------
哦,原来如此。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

头像被屏蔽

275

主题

327

帖子

0

精华

禁止访问

积分
1065
金钱
1065
注册时间
2011-7-7
在线时间
34 小时
发表于 2011-12-5 08:58:58 | 显示全部楼层
ooo
回复 支持 反对

使用道具 举报

6

主题

114

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2011-2-28
在线时间
8 小时
发表于 2011-12-9 21:30:41 | 显示全部楼层
今天改了下,果然好用。
我会很乐意与你交流的。
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2124
金钱
2124
注册时间
2011-9-3
在线时间
124 小时
 楼主| 发表于 2011-12-9 21:49:37 | 显示全部楼层
恭喜楼上!
回复 支持 反对

使用道具 举报

2

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2011-1-16
在线时间
4 小时
发表于 2011-12-11 08:38:23 | 显示全部楼层
非常好,UPUP
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2011-12-30
在线时间
4 小时
发表于 2011-12-30 12:26:36 | 显示全部楼层
回复【楼主位】螃蟹爱虫:
---------------------------------
回复【2楼】正点原子:
---------------------------------
此SD卡不存在MBR,物理扇区0即为DBR,物理扇区0即为逻辑扇区0.
DBR物理扇区偏移量:0 
每扇区字节数:0 
每簇扇区数:0 
第一个FAT表扇区:0 
根目录项数:0 
根目录占用的扇区数:0 

我的卡是2G的金斯顿,读出这样的信息是什么意思啊,难道不可以读SD卡下的文件。我都读出此SD卡的大小了。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-12-30 13:47:35 | 显示全部楼层
能用不?
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2011-12-30
在线时间
4 小时
发表于 2011-12-30 14:04:42 | 显示全部楼层
回复【31楼】正点原子:
---------------------------------
不能用,卡死在丢失系统文件夹那里。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-12-30 16:18:17 | 显示全部楼层
回复【32楼】akwkevin:
---------------------------------
那是你没放系统文件进去啊....
看看<<不完全手册>>对应章节吧.!!!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2011-1-4
在线时间
4 小时
发表于 2011-12-31 10:38:56 | 显示全部楼层
好贴
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2011-12-30
在线时间
4 小时
发表于 2012-1-2 11:21:57 | 显示全部楼层
回复【33楼】正点原子:
---------------------------------
放了的,我确定我放了,一开始我以为复制出问题,还覆盖了一遍,本来卡是fat32格式,我还把卡格式化成fat格式下也不行,这几天看看SD卡手册,或许是我的卡不能用,过几天买个新卡试试。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-1-2 11:23:49 | 显示全部楼层
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2124
金钱
2124
注册时间
2011-9-3
在线时间
124 小时
 楼主| 发表于 2012-1-2 16:09:23 | 显示全部楼层
回复【35楼】akwkevin:

---------------------------------
你的卡在其它地方,比如说MP3上能用不?
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2011-12-30
在线时间
4 小时
发表于 2012-1-3 09:11:17 | 显示全部楼层
回复【37楼】螃蟹爱虫:
---------------------------------
恩,不能,SD卡实验中读出的扇区数据和winhex上看到的不一样,后面的更做不出来。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-1-3 12:29:53 | 显示全部楼层
换卡吧.
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2124
金钱
2124
注册时间
2011-9-3
在线时间
124 小时
 楼主| 发表于 2012-1-3 16:07:15 | 显示全部楼层
回复【38楼】akwkevin:

---------------------------------
那說明你的卡本身就有問題的了。換卡吧。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2012-1-5
在线时间
0 小时
发表于 2012-1-5 10:09:58 | 显示全部楼层
原子的fat例程能读txt文件,有没有可生成txt并往里面写数据呢?这样就不用移值fatfs了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-1-5 11:38:49 | 显示全部楼层
没有。
回复 支持 反对

使用道具 举报

7

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2011-8-2
在线时间
33 小时
发表于 2012-2-2 20:48:39 | 显示全部楼层
这个问题纠结了我好长一段时间  今天看到解决的方法  !!!  只能怪我没时常的回来逛论坛  呵呵!!支持楼主
我只希望我一直能保持着满腔的热情去玩!!!!
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2124
金钱
2124
注册时间
2011-9-3
在线时间
124 小时
 楼主| 发表于 2012-2-5 22:50:27 | 显示全部楼层
回复【43楼】Fi_Sun:
这个问题纠结了我好长一段时间  今天看到解决的方法  !!!  只能怪我没时常的回来逛论坛  呵呵!!支持楼主
---------------------------------
能解决问题就好,恭喜。
回复 支持 反对

使用道具 举报

3

主题

123

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
364
金钱
364
注册时间
2012-4-30
在线时间
11 小时
发表于 2012-5-1 17:05:46 | 显示全部楼层
我的一张128M TF加个读卡器可以正常使用的
真的勇士,敢于直面惨淡的warning,敢于正视淋漓的error.
回复 支持 反对

使用道具 举报

2

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2011-10-8
在线时间
0 小时
发表于 2012-5-2 10:29:23 | 显示全部楼层
 原子哥例程里 那个图片显示实验的,我下载了最新例程,里面的FAT初始化应该就是用螃蟹哥重写的函数吧,怎么我插上SD卡,老是说文件系统错误?
回复 支持 反对

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2012-7-20
在线时间
15 小时
发表于 2012-9-4 20:21:55 | 显示全部楼层
发现MBR和DBR 0x00地址都是0xEB的16G SD卡,偏移0x0b和0x0c位置的扇区字节数还没有发现不是512 ,作为判断依据应该是可以的






























































改动一下代码,这样最起码我的这个问题可以解决了,原理是先假设有MBR,则0x1c6和其后的3个字节为DBR的LBA物理扇区偏移,读取此偏移的扇区,如果第一字节不为0XEB或0XE9,则此扇区不是DBR,重新读取物理扇区0,即DBR
if(SD_ReadDisk(fat_buffer,0,1))return 2; //读物理扇区0。即MBR(其中MBR内的硬盘分区表中有DBR的地址信息),如没有MBR,则为DBR。经测试,我的SD卡是有MBR的
 //假设有MBR,0x1c6和其后的3个字节为DBR的LBA物理扇区偏移
  pr = (partrecord *)((partsector *)fat_buffer)->psPart;//first partition       第一分区
 hidsec=pr->prStartLBA;   //隐藏的扇区 即DBR的物理扇区偏移
  if(SD_ReadDisk(fat_buffer,hidsec,1))return 3; //读取假设的DBR扇区
  if(fat_buffer[0]!=0XEB&&fat_buffer[0]!=0XE9)  //第一字节不为0XEB或0XE9,则此扇区不是DBR,重新读取物理扇区0,即DBR
  {
    if(SD_ReadDisk(fat_buffer,0,1))return 4; //重新读物理扇区0,即DBR
    if(fat_buffer[0]==0XEB&&fat_buffer[0]==0XE9)  //如物理0扇区第一字节为0XEB或0XE9,
      hidsec=0;      //无MBR,物理扇区0即为DBR
    else
      return 4;
  } 
 bs = (bootsector710 *)fat_buffer;
 bpb = (bpb710 *)bs->bsBPB;
 if(bpb->bpbFATsecs)//detemine thd FAT type  do not support FAT12
 {
  FAT32_Enable=0;        //FAT16
  FATsectors     = bpb->bpbFATsecs; //每FAT表占用的扇区数 FAT16
  FirstDirClust = 2;//
 }
 else
 {
  FAT32_Enable=1;        //FAT32
  FATsectors     = bpb->bpbBigFATsecs;//每FAT占用的扇区数 FAT32
  FirstDirClust = bpb->bpbRootClust;//
 }
回复 支持 反对

使用道具 举报

10

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2011-1-15
在线时间
5 小时
发表于 2012-10-14 00:54:28 | 显示全部楼层
mark一下
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
337
金钱
337
注册时间
2012-10-6
在线时间
100 小时
发表于 2012-10-29 11:12:19 | 显示全部楼层
今天遇到一个很奇怪的SD卡问题,之前SD卡读取字库显示正常,被同学拿去格式化变成FAT32了...拿回来我右格式化成FAT,结果SD卡读取字库显示的字既然反了(还要镜像旋转180,在顺时针旋转90,才回原样!)...现在在怎么格式化都没用了!哎!!!...求  原子,螃蟹哥...指导!
回复 支持 反对

使用道具 举报

63

主题

305

帖子

1

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2012-8-3
在线时间
79 小时
发表于 2014-2-20 16:26:36 | 显示全部楼层
回复【楼主位】螃蟹爱虫:
---------------------------------
我想知道,代码到底哪些地方做了修改?因为现在已经是新版本的代码了,我想知道的原来有bug的代码是怎么样的
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-15 19:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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