It has been fun getting the i.MX8 IoT Core port up to speed. We are still working on adding more features, especially more peripheral support. We have some of the basics like GPIO and UART working but there is more to come.

One of the other nice features of the i.MX8, in addition to its multiple ARM A53 cores, is it also includes an ARM M4 co-processor core. This is great for off-loading some real-time tasks. Or you can even shut down the main cores and just run the M4, saving power. The versatile IO multiplexer can mux in different peripherals so basically any IO (like UART, SPI, I2C etc.) available on the chip is also available to the M4 core. The M4 is more a “microcontroller” than a general purpose “microprocessor” like the A53.

So what about development tools? Well there are plenty. Most players in the embedded tools market have i.MX8 – M4 support coming on line.

Some of the popular players are:

  •  IAR  Embedded Workbench
  •  SEGGER Embedded Studio
  •  NXP MCUXpresso
  •   GCC GNU

I was able to setup and compile/debug with each of these. Some of the IDE based tools have nice feature but they come at a rather high price tag. All support debugging via a jtag connection.

Another, much less expensive, option is to use the free GNU ARM compiler toolchain and CMAKE. I was able to set up Visual Studio Code as my IDE and using its rich plugin support add compile and debug options. A Visual Studio Code plugin for GDB is available and mated with my Segger jtag probe, I was able to set breakpoints and single step through the source code of my project. I figure this saves me close to $2k over some of the higher end tools.

The M4 has a lot of software support as different flavors of ARM M0’s and M4’s have been around for years on standalone processor chips. The M4 also supports Freertos OS. More on this in a subsequent post.