Using an MCU vs. MPU in Embedded Systems DesignBy ZM Peterson • Mar 27, 2021
Software developers can appreciate beautiful code, but what about the hardware that makes it all tick? Today, it seems like so much of the focus in the tech industry is on software, but none of it can exist without hardware, in particular semiconductors and PCBs. Embedded systems are on different, and they’re unique in that many of these systems rely heavily on software developers to work successfully.
One important consideration in embedded systems design is selection of a processor, and the two main options that are easy to implement are MCUs and MPUs. Rather than looking at a chipset centered around a CPU or GPU, an MCU or MPU can be a flexible, highly integrated option for hosting your application. If you’re unsure whether to use an MCU vs. MPU, we’ve created a broad comparison of these components. Hopefully, these guidelines can help you determine which type of host controller is ideal for your system and understand the level of development involved in each.
Comparing MCU vs. MPU Options
Before getting into a broad comparison, it helps to gather some context and learn the traditional uses of these components. These two components were invented during the heyday of the semiconductor industry, but before modern computing became commonplace. Interestingly, these two types of components were invented for similar purposes, namely to provide a highly integrated platform for executing logical programs. They differ in terms of computational scale: MCUs are for lightweight computing where the OS is implemented on-chip, while an MPU is operating with much higher computational power and much larger applications.
There are two primary areas where we can distinguish an MCU vs. MPU: capabilities and development, and the overall cost implementing these components in an embedded system.
Capabilities and Development
As was mentioned above, MCUs are much simpler to implement. Both types of components require some programming, but an MCU only requires an application and some configuration. Everything else is implemented at the firmware level in the MCU’s RTOS. This makes the development cost much lower as you only need to worry about embedded firmware, rather than deploying an entire operating system around the firmware.
An MPU needs an application and an operating system, although there are prepackaged kernels you can deploy on your system to help cut down your development time. Still, development is more complex and it resembles something closer to customizing an OS for your embedded system, just like you might do with Yocto or a proprietary Linux kernel. Then you’ll need to install everything and deploy your application, as well as ensure the design integrates with the rest of your software stack. This is an area that has traditionally been something like black magic for many board designers.
The block diagrams below compare the implementation of each type of host controller in an embedded system. From here, we can see that MCUs rely on multiple low-speed interfaces to gather data from ASICs. This makes them very flexible as host controllers for a range of systems. An MPU can do just about everything an MCU can do, but it also interfaces with standard and advanced computing peripherals over high-speed digital interfaces.
Overview of MCU vs. MPU implementation.
In terms of cost, MCUs are a clear winner from a single chip perspective. Some lightweight 8-bit MCUs can be bought for less than $1, although you’ll only be able to run simple programs and you won’t have access to many peripherals. The ATTiny series of MCUs is a perfect example; these components provide fast computation of simple digital programs in a small footprint, allowing specialty logic to be consolidated into a single chip. The cost goes up from there as more interfaces, I/Os, and on-chip features are added.
MPUs are more expensive in terms of hardware cost, but are only marginally more expensive in terms of development. Compared to MCUs, an MPU will take just as much time and effort to program an application, although this depends on complexity and access to peripherals. An MPU needs an embedded OS with a bootloader, although there are many resources online for creating a boot disk on a thumb drive or SD card.
MCU vs. MPU in Production
What are the differences between these systems in production? With an MCU, you basically flash firmware onto the device and, as long as it passes test requirements, you can set it and forget it. The device will continue to run in perpetuity. There are MCUs that support over-the-air (OTA) firmware updates, like the ESP32 and MSP430. To support this, you’ll need to provision an internet connection to your embedded device, and not all MCUs will support this type of connectivity. If you plan to do any kind of OTA firmware update, make sure to check the manufacturer’s product notes to ensure this is supported.
MPUs in production can also be updated over-the-air, but you will do so through an SSH tunnel via the internet or a private network. In this case, you’re applying OS patches or application updates to the system, just like you would a regular computer, you’re not compiling code to binary and flashing firmware onto a device as you would with an MCU. If you’re developing a web platform that runs in the background to support your embedded system, and you want to mirror a client-side application you might see on a desktop computer or mobile device, then an MPU is your best bet.
MCU vs. MPU in production.
What About FPGAs?
FPGAs are also an excellent option as host controllers for embedded systems. These components are seen as having a steeper learning curve, and developers who have specialized in more popular general computing languages are probably more likely to gravitate to an MPU. This is the case for two reasons: tradition and support. Until recently, FPGA developer tools did not support scripting languages like Python, which has fast become the world’s most popular programming language and is now supported on newer FPGA SoCs like Zynq architecture, Xilinx's new platform that combines a dual-core ARM Cortex-A9 with a traditional FPGA architecture.
In addition, on an MPU, the only limit imposed on development is that of your OS. As long as the OS supports your language, you can run applications on the system. Obviously, some languages will be easier than others thanks to library and IDE support from the manufacturer; companies like Texas Instruments and Microchip have done a phenomenal job in this area. For an MCU, you’re limited by your manufacturer’s IDE and SDK as you’ll need to compile everything to a binary file before flashing to the board. These days, it’s almost impossible to find a major MCU manufacturer that doesn’t provide this level of support for their products.
If your company is pushing the limits of telecom, data center, aerospace and defense electronics, and embedded systems, it pays to work with an experienced electronics design firm. NWES helps private companies, aerospace OEMs, and defense primes design modern PCBs and create cutting-edge embedded technology. We've also partnered directly with EDA companies and advanced ITAR-compliant PCB manufacturers. We'll help you decide between an MCU vs. MPU and ensure your next high speed digital system is fully manufacturable at scale. Contact NWES for a consultation.