硬汉嵌入式论坛

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

[STM32H7] H750移植USBMSC+FATFS踩坑,USBH_MSC_Read读不出文件

[复制链接]

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2024-10-9 15:35:41 | 显示全部楼层 |阅读模式
最近在移植H750的项目,自己从0开始移植驱动,踩到了很多坑,希望可以和大家共勉。大佬请略过

1:在移植USB驱动后,发现怎么U盘怎么都识别不出来,由于我是在已经成功验证的工程上搬过来,所以百思不得其解。最后发现是GPIO端口配置好了,但是时钟没有配置好。
以下是关于USB配置时钟和引脚的踩坑点,给大家贴一下!这些地方需要根据实际的参数进行配置,不要偷懒!

2.在识别出U盘之后,开始移植FATFS,发现只要使用f_open栈就会直接爆掉,可是不用的话,只占用了38K,只是一个函数也不用这么多吧?

提示报错:No space in execution regions with ANY selector matching xxx


然后开始搜索答案,网上分析有几种可能性:
1.真实的内存不够用了,那就要换硬件。我的FLASH是128K的 显然不是这个问题
2.使用更高的KEIL优化等级,我有试过,但总感觉有些地方优化的都不能用了,所以我不是很喜欢改这个。
3.修改XX.s的栈大小,修改后发现无效
最后使用一个欺骗编译器的方法:把ROM设置大一些,看看是不是真的占了很大的空间

改完之后编译,查看map文件 发现真的变大了很多,

原来是因为移植FATFS使用的936简体中文占用了太多的内存,所以修改了以下地方

至此问题解决,修改回原来的size编译通过
3.驱动也识别好了,枚举成功,挂载也正常,但是在f_open这里死活打不开
排查后发现卡死在这里

看了网上的类似的问题,有人说是时钟没配置好,就找了很多配置的地方,由于H750网上的这方面资料也少,最后确认是在这个地方

不过问题并没有解决,我也是死马当活马医,还是找了很多,甚至我都怀疑我移植有问题,重新移植了一次最新的USB和FATFS都没用,
最后猜想会不会他读取的空间根本不够,所以修改了这里尝试

本来是0x400 改成了0x1000 终于解决了读取问题。
至此用时2天攻克了USB驱动,作为初学者确实很多地方容易漏掉,也是我自己的基础知识学的不够扎实导致的。
网上关于这些问题的帖子少之又少,希望可以帮助到和我一样的小白吧!
回复

使用道具 举报

15

主题

65

回帖

110

积分

初级会员

积分
110
发表于 2024-10-9 16:44:02 来自手机 | 显示全部楼层
所以以后遇到这种奇奇怪怪的问题先尝试改大heap和stack
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2024-10-9 17:05:00 | 显示全部楼层
Superusrss 发表于 2024-10-9 16:44
所以以后遇到这种奇奇怪怪的问题先尝试改大heap和stack

也是涨经验了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2024-10-10 08:26:44 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 18:26 , Processed in 0.138077 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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