This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM6548:AM6548 IDK:如何在没有 OSAL-Nonos 和 TISCI 的小型裸机应用中使用 UDMA

Guru**** 1761415 points
Other Parts Discussed in Thread: AM6548, SYSBIOS
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/931371/am6548-am6548-idk-how-to-use-udma-in-a-small-bare-metal-app-without-osal-nonos-and-tisci

器件型号:AM6548
Thread 中讨论的其他器件: SYSBIOS

您好!

 AM6548的 PDK 以及(缺失)平台文档-这次是 UDMA:

 

我必须实现裸机应用(尽可能小)、该应用利用 DMA 将数据从 DDR4传输到共享 SRAM。 由于应用程序必须尽可能快、因此必须驻留在共享 SRAM 中。

 

首先、我看了 PDK 中的示例。 和(这是 PDK 的一般问题!) 几个小时后、我注意到 EDMA 示例不能用于 A53内核。 这是因为我在一些子树中找到了另一个文档、其中说明了如何将使用 EDMA 的应用移植到 UDMA -这说明了 UDMA 是一个新的东西、甚至更复杂。 因此、我必须使用 uDMA。 我想我可以分解的只有一个可用示例:本移植文档中的示例。

pdk_am65xx_1_0_7\packages/ti_drv\udma\docs\Migrating_Applications_from_EDMA_to_UDMA_using_TI-RTOS.pdf

(但我不想使用 TI-RTOS!)

即 UDMA 驱动程序

 

packages/ti/drv/udma/lib/am65xx/mpu1_0/release/udma.aa53fg

 

取决于

 

packages/sciclient/lib/am65xx/mpu1_0/release/sciclient.aa53fg

packages/osal/lib/nonos/am65xx/a53/release/ti.osal.aa53fg

 

因此会将依赖项引入 OSAL、从而将我的裸机应用程序链接到这些应用程序。 为什么对信号量支持、固件库(!)存在硬依赖关系 ? (这意味着我还必须加载固件二进制文件才能使用 DMA!?、因为 UDMA 初始化函数会挂起...) 到目前为止、没有 RTOS 依赖性、因此 pdf 标题也会误导您、您是否同意?

 

这会导致一个只能容纳半兆字节的应用、即如果两个内核平等共享 MSMC SRAM、则应该运行 UDMA 传输的软件已经已满...

 

因此、产生了以下想法和问题:

 

  1. 为什么 PDK 中有很多(如果不是大多数)示例、我为6548下载了这些示例(!) 不适用于6548、而是适用于其他平台–这毫无意义!
  2. 其中是 UDMA 的可理解文档。 用户不能遵循 TRM 14、000页的任何可用寄存器访问顺序。
  3. 如何在不向其他库引入大量依赖项的情况下使用 UDMA ...
  4. UDMA 是一项非常基本的功能、因此、它所需的软件也应该很小且快速! 170行用于传输1024字节的 C 代码似乎是一个坏笑话–在文档中、我几乎不会对定义、宏和函数进行任何解释。 它只是一个空的 doxygen 文档... 至少是 IMHO。

 

我期待得到任何帮助!

Andreas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    安德烈亚斯

    AM65架构与之前的器件相比进行了更新、包括 DMA 架构。 虽然 EDMA 的许多概念确实包含在新的 DMA 架构中、但它将存储器到存储器和数据包传输支持统一到架构中。

    正确的是、在 SDK 6.3版本中、CSL 承载了一个跨越多个器件的超集模块、并且有一个 EDMA 文件夹、该文件夹不用于 AM65。 SDK 7.0版本不包含它。  

    在操作系统方面、大多数 RTOS PDK 组件不需要 SYSBIOS。 具体而言、要获得简单的 BareMetal UDMA memcopy、请在驱动程序文件夹中查找示例- \packages/ti\drv\udma\examples\udma_memcpy_test

    整个 DMA 架构很复杂,TRM - https://www.ti.com/lit/pdf/spruid7的第10节中对此进行了全面介绍 ,PDK 中的概述文档也在中进行了全面介绍 除了更复杂的数据流之外、\packages/ti\drv\udma\docs\UDMA_Overview.pdf 还支持基本操作。

    资源分配和管理是通过系统固件进行的,无论应用程序和 DMA 的使用情况如何,都是通过 SciClient 进行的。 这不需要 SYSBIOS、也可供 BareMetal 应用程序使用。

    此致、

    Dave