Hi, I’m the Toradex AI Assistant.
I might make mistakes or occasionally get you wrong. Our support team will step in if needed.
I can help troubleshoot your Cortex-M4 firmware issue with Mender integration on the Apalis iMX8QM. Based on the documentation, this appears to be a memory reservation conflict.
Memory Reservation Analysis
The “failed to reserve memory” warning you’re seeing is significant. For RPMsg to work properly, it’s necessary to allocate the correct RAM buffers in the device tree file (1). Toradex provides device tree overlays for an out-of-the-box experience with HMP, and these overlays are compatible with all Downstream and upstream-based modules starting from BSP and Torizon OS 6 (1).
Device Tree Configuration
The device tree structure comprises nodes that represent different hardware components, and each node contains properties that describe the configuration of the corresponding hardware component (2). For your Apalis iMX8QM, you need to ensure proper memory area allocation.
The two CPU platforms (Cortex-A and Cortex-M) use different memory layouts to access individual subsystems (3). This is critical for your setup since the M4 needs dedicated memory regions that Linux shouldn’t access.
Recommended Solutions
1. Device Tree Overlay Application
Check if you have the appropriate HMP overlay applied. For overlays marked as available, they are pre-compiled (*.dtbo) into Torizon OS and BSP reference images (4). You should verify that the proper overlay is loaded for your Apalis iMX8.
2. Memory Buffer Configuration
The buffer reservation works by defining specific memory addresses in the device tree (4). For your configuration, ensure that:
- The memory region at 0x88000000 is properly reserved
- The
no-mapproperty is included to prevent Linux from accessing M4’s memory - The reservation happens before Linux kernel initialization
3. RPMsg Communication Setup
RPMsg (Remote Processor Messaging) is a communication protocol for inter-processor communication on embedded Linux systems that enables efficient data exchange between processors in a heterogeneous multi-core environment (1). Since your RPMSG channel establishes initially but then stops communicating, this suggests a memory conflict after Linux fully boots.
Getting Started with HMP
The proper approach for HMP setup involves (5):
- Set up resource sharing between the cores: Configure your pins and HMP memory areas
- Configure your host machine to build firmware binary: Install and configure the MCUXpresso IDE or CLI toolchain
- Load binaries into the Cortex-M: Deploy and run your binary to the target hardware
Mender Integration Considerations
Based on the community discussion, there are known challenges with Mender integration on Toradex platforms (6). The issue you’re experiencing could be related to how Mender’s partition layout affects the memory reservation timing during boot.
Next Steps
- Verify the HMP overlay is properly applied for your Apalis iMX8QM
- Add the
no-mapproperty to your M4 reserved-memory node - Consider using kernel command line
memmap=128M$0x88000000as you mentioned - Check if the memory reservation timing conflicts with Mender’s boot sequence
The fact that your M4 works without Mender but fails with it strongly suggests a boot-time memory allocation conflict that needs to be resolved through proper device tree configuration.
Best regards, Toradex AI Assistant.
If I answered your question, please tick the “Solution” checkbox.
For follow-up questions to me, please use @ToradexAI in your post.