AM2432: What should to change to apply for variant of AM243?

Part Number: AM2432
Other Parts Discussed in Thread: AM2431, AM2434

Tool/software:

Hi

SDK apply for the AM2434.Customer want to check what SW need to change if they are using variant of AM243, like AM2432, AM2431?

Regards

Zekun

  • SDK apply for the AM2434

    The SDK is agnostic regarding the number of cores in your application.

    You just make a separate project for each core you want to use using the same SDK. Then you coordinate these projects with a system project.

  • Hi Kier

    I want to check which SDK version support this feature that regarding the number of cores and boot different variant?

    Customer use SDK 8.4 to mass production of AM2434. 

    Not transfer to AM2432 with no any HW change, but SDK8.4 do not boot successfully.

    According to your reply, it should boot AM2432 automatically. 

    My request is as below:

    1. Could you tell me which SDK support this feature? 

    2. And how to merge this feature to SDK8.4?

    Thanks

    Zekun

  • Hi Zekun,

    Sorry but I'm not a TI engineer so don't know the answer for sure but I'm guessing the earliest SDK supports multicore projects too.

    According to your reply, it should boot AM2432 automatically. 

    No. My intention is to say that the single SDK should support projects for any core number from 1 to 4.

    You can't expect software which ran on AM2434 to then run on AM2432 without some changes to the project and build artefacts.

    Here's a topic which matches your use case: (+) AM2432: Migration from AM2434 (4 cores) to AM2432 (2 cores) - Arm-based microcontrollers forum - Arm-based microcontrollers - TI E2E support forums

    The question is too wide for me to help further, sorry.

  • Hi Zekun,

    1. Could you tell me which SDK support this feature? 

    This problem is only seen in SBL NULL as in other SBLs like SBL OSPI, application first parses the multicore image and checks which cores are present and only boots the appimages for the core which are present in the multicore image, so you won't face this issue.

    For SBL NULL till SDK version 8.4, as it tried to boot all the cores without checking the device variant, it might fail for variants having lesser cores, this issue was fixed in SDK V8.5

    2. And how to merge this feature to SDK8.4?

    For this you will mostly have to integrate the changes from main.c file of SBL_NULL and bootloader_soc.c and bootloader_soc.h file from SDK V8.5, I am providing the patch that fixes only this particular issue:https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/core_5F00_variant.patch

    Best Regards,

    Meet.

  • Hi Meet

    I have one question need your help.

    As you mentioned, other SBLs like SBL_OSPI do not face this issue. 

    But that really confuse me. 

    If customer use AM2432 and SBL_OSPI, why they do not face this issue?

    There is fix in this file of SDK11.1:

    source/drivers/bootloader/soc/am64x_am243x/bootloader_soc.c

    You can see in the picture.

    If customer use AM2432, in SDK 11.1, then they will execute this yellow line, then set the flag |= TISCI_MSG_VAL_PROC_BOOT_FLAG_R5_SINGLE_CORE.

    This is TI AM2432 is not R5FSS0_0 and R5FSS0_1, but RF5SS0_0 and RF5SS1_0.

    But in SDK8.4, the flag is not set, which is wrong.

    Could you please check this and feedback to me, thanks.

    Regards

    Zekun

  • Hi Zekun,

    If customer use AM2432 and SBL_OSPI, why they do not face this issue?

    As I mentioned in my previous response, SBL OSPI first parses the multicore image (using Bootloader_parseMultiCoreAppImage) and checks which cores are present (using Bootloader_isCorePresent) and only boots the appimages for the core which are present in the multicore image. So, if the multicore image you are booting via SBL_OSPI doesn't have the RPRC for a particular core(r5fss0_1 & r5fss1_1) then it skips booting that core and you don't face any issues.

    If customer use AM2432, in SDK 11.1, then they will execute this yellow line, then set the flag |= TISCI_MSG_VAL_PROC_BOOT_FLAG_R5_SINGLE_CORE.

    This fix was introduced in SDKV8.5 as I mentioned and is also included in the patch I provided, so you will find it in the latest SDK as well. 

    This is TI AM2432 is not R5FSS0_0 and R5FSS0_1, but RF5SS0_0 and RF5SS1_0.

    Yes, the piece of code highlighted in yellow is checking whether R5FSS1 is in dual core mode or not.

    Best Regards,

    Meet.

  • Hi  Meet

    This fix was introduced in SDKV8.5 as I mentioned and is also included in the patch I provided, so you will find it in the latest SDK as well. 

    One question, if they use SBL_OSPI,  what is the patch need to merge?

    They do not use SBL_NULL.

    Regards

    Zekun

  • Hi Zekun,

    For SBL_OPSI there is should be no issue, even for SDK V8.4, they don't need to merge any patch.

    Best Regards,

    Meet.

  • Hi Meet

    That confuse a lot. Because customer use SDK8.4 and SBL_OSPI, boot failed. After merge this, then boot AM2432 successfully.

    Regards

    Zekun

  • Hi Zekun,

    Okay, let me check if this indeed might be needed for SBL_OSPI and when this was fixed.

    Best Regards,

    Meet.

  • Apologies for the confusion, so you wouldn't need to make any changes in SBL_OSPI example itself but would still need to change bootloader_soc.c and bootloader_soc.h files, that is why you see SBL_OSPI work correctly only after you have integrated the code highlighted by you in the previous response.

    In any case, any SDK starting from V8.5 and the patch provided by me earlier has the necessary changes needed to fix this issue for AM2432 device.

    Best Regards,

    Meet.

  • Hi Meet

    So I just need merge the code of bootloader_soc.c and bootloader_soc.h from your patch, then that should be ok, right?

    Thanks

    Zekun

  • Hi Zekun,

    If you are not planning to use SBL NULL, then yes.

  • Hi Meet

    For this you will mostly have to integrate the changes from main.c file of SBL_NULL and bootloader_soc.c and bootloader_soc.h file from SDK V8.5, I am providing the patch that fixes only this particular issue:core_variant.patch

    This point should be an error, can you double check and feedback?

    Thanks

    Zekun

  • Yes, It should be 

    #define BOOTLOADER_R5FSS0                        (0x00000000U)
    #define BOOTLOADER_R5FSS1                        (0x00010000U)

  • Hi Meet

    Couple of questions need to check:

    1.  SDK8.5 bootloader_SOC.c

    line 1004

    if(status==SystemP_SUCCESS)
    {
    status = Bootloader_socSecHandover();
    }

    This is included in SDK8.5, but not in the patch you provided. Please check.

    2. Do we have other bug fix for variant R5F core boot in latest SDK?

    Thanks

    Zekun

  • Hi Zekun,

    Could you let me know, if customer is looking to integrate all the changes from SDK8.5 to 8.4? Because if that is the case then you can ask them to integrate relevant changes from 8.5 to 8.4

    The patch I provided was to particularly for the AM2432 variant issue.

    2. Do we have other bug fix for variant R5F core boot in latest SDK?

    There could be many bug fixes from V8.4 to latest SDK, these are usually documented in the release notes of each version, the general recommendation is to migrate to the latest version.

    Best Regards,

    Meet.

  • OK, Meet. 

    Then I will advise customer to merge the patch you provided.

    Thanks

    Zekun

  • Please take note of the following change on top of the patch as discussed before: 

    #define BOOTLOADER_R5FSS0                        (0x00000000U)
    #define BOOTLOADER_R5FSS1                        (0x00010000U)

  • Thanks for notice. Have include that part.