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.

[参考译文] PROCESSOR-SDK-AM64X:第一个 R 内核启动后立即启动多个 R 内核

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1343740/processor-sdk-am64x-booting-up-multiple-r-cores-right-after-the-1st-r-core-is-booted-up

器件型号:PROCESSOR-SDK-AM64X

您好!

只是想知道是否有任何文档/指令/链接、关于如何从第一个 R 内核启动多个 R 内核以及如何确保它们已启动(测试)。 我使用 MCU+ SDK 8.5.00.24、eMMC 和 UART 启动。

谢谢

崎市

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

    尊敬的 Zaki:

    如果相应内核的 RPRC 映像显示在附加映像中、MCU+ SDK 中的 SBL 已经支持引导所有 R5F 内核。 请参阅 IPC_NOTIFETY_ECHO 系统示例、该示例创建一个由不同内核的 RPRC 映像组成的附加映像。

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/08_05_00_24/exports/docs/api_guide_am64x/EXAMPLES_DRIVERS_IPC_NOTIFY_ECHO.html

    在运行时、SBL 解析附加映像并加载/运行不同内核的可执行文件。

    其中有一个 E2E 或多或少与您的查询相关、

    SK-AM64:SKAM64 -A (多核加载)-处理器论坛-处理器- TI E2E 支持论坛

    此致、

    普拉桑特

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

    Prashant 您好!

    感谢您的回复。 我很快就会在 EVM 板上试用该示例(IPC_NOTIFE_ECHO)。 顺便说一下、我在这个项目中浏览了"akefile"、看到它仅使用 r5fs0-0 RPRC 文件创建了多核映像(无法看到包括的其他内核)、或者我是否在这里遗漏了一些内容? 请提供建议。

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

    您好 Zaki:

    我想您正在查看的是单个核心示例。 有一个系统级示例可以利用这些单独的核心示例来生成最终的附加图像。

    此致、

    普拉桑特

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

    我在这里有点困惑。 我可以看到、我们可以使用 multiCoreImageGen 脚本将多核应用组合成单个映像、也可以在 sbl.cfg 文件下指定不同的地址位置:

    #这里,我们将每个应用程序刷写到闪存内的不同部分或分区,以便每个应用程序都可以被永久更新
    --file=../../examples/drivers/ipc/ipc_notify_echo/am64x-evm/r5fss0-0_freertos/ti-arm-clang/ipc_notify_echo.release.appimage.hs_fs --operation=flash --flash-offset=0x080000
    --file=../../examples/drivers/ipc/ipc_notify_echo/am64x-evm/r5fss0-1_nortos/ti-arm-clang/ipc_notify_echo.release.appimage.hs_fs --operation=flash --flash-offset=0x100000
    --file=../../examples/drivers/ipc/ipc_notify_echo/am64x-evm/r5fss1-0_nortos/ti-arm-clang/ipc_notify_echo.release.appimage.hs_fs --operation=flash --flash-offset=0x180000
    --file=../../examples/drivers/ipc/ipc_notify_echo/am64x-evm/r5fss1-1_nortos/ti-arm-clang/ipc_notify_echo.release.appimage.hs_fs --operation=flash --flash-offset=0x200000
    --file=../../examples/drivers/ipc/ipc_notify_echo/am64x-evm/m4fss0-0_nortos/ti-arm-clang/ipc_notify_echo.release.appimage.hs_fs --operation=flash --flash-offset=0x280000
    --file=../../examples/drivers/ipc/ipc_notify_echo/am64x-evm/a53ss0-0_nortos/gcc-aarch64/ipc_notify_echo.release.appimage.hs_fs --operation=flash --flash-offset=0x300000

    有两种不同的方法吗? 如果我们将映像(app)组合到一个内、SBL 如何知道不同内核的存储器部分? 请提供建议。

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

    以及如何知道 Core 是否已启动? 我们只能启动所选的内核吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有两种不同的方法? 如果我们将映像(app)组合到一个内、SBL 如何知道不同内核的存储器部分? 请建议[/报价]

    可以。 有两种不同的 SBL:SBL_OSPI 和 SBL_OSPI_MULTI_PARTITION。

    前者需要一个单个 appimage、可能有一个或多个不同的内核 rprc 映像、在特定偏移处进行刷写、而后者需要多个 appimage、每个 appimage 仅包含一个内核 rprc 映像、在不同的偏移处进行刷写。

    您可以使用任何方法来引导多个内核。

    以及如何知道 Core 是否已启动?

    都由您决定。 您可以在要引导的映像中启用 UART 日志、这样如果 UART 日志即将出现、您就知道它们已引导。

    我们是否只能启动所选内核?

    可以。 如果是 SBL_OSPI、则只需包含所选内核 rprc 映像。 对于 SBL_OSPI_MULTI_PARTITION、您只需刷写选定的内核 appimages。

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

    谢谢 Prashant。

    只是另一个查询。 我正在尝试启动 R0_0和 R_1_0内核。 它们都将具有相同的应用程序。 现在、若要生成特定的.appimage、请使用 makefile_ccs_bootimage_gen 文件来更改此处的内核(粗体):

    BOOTIMAGE_CORE_ID_a53ss0-0 = 0
    BOOTIMAGE_CORE_ID_r5fs0-0 = 4
    BOOTIMAGE_CORE_ID_r5fs0-1 = 5
    BOOTIMAGE_CORE_ID_r5fs1-0 = 6
    BOOTIMAGE_CORE_ID_r5fs1-1 = 7
    BOOTIMAGE_CORE_ID_m4fs0-0 = 14
    SBL_RUN_ADDRESS=0x70000000
    SBL_DEV_ID=55

    multi_core_image_GEN =$(CCS_node)$(MCU_PLUS_SDK_PATH)/tools/boot/multicoreImageGen/multicoreImageGen.js
    OUTRPRC_CMD =$(CCS_NODE)$(MCU_PLUS_SDK_PATH)/tools/boot/out2rprc/elf2rprc.js

    ifeq ($(OS)、Windows_NT)
    XIPGEN_CMD=$(MCU_PLUS_SDK_PATH)/tools/boot/xipGen/xipGen.exe
    否则
    XIPGEN_CMD=$(MCU_PLUS_SDK_PATH)/tools/boot/xipGen/xipGen.out
    字节序

    multi_core_image_params =\
    $(BOOTIMAGE_RPRC_NAME)@$( BOOTIMAGE_CORE_ID_r5fs0-0 )\

    multi_core_image_params_xip =\
    $(BOOTIMAGE_RPRC_NAME_XIP)@$( BOOTIMAGE_CORE_ID_r5fs0-0 )\

    然后构建应用并将其与 multoCoreImageGen 工具结合。 我需要确保我的流程正常...

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

    我知道这两个内核运行的是同一个应用。 但对于 R5F0_0和 R5F1_0、您应该已经包含了不同的文件夹以及它们自己的 makefile。

    因此、您只需获取每个内核 RPRC 映像并使用 multiCoreImageGen 工具将它们组合即可。

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

    那么、是否确认所有 R 内核均已启动并正在运行?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否确认所有 R 内核均已启动并正在运行?

    是的、要承担。 这至少会确认 SBL 找到日志中存在的内核的 RPRC 映像并加载它们。