FAT12驱动簇链提前终止问题求助
FAT12驱动簇链提前终止问题求助
我正在为自己的操作系统开发FAT12驱动,但碰到了一个特别诡异的问题,现在拿不准是代码逻辑的问题,还是驱动本身的问题。
我有个叫long.txt的测试文件,里面大概存了1024字节的内容,本来是用来测试簇链遍历逻辑的。结果现在代码读完第一个簇就直接停了,它识别到下一个簇是0xFFF——这个值比0xFF8大,按照FAT12的规则会被判定为文件结束,但实际上文件内容根本还没读完。
下面是出问题的代码片段:
int fatReadInternal(fsNode_t *file, uint8_t *buffer, uint32_t length) { if (file) { // Calculate and read in the starting physical sector uint16_t cluster = file->impl; uint32_t sector = ((cluster - 2) * drive->bpb->sectorsPerCluster) + drive->firstDataSector; uint8_t *sector_buffer; ideReadSectors(drive->driveNum, 1, (uint32_t)sector, sector_buffer); //...(后续代码省略) } }
备注:内容来源于stack exchange,提问作者user25873577
相关产品推荐
相关产品推荐

