打印
[STM32H7]

STM32H743添加Freertos+lwip+fatfs

[复制链接]
1136|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caoyunhj2301|  楼主 | 2024-3-31 23:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于野火的STM32H743开发板

       使用CubeMX V6.2.1添加Freertos以及fatfs,由于使用CubeMX添加lwip没搞明白,就将示例中lwip相关的文件添加到工程中,调通网络后又添加了串口、CAN、ADC、PWM等功能(工程A),一直没有测试SD卡读写功能。

       在测试SD卡读写时,挂载SD卡一直有问题,对比野火的demo程序发现fatfs的版本不一样,CubeMX使用的fatfs为R0.12c版本,函数参数有差异,刚开始一直怀疑参数传递问题,后来一直没解决问题。

      用CubeMX重新生成了只有Freertos、fatfs的工程(工程B),测试sd读写正常,终于发现了一丝曙光。

      对比两个工程,屏蔽工程A中的初始化函数与工程B相同,测试sd读写正常,然后逐条恢复,发现屏蔽SCB_EnableDCache();后sd读写正常,网络异常;使能SCB_EnableDCache();网络正常,sd卡读写异常,脑袋大了,然后进入了漫长的尝试中.......

使用特权

评论回复
沙发
caoyunhj2301|  楼主 | 2024-3-31 23:51 | 只看该作者
无意中看到下面一段话:

/*
* when using cacheable memory region, it may be needed to maintain the cache
* validity. Enable the define below to activate a cache maintenance at each
* read and write operation.
* Notice: This is applicable only for cortex M7 based platform.
*/
/* USER CODE BEGIN enableSDDmaCacheMaintenance */
/* #define ENABLE_SD_DMA_CACHE_MAINTENANCE  1*/
/* USER CODE END enableSDDmaCacheMaintenance */

使用特权

评论回复
板凳
caoyunhj2301|  楼主 | 2024-3-31 23:51 | 只看该作者
实在没辙了,想着死马当活马医,就打开了宏定义

#define ENABLE_SD_DMA_CACHE_MAINTENANCE  1

结果一试,居然网络、sd卡都好使了,就这一条语句,浪费了我一天时间。

以后还是要好好看源码、芯片手册,不然遇到问题只能抓瞎!!!

使用特权

评论回复
地板
香水城| | 2024-4-4 13:11 | 只看该作者


Dcache的使用 往往需要注意数据一致性方面的问题。谢谢分享!

使用特权

评论回复
5
sfd123| | 2024-4-4 16:09 | 只看该作者
敢不敢 把好用的  工程  发上来?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

285

帖子

1

粉丝