1. EDMA与QDMA技术背景解析
在嵌入式系统设计中,数据传输效率直接影响整体性能表现。传统CPU搬运数据的方式会消耗大量计算资源,而DMA(Direct Memory Access)技术通过专用硬件控制器实现内存与外设间的直接数据传输,解放了CPU的计算能力。TMS320DM355数字媒体SoC中集成了两种增强型DMA控制器:EDMA(Enhanced Direct Memory Access)和QDMA(Quick Direct Memory Access),它们在视频编解码、音频处理等场景中发挥着关键作用。
EDMA控制器采用事件触发机制,当特定硬件事件(如定时器中断、串口接收完成等)发生时自动启动传输。这种设计特别适合需要精确时序控制的应用场景,比如:
- 视频采集系统中摄像头传感器的行同步信号触发
- 音频接口的采样时钟触发数据搬运
- 定时器控制的周期性数据采集
相比之下,QDMA采用软件触发机制,通过配置总线写入触发字立即启动传输。这种设计优化了线性写入场景,在以下情况表现优异:
- 需要快速启动的单次数据传输
- GEM(General Purpose Memory)接口的突发写入
- 不依赖硬件事件的主动数据传输
实际项目经验表明:在视频处理流水线中,通常将EDMA用于传感器数据采集(事件触发),而用QDMA处理中间结果的搬运(软件控制),两者配合能达到最佳性能。
2. DM355中的EDMA通道详解
2.1 EDMA通道架构设计
TMS320DM355提供了64个独立的EDMA通道,每个通道固定关联一个特定硬件事件。这种固定映射关系减少了配置复杂度,但也要求开发者必须清楚了解事件与通道的对应关系。通道的主要特性包括:
-
触发方式:
- 外部事件(如ASP_TX_EVT、ASP_RX_EVT)
- 软件写事件置位寄存器(ESR)
- 通道链接触发
-
事件处理流程:
c复制// 典型EDMA配置流程示例 void configure_edma_channel(int ch_num) { // 1. 设置PaRAM传输参数(源/目的地址、传输量等) EDMA_SetPaRAM(ch_num, ¶m_set);
解锁全文
加入我们的会员,获取最新、最热、最精彩的开发者技术内容