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.

[参考译文] AM2432:具有 DMA 的 MCAN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1515075/am2432-mcan-with-dma

器件型号:AM2432

工具/软件:

您好、

当客户在未对 EVM 进行任何更改的情况下尝试“mcan_loopback_dma_am243x-evm_r5fss0-0_freertos_ti-arm-clang"示“示例工程时、会发生以下错误。

MAIN_Cortex_R5_0_0:[MCAN]环回 DMA 模式、应用程序已启动...

MAIN_Cortex_R5_0_0:错误:app_mcanCompareMsg:663:数据不匹配!!

MAIN_Cortex_R5_0_0:断言:0.11967s:../mcan_loopback_dma.c:App_mcanCompareMsg:664:false 失败!!

 

在他们的尝试中有任何问题吗?

此示例是否经过测试?

或者 DMA 不能与 CAN 一起使用?

 

谢谢。此致、

英明

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

    Hi Hideaki-san、

    让我在我的 EVM 上对此进行测试、并告诉您我是否可以重现问题、请在 1-2 天内给予回复。 您能告诉我您使用的 MCU+SDK 版本、以便我可以在同一个版本上进行测试吗?

    此致、

    会面。

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

    Hi Hideaki-san、

    我在我这边测试了相同的示例、它对我很有帮助、我已经尝试了 SDK 11.0 版中的示例并在 am243-LP 上进行了测试、请查看以下日志:

    [MAIN_Cortex_R5_0_0] [MCAN] Loopback DMA mode, application started ...
    All tests have passed!!

    请告诉我客户正在使用的版本以及他们正在使用的 EVM。

    此致、

    会面。

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

    尊敬的会议:

    也感谢您在最终测试示例。

    它们在 AM243x EVM 上使用 SDK 9.2.0.11、而不是 LaunchPad。

    您能否使用上述 9.2.0.11 和 EVM 的组合查看此示例?

    谢谢。此致、

    英明  

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

    Hi Hideaki-san。

    这是较旧 SDK 版本中的已知问题、已在 SDK 版本 10.01: https://sir.ext.ti.com/jira/browse/EXT_SITMPUSW-11 中修复此问题

    此致、

    会面。

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

    尊敬的会议:

    我看不到 JIRA 修复内容、因为很遗憾我没有访问 JIRA 的权限。

    您能告诉我问题和修复是什么吗? 这是应用方面的更改、它们可以快速应用、还是源/驱动器更改? 我们能否为他们提供适用于 SDK9.2.11 的补丁?

    此致、

    Mari Tunnoda

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

    尊敬的会议:

    您对此有任何更新吗?

    如果他们无法将 SDK10.1 内容移植到 SDK9.2.0.11、那么他们是否不能使用 MCAN 环回 DMA?

    此致、

    Mari Tunnoda

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

    尊敬的 Mari:

    如果要继续使用 9.2、他们需要将更改从 10.1 回传到 9.2。 我正在尝试查找更改位置的提交、以便他们可以引用相同的更改并反向移植所需的更改。

    此致、

    会面。

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

    尊敬的会议:

    感谢您的答复。

     

    他们尝试将“mcan_loopback_dma"从“从 SDK11.00 反向移植到 9.2。

    他们将 11.00 的“mcan_loopback_v1.c"重“重命名为“mcan_loopback_dma.c",“,并、并将其复制到 9.2 中的同一文件夹。

    但是、当他们尝试构建它时、会出现以下错误。

    致命错误:未找到“drivers/mcan/V0/DMA/EDMA/canfd_DMA_EDMA.c"文件“文件

     

    他们发现 SDK 9.2 中不存在“drivers/mcan/V0/DMA/EDMA/文件夹。

    他们如何将“mcan_loopback_dma"工程“工程反向移植?

     

    以下是它们构建时的错误。

    [0]****项目 mcan_loopback_dma_am243x-evm_r5fss0-0_freertos_ti-arm-clang 的配置调试构建****

    [1]“C:\ti\ccstheia150\\ccs\\utils\\bin\\gmake“-k -j 16 all -O

    [2]构建文件:“../mcan_loopback_dma.c"</s>“

    [3]调用:ARM 编译器

    [4]“C:/ti/ti_cgt_tiarmclang_3.2.2.LTS/bin/tiarmclang.exe /ti/motor_control_sdk_am243x_09_02_00_11/mcu_plus_sdk/source /ti/motor_control_sdk_am243x_09_02_00_11/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include /ti/motor_control_sdk_am243x_09_02_00_11/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f /sample/mcan_loopback_dma_am243x-evm_r5fss0-0_freertos_ti-arm-clang/Debug/syscfg -c -MCpu=cortex-R5 -mfloat-abi=hard -mfpu=vfpv3-D16 -mlittle-endian -i“C:/ti/motor_control_sdk_am243x_09_02_00_11/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F -i“C:/ti/ti_cgt_tiarmclang_3.2.2.LTS/include/c -i“C   

    [5] subdir_rules.mk:47:目标'scan_loopback_dma.o'的配方失败

    [6]../mcan_loopback_dma.c:56:10:致命错误:未找到“drivers/mcan/V0/DMA/EDMA/canfd_DMA_EDMA.c"文件“文件

    [7]包括<drivers/mcan/v0/dma/edma/canfd_dma_edma.c>

            [8]^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    [9]1 错误已生成。

    [10]gmake:***[mcan_loopback_dma.o] Error 1.

    [11] gmake :由于错误,目标“全部“未重制。

    [12]*****构建完成****

     

    谢谢。此致、

    英明

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

    Hi Hideaki、

    您是否可以要求客户应用以下补丁程序并检查这是否解决了问题:

    diff --git a/source/drivers/mcan/v0/mcan.c b/source/drivers/mcan/v0/mcan.c
    index 05b3006..570e9dc 100644
    --- a/source/drivers/mcan/v0/mcan.c
    +++ b/source/drivers/mcan/v0/mcan.c
    @@ -2489,7 +2489,7 @@ int32_t MCAN_writeDmaHeader( const void* data, const MCAN_TxBufElement *elem)
                     ((uint32_t) ((elem->xtd << MCANSS_TX_BUFFER_ELEM_XTD_SHIFT) & MCANSS_TX_BUFFER_ELEM_XTD_MASK)) |
                     ((uint32_t) ((elem->esi << MCANSS_TX_BUFFER_ELEM_ESI_SHIFT) & MCANSS_TX_BUFFER_ELEM_ESI_MASK)));
     
    -        *((uint32_t*)(((uint32_t*)data)+4))= (((uint32_t)((elem->dlc << MCANSS_TX_BUFFER_ELEM_DLC_SHIFT) & MCANSS_TX_BUFFER_ELEM_DLC_MASK)) |
    +        *((uint32_t*)(((uint32_t*)data)+1))= (((uint32_t)((elem->dlc << MCANSS_TX_BUFFER_ELEM_DLC_SHIFT) & MCANSS_TX_BUFFER_ELEM_DLC_MASK)) |^M
                     ((uint32_t) ((elem->brs << MCANSS_TX_BUFFER_ELEM_BRS_SHIFT) & MCANSS_TX_BUFFER_ELEM_BRS_MASK)) |
                     ((uint32_t) ((elem->fdf << MCANSS_TX_BUFFER_ELEM_FDF_SHIFT) & MCANSS_TX_BUFFER_ELEM_FDF_MASK)) |
                     ((uint32_t) ((elem->efc << MCANSS_TX_BUFFER_ELEM_EFC_SHIFT) & MCANSS_TX_BUFFER_ELEM_EFC_MASK)) |

    此致、
    会面。

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

    尊敬的会议:

    因此,根据我的理解,他们是否只应更改源文件而不是示例文件 — 这是正确的吗?

    我们之前已要求他们尝试将示例端文件从 SDK11.0 移植到 SDK9.2、因此如果他们需要恢复这些更改、我们需要让他们了解这些更改。

    此外 — 您是否有原始 Jira 问题详细信息? 在我看来、唯一的更改是增加分配给数据的缓冲区大小。 原始问题是否是由于缺少缓冲区大小导致的?

    此致、

    Mari Tunnoda

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

    尊敬的 Mari:

    根据我的理解,他们是否只应更改源文件而不是示例文件 — 这是否正确?

    正确。 但在添加此更改后、他们需要重新构建库和示例。

    我们已要求他们尝试之前将示例端文件从 SDK11.0 移植到 SDK9.2、因此如果他们需要恢复这些更改、我们需要告知他们。

    需要在默认 9.2 SDK 上应用此补丁、因此它们需要恢复这些更改。

    另外 — 您是否有原始 Jira 问题详情? 在我看来、唯一的更改是增加分配给数据的缓冲区大小。 原始问题是否是由于缺少缓冲区大小导致的?

    缓冲区大小没有问题、DMA 模式中所需的 DMA 头数据被写入缓冲区中的错误地址(因为*((uint32_t *)(((uint32_t *) data)+4))) 这是通过添加+1 而不是+4 来修复的。

    此致、

    会面。