FatFs 模块只使用下述与设备无关的命令,没有使用任何设备相关功能。 GET_SECTOR_SIZE 返回驱动器的扇区大小赋给 Buffer 指向的 WORD 变量。在单个扇区大小配置中(_MAX_SS 为 512) ,不需要该命令。 GET_SECTOR_COUNT 返回总扇区数赋给 Buffer 指向的 DWORD 变量。只在 f_mkfs 函数中,使用了该命令。 GET_BLO...
如此说来,GET_BLOCK_SIZE的功能的确如我所理解的那样,是扇区数量。block_size就是一次性擦除的扇区数量。 如此,格式化的参数有两种选择: 根据昨天的经验,用f_mkfs("",FM_FAT,0, work_buffer, FF_MAX_SS);这样的参数格式化,只能格式化为FAT12(或许应该再试试,因为最初用这种参数格式化时,用的BLOCK_SIZE是409...
#define GET_SECTOR_COUNT 1 /* 获取磁盘扇区数(当FF_USE_MKFS == 1) */ #define GET_SECTOR_SIZE 2 /*获取磁盘存储空间大小 (当FF_MAX_SS != FF_MIN_SS) */ #define GET_BLOCK_SIZE 3 /* 每个扇区块的大小 (当FF_USE_MKFS == 1) */ 下面是从http://elm-chan.org/fsw/ff/doc/dioctl....
CTRL_SYNC:确保磁盘驱动器已经完成了写处理,当磁盘I/O有一个写回缓存,立即刷新原扇区,只读配置下不适用此命令 GET_SECTOR_SIZE:返回磁盘的扇区大小,只用于f_mkfs() GET_SECTOR_COUNT:返回可利用的扇区数,_MAX_SS≥1024时可用 GET_BLOCK_SIZE:获得擦除块大小,只用于f_mkfs() CTRL_ERASE_SECTO...
case GET_BLOCK_SIZE:*(DWORD*)buff = NAND_BLOCK_SIZE;break;case GET_SECTOR_COUNT:*(DWORD*)...
case MMC_GET_OCR : break; case MMC_GET_SDSTAT : break; } }else if(drv==1){ switch (ctrl) { case CTRL_SYNC : return RES_OK; case GET_SECTOR_COUNT : return RES_OK; case GET_SECTOR_SIZE : return RES_OK; case GET_BLOCK_SIZE : ...
*(DWORD*)buff=info.capacity.block_size; res=RES_OK; } else { res=RES_ERROR; } break; /* Get erase block size in unit of sector (DWORD) */ caseGET_BLOCK_SIZE: if(USBH_MSC_GetLUNInfo(&hUsbHostFS,lun,&info)==USBH_OK)
if(SD_GetTransferState()==SD_NO_TRANSFER) { res = RES_OK; } else { res = RES_ERROR; } break; case GET_BLOCK_SIZE: *(WORD*)buff = 512; res = RES_OK; break; case GET_SECTOR_COUNT: //读卡容量 ///formula of the capacity/// // // memory capacity...
GET_SECTOR_COUNT,得到所有可用的扇区数目(逻辑寻址即LBA寻址方式) GET_BLOCK_SIZE,得到每个扇区有多少个字节,比如 *((DWORD*)buff) = 512; 其他的命令,返回RES_PARERR disk_ioctl这个函数仅仅在格式化的时候被使用,在调试读写的时候,这个函数直接让他返回0就OK 了。
/* Block Size in Bytes */ #define BLOCK_SIZE 512 /* Private variables ---*/ /* Disk...