硬汉嵌入式论坛

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

STM32F429使用内部Flash制作虚拟u盘无法格式化u盘

[复制链接]

5

主题

32

回帖

47

积分

新手上路

积分
47
发表于 2024-7-26 21:35:11 | 显示全部楼层 |阅读模式
参考例程STM32使用片内FLASH制作小U盘(STM32+FLASH+MSC)_stm32内部flash模拟u盘-CSDN博客

按着参考的例程,可以识别到虚拟u盘,但是无法格式化 2000.zip (23.31 MB, 下载次数: 4)
屏幕截图 2024-07-26 205907.png 屏幕截图 2024-07-26 205928.png 屏幕截图 2024-07-26 210007.png 屏幕截图 2024-07-26 210018.png 45 屏幕截图 2024-07-26 210146.png
STORAGE_Write_HS函数中打断点到 return USBD_FAIL;发现程序在格式化时会跳转到这里,我想要将0x8080000为开始制作512kb的虚拟内存,扇区8~11
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-7-27 08:01:00 | 显示全部楼层
这个应该是擦除期间CPU无法访问Flash导致的。擦除时间有点长。

模拟U盘下,电脑会定时轮询你的U盘设备的,访问有问题就不行了。
回复

使用道具 举报

5

主题

32

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2024-7-27 08:58:13 | 显示全部楼层
eric2013 发表于 2024-7-27 08:01
这个应该是擦除期间CPU无法访问Flash导致的。擦除时间有点长。

模拟U盘下,电脑会定时轮询你的U盘设备的 ...

那这个应该怎么处理呢?需要把flash_lock取消嘛?
回复

使用道具 举报

5

主题

32

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2024-7-27 08:58:59 | 显示全部楼层
eric2013 发表于 2024-7-27 08:01
这个应该是擦除期间CPU无法访问Flash导致的。擦除时间有点长。

模拟U盘下,电脑会定时轮询你的U盘设备的 ...

那这个应该怎么处理呢?应该取消flash_lock嘛?
回复

使用道具 举报

5

主题

32

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2024-7-27 08:59:49 | 显示全部楼层
eric2013 发表于 2024-7-27 08:01
这个应该是擦除期间CPU无法访问Flash导致的。擦除时间有点长。

模拟U盘下,电脑会定时轮询你的U盘设备的 ...

那这应该怎么做呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-7-28 09:25:53 | 显示全部楼层
iihj 发表于 2024-7-27 08:59
那这应该怎么做呢?

使用双BANK机制
回复

使用道具 举报

5

主题

32

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2024-7-28 10:39:53 | 显示全部楼层
好像是STORAGE_Write_HS中格式化出了问题,原因是无法访问这个地址,但是我的地址也无误呀,这个是内部Flash没有解锁嘛?这个F429IGT6默认是一个bank 12个扇区 我想用后面四个扇区 512kb作为虚拟u盘
回复

使用道具 举报

5

主题

32

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2024-7-28 10:41:27 | 显示全部楼层
这个是调试情况,会跳转到擦拭失败
屏幕截图 2024-07-28 103602.png
屏幕截图 2024-07-28 103632.png
屏幕截图 2024-07-28 103744.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-7-29 08:43:16 | 显示全部楼层
iihj 发表于 2024-7-28 10:41
这个是调试情况,会跳转到擦拭失败

这部分看着没什么问题。
回复

使用道具 举报

5

主题

32

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2024-7-29 13:43:28 | 显示全部楼层
eric2013 发表于 2024-7-29 08:43
这部分看着没什么问题。

那会有什么地方导致虚拟u盘格式化失败呢?有什么类似的例程嘛?
回复

使用道具 举报

5

主题

32

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2024-7-29 23:05:52 | 显示全部楼层
屏幕截图 2024-07-29 230302.png 在main里面可以正常擦除,但是在这个U盘擦除函数中无法擦除,有人知道为什么嘛?可带价求问
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-7-30 09:53:02 | 显示全部楼层
iihj 发表于 2024-7-29 23:05
在main里面可以正常擦除,但是在这个U盘擦除函数中无法擦除,有人知道为什么嘛?可带价求问

看不出来有什么问题了,你再多试试。
回复

使用道具 举报

5

主题

32

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2024-7-30 15:05:32 | 显示全部楼层
本帖最后由 iihj 于 2024-7-31 00:07 编辑

微信图片_20240731000622.png 微信图片_20240731000627.png 我发现第一次格式化的时候擦除是正常的,但是在HAL FLASH PTOBNAM中会出错,想问一下硬汉哥,这个问题是否是跟内部flash小u盘不能格式化 - USB - 硬汉嵌入式论坛 - Powered by Discuz! (armbbs.cn)这个老哥的问题一样,但是我没有看懂他的这个解决方法是什么意思
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-7-31 08:49:25 | 显示全部楼层
iihj 发表于 2024-7-30 15:05
,我发现第一次格式化的时候擦除是正常的,但是在HAL FLASH PTOBNAM中会出错,想问一下硬汉哥,这个问题是 ...

分享stm32片内flash模拟U盘,拖拽升级boot程序
https://forum.anfulai.cn/forum.p ... 0021&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

5

主题

32

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2024-7-31 23:27:48 | 显示全部楼层
eric2013 发表于 2024-7-31 08:49
分享stm32片内flash模拟U盘,拖拽升级boot程序
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=12 ...

Snipaste_2024-07-31_23-22-01.png Snipaste_2024-07-31_23-22-49.png Snipaste_2024-07-31_23-22-17.png

之前的写入函数错误是因为
MSC_MEDIA_PACKET (Media I/O buffer Size)
这个cuebmx的定义部分是4096不符合数据手册中的范围,现在的写入函数已经是无误的了,但是还是无法正确格式化虚拟u盘,这个是为什么呢?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-8-1 08:47:40 | 显示全部楼层
iihj 发表于 2024-7-31 23:27
之前的写入函数错误是因为
MSC_MEDIA_PACKET (Media I/O buffer Size)
这个cuebmx的定义部分是4096 ...

那就先别格式化了,直接写入是否正常。
回复

使用道具 举报

5

主题

32

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2024-8-1 08:57:36 | 显示全部楼层
eric2013 发表于 2024-8-1 08:47
那就先别格式化了,直接写入是否正常。

直接写入这个flash是无误的,但是就是格式化这边有问题
回复

使用道具 举报

5

主题

32

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2024-8-1 09:50:35 | 显示全部楼层
eric2013 发表于 2024-8-1 08:47
那就先别格式化了,直接写入是否正常。

这个格式化错误还有什么地方可以检查吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-8-2 00:53:02 | 显示全部楼层
iihj 发表于 2024-8-1 09:50
这个格式化错误还有什么地方可以检查吗?

别的地方暂时想不到了。
回复

使用道具 举报

5

主题

32

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2024-8-2 09:11:23 | 显示全部楼层
eric2013 发表于 2024-8-2 00:53
别的地方暂时想不到了。

我发现在执行初始化的时候blk_addr会从 0 1 2 3 4 5 6 7 8 9 a再到0 1,这样执行12次然后格式化识别,但是在单步调试的时候,blk_addr能到 c d但是是乱的 微信图片_20240802091002.jpg
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-12 03:37 , Processed in 0.054711 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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