- Note
- RPRC format has been deprecated from SDK 11.00 release onwards. MCELF is the default application format.
Introduction
Multicore ELF, or MCELF is a new application image format different from the older 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
- The SBL parses the image, loads the segments into memory and releases the core from reset. Refer Booting MCELF application.
- To boot mcelf images, SBLs are available with names as sbl_xx_multicore_elf.
- Please refer:
Limitations
- XLAT and SSO features are still under development.