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.

[参考译文] AM62A-PET-CALC:如何构建和测试 CAN 示例代码

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1646842/am62a-pet-calc-how-to-build-and-test-the-can-example-code

部件号: AM62A-PET-CALC

您好团队:

最近、我们正在开发 AM62A EVM 板、并在 R5 内核侧使用 SDK 版本 9.2 (mcu_plus_sdk_am62ax_09_02_00_38)

我们要执行 SDK 中存在的 CAN 实现代码示例。 请提供以下几点的指导:

1) 如何构建示例代码(我们已经从 CCS 工具构建并生成了.out 文件)

2) 如何刷写以及如何验证示例代码。

3) JTAG 在调试时是必需的?

稍后、我们必须实施 CAN 通信、如何以及在哪里实施? 请提供示例?

此致、

Undali Muniranga.

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

    您好、

    1) 如何构建示例代码(我们已经从 CCS 工具构建并生成了.out 文件)

    您可以像以前一样使用 CCS 构建示例代码、也可以使用 makefile 来构建示例。 SDK 文档介绍了这些方面的步骤:

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM62AX/11_01_00_16/exports/docs/api_guide_am62ax/CCS_PROJECTS_PAGE.html 

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM62AX/11_01_00_16/exports/docs/api_guide_am62ax/MAKEFILE_BUILD_PAGE.html 

    2) 如何刷写以及如何验证示例代码。

    请参阅以下内容: https://software-dl.ti.com/mcu-plus-sdk/esd/AM62AX/11_01_00_16/exports/docs/api_guide_am62ax/GETTING_STARTED_FLASH.html 

    如果您只是为了进行调试而通过 CCS 加载 MCU R5 应用程序、则可以为此使用 SBL NULL: https://software-dl.ti.com/mcu-plus-sdk/esd/AM62AX/11_01_00_16/exports/docs/api_guide_am62ax/CCS_LAUNCH_PAGE.html

    请注意、对于 DM R5、您无法通过 CCS 直接加载应用程序、必须将其刷写到引导介质中。

    调试时是否需要 JTAG?

    为了使用 CCS JTAG 进行调试、需要用到 JTAG。

    稍后我们必须实施 CAN 通信、如何以及在何处实施? 请提供示例?

    SDK 中提供了几个相关示例、您可以使用这些示例开始使用:  

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM62AX/11_01_00_16/exports/docs/api_guide_am62ax/EXAMPLES_DRIVERS_MCAN_LOOPBACK_INTERRUPT.html 

    如果您要将其移植用于外部通信、以下常见问题  解答可能会有所帮助:【常见问题解答】SK-AM62X/SK-AM62A-LP:使用外部收发器 TCAN1042D 测试 MCAN 外部环回示例  

    如果您希望获得有关使用 MCAN 实现一些特定用例的帮助、敬请告知我。

    ]最近、我们正在开发 AM62A EVM 板、并在 R5 内核侧使用 SDK 版本 9.2 (mcu_plus_sdk_am62ax_09_02_00_38)

    我看到您当前使用的是 9.2 SDK 版本、 我们强烈建议升级到最新的 SDK 版本(顺序为 11.1)、以利用新功能、错误修复和持续支持。

    此致、

    会面。

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

    你好, 遇见 Thakar 

    Thak 你的回复!

    我已按照以下步骤在最初检查示例 CAN 代码。

    1) 我已在 CCS 中导入用于轮询代码的 MCAN 环回 、并已配置 UART 并找到以下相关设置。

    2) 请查找 MCAN 设置、如下所示

    完成上述更改后、我已成功构建代码并生成了代码。

    3) 内置到 SD 卡/root/lib/firmware/am62a-mcu-r5f0_0-fw 后、按如下所示复制了.out 文件

    4) 稍后我将 SD 插入电路板、无法从 UART 日志中观察到任何内容。 至少应在终端右侧打印此日志



    因此没有从 UART 窗口获得任何内容。

    请您检查并告诉我!

    感谢您的支持与合作!!

    谢谢、此致

    Undali Muniranga.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    3) 在内置到 SD 卡/root/lib/firmware/am62a-mcu-r5f0_0-fw 后、按如下所示复制了.out 文件:

    需要将其复制到此路径: /lib/firmware/pdk-ipc/am62a-mcu-r5f0_0-fw

    请参阅以下文档:https://software-dl.ti.com/processor-sdk-linux/esd/AM62AX/11_01_07_05/exports/docs/linux/Foundational_Components_ ipc62ax.html#Getting started-with-ipc-linux-examples 

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

    你好,  遇见 Thakar 

    感谢您的答复!

    点 1:我已构建 MCAN PollingFreeRTOS 的示例代码、并将.out 文件复制到 SD 卡并将 SD 卡插入电路板中。 我能够观察到这里的一些情况。

    -> MCU R-CORE 是远程处理 1

    ->当我们运行 echo start 时、/sys/class/remoteproc/remoteproc1/state =>看起来像 Boot failed(引导失败)

    ->当我们运行 cat /sys/class/remoteproc/remoteproc1/state 时==>失败

    请找到如下所示的日志

    如果是引导问题、请引导如何解决该问题?

    Point2:我构建了 IPC ipc_rpmsg_echo_linux_am62ax-sk_mcu-R5fss0-0_fretos 的示例代码、并复制了.out 文件 Itno SD 卡 并将 SD 卡插入板中。

    在这里、我可以看到 UART 日志。

    -> MCU R-CORE 是远程处理 1

    ->当我们运行 cat /sys/class/remoteproc/remoteproc1/state 时==>正在运行

    请找到如下所示的日志、在这里、我可以在 MCU R-CORE 侧看到 UART 日志。

    恳请您检查、请让我了解进一步的操作!

     第 3 点: 与 Thakar 会面 

    需要将其复制到此路径: /lib/firmware/pdk-ipc/am62a-mcu-r5f0_0-fw---> 此路径本身在 SD 根文件系统中不存在、 /lib/firmware 本身中存在 am62a-mcu-r5f0_0-fw。 根据第 2 点中提到的 IPC 示例、我仅将.out 文件复制到/root/lib/firmware/am62a-mcu-r5f0_0-fw 中其通信、如上文第 2 点所示。 根据上面提到的 IPC 示例、A 内核成功引导了 R 内核、我们能够查看 UART 日志。 这意味着.out 文件复制在正确的路径中?

    如果我们能够看到 UART 日志并从内核接收数据、则意味着 MCU R5 已成功引导?

    Point4:根据我们的分析和 IPC 示例输出、A 内核是否正确引导 MCU R5 内核?

    请您检查第 1 和第 2 点、并告诉我如何继续操作!

    非常感谢您的合作与支持!

    谢谢、此致

    Undali Muniranga.

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

    您好、

    对我之前的答复造成的任何混淆表示歉意。

    来自 MCU+SDK 的该 MCAN 应用程序无法由 Linux 引导、您需要为 Linux 添加此资源表才能与远程内核进行通信、您可以将 Linux IPC 添加到 MCAN 工程以生成该资源表: https://dev.ti.com/tirex/explore/content/am62ax_academy_11_01_00_00/_build_am62ax_academy_11_01_00_00/source/multicore/app-development/develop-for-linux-load/add-linux-ipc.html 

    您可能还需要更新链接器文件以分配资源表的内存:https://dev.ti.com/tirex/explore/content/am62ax_academy_11_01_00_00/_build_am62ax_academy_11_01_00_00/source/multicore/app-development/develop-for-linux-load/update-linker.html 

    此致、

    会面。

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

    你好 认识 Thakar ,

    感谢您回复并确认 A53 正在为 IPC 引导 R5 内核。

    我已按照您提到的步骤进行操作、如下所示:

    1) 我在 CCS 工具中完成了 MCAN 环回轮询 FreeRTOS 示例中的 IPC 配置、如下所示

    2) 根据 您的链接中提到的、我更新了链接器命令、如下所示

    3) 配置和更新链接器文件后、在编译 I ma 时收到以下错误

    诚邀您进行检查、敬请告知我们如何继续进行 CAN 通信。

    非常感谢您的支持和指导!

    谢谢、此致

    Undali Muniranga.

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

    您好、

    您是否可以在 linker.cmd 上使用以下补丁并检查它是否有效:

    diff --git a/examples/drivers/mcan/mcan_loopback_polling/am62ax-sk/mcu-r5fss0-0_nortos/ti-arm-clang/linker.cmd b/examples/drivers/mcan/mcan_loop
    back_polling/am62ax-sk/mcu-r5fss0-0_nortos/ti-arm-clang/linker.cmd
    index cbf2fe4b..41ba61a4 100644
    --- a/examples/drivers/mcan/mcan_loopback_polling/am62ax-sk/mcu-r5fss0-0_nortos/ti-arm-clang/linker.cmd
    +++ b/examples/drivers/mcan/mcan_loopback_polling/am62ax-sk/mcu-r5fss0-0_nortos/ti-arm-clang/linker.cmd
    @@ -55,6 +55,15 @@ SECTIONS
             .rodata: {} palign(8)   /* This is where const's go */
         } > MSRAM
     
    +    /* this is used only when IPC RPMessage is enabled, else this is not used */
    +    .bss.ipc_vring_mem   (NOLOAD) : {} > DDR_IPC_VRING_RTOS
    +    GROUP {
    +        /* This is the resource table used by linux to know where the IPC "VRINGs" are located */
    +        .resource_table: {} palign(1024)
    +    } > DDR_IPC_RESOURCE_TABLE_LINUX
    +    /* This IPC log can be viewed via ROV in CCS and when linux is enabled, this log can also be viewed via linux debugfs */
    +    .bss.debug_mem_trace_buf    : {} palign(128)    > DDR_IPC_TRACE_LINUX
    +
         /* This is rest of initialized data. This can be placed in DDR if DDR is available and needed */
         GROUP {
             .data:   {} palign(8)   /* This is where initialized globals and static go */
    @@ -105,4 +114,13 @@ MEMORY
     
         MSRAM     : ORIGIN = 0x79100000 , LENGTH = 0x80000
     
    +    DDR_IPC_RESOURCE_TABLE_LINUX     : ORIGIN = 0x9B900000 LENGTH = 0x400      /* For resource table   */
    +    DDR_CODE_DATA                    : ORIGIN = 0x9BA00000 LENGTH = 0xE00000   /* For code and data    */
    +    DDR_IPC_TRACE_LINUX              : ORIGIN = 0x9B900400 LENGTH = 0xFFC00    /* IPC trace buffer     */
    +     /*
    +     3MB from address 0XA0000000 is used by RTOS IPC on Vision apps.
    +     As the C7x binary is taken from vision apps, C7x will be writing to this memory.
    +     So, for MCU+SDK we are using memory which is not used by Vision apps RTOS IPC.
    +     */
    +    DDR_IPC_VRING_RTOS               : ORIGIN = 0xA0400000, LENGTH = 0x300000   /* IPC VRING for RTOS/NoRTOS */
     }

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

    你好 认识 Thakar ,

    感谢您的答复!

    我修改了 linker.cmd 文件、UART 工作正常并记录了日志、如下所示:

    现在、下一步是:
    1) 我想实现 5 条 CAN Tx 消息以及在 MCU R5 内核上具有不同 ID 的信号以与外部器件进行通信 (CANoe)、如何实现您能否指导如何实现?  
    2) 实施后如何进行测试?
    非常感谢您的支持与合作!
    谢谢、此致
    Undali Muniranga.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Undali:

    指定的专家今天已离职。 请预计响应会延迟。 感谢您的合作。

    此致、

    Tushar