|
本帖最后由 pplinux123456 于 2024-11-20 14:46 编辑
1.先移植了levelx+ filex ,在fx_media_format 使用 512的Sector size 测试 读写都正常。
2.移植了UsbX 的MSC,设置LastLba = ((128*1024*1024/8)/512)-1 MediaBlockLen = 512
3.上电PC弹出要求格式化U盘,显示大小正好16M,但开始格式化异常。
4.读函数 USBD_STORAGE_Read
使用的是OSPI_Flash_ReadBuffer((uint8_t*) data_pointer, lba<<9, number_blocks<<9); //<<9 = *512
5:写函数 USBD_STORAGE_Write
使用的 学习版主 QSP Flash的FatFS文件系统+QSPI Flash虚拟U盘的例子
p = (uint8_t*) data_pointer;
for(i = 0;i<number_blocks;i++)
{
addr =((uint32_t) lba +i)<<9;
OSPI_Flash_SectorErase(addr); //4K 擦写
status1 = OSPI_Flash_WriteBuffer(p, (uint32_t) addr, 512);
p+=512;
}
问题,擦写是4K的,这里要怎么处理?如果我修改,上面的LastLba 和MediaBlockLen 程序上电直接跑死了。
还有如果修改MediaBlockLen =4096,那么格式化 是要分配4096单元吧,那这样格式化出的模拟U盘,Filex系统是否会不认,因为看论坛有说好像,文件系统只能使用512族的。
测试了MediaBlockLen = 4096 后 注册设备的时候(ux_device_stack_class_register)会返回内存不足,在ux_system_initialize初始化的时候把内存给到128K,依然是报内存错误,0x12;
不知道是不是usbx的接口只支持512的族大小?
|
|