Not finding hello_world output with Dahlia, Verdin iMX8MP

I’ve been attempting to get the MCUXpresso SDK “hello_world” program running on the Cortex M7 on my evaluation system, using the instructions in:the “How to Run Hello World on the Cortex-M” guide (and the other guides it references). Toradex Embedded Linux Reference Multimedia image 7.3.0+build.8(2025-07-03) is installed on my system.

It’s not clear to me where the “hello_world” output should be. I’m not seeing it on the screen that I ran the Toradex easy installer on, nor am I seeing it on /dev/ttyUSB2.

When I try to run the program using cm_boot, after resetting the board, I get the suspicious message “## Auxiliary core is already up” This makes me wonder if the hello_world program is even being loaded.

Would appreciate input on where the “hello world” message should be displayed and if the “Auxiliary core is already up” message indicates a problem. I’ve tried both the .elf and the .bin files, get the same message with both.

Here’s the U-Boot output when I run cm_boot

Hit any key to stop autoboot: 0
Verdin iMX8MP # run cm_boot
4740 bytes read in 2 ms (2.3 MiB/s)

Auxiliary core is already up

Verdin iMX8MP # printenv cm_boot
cm_boot=ext4load mmc 2:2 0x48200000 /home/hello_world_cm7.elf; cp.b 0x48200000 0x7e0000 20000; dcache flush; mw.w 0x550ff000 0 64;bootaux 0x7e0000

Hi, I’m the Toradex AI Assistant.

I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.

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


Hello! Thank you for your detailed question regarding running the MCUXpresso SDK “hello_world” program on the Cortex-M7 of your Verdin iMX8M Plus system.

Where should the “hello world” output appear?

The output from PRINTF in the hello_world example will not show on the display or the usual Linux serial console. Instead, it appears on a dedicated UART associated with the Cortex-M7 core, which is mapped to /dev/ttyUSB2 when using the USB debug connection. Here’s how you can access it:

  • Connect the USB Debug Cable: Make sure the USB debug cable is connected to the correct port on your Verdin carrier board.
  • Serial Devices: When attached, your host PC will map four devices: /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2, and /dev/ttyUSB3.
    • /dev/ttyUSB2: Output from Cortex-M7 UART (where you should see the hello world messages).
    • /dev/ttyUSB3: U-Boot/Linux kernel terminal.
  • Serial Terminal Settings: Use a serial terminal (like minicom, screen, or PuTTY) configured for 115200 8N1 on /dev/ttyUSB2.

Documentation Reference:


About the “Auxiliary core is already up” message

This message means the Cortex-M7 core already has a firmware running (it may be left from a previous boot or from a default image). U-Boot prevents reloading a new firmware unless you explicitly reset the core, so your new hello_world may not be running at all.


How to resolve this:

  1. Prevent Linux Kernel Pin Conflicts:
    The Linux kernel grabs ownership of the UART used by the Cortex-M unless you apply the correct device tree overlay. If the overlay is not applied, Cortex-M UART communication will be blocked as soon as Linux boots.

  2. Firmware Format:
    Use the .bin file, not .elf, in your cm_boot command for the best results:

    ext4load mmc 2:2 0x48200000 /home/hello_world_cm7.bin; cp.b 0x48200000 0x7e0000 20000; dcache flush; mw.w 0x550ff000 0 64; bootaux 0x7e0000
    
  3. Fully Reset the Cortex-M7 Core:

    • Power-cycle your system to ensure the Cortex-M7 is not running old firmware before you attempt to load the new one.
  4. Check the Serial Output:

    • After applying the overlay and launching the firmware, watch /dev/ttyUSB2 for the “hello world” messages.

Summary Checklist:

  • Apply device tree overlay to prevent conflicting Linux pin usage.
  • Use the .bin firmware, not .elf.
  • Reset your device to ensure M7 is not running old firmware.
  • Connect your PC to /dev/ttyUSB2 at 115200 baud to view output.

If you follow these steps, you should see output like:

hello world. [0]
hello world. [1]
...

on /dev/ttyUSB2. If you do not see this, it usually means:

  • M7 is running different firmware (see the “Auxiliary core is already up” message).
  • Overlay is missing, and Linux is blocking the UART.
  • Serial terminal is not connected to the correct port.

For more details and troubleshooting, please see:

Let me know if this helps or if you have any further questions!

Best regards, Toradex AI Assistant.

The output should appear on the Cortex-M7 debug UART output (UART_4_TXD – Module’s X1 pin 153). It will definitely not be visible in the TEZI GUI. Whether it appears on /dev/ttyUSB2 of your development machine depends on the carrier board you are using and what other USB devices are already connected to it—details I don’t have.

Hi @amh ,

Are you all set here. Can we proceed to close this ticket?

Best regards,

It’s not working yet, but ok to close. I’ve been pulled onto another project, hope to get back to this one soon.