TI Driver---EDMA

Introduction

AWRxxxx SOC中的EDMA IP可使用EDMA驱动程序软件进行高级编程,该驱动软件允许与操作系统连接。EDMA驱动程序公开IP提供的大多数功能的编程。

下列是对API/功能的高级描述:

  • 查询SoC上的EDMA实例数
  • 将EDMA的特定实例初始化为已知的干净禁用状态(类似重置的状态)
  • 打开一个EDMA实例,该实例返回实例信息,例如该实例上传输控制器的数量
  • 将通道配置为所需配置,并可选择启用通道。这包括参数集选择和参数集配置。用户可以选择为信道传输完成指示提供回调功能。
  • 启用/禁用通道
  • 配置参数集。通常用于链接参数
  • 链接参数集
  • 连锁通道
  • 一个以前配置好的通道开始传输(手动触发)
  • 等到传输完成(在配置中未提供回调时使用)
  • 用于设置参数集的源地址或目标地址的API,用于XWR16XX(DSP)上的某些用例
  • 从CC(Channel Controller)和所有的TCs(Transfer Controllers)生成错误的错误监视配置。某些设备上的处理器的相应错误状态查询,其中错误中断没有物理连接到处理器中断映射(例如,xWR16xx的R4F(MSS)上的EDMA instance#1)
  • 状态查询
  • 性能控制
  • 关闭EDMA的实例

这里的信道可以是DMA或QDMA信道

Limitations

Unsupported Hardware features

下列是EDMA硬件的以下功能不受支持:

  • 不提供 特权级别和特权ID的编程,这些都被定义为最高特权(默认设置)
  • 不支持在EDMA TC(Transfer Controller)中查询原活动寄存器和目标FIFO寄存器以进行高级调试

Unsupported Software features

不提供任何类型的资源管理,例如没有DMA或QDMA信道资源管理。用户需要在驱动程序之外进行静态或动态的资源管理。在XWR16xx/XWR18xx/XWR68xx上,驱动程序软件不会阻止(R4F和C674x)两个处理器操作相同的物理EDMA实例,软件实例不会在处理器之间共享(软件实例在处理器的本地存器中)。然而,如果两个处理器都希望在同一个物理实例上运行,然后,它们必须在驱动程序之外协调它们的活动(例如使用邮箱消息),以确保一次只有一个在操作相同的物理实例(因为如果没有多处理器信号量,读-修改-写入操作将变得不一致),并且还需要协调资源管理,如通道和传输完成代码。

API

EDMA API的头文件包含在<ti/drivers/emda/edma.h>

EDMA Event Mapping Definitions

64个DMA通道的事件映射定义可在<ti/common/sys_common_*.h>中参考,名字命名为:*_REQ__*。例如,对于在XWR14xx的例子中

#define EDMA_TPCC0_REQ_HWACC_0 (17U)

在上面的这个宏定义中,显示了EDMA的实例0(CC0),事件编号17(基于0)与SoC中硬件加速器的信道0相关联。在编程channelId参数的过程中,调用配置API时,可以根据需要使用这些定义,例如上面的示例define在使用的时候,表示当硬件加速器通道0输出线触发时,它将触发使用此定义配置的EDMA通道17。注意,在单元测试的时候没有说明这一点,因为它选择特定的数字来测试某些边界条件。

未绑定到任何硬件事件的通道可用于一般用途(例如,用于链接目的),这些通道用后缀标记:FREE_<n>,例如EMDA_TPCC0_REQ_FREE_0

Caution

在传输完成后禁用通道可能是很重要的,一种情况是:对参数为X的QDMA的通道进行编程,并用触发字完成传输。然后,与DMA信道相关联的同一参数X用于DMA信道配置因为它是空闲的。当配置API进行触发的时候,它仅仅只处理DMA通道寄存器,因为信道类型是DMA,并不会影响QDMA信道(在本例中是启用的)。当为这个DMA信道配置param时,当试图配置处于处于处于待命状态的触发字时,它将提前触发QDMA信道。在重用与其相关联的param之前禁用QDMA通道可以防止问题的发生。

Memory Footprint

驱动的内存占用取决于应用程序引用了多少API(基本操作不需要所有的API)。当大多数的API被使用的时候,单元测试代码生成的内存映射文件可用于获得内存占用的估计值。

EDMA silicon errata

Incorret read,hang,or data integrity issues

这个silicon勘误应用于xWR14xx ES3.0,xWR16xx ES2.0,和xWR18xx ES1.0。为了分析应用程序是否在任何记录的勘误方案中配置EDMA,用于可以将gEDMA_4K_errata_check中的字段设置为true,并估计是否通过api返回任何错误:EDMA_configParamSet和EDMA_setSourceAddress。在默认情况下,检查是被禁用的,但是可以通过gEDMA_4K_errata_check全局结构中的标志启用和控制。生成标志EDMA_4K_SILICON_ERRATA_CHECK在makefile中基于应用此勘误表的设备启用。有关报告的结构、检查和错误的更多详细信息,请参阅EDMA_4K_errata_check_t_

参考文献:

  1. 《mmWave SDK Module Documentation》

猜你喜欢

转载自blog.csdn.net/Xiao_Jie123/article/details/110749267
TI