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.

[FAQ] AUDIO-AM275-EVM: MCELF multicore image combine boot up with SBL

Part Number: AUDIO-AM275-EVM
Other Parts Discussed in Thread: SYSCONFIG, UNIFLASH

Tool/software:

Background

Current SDK supports boot images of multiple cores being combined to one image in mcelf format. This guide explains how is multicore images being combined. Another guide explains how the multicore image is parsed and loaded in booting up. To make it easier to get run the multiple combined image, this FAQ provides a demo that combine two hello world demo images for r5f0-0 and dsp0-0 into one image and boot up using ospi sbl booting up.

This demo is tested using SDK version 11.00.00.16 but you can reproduce this in any versions to come.

Steps

1. Use sysconfig to config the examples/drivers/boot/sbl_ospi/am275x-evm/wkup-r5fss0-0_freertos/ti-arm-clang demo. Delete other bootloaders and remain only one bootloader.

2. rebuild this demo and generated the wanted sbl_ospi.debug.hs_fs.tiimage and the sbl image to be run on wakeup/dm R5.

3. build two "hello world" demos. One for R5F0_0, one for dsp0_0. Generate two required executable:

am275x/examples/hello_world/am275x-evm/r5fss0-0_freertos/ti-arm-clang/hello_world.debug.out

am275x/examples/hello_world/am275x-evm/c75ss0-0_freertos/ti-c7000/hello_world.debug.out

4. Using the following command to generate the mcelf file. This command will generate the hello_world_test_multicore.mcelf file.

python3 /home/ht/ti/AM275-AWE-SDK_11.00.00.17/mcu_plus_sdk/am275x/tools/boot/multicoreELFImageGen/genimage.py \
--core-img=1:/home/ht/ti/AM275-AWE-SDK_11.00.00.17/mcu_plus_sdk/am275x/examples/hello_world/am275x-evm/r5fss0-0_freertos/ti-arm-clang/hello_world.debug.out \
--core-img=5:/home/ht/ti/AM275-AWE-SDK_11.00.00.17/mcu_plus_sdk/am275x/examples/hello_world/am275x-evm/c75ss0-0_freertos/ti-c7000/hello_world.debug.out  \
--output=hello_world_test_multicore.mcelf --xip=0x60100000:0x60200000  --sw_version=0x0B000011

5. Using the following command to sign the mcelf file as all am275 chips are hs-fs. This will generate the hello_world_test_multicore.mcelf.hs_fs file.

python3 /home/ht/ti/AM275-AWE-SDK_11.00.00.17/mcu_plus_sdk/am275x/tools/boot/signing/appimage_x509_cert_gen.py --bin hello_world_test_multicore.mcelf --authtype 0  --loadaddr 84000000 --key /home/ht/ti/AM275-AWE-SDK_11.00.00.17/mcu_plus_sdk/am275x/tools/boot/signing/app_degenerateKey.pem --output hello_world_test_multicore.mcelf.hs_fs --keyversion 1.5

6. flash the boot images (sbl image and the multicore mcelf image into ospi). Here is a reference config:

# First point to sbl_uart_uniflash binary, which function's as a server to flash one or more files
--flash-writer=/home/ht/audio/avb/sbl_uart_uniflash.release.hs_fs.tiimage

# --operation=erase --flash-offset=0x0 --erase-size=0x1800000

# Program the OSPI PHY tuning attack vector
--operation=flash-phy-tuning-data

# Now send one or more files to flash or flashverify as needed. The order of sending files does not matter

# When sending bootloader make sure to flash at offset 0x0. ROM expects bootloader at offset 0x0
--file=/home/ht/ti/AM275-AWE-SDK_11.00.00.17/mcu_plus_sdk/am275x/examples/drivers/boot/sbl_ospi/am275x-evm/wkup-r5fss0-0_freertos/ti-arm-clang/sbl_ospi.debug.hs_fs.tiimage --operation=flash --flash-offset=0x0

# When sending application image, make sure to flash at offset 0x400000 (default) or to whatever offset your bootloader is configured for
--file=/home/ht/ti/AM275-AWE-SDK_11.00.00.17/hello_world_test_multicore.mcelf.hs_fs --operation=flash --flash-offset=0x400000

7. boot up as the ospi sbl boot.

Test results

wakeup/dm R5 log:

Sciserver Testapp Built On: Aug 19 2025 14:48:31                                    
Sciserver Version: v2023.11.0.0REL.MCUSDK.MM.NN.PP.bb                               
RM_PM_HAL Version: vMM.NN.PP                                                        
Starting Sciserver..... PASSED                                                      
                                                                                    
Starting OSPI Bootloader ...                                                        
                                                                                    
SYSFW Firmware Version 11.0.7--v11.00.07 (Fancy Rat)                                
SYSFW Firmware revision 0xb
SYSFW ABI revision 4.0

[BOOTLOADER_PROFILE] Boot Media       : FLASH 
[BOOTLOADER_PROFILE] Boot Media Clock : 166.667 MHz 
[BOOTLOADER_PROFILE] Boot Image Size  : 183 KB 
[BOOTLOADER_PROFILE] Cores present    : 
[BOOTLOADER PROFILE] TIFS init                        :        764us 
[BOOTLOADER PROFILE] System_init                      :       5652us 
[BOOTLOADER PROFILE] Board_init                       :          5us 
[BOOTLOADER PROFILE] FreeRtosTask Create              :        262us 
[BOOTLOADER PROFILE] Drivers_open                     :        138us 
[BOOTLOADER PROFILE] Board_driversOpen                :          1us 
[BOOTLOADER PROFILE] sciServer_init                   :      15268us 
[BOOTLOADER PROFILE] SBL Drivers_open                 :    3175606us 
[BOOTLOADER PROFILE] SBL Board_driversOpen            :       3908us 
[BOOTLOADER PROFILE] Sciclient Get Version            :      10159us 
[BOOTLOADER PROFILE] DSP 0 Image Load                 :      15901us 
[BOOTLOADER PROFILE] R5FSS0_0 Image Load              :          0us 
[BOOTLOADER_PROFILE] SBL Total Time Taken             :    3227671us 

main R5 log:

Hello World!                                                                        
            

dsp0_0 log:

Hello World!                                                                        
            

Backup:

SBL major function in mcelf booting: