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.

[参考译文] AM2634-Q1:多核映像执行和内核利用的最佳实践

Guru**** 2466550 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1468647/am2634-q1-multicore-image-execution-and-best-practices-for-core-utilization

器件型号:AM2634-Q1
主题中讨论的其他器件:SysConfig

工具与软件:

我们创建了一个具有多个接口的项目、对于内核的利用方式有一些疑问。 考虑hello_world_r5fss0-0_freertos_ti-arm-clang.out映像—此映像是否仅加载到 R5FSS0-0 执行多少任务、还是也由所有其他内核执行?

如果由所有其他内核执行、这是最佳方法、还是为每个内核刷写单独的映像是更好的方法? 您能建议遵循的最佳方法吗?

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

    尊敬的 Perumalsamy:

    感谢你伸出手,并高兴地让你开始在这里。

    我们的大多数 SDK 示例都是使用单核上下文设计的、因此在工程文件"_r5fssX-Y_"中指定了该名称。

    这些示例将根据项目配置中的"context"参数将.out 文件加载到指定的内核中,并运行到 main()。

    但是、用户还可以从"Debug "threads"视图(在 CCS Theia/CCS20中)或"Cores"视图(CCS 12.x)中选择给定内核、导航到 Run 功能区选项并选择 Load、Load Program... 将同一.out 文件加载到备用内核中。

    我们还提供一个"系统"示例、此示例旨在用作多核应用的起点。 包含指向以下示例的链接。

    EXAMPLES_EMPTY.html - https://dev.ti.com/tirex/explore/node?node=A__AExIg7plmtGPqlTDR0GPTg__com.ti.MCU_PLUS_SDK_AM263X__aBmeCqF__LATEST

    请注意、此处的上下文设置为"系统"、这表示工程在多个内核上执行、而不是在单个定义的内核上执行。

    有关多核/系统应用调试步骤的其他信息、请访问下面的链接。

    使用 CCS 调试多核器件 - https://software-dl.ti.com/ccs/esd/documents/ccs_multi-core-debug.html

    最佳使用方法将取决于您的系统/应用要求。

    在开发阶段、根据需要为每个内核加载代码可能会更容易。 一旦消除了每个内核所需的代码、您就可以转换为使用 TI multicore-elf 工具来生成单个映像、该映像会将独特的功能映射到每个内核/上下文。

    GitHub - TexasInstruments/multicore-elf:这是多核 elf python 工具的官方 TI 存储库、可通过输入 elfs 生成多核 elf 映像。

    希望这能提供您所需的信息、并乐意回答任何可能出现的后续问题。

    此致、

    Zackary Fleenor

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

    尊敬的  Zackary Fleenor:

      感谢您的支持。 对此我仍有一些疑问、我们的要求是具有一个包含多个任务(处理不同的外设)的单个免费 RTOS 项目。 在这种情况下、任务只能在上运行 R5FSS0-0 或者会在所有内核之间共享。   

    此外、正如您建议的、对于系统项目、是否可以在两个集群(R5F0和 R5F1)上运行两个二进制文件。

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

    您好、Perumalsamy、

    1)

    在这种情况下、任务只能在上运行 R5FSS0-0 或者会在所有内核之间共享。  [报价]

    我不明白这句话。 您能否在这里提供一个简要的图表来描述系统/应用的预期? 内核、任务、外设等。。。

    2)这是可能的,但二进制必须在其中一个(或两个?)上运行 两个内核的实例、并在系统工程配置中被指定为这样的内核。 在更好地理解 Q1的要求后、我们可能能够详细说明。

    此致、

    Zackary Fleenor

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

    尊敬的  Zackary Fleenor:

    很抱歉混淆。 我们的项目包含6个 UART、4个 CAN、3个 SPI、4个 I2C 和 RGMII 等外设、 我们的 FreeRTOS 项目中有近20个任务来管理这些外设。 如果我们在 R5FSS0-0上刷写单核二进制文件、全部20个任务是在 R5FSS0-0内核上专门运行、还是也会在其他内核之间共享负载?

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

    您好、Perumalsamy、

    根据您当前的描述、所有任务将在 R5FSS0-0上执行。 我建议构建一个包含所有任务(和预期优先级/执行时间)的系统图、然后将函数分布在2个或4个内核上。 这只是一个快速入门建议。

    R5FSS0-0:主机内核-分配/管理系统级任务执行

    R5FSS0-0:COMMS Core1 -处理 RGMII + I2C 通道

    R5FSS1-0:常见问题2 -句柄 CAN + SPI/UART

    R5FSS1-1:COMMS Core3 -处理 SPI + UART/I2C

    R5FSS0-0仍然是主机/控制内核、但会将二进制文件加载到每个内核中以用于其指定的功能。

    CPU 带宽的分配和任务的优先级都取决于最终应用和系统要求。

    您可以利用邮箱和 Spinlock IPC (处理器间通信)模块来维护各种外设和内核之间的数据流。

    这是否有助于为多核利用率/预期提供更好的定义?

    此致、

    Zackary Fleenor

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

    尊敬的 Zackary Fleenor:
    感谢您的澄清。 我们还有一个问题:

    1) 1)我们可以在 RAM 中创建共享存储器吗? 我们需要在全部四个内核之间传递多个变量和结构。
    2) 2)如果可以创建共享内存、我们可以分配的最大大小是多少?

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

    您好!

    1)是的,这是绝对可能的。 请访问下面的链接、我们将介绍存储器配置工具以及共享存储器区域的方法。

    Memory Configurator - Shared Memory Region Configuration

    2)共享存储器最常见的用途是在器件片上 SRAM 中使用、因此可以分配高达2MB 的空间、但根据功能和安全要求、通常有多个分区。  每个定义的存储器区域都可以通过提供适当的 MPU 配置来实现访问控制(这也在上面链接的页面中进行了介绍)。 正确利用 SysConfig 内存配置器工具将确保在定制实现中遵守任何内部限制/要求。

    此致、

    Zackary Fleenor