![]() ![]() They’re power-hungry: microcontrollers are built on larger processes than application processors to reduce their leakage current. Yes, you can run Linux without an MMU, but you usually shouldn’t: Cortex-M7 parts that can barely hit 500 MHz routinely go for double or quadruple the price of faster Cortex-A7s. The biggest difference between these application processors and a microcontroller is quite simple: microprocessors have a memory management unit (MMU), and microcontrollers don’t. Instead, we use application processors - popular ones are the Arm Cortex-A, ARM926EJ-S, and several MIPS iterations. Teach a person to fish, you know? Microcontroller vs Microprocessor: DifferencesĬoming from microcontrollers, the first thing you’ll notice is that Linux doesn’t usually run on Cortex-M, 8051, AVR, or other popular microcontroller architectures. So while I’ll post pictures of the boards and screenshots of layouts to illustrate specific points, these aren’t intended to serve as reference designs or anything the whole point of the review is to get you to a spot where you’ll want to go off and design your own little Linux boards. Also, I limited the on-board peripherals to the bare minimum required to boot, so there are no audio CODECs, little I2C sensors, or Ethernet PHYs on these boards.Īs a result, the boards I built for this review are akin to the notes from your high school history class or a recording you made of yourself practicing a piece of music to study later. ![]() These boards won’t win any awards for power consumption or EMC: to keep things easy, I often cheated by combining power rails together that would typically be powered (and sequenced!) separately. Each of these boards was designed across one or two days’ worth of time and used JLC’s low-cost 4-layer PCB manufacturing service. This helped me discover little “gotchas” that each CPU has, as well as optimize the design for cost and hand-assembly. I intentionally designed these boards from scratch rather than starting with someone else’s CAD files. This allowed me to try out different DDR layout and power management strategies - as well as fix some bugs along the way. Well, actually, many dev boards for each processor: roughly 25 different designs in total. To this end, I designed a dev board from scratch for each application processor reviewed. Except for some minor benchmarking at the end, once we get to a shell prompt, we’ll consider the job completed.Īs a departure from my microcontroller review, this time I’m focusing heavily on hardware design: unlike the microcontrollers I reviewed, these chips vary considerably in PCB design difficulty - a discussion I would be in error to omit. Getting a part booted is an entirely different ordeal altogether - that’s what we’ll be focused on. Your I2C drivers, your GPIO calls - even your V4L-based image processing code - will all work seamlessly.Īt least, that’s the sales pitch. That makes chips running embedded Linux almost a commodity product: as long as your processor checks off the right boxes, your application code won’t know if it’s running on an ST or a Microchip part - even if one of those is a brand-new dual-core Cortex-A7 and the other is an old ARM9. If my mantra for the microcontroller article was that you should pick the right part for the job and not be afraid to learn new software ecosystems, my argument for this post is even simpler: once you’re booted into Linux on basically any of these parts, they become identical development environments. ![]() Just like my microcontroller article, the parts I picked range from the well-worn horses that have pulled along products for the better part of this decade, to fresh-faced ICs with intriguing capabilities that you can keep up your sleeve. This article is targeted at embedded engineers who are familiar with microcontrollers but not with microprocessors or Linux, so I wanted to put together something with a quick primer on why you’d want to run embedded Linux, a broad overview of what’s involved in designing around application processors, and then a dive into some specific parts you should check out - and others you should avoid - for entry-level embedded Linux systems. There’s an occult consortium of engineering pros who drop these chips into designs with utter confidence, while the uninitiated cower for their Raspberry Pis and overpriced industrial SOMs. Massive shifts over the last few years have seen internet-connected devices become more featureful (and hopefully, more secure), and I’m finding myself putting Linux into more and more places.Īmong beginner engineers, application processors supplicate reverence: one minor PCB bug and your $10,000 prototype becomes a paperweight. After I published my $1 MCU write-up, several readers suggested I look at application processors - the MMU-endowed chips necessary to run real operating systems like Linux. ![]()
0 Comments
Leave a Reply. |