One of the many advantages of developing with NXP's i.MX 8M Family of application processors is the ability to utilize both the Cortex-A53 as well as the Cortex-M core. This blog post will first present the architecture of the i.MX 8M heterogeneous processors as a starting point for the discussion, and then explain how to build and run the FreeRTOS SDK v2.13 on its MCU. The i.MX 8MQ and i.MX 8M Mini processors are coupling a Cortex-A53 cluster (4 cores) alongside a Cortex-M4 whereas the i.MX 8M Nano and i.MX 8M Plus are using a Cortex-M7.
For the impatient
You can download any of our currently available OS images for our i.MX 8M platforms:
Note that you can find pre-built binaries of the examples here for each CPU variant:
- i.MX 8M Mini (Nitrogen8MM & SOM)
- i.MX 8M Nano (Nitrogen8MN & SOM)
- i.MX 8M Plus (Nitrogen8MP SOM)
- i.MX 8M Quad (Nitrogen8M & SOM)
There are 3 examples for each variant:
hello_world.bin- simple application printing "hello world" on the M-core serial port
rpmsg_lite_pingpong_rtos_linux_remote.bin- ping pong examples between both CPU clusters using RPMSG
rpmsg_lite_str_echo_rtos.bin- TTY example showing serial communication between CPU clusters using RPMSG
You can then start your first Hello World application on the Cortex-M manually (after copying one of the binary above to your storage):
=> load mmc 0 $m4loadaddr hello_world.bin
=> bootaux $m4loadaddr/filters:background_color(white)/2024-10/Nitrogen8M_Mini_SBC-e1550333331743.png)
/filters:background_color(white)/2024-10/Nitrogen 8M Mini SMARC1.267 without wireless.png)
/filters:background_color(white)/2024-10/Nit8M_Mini_SOM_Front.png)
/filters:background_color(white)/2024-09/8MP_SMARC-RENDER-IF573.front.png)
/filters:background_color(white)/2024-12/nitrogen8m-plus-som.png)
/filters:background_color(white)/2024-10/Nitrogen8M_SBC-e1550277453741.png)
/filters:background_color(white)/2023-01/Nitrogen8M_SOM-e1550334029145.png.png)