As computer programmers, our code runs on a wide variety of machines. From 2TB of RAM dual-EPYC servers with 128+ cores/256 hardware threads, to tiny single-core Arduinos running at 4MHz and 4kB of RAM.
While hobbyists and programmers around the world have become enamored with Arduinos, ESP32, STM32 Pills, and Rasp. Pi SBCs… there’s a noticeable gap in the typical hobbyist’s repertoire that should be looked at more carefully. This gap is the entry-level MPU market, perhaps best represented by Microchip’s SAM9x60, though STM’s STM32MP1, NXP i.MX ULL, and TI’s AM355x chips tightly compete in this space.
I hope to muse upon this category of processors, why its unpopular but… why maybe today, you should give it a closer look.
Impedance-controlled 6-layer PCBs USED to be too complex for a hobbyist… but they’re accessible today
This section’s title says it all. Typical MPUs require PCB complexity that… at least 10 years ago, was well beyond a hobbyist’s means. In the 2010-era of the fledgling “Maker” movement, 2-layer PCBs were the most complex you could hope for. Not just from a manufacturing perspective, but also from a software perspective. EagleCAD just didn’t support more layers, and no manufacturer catered to hobbyists to make anything more complex. Paying for $500 NRE fees each time you setup a board just wasn’t good on a hobbyist’s budget.
But today, OSHPark offers 6-layer boards (https://docs.oshpark.com/services/six-layer/) at reasonable prices, with tolerances specified for their dielectric (and therefore, impedance-controlled boards are a thing). Furthermore, KiCAD 7+ is more than usable today, meaning we have free OSS software that can lay out delay-matched PCB traces, with online libraries like UltraLibrarian, offering KiCAD Footprints and Symbols sponsored by Microchip/Ti/etc. etc. There’s also DKRed’s 4-layer service, JLCPCB’s services from China and plenty of competitors around the world that can take your 6-layer+ gerbers and give you a good board.
We live in a new era where hobbyists have access to far more complexity and can feasibly build a bigger electronics project than you ever dreamed before.
The classic team: Arduino and Rasp. Pi…
Arduino and Rasp. Pi stick together like peanut butter and jelly. They’re a barbell strategy providing the user with a low-cost, cheap, easy-to-customize chip (ATMega328p and other Arduino-level chips) operating at single-digit mW of power… with a large suite of analog-sensors and low latency and simplicity.
While Rasp. Pi offers Linux-level compute solutions, “grown up” C++ programs, Python, server-level compute. Albeit at the 6W (for Rasp. Pi 4) or beyond, so pushing the laptop-level power consumption. But… that gives us a good team that handles a lot of problems cheaply and effectively.
Or… is it? This barbell strategy is popular for good reasons from a problem-solving perspective, but as soon as any power and/or energy constraint comes up, its hopelessly defeated. Intermediate devices, such as the ESP32 have popped up as a “more powerful Arduino”, so to speak, providing more services (WiFi / Bluetooth, RAM and compute-power) than an Arduino can deliver, but is still far less than what Rasp. Pi programmers are used to.
What does a typical programmer want?
SAM9x60: ARMv5 at 600MHz, 128MB DDR2, Linux 6.1.x, dual-Ethernet 10/100, USB in 28mm x 28mm
When Rasp. Pi launched a bit over 10 years ago with 256 MB and a 700MHz processor and full Linux support, it set off a wave of hobbyists to experiment with the platform. Unfortunately, Rasp. Pi has left this “tier” of compute power, chasing the impossible dream of competing with Laptops / Desktops. IMO, the original Rasp. Pi 1 hit a niche and should have stuck with that platform.
This SAM9x60D1G-I/LZB SOM module is a mouthful to say. But at 28mm x 28mm its roughly the same size as a US Quarter. But… at $60 it sounds like a bad value. Okay, it is a bad value, but stick with me here, this represents far more than you might think.
SAM9x60 chip is fully open source, and fully documented at https://linux4sam.org. You get a full builtroot environment, a fully documented stage1, stage2, and stage3 (UBoot) bootloader. You get all 2000+ pages of documentation. You get PCB layouts, you get fully open source Linux drivers and kernel modules. You get the full “make” available from Microchip’s github. The openness to this chip is insane, especially if you’re used to Rasp. Pi.
And perhaps most importantly: SAM9x60’s reference design fits on 4-layer boards. (This is an INCREDIBLE feat of engineering. Microchip has spent a lot of effort simplifying this 233-BGA chip and trying to get it onto the simplest means possible). Note however, that I’d personally only be comfortable with a 6-layer design here. (SAM9x60’s reference design is signal/ground/power/signal stackup, which is frowned upon by modern PCB theory. signal/ground/power/signal/ground/signal would be a superior stackup… and 6-layers is cheap/available today anyway, so might as well go for 6-layers). In any case, the 4-layer demonstration reference board (https://ww1.microchip.com/downloads/en/Appnotes/AN_3310_Connecting-SDR-and-DDR-Memories-to-SAM9X60_00003310a.pdf) is far more documentation and discussion than you’d ever hope to be released by the Rasp. Pi group. The openness to this platform is like night-and-day.
While the SOM completed module is costly, truth be told it “represents” the platform and is likely not intended for mass usage. The true benefits to SAM9x60 (and other entry-level MPUs) is that all the chips are readily available at fair prices, and can be custom-assembled to your needs. At $8 per SAM9x60 and at $3 to $5 for 128MB DDR2 (depending on vendor), and at $3 to $5 for the power-chip, you’ll get a minimal booting Linux box with a fully custom PCB design doing whatever you want… with a fully customized motherboard / PCB doing whatever you want.
Another Devboard: https://www.microchip.com/content/dam/mchp/documents/MPU32/ProductDocuments/UserGuides/SAM9X60-Curiosity-User's-Guide-DS60001783.pdf
4-layer design again, though this time using the SiP module (on-board DDR2 to minimize the need to run impedance / delay-matched lines all over the place). This devboard costs $130, but the openness is likely well worth the costs. Its truly a design you can build on top of and customize yourself.
Cool… but why would I need this?
Well, to tell you the truth… I don’t know yet. Power-constraints are the obvious benefit to running with these chips (SAM9x60 + LPDDR RAM will use 1/10th the power of a Rasp-Pi4, while still delivering a full Linux environment). But beyond that I’m still thinking in the abstract here.
I’m mostly writing this post because I’ve suddenly realized that a full custom MPU comparable to first-generation Rasp. Pi is doable by a modern hobbyist. Albeit a well studied hobbyist comfortable with trace-matched impedance controlled transmission line theory on PCBs, but I took those college-classes for a reason damn it and maybe I can actually do this.
Its a niche that 10 years ago was unthinkable for hobbyists to cheaply make their own SBCs from scratch. But today, not only is it possible, but there’s 4 or 5 different vendors (Microchip’s SAM9x60, TI’s AM355x, STM32’s STM32MP1, etc. etc.) that are catering to hobbyists with full documentation, BSPs and more. We’re no longer constrained to the designs that Rasp. Pi decides to release, we can have those 2x Ethernet ports we’ve always wanted for example (for… some reason), or build a bare-metal OS free design using only 8MB of SRAM, or use LPDDR2 low-power RAM and build a battery-operated portable device.
Full customization costs money. Whatever hobby project we do with this will cost far more than a RP4 or even RP5’s base price. But… full custom means we can build new solutions that never existed before. And the possibilities intrigue me. Full control over the full motherboard means we have absolute assurances of our power-constraints, our size, the capabilities, supporting chips and other decisions. Do you want LoRA (long-range radio?). Bam, just a module.
And you might be surprised at how much cheaper this is today than its ever been before.
Conclusion
Thanks for hearing my rant today.
This form factor is really intriguing to me and I’ll definitely be studying it moving forward as a hobby. Hopefully I’ve manage to inspire someone else out there!
And… yall are just going to make a quadcopter with this, aren’t ya? Sigh… well… drones are popular these days for good reasons…
It’s a great analysis, and I don’t disagree with anything you said (mostly because you’re better informed than I am). But you nailed it with “Why would I need this? I don’t know yet.” It should all be driven by need—the fact their are more options is great, but doesn’t mean they should be used just because they’re there… For many hobbyists, ease of access and speed to get started is the main driver, and for those cases, pre-built boards are the answer.
I remember talking to a car manufacturer in the early 2000s who said it would be relatively easy to make cars to a custom length / load space. But they tend to make specific models because if you give people too much choice, they get paralysed and don’t choose anything.
I suspect it’s not quite that simple but the principle seems sound.
Well, my self-deprecating humor aside, I’ve of course thought about it more deeply over my research. So I don’t want to sell it too short.
SAM9x60 has a proper GPU (albeit 2D one), full scale Linux, and DDR2 support (easily reaching 64MB, 128MB or beyond of RAM). At $3 for DDR2 chips the cost-efficacy is absurd (https://www.digikey.com/en/products/detail/issi-integrated-silicon-solution-inc/IS43TR16640C-125JBL/11568766), a QSPI 8MBit (1MB) SRAM chip basically costs the same as 1Gbit (128MB) of RAM.
Newhaven Displays offers various 16-bit TFT/LCD screens (https://newhavendisplay.com/tft-displays/standard-displays/) at a variety of price points. Lets take say… 400x300 pixel 16-bit screen for instance. How much RAM do you need for the framebuffer? (I dunno: this one https://newhavendisplay.com/4-3-inch-ips-480x272px-eve2-resistive-tft/ or something close).
Oh right, 400 x 300 x 2-bytes per pixel and we’re already at 240kB, meaning the entire field of MSP430, ATMega328, ARM Cortex-M0 and even ARM Cortex-M4 are dead on the framebuffer alone. Now lets say we have a 10-frames of animation we’d want to play and bam, we’re already well beyond what a $3 QSPI SRAM chip will offer us.
But lets look at one of the brother chips really quick: Microchip’s SAMA5D4. Though more difficult to boot up, this one comes with H.264 decoder. Forget “frames of animation”, this baby straight up supports MP4 videos on a full scale Linux platform.
Well, maybe you want Rasp. Pi to run that, but a Rasp. Pi 4 can hit 6000mW of power consumption, far beyond the means of typical battery packs of the ~3-inch variety. Dropping the power consumption to 300mW (SAMA5D4 + DDR2 RAM) + 500mW (LCD Screen) and suddenly we’re in the realm of AAA batteries.
So we get to the point where I can say: I can build you a 3" scale device powered by AAA batteries that runs full Linux and supports H.264 decode animations running on a Touch-screen interface, fully custom with whatever chips/whatever you want on it. Do I know what it does yet? No. Lol, I haven’t been able to figure that out yet. But… surely this is a useful base to start thinking of ideas.
I want a PI zero that can run off small batteries for a long time. Form factor, prize, ecosystem is all perfect. But power consumption (even with WIFI etc. turned off)… is-too-damn-high.jpg
Rasp Pi’s power usage, be it the RP2040 or the Rasp. Pi products in general, always have had horrendous power-consumption specs and even worse sleep/idle states.
yep. IF sleep/idle/s2r/wakeup would work decently, it would already be a step in the right direction.
This was an interesting read, so thanks for writing!
My background: I am an embedded software engineer by trade, and a tinkerer as one of my hobbies. I’ve played around with microcontrollers (MSP430, AtMega328p on the Arduino) and microprocessors (STM32, ARM64 on RPi) and have done a small amount of board design with KiCAD.
After reading your post, I thought about what platform is my “go to” for particular applications, and why. And what I arrived at is that it’s not as important what each platform offers, but how it fits into what I want to build. That is, how integrable it is.
When I have a hobby project that just needs a SPI bus and a programmed sequence, I might reach for an MSP430 in DIP form-factor, or the Arduino with the intent to program the 328p and then extricate it to use alone for my project. The DIP format is what makes me lump these two chips together, as both are reasonably comparable but have their own unique features, like low power consumption or 5v input.
Similarly, if my project needs networking, I would definitely lean into microprocessors, but now I have to settle on the format before proceeding. Specifically, if I want to use the RPi, then perhaps my design will take the shape of a Hat. If instead I want to build around an STM32 chip, then I need to provision its support hardware. The latter is fine, but I don’t exactly trust my EE skills to do this every time lol
As a result, what I would like – as an embedded engineer – is a common microprocessor platform which can be swapped out, with a common pinout and connector. I know in the industrial space, they have standards like COM Express to do exactly this, but I’m not sure if that’s exactly the right direction to go, since those tend to be x86 based. Maybe something like the RPi Compute Module, but FOSS.
To go with it, I’d also want a common module format, same as how RPi has Hats and Arduino has Shields. Again, industry has the OCP Standard, which conveniently breaks out a PCIe interface, but there isn’t a lot of PCIe used in hobbyist work. But maybe it’s time to change that? IDK
Thanks again for writing this; it’s given me a chance to think about what I’d really like to have in the proverbial toolbox.
So yeah, I think that’s basically the two paths the modern hobbyist have taken. If we need “custom” electronics, its “obviously an Arduino” (or similar competitor: MSP430, ESP32, STM32F3, Teensy, etc. etc.). We prototype with DIPs and then make a cheap 2-layer board that uses the microcontroller + the custom-bit of wiring we need and call it a day. Whereas the “Computer” world is a world of Ethernet, CANbus, PCIe, SD-MMC connectors and whatever. Its about standards and getting things to easily fit into standards, and far less about actual customization.
And these two paths are separated in our brains. They’re just different worlds and we don’t think too much about it.
I wanted to talk about SiP chips but I couldn’t find the space for it. I guess where my overall point is… is that today’s entry-level MPUs can create “custom Arduino-like” designs, except with the full scale Linux / Microprocessor level of compute power (well, on the low-end at least. All of these MPUs are far slower than Rasp. Pi).
I was talking about SAM9x60 earlier, but TI’s / Octavo System’s SiP based on AM355x has a very intriguing demo that you won’t believe.
This OSD335x SiP is a BGA system-on-package, fully bootable Linux computer. Complete with DDR2 RAM, onboard Flash for a file-system, Power-controller, and yes, even a PDN/power network to ensure smooth and consistent bootups.
What’s suddenly available here, is that you can boot up a full scale Linux-box in a 20mm x 20mm size, even with some of the dumbest PCB design imaginable. The amount of sophistication that’s going into these chips today is unreal… and is making “build your own SBC from scratch” possible on a hobbyist’s budget, scale, and study.
So what today represents is: “Why not go full custom design with MPUs?” Yes, we traditionally have reached for MSP430 or ATMega328 for this problem, but maybe its not so bad to design around a more powerful system in practice. Now different manufacturers have gone with different routes here. Ti is working with Octavo Systems and pushing these SiP of course, Microchip is sticking with open-source hardware and documentation for people more comfortable with PCB design (though a SiP is also available from Microchip for on-board DDR2, but without the power-controller like Octavo System’s solution), etc. etc. All to varying levels of simplicity, configurability, and so forth.
I ended my post with the joke about drones because… that’s the most obvious initial good use of this tech I can immediately think of. Drones are size/weight constrained (the lighter you make everything, the lighter your motors can be, and the lighter your battery can be, making everything lighter again). So big heavy connectors, while good for compatibility, are a big detractor. You want to build a full custom PCB-design that removed everything unnecessary, you really want to save every gram possible and make everything as light as reasonable. If you’re just going to slap an Ethernet cord and a CANbus onto a computer, I don’t think these SiP or MPUs are really that useful (might as well buy a Rasp. Pi at that point).
But if you need a customized design with specific specs to weight and power-usage, well… custom is your way to go. And custom MSP430 (16-bit or 8-bit competitors or Cortex-M0+) leaves much to be desired from a programming perspective.
I like what SiP presents for full customization of the system, but I feel this doesn’t quite fulfill the goal of the “missing middle” but rather is a half-step short of building a custom build for each project. That’s… not ideal for prototyping, if said prototype can only be met with a microprocessor.
What I’d like to see is a spectrum of embedded compute for increasing levels of complexity. So for example, the low-end of compute would be met by today’s handy and cheap microcontrollers, like the MSP430 and Atmel lineup. These would be characterized by having the “standard fare” of interfaces, like SPI and I2C, and maybe even CAN bus. But not higher order interfaces like Ethernet nor application-specific features like DSP capabilities.
The high end would be fully-customized solutions, involving board layout and EE input. This would be for late-stage development when a project is being committed for volume production, where cost and board space are at a premium. Anything and everything can be done at this end of the spectrum, and the notion of “turnkey” chips simply doesn’t exist.
Between these two extremes, I would think that the “missing middle” are a finite group of turnkey microprocessors platforms – not microcontrollers – that support the higher order interfaces, in combination with some number of unique features, like RF, DSP, real-time processing, and support for a full, virtual memory OS like Linux.
This is a broad description, because I think this middle category should be the largest. And yet, the only microprocessor platform I can think that is well-known and well-used is the RPi. Its strengths are its ubiquity and being cheap. No other Linux-capable SBC seems to hold a candle to the RPi right now.
To that end, the SAM9x60 is fantastic for widening the space for folks working in that high-end of the spectrum. But until someone or some entity produces a volume run of an SBC or drop-in module utilizing it, I can’t see why a rapid-development project inclined to use an RPi (middle end complexity) would want to incur the effort of doing their own custom design (high end complexity).
To that end, the SAM9x60 is fantastic for widening the space for folks working in that high-end of the spectrum. But until someone or some entity produces a volume run of an SBC or drop-in module utilizing it, I can’t see why a rapid-development project inclined to use an RPi (middle end complexity) would want to incur the effort of doing their own custom design (high end complexity).
I feel like the SAM9x60D1G-I/LZB is close enough to a plug-and-play “compute module”, but you do have a point in that a compute-module isn’t quite a complete computer yet.
TI’s AM335x / Octavo OSD335x chips have a huge advantage from this particular criticism you have. These chips are behind the Beaglebone Black, meaning you have all three (Beaglebone Black / Green as a SBC for beginners, OSD335x SiP for intermediates, and finally the AM3351BZCEA60 (or other specific versions) for full customization.
At $50 for the SBC / Beaglebone Black, its a weaker buy than Rasp. Pi. But the overall environment and knowledge that Beaglebone Black represents a full ecosystem to the “expert” PCB layout (and includes an in-between SiP from Octavo systems) is surely one of the best arguments available.
Microchip obviously isn’t trying to compete against this at all, and I think that’s fine. TI’s got the full scale concept under lockdown. The SAM9x60’s chief advantage is (wtf??!?!) 4-layer prototypes for DDR2 routing. Its clearly a far simpler chip and more robust to work with. Well, that and also absurdly low power usage.
There’s also the Ox64, it’s a neat little device but software support is not great
This SAM9x60D1G-I/LZB SOM module is a mouthful to say. But at 28mm x 28mm its roughly the same size as a US Quarter. But… at $60 it sounds like a bad value. Okay, it is a bad value, but stick with me here, this represents far more than you might think.
The Orange Pi Zero is not that larger (48 mm × 46mm), ships with up to 512MB DDR3 SDRAM, wifi, and 10/100M Ethernet RJ45, and can be bought for half the price.
How many layers does the Orange Pi Zero pcb have?
Answer: Good luck finding out. That’s not documented. But based off of the layout and what I can see with screenshots, far more than 4 layers.
A schematic alone is kind of worthless. Knowing if a BGA is designed for 6, 8, or 10 layers makes a big difference. Seeing a reference pcb-implementation with exactly that layer count, so the EE knows how to modify the design for themselves is key to customization. There’s all sorts of EMI and trace-length matching that needs to happen to get that CPU to DDR connection up-and-running.
Proving that a 4-layer layout like this exists is a big deal. It means that a relative beginner can work with the SAM9x60’s DDR interface on cheap 4-layer PCBs (though as I said earlier: 6-layers offer more room and is available at OSHPark so I’d recommend a beginner work with 6 instead)
With regards to SAM9x60D1G-I/LZB SOM vs Orange Pi Zero, the SAM9x60D1G-I/LZB SOM provides you with all remaining pins of access… 152 pins… to the SAM9x60. Meaning a full development board with full access to every feature. Its a fundamentally different purpose. The SOM is a learning-tool and development tool for customization.