ADMASystem Address寄存器里存储的是地址描写叙述表(descriptor table)的首地址,当Block Count Enable使能时。通过Block Size和Block Count寄存器确定数据传输的大小,但总大小需和descriptor table的描写叙述同样,因为Block Count寄存器仅仅有16bit,表示的范围有限。 当Block Count Enable关闭时。数据传输的大小仅仅由descript...
block_size就是一次性擦除的扇区数量。 如此,格式化的参数有两种选择: 根据昨天的经验,用f_mkfs("",FM_FAT,0, work_buffer, FF_MAX_SS);这样的参数格式化,只能格式化为FAT12(或许应该再试试,因为最初用这种参数格式化时,用的BLOCK_SIZE是4096--与此无关,只要不是SFD格式,都会-63扇区作为起始扇区)。 根据...
ADMASystem Address寄存器里存储的是地址描写叙述表(descriptor table)的首地址,当Block Count Enable使能时。通过Block Size和Block Count寄存器确定数据传输的大小,但总大小需和descriptor table的描写叙述同样,因为Block Count寄存器仅仅有16bit,表示的范围有限。 当Block Count Enable关闭时。数据传输的大小仅仅由descript...
caseGET_SECTOR_SIZE: if(USBH_MSC_GetLUNInfo(&hUsbHostFS,lun,&info)==USBH_OK) { *(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(&hUsbH...
#define GET_BLOCK_SIZE 3 /* 每个扇区块的大小 (当FF_USE_MKFS == 1) */ 下面是从http://elm-chan.org/fsw/ff/doc/dioctl.html得到的参数实现效果,我们也可以参考原有的disk_ioctl的实现来理解这几个参数。 形参3buff为void形指针,根据命令的格式和需要,我们把对应的值转成对应的形式传给它。
int8_t STORAGE_GetCapacity_FS(uint8_t lun, uint32_t *block_num, uint16_t *block_size) { /* USER CODE BEGIN 3 */ *block_num = STORAGE_BLK_NBR; *block_size = STORAGE_BLK_SIZ; return (USBD_OK); /* USER CODE END 3 */ ...
case GET_SECTOR_SIZE : return RES_OK; case GET_BLOCK_SIZE : return RES_OK; case CTRL_POWER : break; case CTRL_LOCK : break; case CTRL_EJECT : break; /* MMC/SDC command */ case MMC_GET_TYPE : break; case MMC_GET_CSD :
1.GET_BLOCK_SIZE不是获取块的大小吗?这里返回是NAND_BLOCK_SIZE,其实就是64,即一块的页数,怎么解释...
GET_BLOCK_SIZE,得到每个扇区有多少个字节,比如 *((DWORD*)buff) = 512; 其他的命令,返回RES_PARERR disk_ioctl这个函数仅仅在格式化的时候被使用,在调试读写的时候,这个函数直接让他返回0就OK 了。 get_fattime- 得到系统的时间,格式请见文档。不用的话,返回0就行。
GET_BLOCK_SIZE返11以扇区为单位的存储阵列的擦除块大小赋给Buffer指向的DWORD变量。当擦除块大小未知或是磁盘设备时,返回1。只在fmkfs函数中,使用了该命令。6.getjattito获取当前时间DWORDgetfattime参数一(void);void返回值返回的当前时间被打包进一个DWORD数值。各位域定义如下:bit31:25bit24:21bit20:16bitl5...