result = SD_ReadMultiBlock(sector,count,buff );//要遵循定结的参数结序。
if ( result==0 ) return RES_OK; return RES_ERROR;}
4、disk_write函结函结数与数似~不再多结。 {u8 result;
result = SD_WriteMultiBlock(sector,count,buff );//要遵循定结的参数结序。
if ( result==0 ) return RES_OK; return RES_PARERR;}
5、disk_ioctl函~直接返回数RES_OK. 结diskio.c结行结结结~成功独通结。
结整工程结行结结~结示个get_fattime结函有个数没数定结。添加函定结~直接返回0~整工程结结个通结。
六、下结、结结
将来没装呢程序下结后~结行结结~结结结示结文件结结~才想起~结有结行文件系结安~也就是要结用f_mount函。数
添加好f_mount函后~结结下结。数
出结了一奇个怪的结结,每次结用f_read;,函结~就出结~数会并且SD只有卡重新上结才能结出。通结结置断区会点~结结每次结取文件结在目结的扇结~都结结返回。
最好结结结结是一结个没确量有正的初始化造成的,
u8 SD_ReadMultiBlock( u32 BlockIndex, u32 BlockNum, u8* ReadBuf ){
u16 i=\就是结里的结个i结量的初始化~花了我结结的结结两个来才结结出。
u8 TmpByte; BlockIndex <<=9;
if ( SD_CmdReadMulti( BlockIndex ) )//结出结结结命令17,结是不能将片结除能
{ SD_CSDisable( ); SPI_PutByte( 0xFF ); return 1; } 结结成功后~可以正结出文件了。确
七、FAT32文件系结格式分析 1、引结扇区
引结扇包区参数区含着磁结和文件系结的结多重要。文件管理系结首先要结结扇的信息结行分析~才能了解前当磁结上文件系结的格式。
EB 58 90 4D 53 44 4F 53 35 2E 30 00 02 08 20 00 02 00 00 00 00 F8 00 00 3F 00 FF 00 00 00 00 00 00 34 0F 00 CC 03 00 00 00 00 00 00 02 00 00 00 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 29 22 B0 50 A0 4E 4F 20 4E 41 4D 45 20 20
20 20 46 41 54 33 32 20 20 20 33 C9 8E D1 BC F4 7B 8E C1 8E11-12字结每一扇的字结区数典型结0x00、02~512
13每簇扇区数8
14-15保留扇区数0x20~00~保留32扇个区 21介结结型0xF8~固定介结
32-35结扇区数0x00 34 0F 00~十结制 996352
36-39文件分配表所占扇区数0x CC 03 00 00~972
44-47根目结所在簇号02 00 00 00~2号簇 48-49FSINFO扇结结区号01 00~在1扇号区 50-51引结扇的结扇区份区号06 00~在6号区扇 66结展引结结志0x29
82-89FAT32字符串46 41 54 33 32 20 20 20
FAT32与FAT12、FAT16区数分是通结簇的量~簇结数=结扇区数-;保留扇区数+分配表扇区数+根目结扇,区区数/每簇扇。区数996352-
;32+972*2+0,/8=124297~有12万多簇~肯定是FAT32系结。
在FAT32文件系结~根目结区与数区普通目结一结~都是位于据~比结典型的 都是从2号簇结始。数区区号据起始扇=根目结起始扇区区号=保留扇区+2*分配
表扇区=32+1944=1976号。3号簇起始就是1984。利用shell命令里的SDRD命令结出来写个区号参数看一下。我结的结命令以扇结~两个区并每次结入扇~以十六
结制的形式结示在串口结端上。 Sdrd 6:
EB 58 90 4D 53 44 4F 53 35 2E 30 00 02 08 20 00 02 00 00 00 00 F8 00 00 3F 00 FF 00 00 00 00 00 00 34 0F 00 CC 03 00 00 00 00 00 00 02 00 00 00 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 29 22 B0 50 A0 4E 4F 20 4E 41 4D 45 20 20 与0扇的一结~表明号区6号区区份扇是引结扇结结。 FAT32文件系结的FSINFO扇结有一区些结志和 2、文件分配表格式
Sdrd 32,
F8 FF FF 0F FF FF FF FF FF FF FF 0F FF FF FF 0F FF FF FF 0F
FF FF FF 0F FF FF FF 0F FF FF FF 0F FF FF FF 0F FF FF FF 0F FF FF FF 0F FF FF FF 0F FF FF FF 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0F FF FF F8表明文件分配表的结始~第4-7字结结分配表保留~第 8-12字结0x0F FF FF FF代表结文件个个或目结只占据一簇~如果结非 0且小于0x0F FF F7表明结文件的下一个号簇簇。 3、目结结结构形式
FAT32的目结结包含了文件的很多性结,包括文件名、是目结结是文件、结建日 期、文件起始簇等等号数~是结取文件据的基结。
我在SD的卡个根目结下结建了三文件aaa.txt~bbb.txt~ccc.txt和目结两个个
111、222、结目结两个都是相同的aaa.txt等文件。根据前面的结算~根目结是在簇
2的1976扇。区 Sdrd 1976:
E5 B0 65 FA 5E 20 00 87 65 2C 67 0F 00 D2 87 65 63 68 2E 00
74 00 78 00 74 00 00 00 00 00 FF FF E5 C2 BD A8 CE C4 7E 31 54 58 54 20 00 36 17 8B 6F 3C 6F 3C 00 00 18 8B 6F 3C 00 00 00 00 00 00 41 41 41 20 20 20 20 20 54 58 54 20 18 36 17 8B //文件aaa.txt目结结
6F 3C 6F 3C 00 00 49 8B 6F 3C 03 00 64 05 00 00 E5 B0 65 FA 5E 20 00 87 65 2C 67 0F 00 D2 87 65 63 68 2E 00 74 00 78 0//结什结中结有两个空目结结
74 00 00 00 00 00 FF FF E5 C2 BD A8 CE C4 7E 31 54 58 54 20 00 36 17 8B 6F 3C 6F 3C 00 00 21 8B 6F 3C 00 00 00 00 00 00 42 42 42 20 20 20 20 20 54 58 54 20 18 36 17 8B 6F 3C 6F 3C //文件bbb.txt目结结
00 00 55 8B 6F 3C 04 00 15 01 00 00 E5 B0 65 FA 5E 20 00 87 65 2C 67 0F 00 D2 87 65 63 68 2E 00 74 00 78 00 74 00 00 00 00 00 FF FF E5 C2 BD A8 CE C4 7E 31 54 58 54 20 00 36 17 8B 6F 3C 6F 3C 00 00 23 8B 6F 3C 00 00 00 00 00 00 43 43 43 20 //文件ccc.txt目结结
20 20 20 20 54 58 54 20 18 36 17 8B 6F 3C 6F 3C 00 00 61 8B 6F 3C 05 00 70 01 00 00 E5 B0 65 FA 5E 87 65 F6 4E 39 59 0F 00 75 00 00 FF FF FF FF FF FF FF FF FF FF 00 00 FF FF FF FF E5 C2 BD A8 CE C4 7E 31 20 20 20 10 00 78 ED 98 70 3C 70 3C 00 00 EE 98 70 3C 06 00 00 00 00 00 31 31 31 20 20 20 20 20 //结是目结结111
20 20 20 10 00 78 ED 98 70 3C 70 3C 00 00 EE 98 70 3C 06 00 00 00 00 00 E5 B0 65 FA 5E 87 65 F6 4E 39 59 0F 00 75 00 00 //目结结大小结0
FF FF FF FF FF FF FF FF FF FF 00 00 FF FF FF FF E5 C2 BD A8 CE C4 7E 31 20 20 20 10 00 BB F4 98 70 3C 70 3C 00 00 F5 98