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.

[参考译文] TDA4VM:TDA4VM MCSPI DMA 与 MCU 域 OSPI 启动发生冲突,用于 DMA 模式

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1075010/tda4vm-tda4vm-mcspi-dma-conflict-with-mcu-domain-ospi-boot-for-dma-mode

部件号:TDA4VM

TI 同事,您好!

现在我们在使用 DMA 时遇到了问题。

我们正在为以下2个模块使用 DMA:

1. MCSPI

2. OSPI 引导请参阅 https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/mcusw/mcal_drv/docs/drv_docs/demo_boot_app_mcu_rtos_top.html

当我们只将 MCSPI 与 DMA 配合使用时,对于 TX 和 RX 来说 SPI 通信都可以,但当我们添加项目2 OSPI 并启用 Marco 时  

在 OSPI 引导中,SBL_USE_DMA 则 SPI 通信为空。在 SPI_DMA.c 函数 SPI_DmaInitTxCh 中,由于以下的返回值返回 UDMA_EFAIL,因此该函数失败。

RetVal = UDMA_chOpen (drvHandle,txChHandle,chType,&chPrms);

那么,在这种情况下,DMA 通道是否会发生冲突? 或对这种情况的任何想法?

期待您的回复。

谢谢。

巴西

中西惠

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

    添加信息:

    SPI 通信失败,因为 SPI_Init 失败,代码链失败,如下所示:

    SPI_Init-->SPI_DmaInitTxCh-->UDMA_chOpen 失败

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

    您好,

    请就此提供更多信息吗?  您使用的是哪个 SPI 实例? 您正在尝试在 DMA 模式下启用哪一个内核? 从 chOpen API 返回的错误是什么?  

    我们可能只是需要分配更多的渠道,但首先需要了解到底是什么问题。

    此致,

    布里耶什

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

    您好,

    我使用了 R5F 核心 MCU SPI0,是的,我想在 DMA 模式下同时启用 SPI 通信和 OSPI 引导,错误从 chOpen 函数返回“UDMA_EFAIL”。这里粘贴 SPI 配置供您参考。

    const (结构 SPI_ConfigType_s,SPI_CONFIG_DATA) SpiDriver =

    .maxChannels = 1U,
    maxJobs = 1U,
    最大序列= 1U,
    最大黄细胞单位= 1U,
    maxExtDevCfg = 1U,
    .udmaInstId =(UINT32) UDMA_INST_ID_MCU_0,
    .cacheWbINV =(SPI_CacheWbINV) NULL_PTR,
    .cacheWb =(SPI_CacheWb) NULL_PTR,
    .cacheInv =(SPI_CacheInv) NULL_PTR,
    .channelCfg =

    [0]=

    通道 BufType = SPI_EB,
    .dataWidth = 8U,
    缺省 TxData = 0U,
    最大 BufLength = 160U,
    .transferType = SPI_MSB,
    },
    },
    .job配置=

    [0]=

    .jobPriority = SPI_Job_Priority_0,
    hwUnitId = SPI_UNIT_MCC_MCSPI0,
    .SPI_JobEndNotification = SpiApp_McuMcspiJob0 EndNotification,
    .channelPerJob = 1U,
    .channelList =

    [0]= 0U,
    },
    },
    },
    seqCfg =

    [0]=

    seqInterruptible =(uint8) true,
    .SPI_SequenceEndNotification = SpiApp_McuMcspiSeq0 EndNotification,
    .jobPerseq = 1U,
    .joblist =

    0U,
    },
    },
    },
    hwUnitCfg =

    [0]=

    hwUnitId = SPI_UNIT_MCC_MCSPI0,
    .enabledmaMode =(布尔型) true,
    dmaTxChIntrNum =82,
    dmaRxChIntrNum =83,
    },
    },
    extDevCfg =

    [0]=

    .mcspi =

    .cssEnable =(uint16) TRUE,
    csMode = SPI_Continuous,
    cspolarity = SPI_LOW,
    csIdleTime = SPI_DATADELAY_0,
    .lkDivider = 11U,
    clkMode = SPI_CLK_MODE_3,
    txRxMode = SPI_TX_RX_MODE_Both,
    .startBitEnable =(uint16) false,
    .startBitLevel = SPI_LOW,
    .ReceptionLineEnable = data_line_0_reception,
    .transmissionLineEnable = data_line_1_transmission,
    },
    },
    },
    };

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

    你好,布里耶什,

    是否有更新?

    巴西

    西惠

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

    添加更多信息:

    1.在  chOpen API -> Sciclient_rmPsilPair API 中失败,返回值为 CSL_EFAIL。

    2.如何 分配更多频道?

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

    嗨 June Lee,Sihui Zhong,

    我将在星期五之前了解这一点,并通过其他 DMA 通道与您联系。

    此致,

    布里耶什

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

    你好,布里耶什,

    是否有更新?

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

    你好,June Lee,

    如果您使用的是 Linux 引导流,请使用随附的 sysfw.itb 文件并检查 您是否能够使 OSPI 和 McSPI 在 DMA 启用模式下工作?  

    /CS-file/__key/communityserver-discussion-components-files/791/8231.sysfw.zip

    如果您使用的是 SBL 启动流,请替换 ti-processor-sdk-RTos-j721e-EVM-EVM-EVM-EVM-EVM-EVM-EVM-EVM-EVM-08_00_04_00_37\packages \ti\drv\sciclient\soc\V1文件夹中的附加文件,运行“make sciclient_boardcfg -08_jcfg -00_ski_-08_packages” ,并从 SDK_trab__trab_-08_trab_-_trecons_-08-_trab_coti-08中重新生成所有驱动程序包,并从 SDK__trab__trab_trab_trab_-0700-__trab__-

    /scs-file/__key/communityserver-discussions-components-files/791/0574.sciclient_5F00_defaultBoardcfg_5F00_rM.c

    基本上,我已将 MCU R5F 的块复制通道增加到4个。 因此,如果它使用块复制通道,它应该可以正常工作。  

    此致,

    布里耶什

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

    您好,布里耶什:

       我使用了 SBL 引导流,我曾经尝试 过,但在调用 SPI_DmaInitTxCh -> UDMA_chOpen 时仍失败,它重新截断 了 CSL_EFAIL。

    还有什么需要更新的吗?

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

    添加信息:

     我使用 SBL_cust_img_mcu1_0_release.tiimage 加载程序,我发现,如果我 使用 DMA 构建 SBL_cust_img_mcu1_0_release.tiimage,它应该会引导  UDMA_chOpen 故障,但当我  使用 DMA 构建 UDMA_chOpen 时,它将打开  UDMA_Open 成功。  

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

    你好,布里耶什,

    您的解决方案是否缺少一些信息? 据我了解 ,0574.sciclient_5F00_defaultBoardcfg_5F00_rM.c 是要增加 MCM_0_R5的 DMA 资源块或通道,但我们仍需要在您提供的前提条件下(增加更多块后)更改 OSPI DMA 通道或 SPI 通信 DMA 通道以实现连接? 但是,我们如何改变 DMA 的渠道,您能否  提供更多建议?

    如果有任何误解,请纠正我。

    谢谢。

    巴西

    西惠

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

    您好,布里耶什,

       是否有更新?