AM275 FreeRTOS SDK  11.00.00
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Understanding Multicore ELF image format

Introduction

Multicore ELF, or MCELF is a new application image format different from the existing RPRC format. Unlike a proprietary format like RPRC, multicore elf is based on the widely recognized ELF (Executable and Linkable format) standard. This ensures seamless compatibility with industry-standard tools and platforms.

For more information on ELF format please refer https://man7.org/linux/man-pages/man5/elf.5.html

RPRC vs MCELF

Feature RPRC Multicore ELF
Generated using TI custom tools Yes No proprietary tools in image generation flow
Readable by standard ELF tools No Yes
Customizable metadata Not supported Supported via PT_NOTE segment
Customizable data segment sizes Not Supported Supported
XIP Supported Supported
Secure boot time Slow Very fast

Generation of MCELF images

MCELF Image Generation
Legend Description
C0/C1.. Individual core ELFs
SSO Static shared object
ELF H ELF Header
S0/S2.. Segment 1,2..
PHT Program Header Table
  • When an application is built, a .out image is built for each core. These are ELF files themselves that contain data as segments within.
  • The segments are extracted from the individual files and combined together into a single list.
  • These segments represent chunks of data that need to be loaded into the memory when the program is executed.
  • A segment contains the following information:
    • Memory address: Address where the segment should be loaded
    • File offset: offset of the segment start from the ELF header
    • Memory size: Size of segment in memory after loading
    • Flags: If segment is of type Read(R)/Write(W)/Execute(X)
  • The sizes and order of these new segments can be controlled using suitable arguments to the genimage.py script.
  • The first and last segments are the note segments by default. It can be tailored according to the application via the tool.
  • Once segment list is fixed, the Program header table is re-written based on the current segments and then the ELF header is regenerated based on updated PHT.
  • For more information on the tool refer MCELF Image Gen

Booting MCELF images

Note
  • SBLs that supports parsing, loading and authenticating Multicore ELF (MCELF) are different from the one that supports RPRC format.
  • SBLs and application formats are tightly coupled and cannot be used interchangeably. MCELF SBLs support booting only MCELF format images and not RPRC format images. Similarly, RPRC SBLs support booting only RPRC format images and not MCELF format images.