硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1863|回复: 7
收起左侧

USBX MSC 模拟U盘,插U盘无法格式话,4线 SPI Flash w25q128

[复制链接]

1

主题

9

回帖

12

积分

新手上路

积分
12
发表于 2024-11-19 14:54:01 | 显示全部楼层 |阅读模式
本帖最后由 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的,这里要怎么处理?如果我修改,上面的LastLbaMediaBlockLen   程序上电直接跑死了。


还有如果修改MediaBlockLen =4096,那么格式化 是要分配4096单元吧,那这样格式化出的模拟U盘,Filex系统是否会不认,因为看论坛有说好像,文件系统只能使用512族的。


测试了MediaBlockLen = 4096 后 注册设备的时候(ux_device_stack_class_register)会返回内存不足,在ux_system_initialize初始化的时候把内存给到128K,依然是报内存错误,0x12;


不知道是不是usbx的接口只支持512的族大小?







回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-11-20 10:00:44 | 显示全部楼层
USBX的SPI Flash模拟U盘,这个确实没搞过

参考USBX的SD卡模拟U盘,看看有可以借鉴的地方不
回复

使用道具 举报

1

主题

9

回帖

12

积分

新手上路

积分
12
 楼主| 发表于 2024-11-20 14:52:59 | 显示全部楼层
-------------------------------------------------------------------------------------------------------------------
上面MediaBlockLen =4096 or 512 都是可以格式化U盘,格式化也可以往里面放文件,检测nor flash也能正常的写入数据。
新的问题,
1.每次重新上电,插U盘到上位PC都提示要重新格式化,测试过快速格式化,和命令行Format 格式化 结果都是一样的,
2.之前格式化后复制了文件进模拟U盘,但是不关断不断电,fx_media_open打开报IO错误 0x90. 测试了上面的512或4096 的块方式都是报这个错误。

硬汉哥,FileX 的SD卡,这里有个特性,之前我测试过。在上位机格式化后,在单片机上直接就可以fx_media_open,读写操作,没有格式不兼容的问题
回复

使用道具 举报

1

主题

9

回帖

12

积分

新手上路

积分
12
 楼主| 发表于 2024-11-21 11:58:48 | 显示全部楼层
问题解决了,上电每次提示格式化,是因为nor flash的格式化和PC的不一样

总结几点,nor flash的扇区是512大小,这个是固定的。
如果usbx 使用MediaBlockLen =4096   
修改ux_user.h 文件
UX_HOST_CLASS_STORAGE_MEMORY_BUFFER_SIZE     8192
UX_SLAVE_REQUEST_DATA_MAX_LENGTH                    4096      

第一次模拟U盘,在PC上格式化,这样放入的文件,file_open就可以正常打开读写了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-11-22 10:09:45 | 显示全部楼层
pplinux123456 发表于 2024-11-21 11:58
问题解决了,上电每次提示格式化,是因为nor flash的格式化和PC的不一样

总结几点,nor flash的扇区是51 ...

回复

使用道具 举报

1

主题

9

回帖

12

积分

新手上路

积分
12
发表于 2024-12-11 23:01:02 | 显示全部楼层
楼主,可以加个V吗?想请教你一下
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-12-12 10:17:12 | 显示全部楼层
callan 发表于 2024-12-11 23:01
楼主,可以加个V吗?想请教你一下

可以,我的微信baiyongbin2009,不过微信交流问题少。

QQ主要用于交流问题,QQ512464265
回复

使用道具 举报

1

主题

9

回帖

12

积分

新手上路

积分
12
发表于 2025-1-7 21:20:31 | 显示全部楼层
你的问题解决了吗?我现在也是遇到无法格式化U盘的情况!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 07:33 , Processed in 0.043324 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表