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: Specifications of SBL OSPI Multi-Partition

Part Number: LP-AM243
Other Parts Discussed in Thread: TEST2

Tool/software:

Hello TI team,
About Specifications of SBL OSPI Multi-Partition, please tell me.

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

R5F application constitution
  R5F 0-0    used
  R5F 0-1    not used 
  R5F 1-0    used
  R5F 1-1    used

I seem to initialize all R5F when I confirm log of SBL.

  INFO: Bootloader_runCpu:155: CPU r5f1-0 is initialized to 800000000 Hz !!!
  INFO: Bootloader_runCpu:155: CPU r5f1-1 is initialized to 800000000 Hz !!!
  INFO: Bootloader_runCpu:155: CPU m4f0-0 is initialized to 400000000 Hz !!!
  INFO: Bootloader_loadSelfCpu:207: CPU r5f0-0 is initialized to 800000000 Hz !!!
  INFO: Bootloader_loadSelfCpu:207: CPU r5f0-1 is initialized to 800000000 Hz !!!

Q1.After having initialized a CPU, does SBL start R5F 0-0, 0-1, 1-0, 1-1, all R5F application?

There is not the R5F 0-1 application in build environment.
Q1-2. In SBL OSPI Multi-Partition, can the R5F application only for 2BANK of only 3BANK of the discontinuity or the discontinuity start?

  I may mind one point.
  I explain the log mentioned above.
    test1. At first it is confirmed start of four R5F application
    test2. It is confirmed start of three R5F application afterwards
  It is log when I carried out test2.

Q2. When I transferred it to 3 banks from 4 banks, does the R5F 0-1 application remain in the R5F 0-1 bank of QSPI?
  I think that SBL started if I stay.

Regards,
Yoshiki Koide

  • Hello,

    A1) As stated in the comment below, if the SBL doesn't find an application image for a core, it will make the core run with an infinite while loop.

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    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 );
    }
    ...
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    A1-2) You may choose to not run a particular R5F core with any application according to your requirements.

    A2) Yes, it will remain there unless manually erased. If you do want to run a particular R5F core with any application, you have to ensure the SBL doesn't find an image for that core in the flash.

    Regards,

    Prashant

  • Hello, Prashant

    Thank you for your answer. Even if BANK did not continue as for me, I hoped that I worked normally.
    I must revise SBL OSPI MULTI-PARTITION application.
    Please tell me a little more.

    A1)
    /* load and run all CPUs, if a application is not found, the core is run with a while(1); loop */
    In this comment sentence, I am listed with loop.
    I was not able to find it where you carried out while(1).

    I confirmed 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)))
    In this way, a loop does not make it.

    Where are you doing loop?

    A1-2, A2)
    Please advise specific R5F application about a method to carry out.

    If there is not appimage in flash memory in Bootloader_parseMultiCoreAppImage(), I think that it is terminated abnormally.
    Is this way of thinking right?
    Please tell me the function name if right you file it, and where you open.
    I want to know an access method to appimage.

    My ideas are as follows:
    retcode = Bootloader_parseMultiCoreAppImage();
    if (retcode < 0) {
      exist = open();
      if (exist == ok) {
        // Normal processing
      }
      else {
        // I do nothing
      }
    }

    Do you have the idea other than the existence confirmation of the file?
    Please tell me if you have an idea.

    Regards.

  • Hi Yoshiki,

    A1) I checked the full code of SBL_OSPI_MULTI_PARTITION and realize that comment is misleading. The default SBL_OSPI_MULTI_PARTITION will always try to find & parse an appimage for each core via the Bootloader_parseMultiCoreAppImage function.

    If this function returns FAILURE (status = SystemP_FAILURE), the SBL considers this as a boot failure & so will not execute any further steps guarded by the if condition "status == SystemP_SUCCESS".

    A1-2, A2) In order to exclude running an application on a core, you can comment the corresponding code like shown for the M4F core

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    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)
    {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Otherwise, the idea you mention also works. You may do nothing if Bootloader_parseMultiCoreAppImage returns FAILURE & proceed forward with booting appimages for the other cores.

    Regards,

    Prashant

  • Hello Prashant,

    Thank you for your response. I will check it.
    "This resolved my issue."
    I will post any new or unclear information.

    Regards,
    Yoshiki