Linux Embedded

Le blog des technologies libres et embarquées

i.MX8, which one to choose ?

As we know, the great success of i.MX6 and i.MX7 series of Freescale semiconductors (recently acquired by NXP) has brought a lot of attention from the market for their brand new microprocessor series : i.MX8. In this article,  I would like to share with you the different features of the i.MX8 series, the common points among all these chips, what is different and which one to choose for your application. 

Brief introduction of i.MX8 series

First, let’s have a look at the official introduction of NXP: 

“The i.MX 6 series of applications processors offers a feature- and performance-scalable multicore platform that includes single-, dual-, and quad-core families based on the Cortex architecture—including Cortex-A9, combined Cortex-A9 + Cortex-M4, and Cortex-A7 based solutions.”

“The i.MX 7 series offers a highly integrated multimarket applications processor designed to enable secure and portable applications within the Internet of Things.”

“The i.MX 8 series of applications processors is a feature- and performance-scalable multicore platform that includes single-, dual-, and quad-core families based on the Arm® Cortex® architecture—including combined Cortex-A72 + Cortex-A53, Cortex-A35, Cortex-M4, and Cortex M7-based solutions for advanced graphics, imaging, machine vision, audio, voice, video, and safety-critical applications. ”

In a word, i.MX6 provides solutions based on the 32-bit cortex architectures (A6, A7, A9). i.MX7 is more or less a complement for the IoT solutions, and i.MX8 focuses on the high performance and the applications based on artificial intelligence and edge computing. We can imagine that the chips in i.MX8 series could play an important role in both the human-machine interface (for their powerful media processing features) and the core node (for their computing capabilities) in a subnet of IoT. 

Following is a table presenting the features of different products of i.MX8 in broad strokes. We will talk about the similarities and differences among them in the rest of this article.

i.MX8 Family (https://www.nxp.com/products/processors-and-microcontrollers/arm-based-processors-and-mcus/i.mx-applications-processors/i.mx-8-processors:IMX8-SERIES )

i.MX8 family, what’s common?

In i.MX8 series, we have i.MX8, i.MX8X, i.MX8M, i.MX8M Mini and i.MX8M Nano, where we can separate three families : i.MX8, i.MX8X, and i.MX8M.

The first common point among these three families is that they are based on an arm architecture Cortex A, which means high performance. The second common point is that they are all equipped with one or two Cortex M cores for the real-time applications. Next, they support external memory interfaces like DDR4, Quad SPI, XIP, NAND or NOR (except i.MX8). They support PCI Express, MIPI Display and camera interface, hardware video and graphic acceleration. All the other classic interfaces like USB and Ethernet are also present. They also have security modules, internal timers, RTC, ADC, PWM, and power management modules. They are designed for general purpose application, so their hardware architectures remain quite similar. On the software side, they have both Linux and Android system BSP. 

Since they all integrate an ARM Cortex A 64bit core, the SoCs share some same features like TrustZone security technology, Neon advanced SIMD, DSP & SIMD extensions, VFPv4 floating point, and Hardware virtualization support.

The Cortex-M cores are meant to run FreeRTOS and share the peripherals with the Cortex-A cores. The NXP BSPs for these M4 Cores support GPIO, SPI, I2C, General Purpose Timers, PWM, QSPI, UART, WDOG, TMU(Thermal Management Unit) and SAI(Serial Audio Interface). The interaction between FreeRTOS and Linux can use the Remote Processor Messaging(RPMsg) and should also implement the mechanism of Resource Domain Controller(RDC) to deal with the potential conflicts when using the same peripherals.

The display and camera are necessary for human-machine interaction. Hardware video and graphic acceleration can guarantee an even better experience on multimedia. With ample interfaces supported and real-time cores, we could realize creative ideas in IoT and robot industry. 

i.MX8 families, what’s different?

We will mainly focus on the differences between all these microprocessors.

The i.MX8 family currently has two products : the i.MX8QuadMax and the i.MX8QuadPlus. Besides the 4 Cortex-A53 cores, ehe only difference on CPU between these two processors is that the Max has 2 more Arm Cortex-A72 while the Plus only has one in addition. The main feature of i.MX8 family is that they have multiple independent processor units, which means they can run multiple OS. With the help of system MMU, resource partitioning, GPU and display architecture, we can either create independent human interactive interfaces. This can be particularly usefull for mixed-criticity applications.

The i.MX8 family also has a SATA interface which makes it possible to  integrate a hard disk. The i.MX8 family also has a DSP to strengthen its image processing capabilities. Among all the i.MX8 series, the i.MX8 variant possesses the most interfaces, in addition to what we have listed in the last part, it also supports the CAN bus.

i.MX8 family (https://www.nxp.com/docs/en/fact-sheet/IMX8FAMFS.pdf)

The i.MX8 X family has three products : i.MX8QuadXPlus, i.MX8DualXPlus and i.MX8DualX. The first one has 4 Cortex-A35, the last two products have only 2 Cortex-A35. The difference between X and XPlus is mainly the list of peripherals they support. DualX supports only 16-bit DDR3L and LPDDR4 with no ECC, while XPlus supports 32-bit with ECC. In terms of VPU, DualXPlus and QuadXPlus can handle 4K video, unlike DualX. The latter supprot only Full-HD(1080p). Xplus have 2 Gigabit Ethernet ports and 1 USB 3.0 port, while DualX has only 1 Gigabit Ethernet port and no USB3.0. As we can see, the i.MX8Dual is reduced compared to XPlus series.

The key feature that differentiates i.MX8X family is low-power thanks to the Cortex-A35 cores. Besides that, they have similar features to their cousins i.MX8. Another important feature of i.MX8X in the security & stability aspect : “The i.MX 8X processor with optional Error Correcting Code (ECC) is the first i.MX product to support Industrial Safety Integrity Level 3 (SIL 3) certification for applications such as programmable logic controller (PLC), input/output (I/O) controller, robotic control and drones.”

i.MX8X family (https://www.nxp.com/docs/en/fact-sheet/IMX8XFAMFS.pdf)

The last but the biggest family is the i.MX8M family. In this family, we have i.MX8M, i.MX8M Mini and i.MX8M Nano. In each subclass, we have three configurations. The main difference in the number of Cortex-A53 cores embedded on the SoC. The i.MX8M reinforces the ability of image, audio and video processing, particularly the playback of full 4K streaming video. It is ideal to use this SoC for HMI development.  Compared with i.MX8M, i.MX8M Mini doesn’t support 4k streaming and it doesn’t have HDMI ports. i.MX8M Nano is the only product which doesn’t have hardware video acceleration. 

i.MX8M Family (https://www.nxp.com/docs/en/fact-sheet/i.MX8M-FS.pdf)

Conclusion : Which one to choose?

This is just a general view of all the products in i.MX8 series, to choose an appropriate SoC for your application, you need to specify your needs. The computing ability, the security & stability, or the multimedia functionality, which is more important for your application? That is definitely the question to ask when you start a project on i.MX8.

Resources

https://www.nxp.com/docs/en/brochure/IMX8SERAPPBR.pdf i.MX8 Series Brochure

https://www.nxp.com/docs/en/fact-sheet/IMX8FAMFS.pdf i.MX8 Product Brochure

https://www.nxp.com/docs/en/fact-sheet/IMX8XFAMFS.pdf i.MX8X Product Brochure

https://www.nxp.com/docs/en/fact-sheet/i.MX8M-FS.pdf i.MX8M Product Brochure

https://www.nxp.com/docs/en/supporting-information/IMX8LAYERCMPR.pdf Comparison Details