M4 Cortex firmware stops working after Mender integration on Apalis iMX8QM

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-map property 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):

  1. Set up resource sharing between the cores: Configure your pins and HMP memory areas
  2. Configure your host machine to build firmware binary: Install and configure the MCUXpresso IDE or CLI toolchain
  3. 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

  1. Verify the HMP overlay is properly applied for your Apalis iMX8QM
  2. Add the no-map property to your M4 reserved-memory node
  3. Consider using kernel command line memmap=128M$0x88000000 as you mentioned
  4. 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.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.