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.
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.
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?
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. Fortunately, alternatives exist today.
Though the SAM9x60D1G-i/lzb SOM Module above is far more complex than a Rasp. Pi, its a good representation of what’s possible with a modern entry-level MPU. Yeah yeah yeah, its $60 but stick with me a bit longer. The SOM module is a bad value, but it shows the minimal system that it takes to boot this chip. This is very different from Rasp. Pi indeed.
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.
And perhaps most importantly: SAM9x60’s reference design fits on 4-layer boards. With fully open reference designs (bill of materials, customization, etc. etc.). 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).
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.
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.
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!
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.
Hope you enjoy the instance!
Follow the wormhole through a path of communities !webdev@programming.dev
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) + 300mW (LCD Screen) and suddenly we’re in the realm of AAA batteries.