Close this search box.

Applications Processors Head-to-Head: STM32MP1 vs I.MX7ULP


A comparison of STM32MP1 vs I.MX7ULP

The STM32MP1 and I.MX7ULP chip series are manufactured by STMicro and NXP respectively. They both offer a combination of low-power and high-performance with full support for high-performance operating systems.

This article will be looking at some of the differences between the two, and also highlighting best fits for various use-cases. This will be achieved by checking out the advertised hardware specifications, examining the software ecosystems available, and comparing raw benchmark numbers that we crunched here at the ByteSnap offices.

Hardware Comparison – STM32MP1 vs I.MX7ULP:

Below is a non-exhaustive table detailing some of the hardware differences between STM32MP1 and I.MX7ULP chip series. This includes CPU, GPU, LCD, DDR, External Memory, USB, Security, Analog, Comms, Camera and Eth: –

As you can see the STM32MP1 boasts twice the number of main Cortex-A7 cores potentially delivering around twice the power. For the M4 core the ST part also has slightly more L2 cache for the M4 core and some additional DSP instructions.

The i.MX7ULP only supporting MIPI DSI may limit the range of screens that can be used.

The lack of any Ethernet interface on the I.MX7ULP suggests that its main mode of connectivity will be over Wi-Fi/BT or equivalent, which is what you find on the evaluation kit.

Software Ecosystems – STM32MP1 vs I.MX7ULP:

This table gives an overview of the software support ecosystem for: Linux BSP, Android BSP, Build SYstem Support and IDEs: –

Benchmark Results – STM32MP1 vs I.MX7ULP:

Please bear-in-mind that doing benchmark tests on different platforms with different setups can lead to inaccurate or unfair comparisons; these numbers should be used as a guideline rather than a rule.

CPU/DDR Tests:

We used the command “time memtester 5M 1” to run a single loop of memtester over 5MB of memory and time it. This was repeated several times on both an i.MX7ULP-EVK and a STM32MP157A-DK1 with any graphical processes disabled and no hardware modifications or over/under-clocking.


CPU/DDR Test Results:

CPU DDR test results

As you can see the performance is very similar, with the i.MX7ULP edging out ahead slightly. This is likely due to the slightly higher clock speed. However, if we repeat the test by running two of the memtester processes at same time, we will make use of the dual-cores of the ST part.

STM32MP1 CPU DDR test results
i.MX7ULP CPU DDR test results

In this test case, both processes on the STM32MP1 were finished after around 32s.

STM32MP1 Power tests:

We took an STM32MP157A-DK1 with no modifications. We ran the following commands:

glmark2-es2-drm –off-screen –size 1280×720 -b texture_duration=60.0:texture-filter=nearest –run-forever &

memtester 5 12 > /dev/null &

memtester 5 12 > /dev/null &


In order to simulate full CPU/GPU usage, power was measured with a USB power meter. We removed all components except the PHY/DDR/PMIC/CPU to try and reduce the power as much as possible, at which point we also turned off the PHY via a reset GPIO line. Final reading is with CPU/GPU idle with all hardware modifications.


i.MX7ULP Power Tests:

We did some basic board level readings of the i.MX7ULP development board running with and without OpenGL, full CPU load and just idling. These were our findings at the DC input to the board:

STM32MP1 Graphics Test:

At 800×480 we managed 33 balls dropping to 44FPS, the balls were 80×80 pixels (the 1080 were 200×200).

i.MX7ULP Graphics Test:

To see a demonstration of the i.mx7 output (with background re-added) click here.

We were able to show 210 consecutive bouncing balls at 50 FPS.

One issue we have encountered is that there is a lack of LCD panels that are both MIPI and have a resolution under 720p. This means that for some applications, a converter chip would be required between the ULP and a lower resolution panel.


The i.MX7ULP seems to be better on power and graphics. However, the STM32MP1 has extra processing grunt with the optional extra core and a somewhat tighter integration with upstream Linux.

Ultimately, the choice you make will be dependent on your use case. Do you need to take advantage of the FLEXIO peripheral? Then pick the i.MX7ULP. Is wired Ethernet a hard requirement? Then go with the STM32MP1. Hopefully this guide will have helped you understand the main differences between the processors.

How can ByteSnap help you today?

From start-ups to blue chips, ByteSnap’s electronic design engineers are enabling companies to stay a step ahead by providing them with bespoke solutions. Maintain your competitive edge – contact us today and let your business be among them!


Related Posts