C64x EDMA Architecture

本文转自http://volvet.blogbus.com/logs/8270502.html

(1)    Transfer Request

1)    Transfer Request

每次数据传输都是由Transfer Request(TR)发起的,TR包含了所有数据传输所需要的信息:源地址,目标地址,优先级,传输的元素个数等等。TR根据不同的优先级被塞入相应的队列中,每次排于队列首位的TR被传入EDMA 控制器中,实际的数据传输就开始了。

(2)    L2 Memory/Cache Controller

Level 2 Memory/Cache Controller要实现很多种控制:允许CPU直接访问数据,递交QDMA申请(Quick DMA Request),维护L1 CacheL2 Cache的一致性(Coherence),另外所有Memory-Mapped PeripheralsCPU的通信也是通过L2 Memory Controller的。

L2 Memory ControllerQDMA Request 的申请可能是以下几种情况:CPU主动发起QDMA Request, CPU访问不能Cache的片外内存,L2 Cache读取可以被Cache的片外内存,L2 Cache 上的内容失效时候(把L2 Cache的数据写回片外内存),用户的一些Cache操作。

(3)    Transfer ControllerTransfer Request 按照优先级不同分4个队列 ,分别是Q0(Urgent)Q1(High),Q2(Medium)Q3(Low),每个队列的长度是16,就是说可以放入16TR, 这里要注意的是并不是把TR的优先级设为最高,数据就能优先得到传输的, 因为对不同队列TR的处理是并发的,所以要把TR均匀的分步到4个队列中,才能得到最优的数据传输性能。

 

 

EDMA控制寄存器是内存映射模式的,EDMAChannel参数表是一块2k Bytes的片内内存( Parameter RAMPaRAM )。每一个Channel的参数长度为24Bytes , 因为C64x CPU64Channel , 所以C64x CPU64×24 Bytes 作为EDMA到参数表,剩下的部分内存作为Link Parameter Set

  EDMAPaRAM的地址是:0x01A000000x01A00017  Parameter For Event 1

                            0x01A000180x01A0002F  Parameter For Event 2

                                    ………

                            0x01A005E80x01A005FF  Parameter For Event 63

  EDMA Parameter的格式如下:

Option4 Bytes     EDMA Transfer Configuration Option

Source Address4 Bytes   源地址

Array/Frame Count 2 Bytes  需要传输的Frame或者Array的个数  ( Frame1D,Array2D )

Element Count 2 Bytes  每个Frame 或者 ArrayElement 的个数

Destination Address4 Bytes   目的地址

Frame/Array Index2 Bytes  1D时候是指被拷贝到目标地址的每个Frame之间的偏移, 2D时候是指每个Array的偏移。

Element Index2 Bytes    1D时候有效, 2D时候被ignore,是指被拷贝到目的地址的Frame中每个Element的偏移。

Element Count Reload2 Bytes

Link Address2 Bytes

   要完成多种功能的数据拷贝功能 比如说数据重排等等, 往往需要借助Frame/Array IndexElement Index的合理设置。

   EMDA Transfer Configuration Option 的定义如下:

Bits 31-28 Priority  000Urgent

                    001High

                    010Medium

                    011Low

                        OthersReserved

   Bits 28-27 ESize    0032 Bits Element

                        0116 Bits Element

                        108 Bits Element

                        11Reserved

   Bits 26  2DS  0Source 1D模式

                    1Source 2D 模式

   Bits 25-24  SUM  00Same Source Address, 是指用相同值填充目标地址的情况 , 类似DAT操作时候 DAT_fill的情况。

                       01Increment Source Address ,  拷贝完一个值后,Source Address + 1

                       10Decrement Source Address, 拷贝完一个之后,Source Address – 1

                       11Index 模式,2D模式下这个值无效果,会导致不可预料的情况,在1D模式下,表示拷贝完一个值后,Source Address + Element Index

   Bits 23  2DD0Destination 1D模式

                   1Destination 2D 模式

   Bits 22-21  DUM  Destination Address Update Mode , 与SUM 的定义相同。

   Bits 20  TCINT0:  Transfer Complete Interrupt Disable

                     1:  Transfer Complete Interrupt Enable

   Bits 19-16  TCC  Transfer Complete Interrupt Code 的低4

   Bits 15  Reserved

   Bits 14-13  TCCMTransfer Complete Code的高2位。这个值等同与传输结束时候的事件代号。

   Bits 12  ATCCINT  Alternate Transfer Complete Interrupt

   Bits 11Reserved

   Bits 10-5  ATCC Alternate Transfer Complete Interrupt Code

   Bits 4Reserved

   Bits 3   PDTSPeripheral Device Transfer Mode for Source

   Bits 2   PDTDPeripheral Device Transfer Mode for Destination

   Bits 1   Link  1Link Enable

                    0Link Disable

   Bits 0   FS  0Channel is Element/Array synchronization

                  1Channel is Frame/Block synchronization

  

   QDMAEDMA很象,不同之处就是QDMAParameter中没有

Element Count ReloadLink AddressQDMAParameter的长度是20 Bytes。另外QDMA

Transfer Configuration Option没有ATCCINTATCCPDTS,PDTDLink等参数,这说明

QDMA不能用来做外围设备跟RAM之间的数据传输, 仅仅是L2 MemoryExtern Memory

之间的数据传输。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C64x CSL支持库是一种用于C64x数字信号处理器的软件开发工具。C64x是德州仪器(Texas Instruments)公司推出的一款高性能、低功耗的数字信号处理器。CSL(Chip Support Library)是一种软件开发库,提供了一系列用于C64x的功能模块和接口,帮助开发人员更方便地使用C64x进行软件开发。 C64x CSL支持库包含了多个功能模块,包括硬件抽象层(HAL)、片上总线(On-Chip Bus)、中断管理器(Interrupt Manager)、数据管理器(DMA Manager)等。这些模块可以帮助开发人员更好地管理C64x的硬件资源,并提供了一些常用功能的封装和接口供开发人员使用。 其中,硬件抽象层(HAL)提供了对C64x硬件资源的抽象和管理,使得开发人员可以更方便地访问和配置硬件资源,如片上存储器、GPIO、定时器等。片上总线(On-Chip Bus)模块提供了对C64x片上总线的访问接口,用于高效地传输数据和指令。中断管理器(Interrupt Manager)模块用于管理处理器的中断,并提供了对中断处理的接口。数据管理器(DMA Manager)模块用于管理数据的传输,使用DMA(Direct Memory Access)技术可以提高数据传输效率。 C64x CSL支持库的使用可以大大简化C64x软件开发的过程,并提高开发效率。开发人员只需调用相应的函数接口,而不用关心底层硬件的具体配置和操作。同时,C64x CSL支持库还提供了一些示例代码和文档,帮助开发人员快速上手和理解库的使用方法。 总而言之,C64x CSL支持库是一种为C64x数字信号处理器提供的软件开发工具,通过封装底层硬件资源和提供常用功能的接口,帮助开发人员更方便地开发C64x的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值