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.

[参考译文] LP-AM243:SBL OSPI 多分区的规格

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1395137/lp-am243-specifications-of-sbl-ospi-multi-partition

器件型号:LP-AM243
主题中讨论的其他器件:test2

工具与软件:

您好、TI 团队:
关于 SBL OSPI 多分区的规格、请告诉我。

环境:
 CCS12.7.0
 AM243x MCU+SDK 09.02.01.05
 LP-AM2434

R5F 应用章程
   使用 R5F 0-0
 R5F 0-1  未使用  
   使用 R5F 1-0
   使用 R5F 1-1

我似乎在确认 SBL 日志时初始化所有 R5F。

 信息:bootloader_runCpu:155:CPU r5F1-0被初始化为800000000 Hz!!
 信息:bootloader_runCpu:155:CPU r5F1-1被初始化为800000000 Hz!!
 信息:bootloader_runCpu:155:CPU m4f0-0初始化为400000000 Hz!!
 信息:bootloadSelfCpu:207:CPU r5f0-0初始化为800000000 Hz!!
 信息:bootloadSelfCpu:207:CPU r5f0-1初始化为800000000 Hz!!

问题1。 初始化 CPU 后、SBL 是否会启动 R5F 0-0、0-1、1-0、1-1所有 R5F 应用?

构建环境中没有 R5F 0-1应用程序。
Q1-2. . 在 SBL OSPI 多分区中、R5F 应用程序是否只能针对中断或不连续启动的仅3BANK 的2BANK?

 我想有一点。
 我解释了上面提到的日志。
  测试1 . 首先、确认启动了四个 R5F 应用
  测试2 . 随后确认启动三个 R5F 申请
 这是我执行测试2时的日志。

问题2: 当我将其从4个组转移到3个组时、R5F 0-1应用程序是否仍保留在 QSPI 的 R5F 0-1组中?
 我想只要我保持该延迟、SBL 就会启动。

此致、
Yoshiki Koide

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

    您好!

    a1)如下面的注释所述、如果 SBL 找不到内核的应用程序映像、它将使内核以无限的 while 循环运行。

    ❯ cat examples/drivers/boot/sbl_ospi_multi_partition/am243x-evm/r5fss0-0_nortos/main.c
    ...
        status = Sciclient_getVersionCheck(1);
        if(SystemP_SUCCESS == status)
        {
            /* load and run all CPUs, if a application is not found, the core is run with a while(1); loop */
            uint32_t coreVariant = Bootloader_socGetCoreVariant();
            if((coreVariant == BOOTLOADER_DEVICE_VARIANT_QUAD_CORE) || (coreVariant == BOOTLOADER_DEVICE_VARIANT_DUAL_CORE))
            {
                if(status == SystemP_SUCCESS)
                {
                    status = App_bootCpu( CONFIG_BOOTLOADER_FLASH_R5FSS1_0, CSL_CORE_ID_R5FSS1_0 );
                }
    ...
    

    A1-2)根据您的要求、您可以选择不在任何应用中运行特定的 R5F 内核。

    A2)是的、除非手动擦除、否则它将保持不变。 如果您确实要对特定的 R5F 内核运行任何应用、则必须确保 SBL 不会在闪存中找到该内核的映像。

    此致、

    Prashant

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

    您好、 Prashant

    感谢您的回答。 即使银行不像我一样继续工作、我也希望我能正常工作。
    我必须修改 SBL OSPI 多分区应用程序。
    请告诉我更多信息。

    A1)
    /*加载并运行所有 CPU、如果找不到应用程序、则内核以 while (1)运行;loop */
    在这句注释中、我列出了循环函数。
    我无法找到它,你在哪里进行了 while (1)。

    我确认了 Bootloader_socGetCoreVariant()。
    coreVariant =(CSL_REG32_RD (bootloader_device_JTAG_userid_REG)和 bootloader_device_JTAG_userid_CORENUM_MASK);

    #define CSL_REG32_RD (p)(CSL_REG32_RD_RAW ((volatile uint32_t *)(p)))
    这样、循环就不会生成。

    你在哪里做循环?

    A1-2、A2)
    请告知特定 R5F 应用程序执行方法。

    如果 Bootloader_parseMultiCoreAppImage ()中的闪存中没有 appimage、我认为它会异常终止。
    这种思维方式是否正确?
    如果您将函数归档以及打开位置、请告诉我函数名称。
    我想知道 appimage 的访问方法。

    我的想法如下:
    retcode = Bootloader_parseMultiCoreAppImage ();
    if (retcode < 0){
     exist = open();
     如果(EXISTRE == ok){
      //正常处理
     }
     否则{
      //我什么也不做
     }
    }

    除了文件的存在确认之外、您还有其他想法吗?
    如果您有任何想法、请告诉我。

    此致。

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

    尊敬的 Yoshiki:

    A1)我检查了 SBL_OSPI_MULTI_PARTITION 的完整代码、但意识到该注释会产生误导。 默认的 SBL_OSPI_MULTI_PARTITION 将始终尝试通过  Bootloader_parseMultiCoreAppImage 函数为每个内核查找并解析应用映像。

    如果该函数返回失败(STATUS = SYSTEMP_FAILURE)、SBL 会将其视为引导失败、因此不会执行任何由 if 条件"STATUS = SYSTEMP_SUCCESS"保护的其他步骤。

    A1-2、A2)为了不包括在内核上运行应用、您可以像对 M4F 内核所示的相应代码进行注释

    diff --git a/examples/drivers/boot/sbl_ospi_multi_partition/am243x-lp/r5fss0-0_nortos/main.c b/examples/drivers/boot/sbl_ospi_multi_partition/am243x-lp/r5fss0-0_nortos/main.c
    index b663b288..cd8e6c89 100644
    --- a/examples/drivers/boot/sbl_ospi_multi_partition/am243x-lp/r5fss0-0_nortos/main.c
    +++ b/examples/drivers/boot/sbl_ospi_multi_partition/am243x-lp/r5fss0-0_nortos/main.c
    @@ -182,10 +182,10 @@ int main(void)
             }
             if (!Bootloader_socIsMCUResetIsoEnabled())
             {
    -            if(SystemP_SUCCESS == status)
    -            {
    -                status = App_bootCpu( CONFIG_BOOTLOADER_FLASH_M4FSS0_0, CSL_CORE_ID_M4FSS0_0 );
    -            }
    +            /*if(SystemP_SUCCESS == status)*/
    +            /*{*/
    +            /*    status = App_bootCpu( CONFIG_BOOTLOADER_FLASH_M4FSS0_0, CSL_CORE_ID_M4FSS0_0 );*/
    +            /*}*/
             }
             if(SystemP_SUCCESS == status)
             {
    

    否则、您提到的想法也是有效的。 如果 Bootloader_parseMultiCoreAppImage 返回失败并继续引导其他内核的 appimage、您可以什么也不做。

    此致、

    Prashant

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

    您好 Prashant:

    感谢您的答复。 我会检查一下。
    "这解决了我的问题。"
    我会发布任何新的或不明确的信息。

    此致、
    Yoshiki