使用 cubemx 生成的 threadx 6.4 代码,现在电脑能够正确识别 u 盘,也能正确读取 SD 卡里面的文件,并且里面超过 4KB 的文件也能正常读取。但是向虚拟 u 盘里面写入文件的时候,超过 4KB就报错 "对于目标文件系统,文件xxx 过大",此时SD卡的空间还很大总共 8GB 使用 10MB。
1. 关于写入操作,我是直接使用鼠标进行复制粘贴的。
2. 试过关闭 filex 的容错功能,发现也不行。
3. 这个是写入函数,我发现每次写入,lba==0 时都写不成功,写入函数返回 FX_SECTOR_INVALID 。但是把读写函数的 lba 都改成从 1 开始又电脑又识别不到 U盘
[C] 纯文本查看 复制代码
UINT USBD_STORAGE_Write(VOID *storage_instance, ULONG lun, UCHAR *data_pointer,
ULONG number_blocks, ULONG lba, ULONG *media_status)
{
UINT status = UX_SUCCESS;
/* USER CODE BEGIN USBD_STORAGE_Write */
while(number_blocks--)
{
status = fx_media_write(&sdio_disk,lba,data_pointer);
if(status!= UX_SUCCESS)
{
user_printf("1if(status!= UX_SUCCESS)%d\r\n",status);
}
data_pointer+=512;
lba++;
}
status = fx_media_flush(&sdio_disk);
if(status!= UX_SUCCESS)
{
user_printf("2if(status!= UX_SUCCESS)%d\r\n",status);
}
/* USER CODE END USBD_STORAGE_Write */
return status;
}
|