硬汉嵌入式论坛

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

[UART] H7使用BDMA+LPUART1接收的问题

[复制链接]

3

主题

13

回帖

22

积分

新手上路

积分
22
发表于 2023-12-6 09:55:08 | 显示全部楼层 |阅读模式
程序描述:  串口接收buff 使用的是  0x38000040地址 做了32位对齐处理, 开了Cache , 并且在解析数据前使用   SCB_CleanDCache_by_Addr((uint32_t *)rx_buff, rx_len);    目前在没开优化等级或者优化等级1的情况下是很正常的,  




问题:   优化等级3就会出现接收数据校验错误,调试看了  收到的数据有些不对.  然后再开优化等级3的时候,我设置了MPU    把 0x38000000 地址都禁用高速缓存后 程序又很正常了.   



想请教硬汉哥  这是什么问题  往哪方面去下手解决
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-12-6 12:09:48 | 显示全部楼层
DMA接收的话,要调用无效化API, 简单省事些,直接调用这个:SCB_CleanInvalidateDCache
回复

使用道具 举报

5

主题

11

回帖

31

积分

新手上路

积分
31
发表于 2023-12-6 12:12:56 来自手机 | 显示全部楼层
mpu设置这部分为device类型
回复

使用道具 举报

3

主题

13

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2023-12-6 13:06:19 | 显示全部楼层
上面粘贴错了 是用的SCB_InvalidateDCache_by_Addr
刚刚试了下SCB_CleanInvalidateDCache 这个现在一次都校验不对了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-12-7 08:18:45 | 显示全部楼层
面包人 发表于 2023-12-6 13:06
上面粘贴错了 是用的SCB_InvalidateDCache_by_Addr
刚刚试了下SCB_CleanInvalidateDCache 这个现在一次都 ...

1、配置0x38000000地址RAM为最低性能看看正常不
https://www.armbbs.cn/forum.php?mod=viewthread&tid=99322

2、优化问题,可以这个帖子思路锁定下

关键时候,又拿出了我的独门绝技,MDK不同优化等级导致异常的解决思路
https://www.armbbs.cn/forum.php?mod=viewthread&tid=98479
回复

使用道具 举报

3

主题

13

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2023-12-7 09:02:11 | 显示全部楼层
配置0x38000000地址RAM为最低性能是正常的
回复

使用道具 举报

3

主题

13

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2023-12-7 09:38:49 | 显示全部楼层
找到问题了  之前把这行代码给屏蔽了  打开就没问题了  
SCB->CACR |= 1<<2;  
强制D-cache透写会影响性能吗 硬汉哥
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-12-7 10:29:36 | 显示全部楼层
面包人 发表于 2023-12-7 09:38
找到问题了  之前把这行代码给屏蔽了  打开就没问题了  
SCB->CACR |= 1

这个代码SCB->CACR |= 1<<2;  删掉,不要这么操作。

建议全程MPU管理。
回复

使用道具 举报

8

主题

157

回帖

181

积分

初级会员

积分
181
发表于 2023-12-7 10:36:12 | 显示全部楼层
eric2013 发表于 2023-12-7 10:29
这个代码SCB->CACR |= 1

一直强调MPU,是不是有什么故事啊?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-12-7 10:40:28 | 显示全部楼层
yunqi 发表于 2023-12-7 10:36
一直强调MPU,是不是有什么故事啊?

因为MPU配置是这类问题的核心,这个概念必须根深蒂固的植入脑子里面,只要出数据问题,首先想到就应该是MPU配置。
回复

使用道具 举报

3

主题

13

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2023-12-7 11:20:10 | 显示全部楼层
eric2013 发表于 2023-12-7 10:29
这个代码SCB->CACR |= 1

好的谢谢啦
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 14:59 , Processed in 0.187616 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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