<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dzu's Blog (Posts about mcuxpresso)</title><link>https://blog.lazy-evaluation.net/</link><description></description><atom:link href="https://blog.lazy-evaluation.net/categories/mcuxpresso.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 &lt;a href="mailto:dzu@member.fsf.org"&gt;Detlev Zundel&lt;/a&gt; </copyright><lastBuildDate>Wed, 18 Mar 2026 10:36:03 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Basic AMP on the i.MX8M Mini with Rpmsg</title><link>https://blog.lazy-evaluation.net/posts/embedded/imx8mm-evk-simple-rpmsg.html?pk_campaign=feed</link><dc:creator>Detlev Zundel</dc:creator><description>&lt;div&gt;&lt;div style="text-align:center" class="imageblock" id="org4efd794"&gt;

&lt;div id="org5a720ae" class="figure"&gt;
&lt;p&gt;&lt;img src="https://blog.lazy-evaluation.net/images/giant-gd1d82756c_640.jpg" alt="giant-gd1d82756c_640.jpg" title="Big and Little" align="middle" width="150"&gt;
&lt;/p&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;p&gt;
In a &lt;a href="https://blog.lazy-evaluation.net/posts/embedded/imx8mm-evk-m4-intro.html"&gt;recent post&lt;/a&gt;, I described the basics to execute code on the Cortex
M4 micro controller inside the &lt;a href="https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-processors/i-mx-8m-mini-arm-cortex-a53-cortex-m4-audio-voice-video:i.MX8MMINI"&gt;i.MX8M Mini&lt;/a&gt; SoC.  However there was no
communication going on between Linux on the Cortex A cores and the
application running on the M4.  In this post, I will look at an
example using the &lt;a href="https://source.codeaurora.org/external/imx/linux-imx/tree/Documentation/staging/remoteproc.rst?h=lf-5.10.y"&gt;remoteproc&lt;/a&gt; and &lt;a href="https://source.codeaurora.org/external/imx/linux-imx/tree/Documentation/staging/rpmsg.rst?h=lf-5.10.y"&gt;rpmsg&lt;/a&gt; (Remote Processor Messaging)
frameworks for communication between the processors.  The remoteproc
subsystem implements basic house keeping for co-processors in Linux
and the rpmsg framework implements the actual data channels.
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.lazy-evaluation.net/posts/embedded/imx8mm-evk-simple-rpmsg.html?pk_campaign=feed"&gt;Read more…&lt;/a&gt; (13 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>embedded</category><category>imx8</category><category>linux</category><category>mcu</category><category>mcuxpresso</category><category>nxp</category><category>remoteproc</category><category>rpmsg</category><guid>https://blog.lazy-evaluation.net/posts/embedded/imx8mm-evk-simple-rpmsg.html</guid><pubDate>Sat, 16 Apr 2022 12:48:52 GMT</pubDate></item><item><title>Using the M4 MCU on the i.MX8M Mini</title><link>https://blog.lazy-evaluation.net/posts/embedded/imx8mm-evk-m4-intro.html?pk_campaign=feed</link><dc:creator>Detlev Zundel</dc:creator><description>&lt;div&gt;&lt;div style="text-align:center" class="imageblock" id="orgb937d53"&gt;

&lt;div id="org5b4d051" class="figure"&gt;
&lt;p&gt;&lt;img src="https://blog.lazy-evaluation.net/images/giant-gd1d82756c_640.jpg" alt="giant-gd1d82756c_640.jpg" title="Big and Little" align="middle" width="150"&gt;
&lt;/p&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;p&gt;
Over the last few years, SoCs targeted at embedded GNU/Linux
applications became heterogenous architectures.  Instead of
adding more identical copies of CPU cores (Cortex-A class), a small
companion micro controller core (Cortex-M class) was added.  Compared
to the complex architecture of Cortex-A systems, including their
multi-layer caches, those cores are usually deterministic and thus
predestined for low-latency "real time" jobs.  NXP's first such SoC is
the &lt;a href="https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-6-processors/i-mx-6solox-processors-heterogeneous-processing-with-arm-cortex-a9-and-cortex-m4-cores:i.MX6SX"&gt;i.MX6 Solo X&lt;/a&gt; device featuring an Cortex-M4 next to an Cortex-A9
core.  The &lt;a href="https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-processors:IMX8-SERIES"&gt;i.MX8 family&lt;/a&gt; moved the Cortex-A cores into the 64 bit world
and there are different combinations of Cortex-M companion micro
controllers, but all of them do feature them as they are pretty
"cheap" in terms of die space and transistor count.
&lt;/p&gt;

&lt;p&gt;
From what I can see, it is still uncommon to use those micro
controllers in actual projects though.  Today I want to take a short
look on how to run simple programs on the Cortex-M4 of the &lt;a href="https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-processors/i-mx-8m-mini-arm-cortex-a53-cortex-m4-audio-voice-video:i.MX8MMINI"&gt;i.MX8M Mini&lt;/a&gt;
SoC, especially we will use the official &lt;a href="https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/evaluation-kit-for-the-i-mx-8m-mini-applications-processor:8MMINILPD4-EVK"&gt;i.MX8M Mini EVK&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.lazy-evaluation.net/posts/embedded/imx8mm-evk-m4-intro.html?pk_campaign=feed"&gt;Read more…&lt;/a&gt; (21 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>embedded</category><category>imx8</category><category>linux</category><category>mcu</category><category>mcuxpresso</category><category>nxp</category><guid>https://blog.lazy-evaluation.net/posts/embedded/imx8mm-evk-m4-intro.html</guid><pubDate>Mon, 11 Apr 2022 17:01:30 GMT</pubDate></item></channel></rss>