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.

[参考译文] SK-AM62-LP:关于将同一内核的多个 RPRC 文件合并为单个二进制文件的工具

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1579007/sk-am62-lp-regarding-tool-to-combine-multiple-rprc-file-from-same-core-into-a-single-binary

器件型号: SK-AM62-LP

您好团队:

MCAL 软件包:  MCAL _SitaraMPU_10.01.00.03

我们使用 mcu_plus_sdk_am62x_10_01_00_33 封装中的 multicoreImageGen 工具来组合为同一 R5 内核创建的多个 rprc 文件。

我们的查询应该是、在从不同应用程序 (_self_reset_start) 创建的每个 rprc 映像中有相同的入口点、或者我们应该对第一个 rprc 文件使用此入口点。

我们有一个要求、希望同时测试在 R5 内核上开发的引导管理器和引导加载程序。

我们如何转换这两个应用程序的组合 hs_fs 应用程序映像、以便它可以在引导 Fromn QSPI 模式时在 R5 内核上执行。

谢谢你。

此致、

Pradeep R

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

    您好 Pradeep、

    我们有一个要求、要求我们测试在 R5 内核上开发的引导管理器和引导加载程序、以便一起测试。

    我假设您是根据这种方法组合 SBL 和 DM R5 应用、如果不是、请予以澄清。 您能详细说明这一要求吗? 为什么将这两个示例组合为同一应用程序很重要、而不是默认引导流程。  

    此致、

    会面。

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

    你好 认识 Thakar ,

    否、我们不想组合 TI 的 SBL 和 DM 应用程序的 SBL。

    我们  在 R5 内核上开发了单独的引导管理器、引导加载程序和应用程序。

    我们根据客户对 R5 内核的要求开发了引导管理器和引导加载程序。

    因此、我们需要将引导管理器和引导加载程序一起刷写、并验证跳转。

    在本例中,我们依赖于服务器客户端,并且 R5 内核的初始化由 SBL 处理,所以我们也使用 TI 的 SBL。

    您能告诉我们如何处理所有这些问题吗?

    此致、

    Pradeep R

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

    您好 Pradeep、

     multicoreImageGen 工具将不同内核的 rprc 映像组合成单个 appimage、则无法使用该映像创建引导加载程序映像。 引导管理器处理哪种函数、为什么不能在引导加载程序本身中完成?

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

    你好 认识 Thakar ,

    抱歉、此问题尚未解决。 在不知情的情况下、它在 TT 中被标记为已解决

    引导管理器是一个单独的堆栈、用于处理对引导流程的控制。 这是在上电时执行并决定控制的第一个应用程序。

    我们不能将此功能合并到引导加载程序、因为根据 Autosar 和客户要求、它是一个单独的实体。

    我们甚至尝试从 TI 中删除 SBL、并替换用于代替 SBL 的引导管理器、但它不起作用。

    我们尝试根据 TI 文档创建 Rom 引导映像、但无法按预期运行。

    这是我们使用的命令  

    python rom_image_gen.py Workspace_Eth /ti/mcu_plus_sdk_am62x_10_01_00_33/source/drivers/sciclient/sciclient_default_boardcfg/am62x/boardcfg_blob.bin --swrv 1 --sbl-bin “C:\works\Tresos\bac_adr\cbootmanager\output\bin\bootmanager.bin“ soc - sysfw-Bin “C /ti/mcu_plus_sdk_am62x_10_01_00_33/source/drivers/sciclient:/ti/mcu_plus_sdk_am62x_10_01_00_33/source/drivers/sciclient soc /ti/mcu_plus_sdk_am62x_10_01_00_33/source/drivers/sciclient/sciclient_default_boardcfg/am62x/boardcfg_sbldata_blob.bin /cssbl/am62x/sysfw-hs-encfg /work/Tresos/BAC_Workspace_Eth

    这对我们来说是一个重大的障碍、我们需要立即提供支持。

    我们能否就此进行简短的通话?

    此致、

    Pradeep R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们尝试根据 TI 文档创建 Rom 引导映像、但无法按预期运行。

    您能详细说明一下它的含义不符合预期吗? 我猜、如果您的启动管理器是使用 rom_image_gen.py 转换为 ROM 映像、那么 ROM 至少能够引导并运行引导管理器、请确认这一点。 稍后、可能需要加载其他映像(sbl/应用程序)、您需要在 bootmanager 应用程序中提供这样的配置、使其能够加载下一个映像。

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

    你好 认识 Thakar ,

    当我们引导启动管理器 ROM 映像时、 __mpu_init 函数(是 TI SDK 库的一部分)会导致一个异常。

    我们在启动代码中更改了这个函数的顺序、然后在引导时我们的控制在 BM 中

    但后来、DDR 存储器未初始化、我们无法通过我们的引导管理器将任何数据写入 DDR 区域。

    您能告诉我如何初始化 DDR 吗?

    此致、

    Pradeep R  

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

    您好 Pradeep、

    DDR 初始化由 DDR_init API 处理: https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/11_01_00_16/exports/docs/api_guide_am62x/group__DRV__DDR__MODULE.html#gab0fc0ed95040409681fb38d621cc03ca 

    您也可以直接添加 SYSCFG 中的 DDR 模块、它将负责 DDR 初始化、您可以使用默认 SBL 示例作为处理 DDR 初始化的参考:  

    此致、

    会面。

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

    你好 认识 Thakar ,

    我们尝试使用 SDK 库和目标文件对相同内容进行调整

    易失性 uint8 循环= 1;
    内部 main (void)

    while(循环)

    }
    DDR_INIT (&gDdrParams);
    StartOS (OSDEFAULTAPPMODE);

    返回 0;
    }

    但在这里、我们收到了 DDR_ResetDDR_PLL 函数异常。

    是否必须在 DDR 初始化之前调用服务器客户端初始化。

    此致、

    Pradeep R

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

    您好 Pradeep、

    是否必须在 DDR 初始化之前调用服务器客户端初始化。

    是的、这是强制性的、因为 DDR 初始化将使用 sciclient 服务。 您可以使用 Sciclient_Direct_init 来执行此操作。  

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

    你好 认识 Thakar ,

    我们尝试包括相同的启动相关序列并调用所有服务器客户端函数、但我们从 Sciclient_waitThread 获得异常。

    我们是否需要从 SDK 调用任何强制的引导加载程序函数?

    当我们检查 SBL main 函数时、在调用  System_init () 之前会调用以下函数、这些是强制性的吗?


    bootloader_profileReset();

    bootloader_socWaitForFWBoot ();
    状态= Bootloader_socOpenFirewalls ();
    DebugP_assert (status == SystemP_Success);

    rtc_erratumi2327Init();

    system_init();

    此致、

    Pradeep R

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

    分析重置实际上并不是必需的、它只用于为 SBL 性能获取一些分析数据、这就是我们如何在 SBL 日志中获取这些 bootloader_profile 编号: https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/11_01_00_16/exports/docs/api_guide_am62x/EXAMPLES_DRIVERS_SBL_OSPI_MULTISTAGE.html#autotoc_md1416 

    Bootloader_socWaitForFWBoot ();
    状态= Bootloader_socOpenFirewalls();

    您可以在 bootmanager 中添加这两者、现在我建议遵循与在 SDK 的 SBL stage-1 中完成的相同序列。 根据您的要求、我认为我们应将此 bootManager 视为第一阶段引导加载程序、因此我们也应遵循此处相同的步骤、此引导管理器将加载默认的 SBL S1、从而进一步加载 S2 和应用程序映像。

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

    你好 认识 Thakar ,

    包含很多这样的内容  

    bootloader_socWaitForFWBoot ();
    bootloader_socOpenFirewalls();

    在调用 System_init 之前的流程中、我们 从 bootloader_soc.obj 文件中收到了与 Sciclient_triggerSecHandover 函 数相关的编译错误、但 Sciclient_triggerSecHandover 函数仅作为编译的一部分包含在 M4 内核而不是 R5 内核中。

    您能否告诉我们、如何在这里继续操作。

    此致、

    Pradeep R

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

    它包含在 sciclient_direct_sbl.am62x.r5f.ti-arm-clang.$(profile).lib 库中: https://github.com/TexasInstruments/mcupsdk-core-k3/blob/k3_main/source/drivers/device_manager/sciclient_direct/sbl/makefile.am62x.r5f.ti-arm-clang#L19 

    该 Sciclient Direct SBL 库添加到 MCU+SDK ( https://github.com/TexasInstruments/mcupsdk-core-k3/blob/k3_main/examples/drivers/boot/sbl_ospi_multistage/sbl_ospi_stage1/am62x-sk/r5fss0-0_nortos/ti-arm-clang/makefile#L112) 中 SBL stage-1 的 makefile 中 

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

    你好 认识 Thakar ,

    我们已经包含了这个函数库,但函数“Sciclient_triggerSecHandover" 的“的定义不是这个函数库的一部分。

    当我们检查 TI SDK 时、  

     sciclient.c 文件存在于两个位置、 “Sciclient_triggerSecHandover" 的“的定义仅存在于 sciclient Direct 之外的一个文件中、存在于 C:\ti\mcu_plus_sdk_am62x_10_01_00_33\source\drivers\sciclient 中

    此致、  

    Pradeep R

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

    你好 认识 Thakar ,

    e2e.ti.com/.../7801.bin.zip

    请根据请求找到引导管理器的附加 bin 文件夹。

    此致、

    Pradeep R

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

    您好 Pradeep、

    您似乎使用了错误的库文件、而您使用的是以下库文件:

    sciclient_direct.am62x.r5f.ti-arm-clang.$(PROFILE).lib
    rm_pm_hal.am62x.r5f.ti-arm-clang.$(PROFILE).lib

    您应该对 SBL 使用 sciclient_direct 和 rm_pm_hal 库: https://github.com/TexasInstruments/mcupsdk-core-k3/blob/k3_main/examples/drivers/boot/sbl_ospi_multistage/sbl_ospi_stage1/am62x-sk/r5fss0-0_nortos/ti-arm-clang/makefile#L131 

    在 MCU+SDK 中、您在这个路径上可以找到以下库:

    source/drivers/device_manager/sciclient_direct/sbl/lib/sciclient_direct_sbl.am62x.r5f.ti-arm-clang.release.lib

    source/drivers/device_manager/rm_pm_hal/sbl/lib/rm_pm_hal_sbl.am62x.r5f.ti-arm-clang.release.lib

    您能否使用这些 SBL 库并检查这样是否解决了问题?

    此致、

    会面。

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

    你好 认识 Thakar ,

    加入此库后、服务器客户端初始化和 DDR 初始化成功(所有 DRR 区域都初始化为 0xff)、但从闪存区域复制 未成功。

    因此、我们尝试调整 SBL 中的所有 syscfg 文件、同时保持相同的函数调用。

    在调试时、我们发现在执行“ OSPI_OPEN ();“函数后、整个闪存区域被初始化为零。

    那么、我们如何将数据从闪存复制到 DDR。?

    此致、

    Pradeep R

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

    您好 Pradeep、

    在调试时、我们发现在执行“ OSPI_open ();“函数后、整个闪存区域被初始化为零。

    我不确定它是否已初始化为 0、您是否能够在此之后继续操作、看看 SBL 是否成功、或者您是否看到任何失败消息?

     还请确认是否按照以下步骤在 SBL OSPI 中添加了对自定义闪存的支持: https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/11_01_00_16/exports/docs/api_guide_am62x/CUSTOM_FLASH_SUPPORT_GUIDE.html

    此致、
    会面。

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

    你好, 认识 Thakar 。

    我们使用了 SBL 中的以下 syscfg 文件、该文件已经为自定义闪存添加

    “./syscfg/ti_dpl_config.o \
    “./syscfg/ti_drivers_config.o \
    “./syscfg/ti_drivers_open_close.o \
    “./syscfg/ti_pinmux_config.o \
    “./syscfg/ti_power_clock_config.o \
    “./syscfg/ti_board_config.o \
    “./syscfg/ti_board_open_close.o \
    “/flash_nor_ospi.o"\“\

    这是否足够?

    另外、为了解决这个问题、我们尝试注释掉 OSPI open、我们仅使用了 System init 和 Board init、如下所述

    system_init();
    BOARD_INIT ();
    /* Drivers_open();
    board_driversOpen ();*/

    采用这种方法时、会发生复制、但不会发生执行。

    我们为 BL 创建的容器嵌套具有完整的 DDR 区域。

    此外、我们现在应该 在复制后使用 (_self_reset_start) 作为 BL 或 APP 映像的起点

    是否所有 ATCM、BTCM 区域都将默认初始化?

    我们如何生成只需要考虑可加载段的二进制映像?

    此致、

    Pradeep R

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

    您好 Pradeep、

    这是否足够?

    这没关系。

    此外、我们现在应该 在复制
    后使用 (_self_reset_start) 作为 BL 或应用映像的起点

    对于应用程序映像、是的、它必须是_self_reset_start。 对于 SBL、您可以将其设置为向量、并引用 SBL stage-2 的链接器: https://github.com/TexasInstruments/mcupsdk-core-k3/blob/k3_main/examples/drivers/boot/sbl_ospi_multistage/sbl_ospi_stage2/am62x-sk/r5fss0-0_nortos/ti-arm-clang/linker.cmd#L7 

    此外、是否会默认初始化所有 ATCM、BTCM 区域?

    请参阅此响应:  关于 AM6548:ARM R5F 内核异常矢量表位置和重定位  

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

    你好认识 Thakar ,

    从闪存复制数据后、我们应该执行任何类型的复位、或者可以直接执行应用。

    此致、

    Pradeep R  

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

    不要执行任何复位、只需从 BM 跳转到 BL、就像在 SBL 中完成的那样: https://github.com/TexasInstruments/mcupsdk-core-k3/blob/k3_main/examples/drivers/boot/sbl_ospi_multistage/sbl_ospi_stage1/am62x-sk/r5fss0-0_nortos/main.c#L343 

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

    你好 认识 Thakar ,

    我们试图在从 BM 跳到 BL 的入口点后直接执行 BL、但它正在发生异常

    我们遵循下面的副本  

    从闪存复制到 DDR
    memcpy ((void *) 0x90000000、(void *) 0x600A0000、0x80000);

    将矢量表从 DDR 复制到 0x0 位置
    memcpy ((void *) 0x00000000、(void *) 0x90000000、0x1000);

    从 DDR 复制到 ATCM 区域、适用于操作系统文本 x

    memcpy ((void *) 0x00001000、(void *) 0x90001000、0x7000);

    在此复制功能中、只有闪存到 DDR 的正确复制、但其余所有没有

    我们已经将 BL 链接器文件修改为完全 DDR 区域

    EXCTABLE (RWIX):origin = 0x90000000、length = 0x01000
    重置 (RWIX):原点= 0x90001000、长度= 0x07000
    Flash (RWIX):origin = 0x90008000、length = 0x100000
    RAM (RWIX):原点= 0x90108000、长度= 0x100000

    此外、如何启用此“上电复位时、启用 R5F BTCM 存储器、但未启用 R5F ATCM。 为了启用 ATCM 或在拆分模式下配置 R5F、R5F 执行一个复位序列、该序列使用 ATCM 区域寄存器将 ATCM 存储器区域地址映射到从 0x00000000 开始的地址、并在地址 0x00000000 处配置异常表。  

    SDK 中是否有任何可以执行此操作的函数?

    此致、

    Pradeep R

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

    您是否在引导管理器或引导加载程序中遇到此问题? 我假设您的 BM 现在运行正常、您可以跳转到 BL 并在 BL 中面临此问题、请确认相同。

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

    你好 认识 Thakar ,

    问题在于跳转后执行第一条指令。

    因此、复制后我们无法执行。 它会抛出异常。

    所以我们的问题是,我们应该复制到 BTCM 并调用自重置还是直接复制到 ATCM 但 ATCM 没有斜体。

    如何在此处继续?

    您还能告诉我们、SBL 如何将数据从闪存复制到 DDR、ATCM 和 BTCM 中?

    此致、

    Pradeep R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此、复制后我们无法执行。 它抛出异常。

    这是因为此时未启用 ATCM、只有在 作为 DM R5 应用程序启动代码的一部分调用 SelfReset_deviceManagerReset API 时才会启用 ATCM。  

    这就是为什么我在上一个响应中让您参考 MCU+SDK 的 SBL stage-2 的 linker.cmd、在这里、我们将所有内容都放在 DDR 中、您也应该对 BL 执行相同的操作: https://github.com/TexasInstruments/mcupsdk-core-k3/blob/k3_main/examples/drivers/boot/sbl_ospi_multistage/sbl_ospi_stage2/am62x-sk/r5fss0-0_nortos/ti-arm-clang/linker.cmd#L17 

    此致、
    会面。

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

    你好, 遇见 Thakar 

    这就是为什么我在上一个响应中让您参考 MCU+SDK 的 SBL stage-2 的 linker.cmd、在这里、我们将所有内容都放在 DDR 中、您也应该对 BL 执行相同的操作: https://github.com/TexasInstruments/mcupsdk-core-k3/blob/k3_main/examples/drivers/boot/sbl_ospi_multistage/sbl_ospi_stage2/am62x-sk/r5fss0-0_nortos/ti-arm-clang/linker.cmd#L17 

    我们已经尝试过,但在这种情况下,入口点不是自重置,所以如何启用 ATCM。

    此致、

    Pradeep R

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

    ATCM 仅在应用程序运行后启用、对于引导加载程序、您应将所有内容加载到 DDR、甚至是向量、因此即使 ATCM 已禁用、它也不会导致任何问题。

    这是我们已经尝试过的、但在本例中

    在这种情况下、您应该将所有内容加载到 DDR、不应放置任何内容或将任何内容复制到 ATCM/BTCM 中。

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

    你好 认识 Thakar ,

    我们将使用此链接器文件作为参考、并尝试调整我们的复制功能

    “C:\ti\mcu_plus_sdk_am62x_10_01_00_33\examples\empty\am62x-sk\r5fss0-0_freertos\ti-arm-clang\linker.cmd“

    此链接器文件是否有用?

    此致、

    Pradeep R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "C:“:\ti\mcu_plus_sdk_am62x_10_01_00_33\examples\empty\am62x-sk\r5fss0-0_freertos\ti-arm-clang\linker.cmd“

    这应该用于您的应用程序、而不是引导加载程序。

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

    你好 认识 Thakar ,

    实际上、在我们的引导加载程序中、我们使用以太网通信、因此依赖于服务器客户端功能。

    在使用 DDR 构建引导加载程序后、我们是否应该创建.bin 文件或 hs_fs 应用映像?

    对于只有 DDR、我们在第一次指令执行中遇到异常

    _self_reset_start:
    //切换到 sys 模式
    r0 女士、CPSR

    此致、

    Pradeep R

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

    请共享您的引导加载程序和 DM R5 应用程序的链接器文件。

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

    你好 认识 Thakar ,

    请找到链接器文件

    e2e.ti.com/.../LinkerFiles.zip

    另找到问题视频

    e2e.ti.com/.../BM_5F00_BL_5F00_Issue.mp4

    此致、

    Pradeep R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请根据请求找到引导管理器的附加 bin 文件夹。

    您是否也可以为引导加载程序共享此文件夹、我认为它可能无法访问_mpu_init。

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

    你好 认识 Thakar ,

    您能告诉我我们需要分享什么吗

    此致、

    Pradeep R

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

    您为 bootmanager 共享了这 4 个文件、还为引导加载程序共享这些文件:

     

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

    你好 认识 Thakar ,

    请查找所需文件

    e2e.ti.com/.../5736.Application.zipe2e.ti.com/.../0068.Bootloader.zip

    此致、

    Pradeep R

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

    您好 Pradeep、

    您是否在您的 BootManager 应用中为 DDR 添加了与 MPU 相关的设置? 如果没有这样做、您可能会遇到此问题。 您能否分享您在引导管理器中完成的 MPU 设置?

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

    你好 认识 Thakar ,

    在我们的启动管理器中、我们使用的 MPU 设置与 SBL 相同。

    请找到随附的 DPL 配置 file.e2e.ti.com/.../6278.ti_5F00_dpl_5F00_config.c

    我们在引导管理器中链接时已直接使用此文件的目标文件。

    此致、

    Pradeep R

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

    您好 Pradeep、

    如本次会议所述、您在引导加载程序应用中再次进行 MPU 配置、从而导致此问题。 将所有 MPU 配置移至 Bootmanager 后、未观察到该问题。 验证以太网通信之后、请告知我们。

    此致、
    会面。

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

    你好 认识 Thakar ,

    使用上述方法时、行为是零星的。

    我们并不是每次都能获得预期的输出。

    另外、作为链接器文件的一部分、我们有一个依赖项、将引导加载程序的 DDR 起始地址称为 NoLoad 段。

    当我们尝试此操作时、BM 未按预期工作。

    请查找随附的所需视频和链接器文件。

    e2e.ti.com/.../BM_5F00_AddressHandling.mp4

    /* board_ram-ticgt.ldscript
    *
    * Linker script for clang compiler with the memory definitions for the AM62XXCR5.
    *
    * (c) Elektrobit Automotive GmbH
    */
    --define BYTE128PAD=0x80
    --stack_size=0x10000
    --heap_size=0x10000
    __IRQ_STACK_SIZE = 0x1000;
    __FIQ_STACK_SIZE = 0x0100;
    __SVC_STACK_SIZE = 0x0100;
    __ABORT_STACK_SIZE = 0x0100;
    __UNDEFINED_STACK_SIZE = 0x0100;
    __DM_STUB_STACK_SIZE = 0x0400;
    __BSS_START = __STARTBSS;
    __BSS_END = __ENDBSS;
    
    MEMORY
    {
    /* The AM62XXCR5 contains
    * - 32 Kb ATCM (base address can be configured freely),
    * - 32 Kb BTCM (base address can be configured freely),
    * - 16 Mb DDR memory remaped by RAT module in cmm script
    */
    HSM_RAM_VECS (RWIX): ORIGIN = 0x43C00000 , LENGTH = 0x100
    HSM_RAM (RWIX): ORIGIN = 0x43C00100 , LENGTH = 0x3c800 - 0x100
    BL_ENTRY (RWIX): ORIGIN = 0x90096CD4 , LENGTH = 0x100000
    }
    SECTIONS
    {
    .ExceptionTable : > HSM_RAM_VECS
    GROUP {
    .text.hwi: palign(8)
    .text.cache: palign(8)
    .text.mpu: palign(8)
    .text.boot: palign(8)
    .text:abort: palign(8) /* this helps in loading symbols when using XIP mode */
    } > HSM_RAM
    .os_text: > HSM_RAM,palign=4
    .text: > HSM_RAM,palign=4
    .section_entry_bl(NOLOAD) > BL_ENTRY,palign=4
    .const :
    {
    *(.rodata*)
    }> HSM_RAM,palign=4
    .os_stack :
    {
    *(.bss.core0.os_kernstack*)
    *(.bss.core0.os_taskstack*)
    } > HSM_RAM, palign=8
    
    /* This is where the stacks for different R5F modes go */
    GROUP {
    .irqstack: {. = . + __IRQ_STACK_SIZE;} align(4)
    RUN_START(__IRQ_STACK_START)
    RUN_END(__IRQ_STACK_END)
    .fiqstack: {. = . + __FIQ_STACK_SIZE;} align(4)
    RUN_START(__FIQ_STACK_START)
    RUN_END(__FIQ_STACK_END)
    .svcstack: {. = . + __SVC_STACK_SIZE;} align(4)
    RUN_START(__SVC_STACK_START)
    RUN_END(__SVC_STACK_END)
    .abortstack: {. = . + __ABORT_STACK_SIZE;} align(4)
    RUN_START(__ABORT_STACK_START)
    RUN_END(__ABORT_STACK_END)
    .undefinedstack: {. = . + __UNDEFINED_STACK_SIZE;} align(4)
    RUN_START(__UNDEFINED_STACK_START)
    RUN_END(__UNDEFINED_STACK_END)
    } > HSM_RAM (HIGH)
    
    .bss :
    {
    *(.bss)
    } > HSM_RAM, RUN_START(__STARTBSS), RUN_END(__ENDBSS), palign=4
    .data :
    {
    *(.data)
    } > HSM_RAM, RUN_START(__STARTDATA), RUN_END(__ENDDATA), palign=4
    }

    此致、

    Pradeep R

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

    你好 认识 Thakar ,

    正如在今天的会议中所讨论的、我们已经解决了链接器问题、并且段按预期放置、但跳转无法正确执行。 请查看随附的视频、了解我们已在其中执行了近 6 次复位操作

    e2e.ti.com/.../Jump_5F00_WithAddressinLinker.mp4

    另外、请找到随附的另一个具有相同引导加载程序二进制文件的视频、唯一的更改是在 BM 中对跳转地址进行硬编码、软件执行了近 5 次、跳转全部 5 次都按预期执行

    e2e.ti.com/.../Jump_5F00_WithHardCodedAddress.mp4

    这是我们过去两天报告的零星情况。 有时它会正常执行、在某些情况下会失败。

    您能否尽早向我们提供反馈、因为这对我们来说是一个阻碍因素。

    此外、我们是否可以使用 Motorola 的记录文件或 Intel hex 文件格式来创建 ROM 可引导的 ti 映像、而不是二进制文件? 如果是、您能告诉我们用于生成相应文件的命令吗

    还有一个问题、我们可以从 DDR 区域而不是 HSM 区域创建 ROM 可引导映像吗?

    此致、

    Pradeep R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、请查找附带的另一个具有相同引导加载程序二进制文件的视频、唯一的更改是 BM 中的跳转地址硬编码、软件执行了近 5 次、跳转全部 5 次都按预期执行

    您能否详细说明两种情况下执行跳跃的方式之间的区别? 如果跳转地址是在 BM 中硬编码的、这意味着什么?

    另外、我们是否可以使用 Motorola 的记录文件或 Intel hex 文件格式来创建 ROM 可引导的 ti 映像、而不是二进制文件? 如果是、您能告诉我们用于生成相应文件
    的命令吗?

    MCU+SDK 中没有任何支持此功能的工具。

    还有一个查询、我们可以从 DDR 区域而不是 HSM 区域创建 ROM 可移植映像吗?

    这是无法实现的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否详细说明两种情况下执行跳转的方式之间的区别? 如果跳转地址是在 BM 中硬编码的、这意味着什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 认识 Thakar ,

    您能否详细说明两种情况下执行跳转的方式之间的区别? 如果跳转地址是在 BM 中硬编码的、这意味着什么?

    我们在上一次会议中讨论过、

    1 个场景、我们将跳转函数地址放置在链接器文件中、带有带有 NoLoad 区域的跳转地址。

    2 场景中,我们在 BM 调用的跳转函数中对跳转地址值进行了硬编码

    我们 MCU+SDK 中没有任何支持此功能的工具。

    我们已经在编译器手册 tiarmhex.exe 中看到过这个可以吗? 我们可以使用它吗?

    此致、

    Pradeep R

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

    你好 认识 Thakar ,

    请提供您的反馈、这是我们的拦截器。

    此致、

    Pradeep R

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

    您好 Pradeep、

    有关专家已离职。 请预计响应会延迟。

    谢谢你

    Yashraj

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

    您好 Pradeep、

    在满足返回条件时、如果问题仍然是移动到 DDR 的起始地址导致其无法引导 — 您能否检查此时是否启用了 R5 的 MPU 区域? 对于映射 DDR 的 0x80000 以上的地址、只有在 R5 启动后才能访问。

    此致、
    Krithika.

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

    你好 Krithika Ravi ,

    是的、在跳转之前启用 MPU 区域并初始化 DDR。

    此外、还依赖于生成 Motorola 的记录和 Intel 十六进制文件。 您能告诉我们如何为 ti arm clang 编译器生成这些代码吗

    此致、

    Pradeep R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid=“551053" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1579007/sk-am62-lp-regarding-tool-to-combine-multiple-rprc-file-from-same-core-into-a-single-binary/6107476

    场景是、我们将跳转函数地址放置在链接器文件中、带有 noLoad 区域的跳转地址。

    [/报价]

    这可能是因为该段被定义为无负载: https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_linker_special_section_types.html#noload-sections 

    您是否尝试将其定义为常规段而不是空载、并检查它是否有效、仅出于测试目的、您可以尝试此操作一次。

    此外、还依赖于 Motorola 记录和 Intel 十六进制文件的生成。 您能告诉我们如何为 TI ARM CLANG 编译器生成这些代码吗

    这可以使用 tiarmhex 来完成、如您提到的: https://software-dl.ti.com/codegen/docs/tiarmclang/rel4_0_0_LTS/compiler_manual/hex_utility_description/invoking-the-hex-conversion-utility-stdz0796941.html?highlight=tiarmhex