We are working on a project with the IMX8ULP in dual-boot mode, using the M33 core and A35 for SPI-based booting (A35 boots from eMMC). Below are some specific questions and observations we’ve encountered:
1. Boot Behavior in XIP Mode:
Using the MCUXpresso IDE and the flash_debug build with the MIMX8UD5xxxxx_cm33_flash.ld linker script, we observed the following:
– When our project fits within the .text section length of 0x0003DCE0 ( RAM text section length) , the M33 boots successfully, and A35 starts U-Boot as expected.
– However, when the project exceeds this .text length ( RAM text section length), the build completes successfully, and the XIP bin file is generated with imx-mkimage. Yet, in this case, the M33 does not boot, and the A35 stops after loading U-Boot SPL (it doesn't transition to the main U-Boot).
2. Startup Code Behavior in XIP Mode: In the startup_MIMX8UD5_cm33.S file, we noticed that the .text section is copied to RAM, regardless of whether XIP or RAM boot mode is used. This is controlled by the following code:
/* Loop to copy data from read only memory to RAM. The ranges
* of copy from/to are specified by following symbols evaluated in
* linker script.
* __etext: End of code section, i.e., begin of data sections to copy from.
* __data_start__/__data_end__: RAM address range that data should be
* copied to. Both must be aligned to 4 bytes boundary. */
ldr r1, =__etext
ldr r2, =__data_start__
ldr r3, =__data_end__
– Question: Is this copying behavior expected even in XIP mode? Should we modify the linker script or startup code to avoid this copy in XIP mode?
– Question: If our code grows beyond the .text size limitation, should we create a new memory region or move specific sections (e.g., .text_ext) to another memory area? Is there a recommended approach for handling large code in XIP mode on the M33?
3. XIP Boot for Large Code:
– Question: Is XIP boot supported for larger code sizes on the M33 core in IMX8ULP? Are there any known limitations or workarounds when the code exceeds the size of the .text section?
– Question: Are there any examples or documentation that can help in setting up a multi-region memory model for larger code using XIP?