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.

[参考译文] TDA3XEVM:VisionSDK3.00上 EDMA 的设置

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/666558/tda3xevm-setting-of-the-edma-on-visionsdk3-00

器件型号:TDA3XEVM

我想在 DMA 中断模式下将 McSPI LLD 驱动程序与 Vision SDK 3.00中的 ARINS_MAIN 函数结合使用、
EDMA 设置在 McSPI LLD 驱动程序的示例代码和 VisionSDK 的程序之间有所不同、
我在 DMA 中断模式下调用了 McSPI LLD 驱动程序、但 EDMA 中断不起作用、驱动程序不起作用。

我想在具有 DMA 中断模式的 Vision SDK 环境中运行 McSPI LLD 驱动程序、但如何更改 EDMA 设置部分?

在 VisionSDK 中、使用以下源代码设置 EDMA。

C:\processor_sdk_vision_03_00_00_00\vision_sdk\links_fw\src\rtos\utils_common\src\dma_cfg\utils_dma_edma3cc.c

在 McSPI LLD 驱动程序示例中、EDMA 使用以下源代码进行设置。

C:\processor_sdk_vision_03_00_00_00\ti_components \drivers\edma3_LLD_02_12_00_20\packages/ti\sdo\EDMA3\drv\samples\src\sample_arm_init.c

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

    您能否提供更多详细信息、说明哪些方面发生了故障?

    VisionSDK 中有多个位置可供您检查 EDMA3的使用情况、例如:
    /vision_sdk/links_fw/src/rtos/utils_common/src/utils_dma.c

    您还可以检查:
    /vision_sdk/docs/TrainingSlides/EDMA3_overview.pdf
    processors.wiki.ti.com/.../EDMA3_LLD.pdf

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

    感谢你的答复。

    我更改了下面连接的 McSPI 的示例代码、使其能够在 chain_main ()函数下运行、但它在示例代码中运行、但当使用 chain_main (chain_main_BIOS_vision.c)、lisrEdma3ComplHandler0 (edma3resmgr.c)调用 spiTask0函数时、将不会调用中断处理程序、并且不会完成 DMA 传输。

    只要在 示例代码中调用 spiTask0(),就 会调用 lisrEdma3ComplHandler0()函数。

    initCfg->drvInstInitConfig 的参数是  从 Utils_edma3Init (utils_dma_edma3cc.c)函数调用的 EDMA3_DRV_open (EDMA3_drv_init.c)函数的参数、在 Vision SDK 和示例代码之间是不同的、但这是由什么引起的?

    是否可以将 SDK 设置更改为与示例代码相同的设置?

    或者、 是否需要更改 McSPI LLD 驱动器(例如 DMA 通道)使用的 DMA 设置?

    示例代码设置:

    processor_sdk_vision_03_00_00_00\ti_component-\drivers\EDMA3_LLD_02_12_00_20\packages/ti\sdo\EDMA3\drv\samples\src\platforms\sample_tda3xx_cfg.c

     行:1413

    /* ownPaRAMSets */

    /* 31   0   63  32   95  64   127  96 */

    {0xFFFFU、0xFFFFFFFFU、0xFFFFFFFFU、0xFFFFU、0xFFFFFFFFU、

    /* 159 128   191 160   223 192   255 224 */

    0xFFFFU、0xFFFFFFFFU、0xFFFFFFFFU、0xFFFFU、0xFFFFFFFFU、

    /* 287 256   319 288   351 320   383 352 */

    0xFFFFU、0xFFFFFFFFU、0xFFFFFFFFU、0xFFFFU、0xFFFFFFFFU、

    /* 415 384   447 416   479 448   511 480 *

    0xFFFFFFFFU、0xFFFFFFFFU、0xFFFFFFFFU、0xFFFFU、0xFFFFFFFFU}、

    /* ownDmaChannels */

    /* 31   0   63  32 */

    {0xFFFFFFU、0xFFFFFFU}、

    /* ownQdmaChannels */

    /* 31   0 */

    {0x000000FFU}、

    /* ownTccs */

    /* 31   0   63  32 */

    {0xFFFFFFU、0xFFFFFFU}、

    /* resvdPaRAMSets */

    /* 31   0   63  32   95  64   127  96 */

    {0x00000000U、0x000000000000、0x000000000000、0x000000000000、

    /* 159 128   191 160   223 192   255 224 */

    0x00000000U、0x000000000000U、0x000000000000、0x000000000000、

    /* 287 256   319 288   351 320   383 352 */

    0x00000000U、0x000000000000U、0x000000000000、0x000000000000、

    /* 415 384   447 416   479 448   511 480 *

    0x000000000000、0x000000000000、0x000000000000、0x000000000000}、

    /* resvdDmaChannels */

    /* 31   0   63  32 */

    {0x3CC0DB6EU、0x303F3FFCU}、

    /* resvdQdmaChannels */

    /* 31   0 */

    {0x00U}、

    /* resvdTccs */

    /* 31   0   63  32 */

    {0x00U、0x00U}、

    }、

    视觉 SDK 设置:

    processor_sdk_vision_03_00_00_00\vision_sdk\links_fw\src\rtos\utils_common\src\dma_cfg\utils_dma_cfg_ipu1_0.c

    行:107

    EDMA3_DRV_InstanceInitConfig gUtils_dmaSysEdmaInstInitConfig =

      /* ownPaRAMSets */

      /* 31   0  63  32   95  64   127  96 */

      {0x00000000U、0xFFFFFF0000U、0xFFFFFFU、0xFFFFFFU、

      /* 159 128  191 160   223 192   255 224 */

       0x00000000U、0x000000000000、0x000000000000、0x000000000000、

      /* 287 256  319 288   351 320   383 352 */

       0x00000000U、0x000000000000、0x000000000000、0x000000000000、

      /* 415 384  447 416   479 448   511 480 *

       0xFFFFU0、0xFFFFU1、0xFFFFU2、0xFFFFU3}、

      /* ownDmaChannels */

      /* 31   0  63  32 */

      {0x00000000U、0xFFFFFF0000U}、

      /* ownQdmaChannels */

      /* 31   0 */

      {0x00000000U}、

      /* ownTccs */

      /* 31   0  63  32 */

      {0x00000000U、0xFFFFFF0000U}、

      /* resvdPaRAMSets */

      /* 31   0   63  32   95  64   127  96 */

      {0x000000000000u、0x000000000000u、0x000000000000u、0x000000000000u、

      /* 159 128   191 160   223 192   255 224 */

       0x000000000000、0x0000000000000000、0x000000000000、0x000000000000、

      /* 287 256   319 288   351 320   383 352 */

       0x000000000000、0x0000000000000000、0x000000000000、0x000000000000、

      /* 415 384   447 416   479 448   511 480 *

       0x000000000000、0x0000000000000000、0x000000000000、0x000000000000、}、

      /* resvdDmaChannels */

      /* 31   0  63   32 */

      {0x000000000000、0x000000000000}、

      /* resvdQdmaChannels */

      /* 31   0 */

      {0x000000000000}、

      /* resvdTccs */

      /* 31   0  63   32 */

      {0x000000000000、0x000000000000}、

    };

    我将会输入示例代码。 此示例代码在源代码下方进行了修改。

    processor_sdk_vision_03_00_00_00\ti_component-\drivers\pdk_01_07_00_16\packages/ti\drv\bsp_LLD\mcspi\examples\mcspi_loopback

    e2e.ti.com/.../mcspi_5F00_loopback_5F00_tst_5F00_dma.zip

    此致、

    Taniguchi

     

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

    我已将您的问题转交给一位专家以寻求进一步帮助。

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

    如果其他人尚未使用该通道、则可以使用任何通道来执行 EDMA。 根据您的用例、您甚至可以使用与示例应用相同的设置。

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

    您好、Rishabh、

    感谢你的答复。

    通过将使用的 DMA 通道从22、23更改为56、57、现在可以接收 DMA 中断。

    如果使用了不可用的 DMA 通道、则应发出错误信号、但下面的驱动程序代码中似乎有一个未被通知的错误。

    processor_sdk_vision_03_00_00_00\ti_component-drivers\pdk_01_07_00_16\packages/ti\drv\bsp_lld\mcspi\src\bsp_mcspiEdma.c

     行:133.

    在 Mcspi_localSetupEdmaDuringOpen 函数中

     

      if (IOM _已完成!=状态)

    上述代码应为"="、但为"! ="。 请参阅下图中的黄色标记。

    此致、

    Taniguchi

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

    我已通知 EDMA LLD 所有者查看您提到的错误。

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

    您好 Taniguchi、

    这是 McSPI 驱动程序中的一个问题。

    我已提出此问题的错误、将在下一版本中修复

    此致、
    Prasad

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

    你(们)好

    我还在 bsp_mcspi.c 中的 mcspiMdDeleteChan 函数中发现了一个错误、我将 展示该错误。

    (1)我认为要停止的 DMA 通道编号的规范应该是当前使用的编号(chanHandle->txDmaEventNumber)、但使用默认设置值。 请参阅 图像下方的黄色标记。

    线路:1265、1274、1281、1288

    (2)释放 Mcspi_edmaChanNum 的 DMA 通道的条件包括 FIFO 为 false、但在获取该通道的函数(Mcspi_localSetupEdmaDuringOpen)中、在不确认该通道是否为 false 的情况下获取该通道。

    bsp_mcspi.c

    第1296行

    bsp_mcspiEdma.c

    函数:Mcspi_localSetupEdmaDuringOpen

    线路:204

    (3)不执行 instHandler 的初始化处理。

    我们认为有必要执行与 instHandler 的初始化处理相同的处理、该处理是通过 mcspiMdBindDev 函数完成的。  为了复位 McSPI 通信、我调用了 GIO_DELETE 函数、然后调用了 GIO_CREATE 函数、但无法重新启动通信。

    此致、

    Taniguchi