硬汉嵌入式论坛

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

[DMA] 谈一下常用的 DMA2D,MDMA和通用DMA1,DMA2应用分类,为什么有些DMA应用是死等

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2020-8-28 09:13:03 | 显示全部楼层 |阅读模式
特别是大家看我们的emWin,GUIX底层的DMA2D加速,都是死等,还有SDIO DMA,QSPI Flash MDMA等。




现在的DMA应用主要是分为两类。
1、一类是直接在DMA中断里面处理消息,像H7自带的ADC,DAC等。

这类应用我们可以直接在中断里面处理消息,或者搞个双缓冲。

这种应用在RTOS下和裸机下使用都比较简单。

裸机下:
适合直接在中断里面处理,搞个外置标志效果不是很理想,不方便性能最大化。

RTOS下:
可以中断里面处理,也可以发送信号量等消息,通知任务里面处理,性能可以最大化。


2、还有一类就是图形加速DMA2D,QSPI Flash DMA,SDIO DMA等

这类DMA应用,我们一般都需要配合GUI,FAT文件系统等一起使用。

这种情况下,要分裸机和RTOS两种做分析

裸机情况下:
如果不做死等,而做个中断,整个变量标识什么的做等待,应用层代码基本没有办法写了,比如你一个简单的GUI桌面背景部分重绘,他需要进入那些DMA2D加速接口函数,等待那些标志完成,应用层代码实现非常麻烦。

RTOS下:
这种情况下,在RTOS下才能发挥威力,以GUI为例,我们都是直接将其丢到最低优先级任务里面跑。文件系统类的QSPI Flash,SD卡,eMMC,NAND等,也可以直接丢到低优先级任务,或者其他稍高优先级任务,完全不影响其他高优先级任务运行。
其实这也是使用RTOS相比裸机的一个重要优势。





评分

参与人数 1金币 +6 收起 理由
missfox + 6 赞一个!

查看全部评分

回复

使用道具 举报

23

主题

1403

回帖

1472

积分

至尊会员

积分
1472
发表于 2020-8-28 17:07:57 | 显示全部楼层
不错,好贴
代码不规范,亲人两行泪!
回复

使用道具 举报

29

主题

97

回帖

184

积分

初级会员

积分
184
发表于 2020-8-31 19:28:11 | 显示全部楼层
明白,但是万一有问题是不是就等死了,出不来了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2020-9-1 00:21:29 | 显示全部楼层
wgp2590 发表于 2020-8-31 19:28
明白,但是万一有问题是不是就等死了,出不来了

这种的一般不用考虑超时问题,如果DMA2D这些执行不正常了,硬件运行基本大概率就出问题了。

这种情况下,保险起见,建议加上看门狗。
回复

使用道具 举报

9

主题

51

回帖

78

积分

初级会员

积分
78
发表于 2023-12-26 17:04:39 | 显示全部楼层
哪要是用信号量呢
1703581345952.png
1703581361282.png
回复

使用道具 举报

9

主题

51

回帖

78

积分

初级会员

积分
78
发表于 2023-12-26 17:06:48 | 显示全部楼层
个人感觉带系统的好像都是用信号量去同步中断的,暂时没发现有什么太大的问题
回复

使用道具 举报

41

主题

214

回帖

337

积分

高级会员

积分
337
发表于 2023-12-26 18:34:04 | 显示全部楼层
wgp2590 发表于 2020-8-31 19:28
明白,但是万一有问题是不是就等死了,出不来了

信号量有没有超时的参数?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-12-27 08:36:52 | 显示全部楼层
嵌入式菜鸟^_^ 发表于 2023-12-26 17:06
个人感觉带系统的好像都是用信号量去同步中断的,暂时没发现有什么太大的问题,

对于楼主位的这几个,搞个同步这属于浪费资源系列操作,
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 04:46 , Processed in 0.317698 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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