建立网站,通信管理局网站 备案,免费在线做网站,网站建设工作室制作平台本文仅为翻译手册#xff0c;留以自己查看#xff0c;若需要深入交流#xff0c;可以在个人分类中查找解析与实践内容#xff08;可能未发布#xff09;#xff0c;或与作者联系
增强型直接内存访问#xff08;EDMA3#xff09;控制器的主要用途是为您在设备上的两个…本文仅为翻译手册留以自己查看若需要深入交流可以在个人分类中查找解析与实践内容可能未发布或与作者联系
增强型直接内存访问EDMA3控制器的主要用途是为您在设备上的两个内存映射从端点之间编程的数据传输提供服务。
典型用法包括但不限于以下内容
•服务软件驱动的分页传输例如从外部存储器如SDRAM传输到内部器件存储器如DSP L2 SRAM
•维护事件驱动的外设例如串行端口
•执行各种数据结构的排序或子帧提取
•有关可通过EDMA3控制器访问的特定外设请参见设备特定的数据手册
EDMA3控制器由两个主要模块组成
•EDMA3通道控制器EDMA3_CC m
•EDMA3传输控制器EDMA3_ m_TC n 设备可以有多个EDMA3通道控制器实例每个实例与多个EDMA3传输控制器相关联。这里m表示EDMA3CC实例编号n表示EDMA3TC编号。有关设备中可用的EDMA3CC和EDMA3TC的数量请参阅设备特定的数据手册。
EDMA3通道控制器用作EDMA3控制器的用户界面。EDMA3CC包括参数RAMPaRAM通道控制寄存器和中断控制寄存器。EDMA3CC用于对来自外围设备的传入软件请求或事件进行优先级排序并将传输请求TR提交给EDMA3传输控制器。
EDMA3传输控制器负责数据移动。由EDMA3CC提交的传输请求包TRP包含传输上下文基于该传输上下文传输控制器向为给定传输编程的源和目的地地址发出读/写命令。 EDMA3通道控制器EDMA3CC具有以下功能 •完全正交的转移描述 - 3个传输尺寸 - A同步传输每个事件服务1个维度 - AB同步传输每个事件服务2个维度 - 源和目的地的独立索引 - 链接功能允许基于单个事件进行3-D传输 •灵活的转移定义 - 增量或恒定寻址模式 - 链接机制允许自动PaRAM设置更新 - 链接允许多个传输在一个事件中执行 •以下中断生成 - 转移完成 - 错误条件 •调试可见性 - 队列水标记/阈值 - 错误和状态记录以方便调试 •多个DMA通道。有关每个EDMA3CC可用的DMA通道数请参阅设备特定的数据手册 - 事件同步 - 手动同步DSP写入事件集寄存器 - 链同步完成一次传输会触发另一次传输 •多个QDMA频道。有关每个EDMA3CC可用的QDMA通道数请参阅设备特定数据手册 - 当您写入PaRAM设置条目时QDMA通道会自动触发 - 支持可编程DMA通道和QDMA通道到PaRAM映射 •多个PaRAM集。有关每个EDMA3CC可用的PaRAM集数量请参阅设备特定数据手册 - 每个PaRAM集可用于DMA通道QDMA通道或链路集 •每个事件队列有16个事件条目 •内存保护支持 - TR提交的代理内存保护 - 用于访问PaRAM和寄存器的活动内存保护 EDMA3传输控制器EDMA3TC具有以下功能 •支持源和目标上具有独立索引的二维传输EDMA3CC管理第三维 •最多4个飞行中转移请求TR •每个传输控制器相对于彼此和系统中其他主站的可编程优先级 •支持增量或恒定寻址模式传输 •中断和错误支持 •小端或大端操作 •无论Endianess如何存储器映射寄存器MMR位域都是32位MMR中的固定位置 EDMA3CC的主要部分 DMA / QDMA通道逻辑该块包含捕获可用于启动事件触发传输的外部系统或外设事件的逻辑还包括允许配置DMA / QDMA通道的寄存器队列映射PaRAM条目映射。它包括用于启用/禁用事件以及监视事件状态的不同触发类型手动外部事件链接和自动触发的所有寄存器。
•参数RAMPaRAM维护通道和重载参数集的参数集条目。需要使用所需通道和链接参数集的传输上下文来写入PaRAM。 •事件队列这些构成事件检测逻辑和传输请求提交逻辑之间的接口。 •传输请求提交逻辑该逻辑基于提交到事件队列的触发事件处理PaRAM集并将传输请求TR提交给与事件队列相关联的传输控制器。 •EDMA3事件和中断处理寄存器允许将事件映射到参数集启用/禁用事件启用/禁用中断条件以及清除中断。 •完成检测该块检测EDMA3TC和/或从外设完成传输。完成传输可以选择用于链接触发新传输或断言中断。逻辑包括中断处理寄存器用于启用/禁用中断发送到DSP中断状态/清除寄存器。 •存储器保护寄存器存储器保护寄存器定义允许访问DMA通道阴影区域视图和PaRAM区域的访问特权级别和请求者。 其他功能包括
•区域寄存器区域寄存器允许将DMA资源DMA通道和中断分配给唯一的区域这些区域可由独特的EDMA编程器多核设备的使用模型或独特的任务/线程拥有 单核设备的使用模型。 •调试寄存器调试寄存器通过提供寄存器来读取队列状态通道控制器状态和错过的事件状态从而实现调试可见性。 QDMA和EDMA区别
触发方式不同 一旦识别出触发事件事件类型/通道就会在相应的EDMA3CC事件队列中排队。将每个DMA / QDMA通道分配给事件队列是可编程的。每个队列都是16 当事件队列空间可用时映射到完整队列的其他挂起事件将排队。见2.11节。 如果同时检测到不同信道上的事件则事件基于固定优先级仲裁方案排队其中DMA信道是比QDMA信道更高优先级的事件。 在两组频道中编号最小的频道是最高优先级。
事件队列中的每个事件都按FIFO顺序处理。到达队列的头部时读取与该通道相关联的PaRAM以确定传输细节。
EDMA3TC接收请求并负责传输请求包TRP中指定的数据移动以及其他必要的任务如缓冲确保尽可能以最佳方式执行传输。
在完成当前传输时您可能已选择接收中断或链接到另一个通道在这种情况下EDMA3TC在传输完成后向EDMA3CC完成检测逻辑发出完成信号。当TR离开EDMA3CC边界时您可以选择触发完成而不是等待所有数据传输完成。根据EDMA3CC中断寄存器的设置完成中断产生逻辑负责为DSP产生EDMA3CC完成中断。 EDMA_TC
EDMA3TC的主要模块包括
•DMA程序寄存器组DMA程序寄存器组存储从EDMA3通道控制器EDMA3CC接收的传输请求。 •DMA源活动寄存器集DMA源活动寄存器集存储读取控制器中当前正在进行的DM A传输请求的上下文。 •读取控制器读取控制器向源地址发出读取命令。 •目标FIFO寄存器集目标DSTFIFO寄存器集存储写控制器中当前正在进行的DMA传输请求的上下文。 •写入控制器写入控制器向目标从站发出写入命令/写入数据。 •数据FIFO存在用于保存临时飞行中数据的数据FIFO。 •完成接口完成接口在传输完成时将完成代码发送到EDMA3CC并生成中断和链接事件有关传输完成报告的更多信息请参见第2.1.2节。 当EDMA3TC空闲并接收到其第一个TR时TR在DMA程序寄存器组中被接收在那里它转换到DMA源激活集并立即设置目标FIFO寄存器。源活动寄存器组跟踪传输源端的命令目标FIFO寄存器组跟踪传输目标端的命令。第二个TR如果从EDMA3CC挂起被加载到DMA程序集中确保它可以在主动传输源激活集中的传输完成时尽快启动。一旦当前有效集耗尽TR就会从DMA程序寄存器集加载到DMA源有效寄存器集以及目标FIFO寄存器集中的相应条目。 读取控制器发出由命令碎片和优化规则控制的读取命令。仅当数据FIFO具有可用于读取数据的空间时才会发出这些。发出的读命令数取决于TR传输大小。一旦在数据FIFO中读取了足够的数据TC写控制器就开始发出写命令以便写控制器按照命令分段和优化的规则发出最佳大小的写命令。有关命令碎片和优化的详细信息请参见第2.12.1.2节。 DSTREGDEPTH参数对于给定的传输控制器是固定的确定Dst FIFO寄存器集中的条目数。条目数决定了给定TC可能的TR流水线操作量。写控制器可以管理Dst FIFO寄存器组中的条目数的写上下文。这允许读控制器继续并为后续TR发出读命令而Dst FIFO寄存器组管理前一TR的写命令和数据。总之如果DSTREGDEPTH为n则读控制器能够在写控制器之前处理最多nTR。 但是整个TR流水线操作还受数据FIFO中可用空间量的限制。
EDMA传输类型
EDMA3转移总是根据三个维度定义。图2-4显示了EDMA3传输使用的三个维度。这三个维度定义为
•第一维或数组A传输中的第一维由ACNT连续字节组成。 •第二维或框架B传输中的第二维由ACNT字节的BCNT阵列组成。 第二维中的每个阵列传输通过使用SRCBIDX或DSTBIDX编程的索引彼此分开。 •第三维或块C传输中的第三维由ACNT字节的BCNT数组的CCNT帧组成。通过使用SRCCIDX或DSTCIDX编程的索引将第三维中的每个传输与先前的传输分开。
请注意索引的参考点取决于同步类型。接收到触发/同步事件时传输的数据量由同步类型OPT中的SYNCDIM位控制。在这三个维度中仅支持两种同步类型同步传输和AB同步传输。
在A同步传输中每个EDMA3同步事件启动第一维ACNT字节或一个ACNT字节数组的传输。换句话说每个事件/ TR分组仅传送一个阵列的传输信息。因此需要BCNT×CCNT事件来完全服务PaRAM集。 数组总是由SRCBIDX和DSTBIDX分隔如图2-5所示其中数组N的起始地址等于数组N-1的起始地址加上源SRC或目的地DSTBIDX。 帧始终由SRCCIDX和DSTCIDX分隔。对于A同步传输在帧耗尽后通过将SRCCIDX / DSTCIDX添加到帧中最后一个数组的起始地址来更新地址。如图2-5所示SRCCIDX / DSTCIDX是帧0阵列3的开始与帧1阵列0的开始之间的差异。 图2-5显示了nACNT字节的4BCNT阵列的3CCNT帧的A同步传输。 在该示例中总共12个同步事件BCNT×CCNT耗尽PaRAM集。 在AB同步传输中每个EDMA3同步事件启动2维或一帧的传输。 换句话说每个事件/ TR分组传送ACNT字节的BCNT阵列的整个帧的信息。 因此需要CCNT事件来完全服务PaRAM集。 数组总是由SRCBIDX和DSTBIDX分隔如图2-6所示。 帧始终由SRCCIDX和DSTCIDX分隔。 请注意对于AB同步传输在提交帧的TR之后地址更新是将SRCCIDX / DSTCIDX添加到帧中起始数组的起始地址。 这与A-synchronized传输不同其中通过将SRCCIDX / DSTCIDX添加到帧中最后一个数组的起始地址来更新地址。 有关参数集更新的详细信息请参见第2.3.6节。 图2-6显示了nACNT字节的4BCNT阵列的3CCNT帧的AB同步传输。 在这个例子中总共3个同步事件CCNT耗尽了PaRAM集; 也就是说总共3个传输的4个阵列各自完成传输。 PA RAM
EDMA3控制器是基于RAM的架构。DMA或QDMA通道的传输上下文源/目标地址计数索引等在EDMA3CC内的参数RAM表中编程称为PaRAM。PaRAM表被分段为多个PaRAM集。每个PaRAM集包括8个4字节PaRAM集条目每个PaRAM集合总共32个字节其中包括典型的DMA传输参数如源地址目标地址传输计数索引选项等。
PaRAM结构支持灵活的乒乓循环缓冲通道链接和自动重载链接。前n个PaRAM集直接映射到DMA通道其中n是特定器件的EDMA3CC中支持的DMA通道数。剩余的PaRAM集可用于链接条目或与QDMA通道相关联。此外如果未使用DMA通道则与未使用的DMA通道关联的PaRAM集也可用于链接条目或QDMA通道。 PaRAM的内容包括
•多个PaRAM集。有关支持的PaRAM集数量及其地址请参见特定于设备的数据手册。
•任何PaRAM条目都可用于DMAQDMA或链接集
•默认情况下所有通道都映射到PaRAM集0.这些应重新映射使用前。 每个外设都有寄存器EDMA的寄存器如下
ESEL设置EDMA事件与通道的映射关系有些dsp型号是固定映射的
PQSR表示状态表示传输寄存器在每个优先级水平上是否为空
CIPR表示通道中断待定状态
CIER使能或屏蔽通道中断
CCER使能或屏蔽通道连锁
ER表示状态表示捕获的事件
EER使能或屏蔽ER中的每一个事件
ECR清除已触发的事件
ESR触发传输请求。
OPT 传输配置选项
PRIV 编程此PaRAM集的主机/ DSP / DMA的权限级别管理程序与用户。当写入PaRAM集的任何部分时使用EDMA3主机的权限值设置该值。0h 用户级别权限1h 超级用户级别权限
PRIVID 对此PaRAM集进行编程的外部主机/ DSP / DMA的权限标识。当写入PaRAM集的任何部分时使用EDMA3主机的权限标识值设置该值。值 0-Fh
ITCCHEN 中间传输完成链接启用。 0h 禁用中间传输完成链接1h 启用中间传输完成链接启用后链接事件寄存器CER / CERH位在每个中间链接传输完成时设置在PaRAM集合中的每个中间TR完成时除外 PaRAM集中的最终TR。CER或CERH中设置的位位置是指定的TCC值。
TCCHEN 传输完整链接启用。 0h 禁用传输完成链接1h 启用传输完成链接启用后链接事件寄存器CER / CERH位在最终链接传输完成时设置完成PaRAM集中的最终TR。CER或CERH中设置的位位置是指定的TCC值。
ITCINTEN 中间传输完成中断使能。 0h 禁用中间传输完成中断1h 使能中间传输完成 中断使能时每次中间传输完成时中断暂挂寄存器IPR / IPRH位置1PaRAM集中的每个中间TR完成后除了 PaRAM集中的最终TR。IPR或IPRH中设置的位位置是指定的TCC值。 要为DSP生成完成中断必须设置相应的IER [TCC] / IERH [TCC]位。
TCINTEN传输完成中断使能。 0h 禁止传输完成中断1h 使能传输完成中断使能时中断未决寄存器IPR / IPRH位在传输完成时置1在PaRAM集中最终TR完成时。IPR或IPRH中设置的位位置是指定的TCC值。要为DSP生成完成中断必须设置相应的IER [TCC] / IERH [TCC]位。
TCC 传输完成code。该6位代码设置链接使能寄存器CER [TCC] / CERH [TCC]中的相关位用于链接或中断暂挂寄存器IPR [TCC] / IPRH [TCC]中断。值 0-3Fh
TCCMODE 指示传输被认为已完成链接和中断生成的点。 0h 正常完成数据传输后认为传输已完成。 1h 提前完成在EDMA3CC向EDMA3TC提交TR后认为转移已完成。 当触发中断/链时TC可能仍在传输数据。
FWID FIFO宽度。适用于SAM或DAM设置为常量寻址模式的情况。
STATIC 静态集。 0h 设置不是静态的。提交TR后PaRAM集将更新或链接。值为0应用于DMA通道和QDMA传输链接列表中的非最终传输。 1h Set是静态的。提交TR后PaRAM集不会更新或链接。值1应用于隔离QDMA传输或QDMA传输链接列表中的最终传输。
SYNCDIM 选择A模式或AB模式
DAM 目标地址模式。 0h 增量INCR模式。数组内的目标寻址递增。目的地不是FIFO。1h 恒定寻址CONST模式。达到FIFO宽度时数组内的目标寻址会回绕。
SAM
SRC 数据传输的基地址
32位源地址参数指定源的起始字节地址。对于增量模式下的SAMEDMA3没有对齐限制。对于恒定寻址模式下的SAM必须将源地址编程为与256位对齐地址对齐地址的5 LSB必须为0。如果违反此规则EDMA3TC将发出错误信号。
ACNT 第一维度数量
BCNT 第二维度数量
DST 数据传输的目标地址
32位目标地址参数指定目标的起始字节地址。对于增量模式下的DAMEDMA3没有对齐限制。对于恒定寻址模式下的DAM必须将目标地址编程为与256位对齐的地址对齐地址的5 LSB必须为0。如果违反此规则EDMA3TC将发出错误信号。
SRCBIDX 指定帧内源阵列之间的字节地址偏移量
DSTBIDX 指定帧内目标数组之间的字节地址偏移量
LINK The PaRAM address containing the PaRAM set to be linked (copied from) when the current PaRAM set is exhausted.
EDMA3CC提供了一种称为链接的机制用于在新的PaRAM集合的自然终止即在计数字段递减为0之后重新加载当前PaRAM集合。16位参数LINK指定PaRAM中的字节地址偏移量EDMA3CC在链接期间从中加载/重新加载下一个PaRAM集。 您必须将链接地址编程为指向有效的对齐32字节PaRAM集。LINK字段的5个LSB应清除为0。 EDMA3CC忽略LINK条目的高2位允许程序员灵活地将链接地址编程为绝对/字面字节地址或使用PaRAM基础相对偏移地址。因此如果您使用范围从4000h到7FFFh的文字地址它将被视为PaRAM基础相对值0000h到3FFFh。 您应该确保正确编程LINK字段以便从PaRAM地址请求链接更新该地址落在设备上可用的PaRAM地址范围内。
BCNTRLD 当BCNT递减到0时用于重新加载BCNT的计数值
SRCCIDX 指定源块内帧之间的字节地址偏移量
DSTCIDX 指定目标块内帧之间的字节地址偏移量
CCNT C维的数量
RSVD
Null PaRAM Set
空PaRAM集定义为PaRAM集其中所有计数字段ACNTBCNT和CCNT被清除为0.如果与通道关联的PaRAM集是NULL集则当由EDMA3CC服务时该位对应在相关的事件遗漏寄存器EMREMRH或QEMR中设置到通道。该位保持在相关的辅助事件寄存器SERSERH或QSER中。这意味着EDMA3CC会忽略同一通道上的任何未来事件并且您需要清除该通道的SERSERH或QSER位。这被视为错误条件因为在配置为空传输的通道上不期望事件。有关SER和EMR寄存器的更多信息请分别参见第4.2.6.8节和第4.2.2.1节。
Dummy PaRAM Set
伪PaRAM集被定义为PaRAM集其中至少一个计数字段ACNTBCNT或CCNT被清除为0并且至少一个计数字段是非零的。 如果与通道关联的PaRAM集是虚设置那么当由EDMA3CC服务时它不会在事件未命中寄存器EMREMRH或QEMR中设置与通道DMA / QDMA对应的位和 辅助事件寄存器SERSERH或QSER位被清除类似于正常传输。 该频道的未来事件得到了服务。 虚拟传输是0字节的合法传输。 Parameter Set Updates
当针对给定的DMA / QDMA通道及其对应的PaRAM集提交TR时EDMA3CC负责在预期下一个触发事件时更新PaRAM集。对于非最终事件这包括地址和计数更新;对于最终事件这包括链接更新。
更新的特定PaRAM设置条目取决于信道的同步类型A同步或B同步和PaRAM集的当前状态。B更新是指在提交连续TR之后在A-同步传输的情况下BCNT的递减。C更新是指在提交ACNT字节传输的BCNT TR之后在A同步传输的情况下CCNT的递减。对于AB同步传输C更新是指在提交每个传输请求后递减CCNT。
请注意PaRAM更新仅适用于将下一个传输请求正确提交给EDMA3TC所需的信息。在传输控制器中移动数据时发生的更新将在传输控制器中进行跟踪详见第2.12节。对于A同步传输EDMA3CC始终为ACNT字节提交TRPBCNT 1且CCNT 1。对于AB同步传输EDMA3CC总是为ACNT字节的BCNT阵列CCNT 1提交TRP。EDMA3TC负责根据ACNT和FWID在OPT中更新阵列中的源地址和目标地址。对于AB同步传输EDMA3TC还负责根据SRCBIDX和DSTBIDX更新阵列之间的源地址和目标地址。
Linking Transfers
EDMA3CC提供了一种称为链接的机制它允许从PaRAM存储器映射内的位置对于DMA和QDMA通道重新加载整个PaRAM集。链接对于维护乒乓缓冲区循环缓冲以及无DSP干预的重复/连续传输特别有用。完成传输后将使用16位链接地址字段当前参数集指向的参数集重新加载当前传输参数。仅当OPT中的STATIC位清零时才会发生链接。
在当前PaRAM设置事件参数用尽之后发生链接更新。当EDMA3通道控制器提交了与PaRAM集相关的所有传输时事件的参数将耗尽。
根据OPT和LINK字段中STATIC位的状态对空和虚拟传输进行链路更新。在两种情况下空或虚如果LINK的值是FFFFh则将空PaRAM集全0和LINK设置为FFFFh写入当前PaRAM集。同样如果LINK设置为FFFFh以外的值则LINK指向的相应PaRAM位置将复制到当前PaRAM集。
一旦事件满足通道完成条件位于链接地址的传输参数将加载到当前DMA或QDMA通道的相关参数集中。EDMA3CC从LINK指定的PaRAM集中读取整个PaRAM集8个字并将所有8个字写入与当前通道关联的PaRAM集。图2-9显示了链接传输的示例。
PaRAM中设置的任何PaRAM都可以用作链接/重载参数集;但是如果禁用与映射到该PaRAM集的通道隔离的同步事件则建议仅与外设同步事件关联的PaRAM集参见第2.6节用于链接。
链接到自身传输复制了自动初始化的行为这有助于使用循环缓冲和重复传输。在EDMA3通道耗尽其当前PaRAM集后它将从另一个PaRAM集重新加载所有参数集条目该PaRAM集使用与原始PaRAM集相同的值进行初始化。图2-10显示了链接到自身转移的示例。这里PaRAM集合255具有指向参数集255链接到自身的地址的链接字段。 如果SAM或DAM设置为1常量寻址模式(极少使用)则源或目标地址必须分别与256位对齐地址对齐相应的BIDX应为32字节256位的偶数倍。EDMA3CC在此处无法识别错误但如果不是这样则EDMA3TC会发出错误。见2.12.3节。 EDMA3控制器不使用元素大小和元素索引。相反所有转移都是根据所有三个维度来定义的ACNTBCNT和CCNT。通过将ACNT编程为元素的大小并且将BCNT编程为需要传输的元素的数量来逻辑地实现元素索引传输。例如如果您有16位数据和256个必须传输到串行端口的样本则只能通过编程ACNT 22个字节和BCNT 256来完成此操作。
2.4
使用EDMA3通道控制器可以通过多种方式启动编程数据传输。 DMA通道上的传输由三个源启动。 它们列出如下“事件触发的传输请求这是EDMA3的更典型用法外围设备系统或外部生成的事件触发传输请求。 “手动触发的传输请求DSP通过将1写入事件设置寄存器ESR / ESRH中的相应位来手动触发传输。 - 链接触发转移请求在完成另一次转移或子转移时触发转移。 QDMA频道上的转移由两个来源发起。它们如下“自动触发传输请求写入编程的触发字会触发传输。 链接触发的传输请求写入触发字会在发生链接时触发传输。
事件触发的传输请求
当从外设或器件引脚置位事件时它将被锁存在事件寄存器的相应位中ER.E n 1。 如果启用了事件启用寄存器EER中的相应事件EER.E n 1则EDMA3CC会在适当的事件队列中对事件进行优先级排序和排队。 当事件到达队列的头部时将评估其作为传输请求提交给传输控制器。 如果PaRAM集有效不是NULL集则传输请求包TRP被提交给EDMA3TC并且ER中的E n位被清除。 此时EDMA3CC可以安全地接收新事件。 如果与通道关联的PaRAM集是NULL集参见第2.3.3节则不提交传输请求TR并清除ER中相应的E n位同时在事件中设置相应的通道位 未命中寄存器EMR.E n 1表示由于空TR被服务而丢弃了该事件。 良好的编程实践应包括在重新触发DMA通道之前清除事件遗漏错误。 收到事件时无论EER.E n的状态如何都会设置事件寄存器中的相应事件位ER.E n 1。 如果在收到外部事件时禁用事件ER.E n 1且EER.E n 0则ER.E n位保持置1。 如果随后启用了事件EER.E n 1则EDMA3CC处理待处理事件并处理/提交TR之后清除ER.E n位。
如果正在处理事件优先级或在事件队列中并且在原始清除之前收到同一频道的另一个同步事件ER.E n 0则第二个事件被注册为错过 在事件丢失寄存器的相应位中的事件EMR.E n 1。
手动触发
通过DSP或任何EDMA编程器对事件集寄存器ESR的写入来启动DMA传输。 将1写入ESR中的事件位会导致事件在适当的事件队列中被优先化/排队而不管EER.E n位的状态如何。 当事件到达队列的头部时将评估其作为传输请求提交给传输控制器。 与事件触发的传输一样如果与通道关联的PaRAM集有效它不是空集则TR将提交给关联的EDMA3TC并且可以再次触发通道。 如果与通道关联的PaRAM集是NULL集参见第2.3.3节则不提交传输请求TR并清除ER中相应的E n位同时在事件中设置相应的通道位 未命中寄存器EMR.E n 1表示由于空TR被服务而丢弃了该事件。 良好的编程习惯应包括在重新触发DMA通道之前清除事件遗漏错误。 如果正在处理事件优先级或在事件队列中则在原始清除之前通过写入事件集寄存器ESR.E n 1的相应通道位手动设置相同的通道 ESR.E n 0然后第二个事件被注册为事件遗漏寄存器EMR.E n 1的相应位中的遗漏事件。
完成传输时触发传输
链接是一种机制通过该机制一次传输的完成会自动为另一个频道设置事件。 当检测到链接完成代码时其值由传输完成代码与通道关联的PaRAM集的OPT中的TCC [50]决定它将导致链接事件寄存器中的相应位 CER待定CER.E [TCC] 1。 一旦在CER中设置了一个位EDMA3CC就会在适当的事件队列中对事件进行优先级排序。 当事件到达队列的头部时将评估其作为传输请求提交给传输控制器。 与事件触发的传输一样如果与通道关联的PaRAM集有效它不是空集则TR将提交给关联的EDMA3TC并且可以再次触发通道。 如果与通道关联的PaRAM集是NULL集参见第2.3.3节则不提交传输请求TR并清除CER中相应的En位同时在事件未命中设置相应的通道位 寄存器EMR.E n 1表示由于空TR被服务而丢弃了该事件。 在这种情况下必须先清除错误条件然后才能重新触发DMA通道。 良好的编程实践可能包括在重新触发DMA通道之前清除事件遗漏错误。 如果正在处理优先排序或排队链接事件并且在原始清除之前接收到相同通道的另一个链接事件CER.E n 0则第二个链接事件被注册为错过事件。 事件丢失寄存器的相应通道位EMR.E n 1。
2.5
当提交所需数量的传输请求时基于接收同步事件的数量完成给定通道的参数集。对于两种同步类型以及在提交最终TR之前设置的PaRAM的状态表2-6中显示了非空/非虚拟传输的预期TR数。当计数BCNT和/或CCNT为此值时下一个TR将导致
•最终链接或中断代码由传输控制器发送。 •链接更新链接到null或其他有效链接集。
必须使用特定的传输完成代码TCC以及其他OPT字段TCCHENTCINTENITCCHEN和ITCINTEN位对PaRAM OPT字段进行编程以指示是否将完成代码用于生成链式事件或/ 并在传输完成时产生中断。 编程的特定TCC值6位二进制值指示链事件寄存器CER [TCC]和/或中断挂起寄存器IPR [TCC]中的哪64位设置。 有关中断的详细信息请参见第2.9节;有关链接的详细信息请参见第2.8节。 您还可以选择性地编程传输控制器是否在参数集TCCHEN或TCINTEN的最终传输请求TR完成时发送回完成代码除了参数集的最终传输请求TR之外的所有请求ITCCHEN或 ITCINTEN或参数集的所有TR两者。 有关链接中间/最终链接的详细信息请参见第2.8节;有关中间/最终中断完成的详细信息请参见第2.9节。 EDMA3通道控制器和传输控制器之间存在完成检测接口。 该接口将信息从传输控制器发送回信道控制器以指示特定传输已完成。 所有DMA / QDMA PaRAM集还必须指定链接地址值。 对于乒乓缓冲区等重复传输链接地址值应指向另一个预定义的PaRAM集。 或者非重复传输应将链接地址值设置为空链接值。 空链接值定义为FFFFh。
在正常完成模式OPT中的TCCMODE 0时当EDMA3通道控制器从EDMA3传输控制器接收完成代码时认为传输或子传输完成。在此模式下通道控制器的完成代码在收到来自目标外设的信号后由传输控制器发布。正常完成通常用于生成中断以通知DSP一组数据已准备好进行处理。
在早期完成模式OPT中的TCCMODE 1中当EDMA3通道控制器将传输请求TR提交给EDMA3传输控制器时认为传输完成。在此模式下通道控制器在内部生成完成代码。早期完成通常对链接有用因为它允许后续传输被链接触发而先前的传输仍在传输控制器内进行从而最大化传输集的总吞吐量。
这是早期完成的变体。虚拟或空完成与虚拟集第2.3.4节或空集第2.3.3节相关联。在这两种情况下EDMA3通道控制器都不会向EDMA3传输控制器提交相关的传输请求。但是如果setdummy / null的OPT字段被编程为返回完成代码中间/最终中断/链接完成那么它将在中断挂起寄存器IPR / IPRH或链式事件寄存器中设置相应的位CER / CERH。通道控制器使用内部早期完成路径在内部返回完成代码即EDMA3CC生成完成代码。
2.6
大多数DMA通道都与特定的硬件外设事件相关联因此允许来自设备外设或外部硬件的事件触发传输。 DMA通道通常在接收到事件时请求数据传输除了手动触发链触发和其他传输。 每个同步事件传输的数据量取决于信道的配置ACNTBCNTCCNT等和同步类型A同步或AB同步。 事件与频道的关联是固定的。 每个DMA通道都有一个与之关联的特定事件。 有关与每个可编程DMA通道关联的同步事件请参阅特定于设备的数据手册以确定事件到通道映射。 在应用程序中如果某个通道未使用关联的同步事件或者它没有关联的同步事件未使用则该通道可用于手动触发或链接触发的传输链接/重新加载或作为 QDMA频道。 DMA通道编号和PaRAM集之间的映射是可编程的。EDMA3CC中的DMA通道n映射寄存器DCHMAP n提供可编程性允许您将DMA通道映射到PaRAM存储器映射中的任何PaRAM集。图2-11说明了DCHMAP的使用。每个通道有一个DCHMAP寄存器。
2.7
EDMA3通道控制器EDMA3CC将其地址空间划分为多个区域。将各个信道资源分配给特定区域其中每个区域通常被分配给特定的EDMA编程器。.
EDMA3CC存储器映射寄存器分为三大类1。全局寄存器2.全局区域通道寄存器3.阴影区域通道寄存器全局寄存器位于EDMA3CC存储器映射中的单个/固定位置。这些寄存器控制EDMA3资源映射并提供调试可见性和错误跟踪信息。有关EDMA3CC存储器映射请参见特定于器件的数据手册。
通道寄存器包括DMAQDMA和中断寄存器可通过全局通道区域地址范围或阴影n通道区域地址范围访问。例如事件启用寄存器EER在全局区域寄存器空间中在偏移1020h处可见或者在区域0处偏移2020h处的区域地址对于区域1而言是2220h对于区域7而言是偏移2E20h。
可通过阴影区域地址空间IEVAL n除外访问的基础控制寄存器位由DMA区域访问启用寄存器DRAE m和QDMA区域访问启用寄存器QRAE m控制。表2-7列出了阴影区memory-map中的寄存器。有关完整的全局和阴影区域存储器映射请参阅EDMA3CC存储器映射表4-1。
对于每个EDMA3阴影区域和相关的存储器映射存在与阴影区域相关联的一组寄存器其允许DMA / QDMA通道和中断完成代码与该区域的关联。这些寄存器是按区域用户编程的用于将DMA / QDMA通道和TCC值的所有权分配给一个区域。
•DRAE m和DRAEH m每个阴影区域都有一个寄存器对。每个寄存器对中的位数与DMA通道的数量相匹配。需要对这些寄存器进行编程以将DMA通道和中断或TCC代码的所有权分配给相应的区域。通过阴影区域地址映射对DMA事件寄存器和中断寄存器的访问通过DRAE / DRAEH对进行过滤。相应的DRAEH位中的值1意味着可以访问相应的DMA /中断通道;相应的DRAEH位中的值为0会强制丢弃写入并为读取返回值0。
•MPPA n和MPPAG每个区域都有一个寄存器。该寄存器定义了允许区域内存映射寄存器的特权级别请求者和访问类型。
应用程序通常将DMA / QDMA通道以及因此给定的位位置唯一分配给给定区域。
阴影区域的使用允许通过设置或清除DRAE / QRAE寄存器中的位来限制对系统中任务的EDMA3资源DMA通道QDMA通道TCC中断的访问。如果某个区域需要对任何给定通道/ TCC代码进行独占访问则只有该区域的DRAE / QRAE应具有相关的位集。
除了EDMA3CC全局完成中断之外还有一个额外的完成中断EDMA3CC_INT n其中n表示阴影区域编号它与每个阴影区域相关联。对于多核器件各种影子区域中断可能与不同内核的中断控制器相关联。对于单核设备所有阴影区中断都将路由到设备中断控制器。有关设备中断控制器的阴影区域中断连接请参见特定于设备的数据手册。与每个阴影区域相关联的DRAE充当辅助中断启用以及用于相应阴影区域中断的中断启用寄存器IER。 有关中断的更多信息请参见第2.9节。 2.8
EDMA3的通道链接功能允许完成EDMA3通道传输以触发另一个EDMA3通道传输。目的是允许您通过一个事件发生链接多个事件。
链接与链接不同第2.3.7节。EDMA3链接功能使用链接参数集重新加载当前通道参数集。EDMA3链接功能不会修改或更新任何通道参数集;它为链接通道提供同步事件有关链触发传输请求请参见第2.4.1.3节。
链接在当前频道的最终传输完成或中间传输完成或两者中实现。考虑链接到通道n所需的通道mDMA / QDMA。需要将通道号n编程到通道m通道选项参数OPT设置的TCC位中。
•如果启用了最终传输完成链接OPT中的TCCHEN 1则在通道m的最后一次传输请求提交提前完成或完成正常完成之后发生链触发事件。
•如果启用了中间传输完成链接OPT中的ITCCHEN 1则在通道m的每个中间传输请求提交提前完成或完成正常完成之后发生链触发事件。
•如果启用了最终和中间传输完成链TCCHEN 1且OPT中的ITCCHEN 1则在提交提前完成或完成正常完成通道m的每个传输请求之后发生链触发事件。。
2.9
EDMA3CC负责为DSP生成传输完成中断。EDMA3为每个阴影区域生成一个完成中断并为代表所有DMA / QDMA通道的全局区域生成一个完成中断。各种控制寄存器和位字段有助于生成EDMA3中断。
对于给定的DMA / QDMA通道软件架构应使用全局中断或阴影中断但不能同时使用两者。
传输完成代码TCC值直接映射到中断暂挂寄存器IPR / IPRH的位。例如如果TCC 10 0001b则在传输完成后设置IPRH [1]如果为DSP启用了完成中断则会导致向DSP产生中断。有关启用EDMA3传输完成中断的详细信息请参见第2.9.1.1节。
当返回完成代码时由于早期或正常完成如果在通道选项参数OPT中为与PaRAM集相关联的传输完成中断最终/中间启用则会设置IPR / IPRH中的相应位随着转移。
传输完成代码TCC可以编程为DMA / QDMA通道的任何值。不需要存在信道号和传输完成码值之间的直接关系。这允许具有相同传输完成码值的多个信道使DSP对不同信道执行相同的中断服务例程ISR。
通道选项参数OPT中的TCC字段是一个6位字段可以编程为0-64之间的任何值。对于具有16/32 DMA通道的器件TCC应具有0到15/31之间的值以便在IPR中设置适当的位0到15/31并且可以在启用IER时中断DSP寄存器位0-15 / 31。
如果在阴影区域的上下文中使用该通道并且您打算声明阴影区域中断则确保在IER / IERH和相应阴影区域的DMA区域访问寄存器中启用与TCC代码对应的位DRAE / DRAEH
2.9.1.1
要使EDMA3通道控制器向外部世界断言传输完成必须在EDMA3CC中启用中断。这是在相关PaRAM集的OPT中设置TCINTEN和ITCINTEN位的补充。 EDMA3通道控制器具有中断使能寄存器IER / IERHIER / IERH中的每个位位置用作相应中断挂起寄存器IPR / IPRH的主要使能位。 所有中断寄存器IERIESRIECR和IPR可以从全局DMA通道区域操作也可以通过DMA通道阴影区域操作。阴影区域提供了全局区域中同一组物理寄存器的视图。 EDMA3通道控制器具有分层完成中断方案该方案使用一组中断挂起寄存器IPR / IPRH和一组中断使能寄存器IER / IERH。可编程DMA区域访问使能寄存器DRAE / DRAEH提供第二级中断屏蔽。全局区域中断输出基于IER提供的启用掩码进行门控。 区域中断输出由IER和与该区域相关联的特定DRAE / DRAEH门控。 见图2-13。 通过将1写入中断暂挂清除寄存器ICR / ICRH中的相应位可以清除锁存到中断暂挂寄存器IPR / IPRH的传输完成中断。例如向ICR.E0写入1将清除IPR.E0中的挂起中断。
2.9.2
完成传输早期或正常完成后EDMA3通道控制器根据传输完成代码的规定设置中断暂挂寄存器IPR / IPRH中的相应位。如果完成中断已正确启用则DSP进入完成中断被置位时的中断服务程序ISR。
在服务中断之后ISR应清除IPR / IPRH中的相应位从而能够识别未来的中断。当所有IPR / IPRH位清零时EDMA3CC仅断言额外的完成中断。
当一个中断被服务时许多其他传输完成可能导致在IPR / IPRH中设置附加位从而导致额外的中断。IPR / IPRH中的每个比特可能需要不同类型的服务;因此ISR可以检查所有挂起的中断并继续直到所有发布的中断都得到适当的服务。
EDMA3CC具有存在于全局区域和每个阴影区域中的中断评估寄存器IEVAL。阴影区域中的寄存器是DMA通道阴影区域存储器映射中唯一不受DMA区域访问启用寄存器DRAE / DRAEH设置影响的寄存器。如果任何使能中断通过IER / IERH仍处于未决状态IPR / IPRH则将1写入与特定阴影区域关联的寄存器中的EVAL位会导致相关区域中断全局或阴影产生脉冲。如果软件架构选择不使用所有中断则该寄存器确保DSP不会错过中断或与阴影区域相关联的EDMA3主机。有关在EDMA3中断服务程序ISR中使用IEVAL的信息请参见第2.9.2.2节。
2.9.4
EDMA3CC错误寄存器提供区分错误条件错过事件超出阈值等的功能。此外设置这些寄存器中的错误位会导致EDMA3CC错误中断。如果在器件中断控制器中使能了EDMA3CC错误中断则它允许DSP处理错误条件。
EDMA3CC具有单个错误中断EDMA3_CC m_ERRINT该中断针对所有EDMA3CC错误条件而置位。有四种情况会导致错误中断产生脉冲•DMA错过事件适用于所有DMA通道。DMA丢失事件被锁存在事件丢失寄存器EMR / EMRH中。 •QDMA错过事件适用于所有QDMA频道。QDMA漏报事件被锁存在QDMA事件遗漏寄存器QEMR中。 •阈值超过适用于所有事件队列。它们被锁存在EDMA3CC错误寄存器CCERR中。 •TCC错误对于预期返回完成代码的未完成传输请求OPT中的TCCHEN或TCINTEN位设置为1超过n-1的最大限制其中n是EDMA3CC支持的DMA通道数。它也被锁存在EDMA3CC错误寄存器CCERR中。
图2-14说明了EDMA3CC错误中断产生操作。 如果由于任何错误条件而在错误寄存器中设置了任何位则EDMA3_CC m_ERRINT始终置位因为没有用于屏蔽这些错误事件的启用。与传输完成中断类似仅当错误中断条件从没有设置错误的状态转换到设置至少一个错误位的状态时错误中断也是脉冲的。如果在清除原始错误位之前锁存了其他错误事件则EDMA3CC不会产生额外的中断脉冲。 为了减轻软件负担类似于中断评估寄存器IEVAL有一个错误评估寄存器EEVAL允许重新评估未决的设置错误事件/位。这可以使用以便DSP不会错过任何错误事件。 2.10
EDMA3通道控制器支持两种内存保护主动和代理。
active
active存储器保护功能允许或阻止通过任何EDMA3编程器对EDMA3CC寄存器的读写访问基于您编程的权限特性。通过一组内存保护权限属性MPPA寄存器实现活动内存保护。
八个阴影区域中的每一个都具有关联的MPPA寄存器MPPA n其定义了允许到区域资源的特定请求者和请求的类型。
全局通道区域也受内存映射寄存器MPPAG保护。
代理存储器保护允许由给定EDMA3编程器编程的EDMA3传输使其权限通过EDMA3TC传输。权限与读取事务一起传递到源写入事务传递到目标端点。当写入PaRAM集的任何部分时通道选项参数OPT中的PRIV位和PRIVID位分别使用EDMA3编程器的PRIV值和PRIVID值进行设置。
事件队列
事件队列是EDMA3通道控制器的一部分。事件队列形成EDMA3CC中的事件检测逻辑与EDMA3CC的传输请求TR提交逻辑之间的接口。每个队列深度为16个条目;因此每个事件队列最多可以排队16个事件。如果有超过16个事件则在事件队列中找不到位置的事件将保留在关联的事件寄存器中并且DSP不会停止。
EDMA3CC中的事件队列数决定了连接到EDMA3CC的传输控制器的数量。默认情况下队列和传输控制器之间存在一对一映射。因此与Q0中的事件相关联的传输请求TR被提交给TC0。同样与Q1中事件相关的传输请求也会提交给TC1依此类推。 赢得针对其他DMA和/或QDMA待决事件的优先级的事件被放置在适当事件队列的尾部。每个事件队列按FIFO顺序进行服务。一旦事件到达其队列的头部并且相应的传输控制器准备好接收另一个TR则该事件被排队并且对应于所述出队事件的PaRAM集被处理并作为传输请求分组TRP提交。到相关的EDMA3传输控制器。
较低编号的队列具有比较高编号的队列更高的出队优先级。例如Q0的优先级高于Q1如果Q0和Q1都至少有一个事件条目并且如果TC0和TC1都可以接受传输请求则Q0中的事件首先被排队并且其关联的PaRAM集被处理并且作为转移请求TR提交给TC0。
有关系统级性能注意事项请参见第2.11.4节。通过访问事件队列条目寄存器Q xE y所有事件队列中的所有事件条目都是软件可读的不可写。每个事件条目寄存器根据事件类型手动事件链接或自动触发和事件编号来表征排队事件。有关队列事件条目寄存器中位字段的说明请参见第4.2.4.1节。
每个DMA通道和QDMA通道都是独立编程的使用DMA队列号寄存器DMAQNUM n和QDMA队列号寄存器QDMANUM映射到特定队列。DMA / QDMA通道的映射对于实现EDMA的期望性能水平至关重要最重要的是满足实时期限。见2.11.4节。
每个事件队列有16个条目。这16个条目以循环FIFO方式管理。所有事件队列的所有事件队列条目都是事件队列条目寄存器Q xE y可读的软件。另外对于每个队列存在队列状态寄存器QSTAT n。 这些寄存器提供用户可见性在调试涉及多个事件和事件源的实时问题通常是事后时可能会有所帮助。
使用EDMA3CC存储器映射寄存器读取事件队列中的16个条目中的每一个。通过读取事件队列您可以看到EDMA3在给定队列上处理的最后16个TR的历史记录。这提供了用户/软件可见性有助于调试涉及多个事件和事件源的实时问题通常是事后验证。
事件队列条目寄存器Q xE y唯一标识特定事件类型事件触发手动触发链触发和QDMA事件以及队列中的事件编号对于DMA / QDMA通道或已被排队通过队列。
队列状态寄存器QSTAT n包括起始指针STRTPTR的字段该字段为事件的头条目提供偏移。它还包括NUMVAL字段该字段提供在给定时刻驻留在事件队列中的有效条目的总数。STRTPTR字段可用于适当地索引到16个事件条目中。从STRTPTR开始的NUMVAL条目数表示仍在相应队列中排队的事件。可以读取剩余的条目以确定哪些事件已经被排队并提交给相关的传输控制器。
EDMA3CC事件队列包括水印/阈值逻辑允许您跟踪所有事件队列的最大使用情况。这对于调试可能由给定EDMA3事件队列上的行头阻塞导致的实时截止时间违规非常有用。
您可以通过编程队列水印阈值A寄存器QWMTHRA中的阈值0到15之间来编程可以在事件队列中排队的最大事件数。最大队列使用率主动记录在队列状态寄存器QSTAT n的水印WM字段中该字段根据有效条目数量的比较不断更新这在QSTAT n和NUMSTAL位中也可见。最大条目数QSTAT中的WM位。
如果超出队列使用则在EDMA3CC寄存器中可以看到此状态通道控制器错误寄存器CCERR中的QTHRXCD n位和QSTAT n中的THRXCD位其中n代表事件队列号。在CCERR中设置的任何位也会产生EDMA3CC错误中断。
主要的TeraNet交换结构参见设备专用数据手册将来自所有主设备如DSP内核EMACSRIO等的总线请求仲裁到共享从属资源外围设备和存储器。
使用队列优先级寄存器QUEPRI对来自EDMA3传输控制器的传输请求读和写命令相对于系统交叉开关内的其他主控的优先级进行编程。QUEPRI编程事件队列的优先级或间接TC n因为Q n传输请求被提交给TC n。
因此与EDMA3TC执行的传输优先级相比卸载队列的优先级具有次要影响由使用QUEPRI设置的优先级决定。
2.12
EDMA3通道控制器是EDMA3的用户界面EDMA3传输控制器EDMA3TC是EDMA3的数据移动引擎。EDMA3CC向EDMA3TC提交转移请求TREDMA3TC执行TR规定的数据转移;因此EDMA3TC是EDMA3CC的从属设备。
设备上的每个传输控制器根据性能要求系统拓扑如主TeraNet总线宽度外部存储器总线宽度门数等因素进行不同的设计。 确定TC配置的参数包括
•FIFOSIZE确定数据FIFO的大小以字节为单位数据FIFO是飞行中数据的临时缓冲区。数据FIFO是TC读取控制器从源端点读取的读取返回数据被存储并随后由TC写入控制器写出到目标端点的位置。•BUSWIDTH分别为TC读写控制器的读写数据总线宽度以字节为单位。这通常等于主TeraNet接口的总线宽度。 •默认突发大小DBSDBS是传输控制器发出的每个读/写命令的最大字节数。 •DSTREGDEPTH确定目标FIFO寄存器集的数量。为传输控制器设置的目标FIFO寄存器的数量确定未完成的传输请求的最大数量TR流水线。 以上四个参数在给定设备的设计中是固定的。有关每个EDMA3传输控制器支持的配置请参阅特定于设备的数据手册。
TC读写控制器与源和目标寄存器组一起负责对从端点发出最佳大小的读写操作。最佳大小的命令由传输控制器默认突发大小DBS定义。有关每个EDMA3TC支持的DBS值请参阅特定于设备的数据手册。
EDMA3TC尝试发出尽可能大的命令大小受DBS值或TR的ACNT / BCNT值的限制。EDMA3TC遵循以下规则
•读/写控制器始终发出小于或等于DBS绑定值的命令。 •始终发出1D传输的第一个命令以便后续命令与DBS连接值对齐。 例2-2显示了64字节DBS的命令碎片。总之如果ACNT值大于DBS值则EDMA3TC将ACNT阵列分解为源/目标地址的DBS大小的命令。然后连续地为每个BCNT数量的阵列提供服务。
对于ACNT字节的BCNT阵列即2D传输如果ACNT值小于或等于DBS值则可以将TR优化为1D传输以便最大化效率。如果EDMA3TC识别出2D传输被组织为单个维度ACNT BIDX并且ACNT值是2的幂则进行优化。表2-16总结了执行优化的条件。
传输控制器可以发出背对背传输请求TR。TC的未完成TR的数量受到由DSTREGDEPTH参数控制的目标FIFO寄存器条目的数量的限制在给定传输控制器的设计中是固定的。TR流水线操作指的是TC读取控制器为后续TR发出读取命令的能力而TC写入控制器仍在执行先前TR的写入。考虑2个TR的情况TR0后跟TR1由于TR流水线操作TC读取控制器可以在发出最后一个TR0读命令后立即开始发出TR1的读命令同时写命令和写数据对于TR0由目标FIFO寄存器跟踪。总之TC读控制器能够在写控制器之前处理n个TR其中n是目标FIFO寄存器条目的数量通常为4。
TR流水线操作对于保持背靠背小TR的吞吐量非常有用。它最小化了启动开销因为读取在先前TR写入的后台开始。
应该注意的是背靠背TR的目标是不同的端点即使两个TR的读取返回数据可能无序返回也就是说TR1的读取数据可能在TR0的读取数据之前进入传输控制器按顺序发出写命令即TR1的写命令将在TR1的写命令之前发出。
默认情况下读取尽可能快地发出。在某些情况下EDMA3TC发出的读取可以填充从站的可用命令缓冲从而延迟其他可能更高优先级主站成功向该从站提交命令。EDMA3TC发出读命令的速率由RDRATE寄存器控制。RDRATE寄存器定义EDMA3TC读控制器在发出给定TR的后续命令之前等待的周期数从而最小化EDMA3TC消耗所有可用从属资源的机会。如果传输控制器的目标是高优先级传输则RDRATE值应设置为相对较小的值;如果传输控制器的目标是低优先级传输则应将RDRATE值设置为较高的值。
相反写接口没有任何性能转动旋钮因为写命令总是在命令之间有间隔因为写命令与相关的写数据一起提交。
传输控制器在处理代理内存保护方面起着重要作用。有两种与传输相关联的访问属性例如启动传输的主服务器的权限id分配给主服务器的系统范围标识以及用于对传输进行编程的权限级别用户与主管。在通道控制器中编程时此信息在PaRAM集中保留。当TR被提交给传输控制器时该信息可供EDMA3TC使用并在发出读写命令时由EDMA3TC使用。读或写命令具有与通道控制器中EDMA3传输中编程的权限标识相同的权限标识和权限级别。
与通道控制器类似传输控制器能够检测和报告多个错误情况。在三个主要条件下生成TC错误
“BUSERRTC读取或写入控制器检测由源或目标地址发出的错误。有关错误类型的其他详细信息也会记录在ERRDET寄存器中该寄存器指示是读取错误源地址错误还是写入错误目标地址错误。 “MMRAERR尝试读取或写入EDMA3CC / TC存储器映射中的无效/保留地址。 “TRERR检测到传输请求数据包违反常量寻址模式传输规则源/目标地址和源/目标索引必须与32个字节对齐。 您可以轮询错误因为可以从ERRSTAT寄存器中读取错误的状态。 此外如果ERREN寄存器中的错误位被使能则ERRSTAT中设置的位将导致错误条件中断DSP。您可以决定启用/禁用其中一种或所有错误类型。
DMA程序寄存器组DMA源有效寄存器组和目标FIFO寄存器组用于获取通过传输控制器服务的TR的简要历史。 此外EDMA3TC状态寄存器TCSTAT具有专用位字段用于指示传输控制器不同部分内的持续活动•SRCACTV位指示源活动集是否处于活动状态。 •DSTACTV位指示驻留在给定实例的活动集中的目标寄存器中的TR数。 •PROGBUSY位指示DMA程序集中是否存在有效TR。 如果TR正在进行中必须谨慎使用并且您必须意识到从EDMA3TC状态寄存器读取的值有可能不一致因为EDMA3TC可能会因正在进行的活动而更改这些寄存器的值。 建议您确保不向EDMA3TC提交TR以便于调试。
目标FIFO寄存器指针实现为循环缓冲区其起始指针为DFSTRTPTR缓冲区深度通常为2或4. EDMA3TC在TCSTAT中维护两个重要的状态详细信息如有必要可在高级调试期间使用。DFSTRTPTR是一个起始指针即目标FIFO寄存器头部的索引。DSTACTV是有效占用条目数的计数器。这些寄存器可用于获取转移的简要历史。
2.13
本节总结了单个事件的数据流从事件被锁存到通道控制器的时间到返回传输完成代码的时间。以下步骤列出了EDMA3CC活动的顺序
1.事件从外部源外设或外部中断置位。对于手动触发链接触发或QDMA触发的事件这也类似。该事件被锁存到ER.E n / ERH.E n或CER.E n / CERH.E nESR.E n /ESRH.E nQER.E n位。 2.一旦事件被优先排序并排队到适当的事件队列SER.E n / SERH.E n或QSER.E n位被设置为通知事件优先级/处理逻辑忽略此事件因为它是 已经在队列中。或者如果传输控制器和事件队列为空则事件绕过队列。 3. EDMA3CC处理和提交逻辑评估适当的PaRAM集合并确定它是否是非空和非虚拟传输请求TR。 4. EDMA3CC一旦确定TR为非null就立即清除ER.E n / ERH.E n或CER.E n / CERH.E nESR.E n / ESRH.E nQER.E n位和SER.E n / SERH.E n。在空集的情况下SER.E n / SERH.E n位保持置位。它将非空/非虚拟TR提交给相关的传输控制器。 如果TR被编程为提前完成则EDMA3CC立即设置中断挂起寄存器IPR.I [TCC] /IPRH.I [TCC] -32。 5.如果TR被编程为正常完成当EDMA3TC通知EDMA3CC传输完成时返回传输完成代码EDMA3CC设置中断暂挂寄存器IPR.I [TCC] /IPRH.I [TCC]。 6. EDMA3CC使用TR对相关的EDMA3TC n的程序寄存器组进行编程。 7.如果两个寄存器组都可用则TR被传递到源激活集和Dst FIFO寄存器集。 8.读控制器通过向源从端点发出读命令来处理TR。读数据位于EDMA3TC n的数据FIFO中。 9.只要有足够的数据写控制器就会通过向目标从端点发出写命令来开始处理TR。 10.这一直持续到TR完成然后EDMA3TC n向EDMA3CC发出完成状态信号。
2.14
EDMA3控制器有许多实现规则来处理并发事件/通道传输等。以下小节详细说明了每当可能发生并发活动时的各种仲裁细节。图2-17显示了EDMA3优先级发挥作用的不同位置。
DMA事件寄存器ER和ERH捕获连接到EDMA3CC的所有外部/外设事件;同样QDMA事件寄存器QER捕获所有QDMA信道的QDMA事件;因此事件可能同时发生在DMA / QDMA事件输入上。对于同时到达的事件与最低通道号关联的事件优先级以提交给事件队列对于DMA事件通道0具有最高优先级通道n具有最低优先级其中n是支持的DMA通道数。EDMA3CC;类似地对于QDMA事件信道0具有最高优先级信道m具有最低优先级其中m是EDMA3CC中支持的QDMA信道的数量。此机制仅对提交到事件队列的同时事件进行排序。
如果DMA和QDMA事件同时发生则DMA事件始终具有针对QDMA事件的优先级以便提交到事件队列。
如果DMA通道与多个触发源关联事件触发手动触发和链触发并且同一通道同时设置多个事件ER.E n 1ESR.E n 1 CER.E n 1然后EDMA3CC始终按以下优先级顺序服务这些事件事件触发通过ER优先于链触发通过CER链触发优先于手动触发通过ESR 。 这意味着如果对于通道0同时ER.E0 1和CER.E0 1则ER.E0事件始终在CER.E0事件之前排队。
通过哪个事件队列用于事件提交由DMAQNUM n和QDMAQNUM指示进一步减轻了相关传输请求TR的优先级。为了向传输控制器提交TR事件需要从事件队列中出列。较低编号的队列具有比较高编号的队列更高的出队优先级。例如如果Q0和Q1中存在事件且各个传输控制器TC0和TC1准备好从EDMA3CC接收下一个TR那么与Q0中的事件相关联的传输请求将在任何传输之前提交给TC0与Q1中的事件相关的请求被提交给TC1。
每个传输控制器都有一个编程的系统优先级通过QUEPRI编程图2-17当系统中的多个主站竞争相同的端点时实现。通过传输控制器的系统优先级设置进一步减轻相关传输请求TR的优先级。当几个主系统向主TeraNet提交请求时此优先级在TeraNet中发挥作用。
所有TC的默认优先级相同0或其他主设备的最高优先级。如果应用程序要求EDMA3同时为实时紧急和非实时传输提供服务则建议更改此优先级。
硬件复位会复位EDMA3EDMA3CC和EDMA3TC和EDMA3配置寄存器。 器件复位后PaRAM存储器内容未定义您不应依赖参数重置为已知状态。必须在使用之前将PaRAM集初始化为所需的值。 在使用仿真器的调试期间DSP可以在执行数据包边界上暂停以进行单步执行基准测试分析或其他调试目的。在仿真停止期间EDMA3通道控制器和传输控制器操作继续。事件继续被锁存和处理转移请求继续提交和服务。 由于EDMA3涉及为多个主从外设提供服务因此EDMA3具有独立的仿真停止行为是不可行的。EDMA3功能将与其正在服务的外围设备耦合在仿真停止期间可能具有不同的行为。例如如果在仿真访问期间FREE 0且SOFT 0或SPI寄存器中为1暂停串行端口接口SPISPI将停止向EDMA生成接收或发送事件REVT或XEVT。从SPI的角度来看EDMA3被暂停但是其他外设例如定时器仍然断言事件并且将由EDMA服务。 3
3.1块移动示例
EDMA3执行的最基本传输是块移动。在器件操作期间通常需要将数据块从一个位置传输到另一个位置通常是在片上和片外存储器之间。
在此示例中将一部分数据从外部存储器复制到内部L2 SRAM。驻留在地址8000 0000h外部存储器的256字的数据块需要传输到内部地址0080 0000hL2如图3-1所示。图3-2显示了此传输的参数。
传输的源地址设置为外部存储器中数据块的起始位置目标地址设置为L2中数据块的起始位置。如果数据块小于64K字节则图3-2中所示的PaRAM配置保持为真同步类型设置为A-synchronized索引清除为0.如果数据量大于64K字节则BCNT和需要在同步类型设置为AB-synchronized的情况下适当设置B索引。OPT中的STATIC位设置为阻止链接。
也可以使用QDMA来设置该传输示例。对于具有类似性质的连续传输提交用于提交传输的周期数较少这取决于改变传输参数的数量。您可以将QDMA触发字编程为经历更改的PaRAM集中编号最大的偏移。
3.2子帧提取示例
EDMA3可以从更大的数据帧中有效地提取小帧数据。通过执行2D到1D传输EDMA3检索要处理的DSP的一部分数据。在此示例中640×480像素的视频数据帧存储在外部存储器中。每个像素由16位半字表示。 DSP提取图像的16×12像素子帧以进行处理。为了通过DSP实现更有效的处理时间EDMA3将子帧置于内部L2 SRAM中。图3-3显示了子帧从外部存储器到L2的传输。图3-4显示了此传输的参数。 相同的PaRAM条目选项用于QDMA通道以及DMA通道。OPT中的STATIC位设置为阻止链接。对于连续传输只需在触发通道之前编程已更改的参数。
3.3数据排序示例
许多应用程序需要使用多个数据阵列;通常希望使阵列排列成使得每个阵列的第一元件相邻第二元件相邻等等。
通常这不是数据如何呈现给设备。数据通过外设传输数据阵列一个接一个地到达或者数组位于存储器中每个阵列占据一部分连续的存储空间。对于这些实例EDMA3可以将数据重新组织成所需的格式。图3-5显示了数据排序。
要确定参数集值需要考虑以下因素
同步类型需要AB同步STATIC位为0以允许更新参数集。建议使用普通的EDMA3通道进行分类。
无法使用单个触发事件对此进行排序。相反可以将通道编程为链接到自身。在对BCNT元素进行排序之后可以使用中间链接来再次触发通道从而导致下一个BCNT元素的传输等等。图3-6显示了此传输的参数集编程假设通道0和4字节的元素大小。
3.4外设维护示例
EDMA3通道控制器还在DSP操作的背景下为外设提供服务无需任何DSP干预。通过正确初始化EDMA3通道它们可以配置为在整个器件操作中持续服务片上和片外外设。EDMA3可用的每个事件都有自己的专用通道所有通道同时运行。
唯一的要求是使用适当的通道进行特定传输并在事件使能寄存器EER中启用通道事件。当编程EDMA3通道以服务外围设备时有必要知道如何将数据呈现给DSP。始终向数据提供某种同步事件作为每个事件的一个元素非突发或每个事件的多个元素突发。
3.4.1
EDMA3独立处理非突发外设发送和接收数据流。发送和接收数据流可以具有完全不同的计数数据大小和格式。图3-7显示了处理传入的非突发外设数据。
要将输入数据流传输到L2存储器中的适当位置必须将EDMA3通道设置为使用A同步进行1D到1D传输。因为在到达时为每个单词生成接收事件REVT所以必须让EDMA3单独发出每个单元的传输请求。图3-8显示了此传输的参数。EDMA3通道的源地址设置为非突发外设的数据接收寄存器地址目标地址设置为L2中数据块的起始位置。由于数据接收寄存器的地址是固定的因此源B索引被清除为0无修改目标B索引被设置为01b增量。
3.4.2
更高带宽的应用要求将多个数据元素呈现给DSP以进行不同步事件。该数据帧可以来自同时工作的多个源也可以来自向DSP传输数据的单个高吞吐量外设。
在此示例中端口正在从摄像机接收视频帧并一次将其呈现给DSP一个阵列。视频图像是640×480像素每个像素由16位元素表示。图像将存储在外部存储器中。图3-9显示了这个例子。
要根据EVTn一次一个阵列将数据从外部外设传输到外部缓冲区必须配置通道n。由于数据的性质由像素阵列组成的视频帧目的地本质上是2D实体。图3-10显示了使用AB同步通过1D到2D传输服务传入数据的参数。源地址设置为视频成帧器外围设备的位置目标地址设置为数据缓冲区的起始位置。由于输入地址是静态的因此SRCBIDX为0不修改源地址。目的地由连续的线性元素阵列组成;因此DSTBIDX设置为像素大小2个字节。ANCT等于像素大小2个字节。BCNT设置为数组中的像素数640.CCNT等于块中的数组总数480. SRCCIDX为0因为源地址没有增量。
3.4.4
虽然先前的配置允许EDMA3连续服务外围设备但它对DSP提出了许多限制。由于输入和输出缓冲器不断被填充/清空因此DSP必须非常接近地匹配EDMA3的速度以处理数据。在DSP访问之前EDMA3接收数据必须始终放在存储器中DSP必须在EDMA3传输之前提供输出数据。虽然并非不可能但这是一项不必要的挑战。在2级缓存方案中尤其困难。
乒乓缓冲是一种简单的技术可以让DSP活动远离EDMA3活动。这意味着所有传入和传出数据流都有多组通常是两组数据缓冲区。当EDMA3将数据传入和传出ping缓冲区时DSP会处理pong缓冲区中的数据。当DSP和EDMA3活动完成时它们会切换。然后EDMA3写入旧的输入数据并传输新的输出数据。图3-14显示了此示例的乒乓方案。
为了改变连续操作示例使得乒乓缓冲方案EDMA3信道仅需要适度的改变。而不是一个参数集有两个; 一个用于向/从ping缓冲区传输数据一个用于向/从pong缓冲区传输数据。只要一次传输完成通道就会为另一次传输加载PaRAM集并继续进行数据传输。图3-15显示了所需的EDMA3通道配置。
每个通道都有两个参数集ping和pong。EDMA3通道最初加载了ping参数图3-15。ping集的链接地址设置为pong参数集的PaRAM偏移量图3-16。pong set的链接地址设置为ping参数集的PaRAM偏移量图3-17。每个通道的ping和pong参数之间的通道选项计数值和索引值都是相同的。唯一的区别是提供的链接地址和数据缓冲区的地址。
为了利用乒乓缓冲技术系统必须向DSP发出信号以便何时开始访问新数据集。DSP完成输入缓冲区ping处理后等待EDMA3完成然后切换到备用pong缓冲区。在此示例中两个通道都将其通道编号作为其报告字并将TCINTEN位置1以在完成后生成中断。当通道13填充输入缓冲器时中断挂起寄存器IPR中的E13位置1;当通道12清空输出缓冲区时IPR中的E12位置位。DSP必须手动清除这些位。通过设置通道参数DSP轮询IPR以确定何时切换。可选地EDMA3和DSP可以被配置为使得信道完成中断DSP。通过这样做DSP可以在等待EDMA3完成的同时为后台任务提供服务。
3.5
以下示例说明了中间传输完整链接功能。
许多系统需要使用一对必须以相同速率进行服务的外部FIFO。一个FIFO缓冲数据输入另一个FIFO缓冲数据输出。为这些FIFO提供服务的EDMA3通道可以设置为AB同步传输。虽然每个FIFO都使用不同的参数集进行服务但两者都可以从单个事件发出信号。例如外部中断引脚可以连接到其中一个FIFO的状态标志。当此事件到来时EDMA3需要为输入和输出流执行服务。如果没有中间传输完整链接功能则需要两个事件因此需要两个外部中断引脚。中间传输完整链接功能允许使用单个外部事件例如GPIO事件。图3-18显示了此示例的EDMA3设置和说明。
GPIO事件在本例中为GPINT0触发数组传输。完成通道48的每个中间阵列传输后中间传输完成链接在链接事件寄存器CER中设置E8位由TCC指定为8并向通道8提供同步事件。完成最后一次数组传输后通道48传输完全链接 - 非中间传输完成链接 - 设置CER中的E8位由TCCMODETCC指定并向通道8提供同步事件。通道8的完成设置I8位由TCCMODE指定TCC在中断挂起寄存器IPR中如果中断允许寄存器IER中的I8位置1它可以产生DSP的中断。
3.4.5.2用中间链来分解大量转移
中间转移链ITCCHEN的另一个特征是分解大量转移。大转移可以在转移期间锁定相同优先级的其他转移。例如使用EMIF从内部存储器到外部存储器的队列0上的大量传输可能使同一队列上的其他EDMA3传输饿死。此外这种大的高优先级传输可以长时间阻止EMIF服务于其他较低优先级的传输。当大转移被认为是高优先级时应将其拆分为多个较小的转移。图3-19显示了EDMA3设置和示例单个大块传输的说明。
中间传输链启用ITCCHEN提供了一种将大量传输分解为较小传输的方法。例如为了移动单个大块存储器16K字节EDMA3执行A同步传输。元素计数设置为合理的值其中合理的值来自移动此较小数据量所需的时间量。假设在这个例子中1Kbyte是一个合理的小转移。EDMA3设置为传输16个1 KB字节的数组总共16K字节元素。通道选项参数OPT中的TCC字段设置为与通道编号相同的值并设置ITCCHEN。在此示例中使用EDMA3通道25并且TCC也设置为25.当传输最后1K字节阵列时TCINTEN也可以设置为触发中断25。DSP通过写入事件设置寄存器ESR.E25的相应位来启动EDMA3传输。EDMA3传输第一个1 KB的阵列。完成第一个阵列后中间传输完成代码链产生一个同步事件到通道25这是由TCC字段指定的值。该中间传输完成链接事件使EDMA3信道25传输下一个1K字节阵列。此过程一直持续到传输参数耗尽为止此时EDMA3已完成16K字节传输。该方法将大的转移分解成较小的分组从而在转移中提供自然时间片使得可以处理其他事件。图3-20显示了EDMA3设置和分解的较小数据包传输的说明。