....在给SD卡上FAT16文件系统.出现的让人崩溃的问题....<br />函数如下:<br />uint8 ReadBPB(void){ //读取BPB数据结构<br /> uint8 ok;<br /> <br /> FAT_BPB * BPB;<br /> ok=ReadFatBlock(FAT_Sector);<br /> BPB=( FAT_BPB*)BUFFER;<br />typedef struct{<br /> uint8 BS_jmpBoot[3];<br /> uint8 BS_OEMName[8];<br /> uint16 BPB_BytesPerSec;<br /> uint8 BPB_SecPerClus;<br /> uint16 BPB_RsvdSecCnt;<br /> uint8 BPB_NumFATs;<br /> uint16 BPB_RootEntCnt;<br /> uint16 BPB_TotSec16;<br /> uint8 BPB_Media;<br /> uint16 BPB_FATSz16;<br /> uint16 BPB_SecPerTrk;<br /> uint16 BPB_NumHeads;<br /> uint32 BPB_HiddSec;<br /> uint32 BPB_TotSec32;<br /> uint8 BS_DrvNum;<br /> uint8 BS_Reservedl;<br /> uint8 BS_BootSig;<br /> uint32 BS_VolID;<br /> uint8 BS_VolLab[11];<br /> uint8 BS_FilSysType[8];<br /> uint8 ExecutableCode[448];<br /> uint16 ExecutableMarker[2];<br />} FAT_BPB;<br />函数READ_BPB 读取的值都是对的.但是传给FAT_BPB BPB时.值就开始的<br />BS_jmpBoot[3];和BS_OEMName[8];是对的.后面基本上是乱的.<br />然后我试了几种方法。基本上判断,结构体在定义时是不连续分配的。<br />(与我平常见的其他编译器不一样)<br />请问那位知道在ADS编译器中可以设置定义结构体时,内存分配连续..<br />或者有其他方法解决不?~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br /> 那位知道的高手一定告诉我啊。FAT16文件系统全都是结构体传值,这个解决不了,基本上做不下去了。.<br /> 提前感谢回答的大虾.也感谢路过的朋友. |
|