Run firmware on Cortex-M4

Hi toradex teams,

I’m beginner in FreeRTOS on the Cortex-M4. I’m currently trying deploy hello_world.elf example on Free RTOS. I was stuck at Running_a_Firmware_on_CortexM4.

First one, after build success, I got hello_world.elf file, I copy it to SD card.

Second one, I try to connect UART-A (for debug console) and UART-B (for Free RTOS) via Extension Connector X16 (Iris board) . And connect it by Serial Port Monitor

Finally, I reset Iris board. On UART-B console, nothing happened. On UART-A console, I got result like picture below and I **can’t type anything from "colibri-imx7-emmc-06817835 login: **:

Now, I can’t do anything. Follow instruction, U-Boot can be used to start a firmware on the Cortex-M4 core, I don’t understand how the way I do that. What would you recommend us to do?

More question, in UART-A connection, if I use 3 wires instead of 9 pins, no problem, isn’t it?

Thanks and regard,


@tuanphan , to the question that you can’t input on UART_A, you should turn off the flow control feature in your console application when only rx/tx/gnd are connected.

@jeremias.tx , do you know what is the latest situation of M4 support in Torizon? AFAIK, rpmsg is not ready in mainline, though this hello world demo doesn’t need rpmsg.

Hi @benjamin.tx ,

I think I already turn off flow control, but the situation is the same before

It’s very convenient if you recommend to me the OS (and version) which can support rpmsg between M4 and A7


Hi @tuanphan , I used to test with Linux BSP v2.8 , and Linux BSP v3.0 should also work.

Hi @benjamin.tx ,

I’ve already changed to Linux BSP v2.8. But everything is the same before, I can’t type anything

[.[0;32m  OK  .[0m] Started Connection service.
[.[0;32m  OK  .[0m] Started Login Service.
         Starting Hostname Service...
[    6.374129] Micrel KSZ8041 30be0000.ethernet-1:00: attached PHY driver [Micrel KSZ8041] (mii_bus:phy_addr=30be0000.ethernet-1:00, irq=-1)
[    6.389971] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    6.399607] usb0: HOST MAC 00:14:2d:ff:ff:fe
[    6.418172] usb0: MAC 00:14:2d:ff:ff:ff
         Starting WPA supplicant...
[.[0;32m  OK  .[0m] Started Load default USB gadget schema g1.schema.
[.[0;32m  OK  .[0m] Started WPA supplicant.
         Starting Network Service...
[.[0;32m  OK  .[0m] Started Hostname Service.
[    6.846739] IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready
[.[0;32m  OK  .[0m] Started Network Service.
[.[0;32m  OK  .[0m] Reached target Network.
[.[0;32m  OK  .[0m] Started NFS status monitor for NFSv2/3 locking..
         Starting Permit User Sessions...
[.[0;32m  OK  .[0m] Started Permit User Sessions.
[.[0;32m  OK  .[0m] Started LXDE Display Manager.
[.[0;32m  OK  .[0m] Started Serial Getty on ttymxc0.
[.[0;32m  OK  .[0m] Reached target Login Prompts.
[.[0;32m  OK  .[0m] Reached target Multi-User System.
[.[0;32m  OK  .[0m] Reached target Graphical Interface.
         Starting Update UTMP about System Runlevel Changes...
[.[0;32m  OK  .[0m] Started Update UTMP about System Runlevel Changes.

|       |                  .-.           o o        
|   |   |-----.-----.-----.| |   .----..-----.-----.
|       |     | __  |  ---'| '--.|  .-'|     |     |
|   |   |  |  |     |---  ||  --'|  |  |  '  | | | |
'---'---'--'--'--.  |-----''----''--'  '-----'-'-'-'
                -'  |

The Angstrom Distribution colibri-imx7-emmc ttymxc0

Angstrom v2017.12 - Kernel 

Colibri-iMX7-eMMC_LXDE-Image 2.8b7. 20200610

colibri-imx7-emmc login: 

I don’t know why, Please help me what I need to do?


Hi @tuanphan , have you tried shortening UART_A’s CTS to RTS or turn on/off flow control?

Hi @benjamin.tx ,

I already tried shortening UART_A’s CTS to RTS and turn on/off flow control everything is the same before.

I have another solution on Colibri Evaluation Board, I already changed the position of the Jumpers JP17, JP19, JP20 and JP21. After that I connect success to UART-A and input normal as well on X27 pin

Thanks so much for your support!