Supply Chain Games: What Have We Learned From the Great Semiconductor Shortage of 2021? (Part 4)
The chip shortage didn't end with 2021, it moved into older process nodes where cars and industrial gear live. In this installment Jason Sachs explains why mature-node and trailing-edge capacity remain tightly constrained, how NCNR commitments and price increases are reshaping supplier behavior, and what companies like NXP and Microchip are doing to cope. He warns the imbalance could take multiple semiconductor cycles to fix.
Supply Chain Games: What Have We Learned From the Great Semiconductor Shortage of 2021? (Part 3)
Jason Sachs pulls back the curtain on Moore's Law and the foundry business to explain why the semiconductor shortage exposed brittle economics. He traces how roadmaps, depreciation schedules, and node mix force foundries to juggle expensive new fabs and mature capacity, and shows why leading-edge nodes punch above their volume share in revenue. Engineers get practical insight into how capacity and timing decisions ripple through the supply chain.
A Beginner's Guide to Embedded Systems
Embedded systems are everywhere, and this guide gives a practical, project-first roadmap for beginners. It explains what embedded systems are, the typical constraints you will face, and a clear learning sequence: circuit fundamentals, digital logic, C, and microcontrollers before moving on to RTOS or embedded Linux. The post also recommends hands-on dev boards and student clubs to accelerate real-world skills.
Peripheral Interaction Without a Linux Device Driver Using Spidev
Kernel-space drivers are not always necessary; many SPI peripherals can be handled from userspace using spidev. This post shows how to expose an SPI device through the device tree and kernel, wire a Bosch BMP388 to a Toradex Apalis iMX8 Ixora board, and implement a C userspace app that uses ioctl to read the chip ID. Practical tips on SPI settings and logic-analyzer validation are included.
In Memoriam: Frederick P. Brooks, Jr. and The Mythical Man-Month
Fred Brooks’ The Mythical Man-Month is still a surprisingly sharp guide to software projects, and Jason Sachs shows why it matters even more than its old mainframe setting suggests. He revisits Brooks’ ideas on surgical teams, conceptual integrity, throwaway prototypes, and schedule estimation, then maps them to modern embedded and software engineering realities. The result is a tribute, a book review, and a practical reminder that roles, architecture, and testing still make or break delivery.
C to C++: 3 Reasons to Migrate
Embedded C still powers most devices, but rising system complexity is revealing its limits. In this post Jacob Beningo kicks off a series on moving from C to C++, offering three practical reasons to start the migration now. He argues for an incremental approach that keeps low-level, hardware-dependent code in C while adopting C++ for higher-level, object-oriented application logic so teams can keep shipping during the transition.
Soft Skills For Embedded Systems Software Developers
Soft skills often determine whether an embedded project ships on time as much as technical chops do. This post lays out practical, engineer-friendly guidance on interpersonal skills, communication, time management, deep focus, asking for help, learning, and resilience. It mixes concrete tips like the documentation system, pomodoro and quiet hours with habits such as engineering notebooks and role-playing to make collaboration and productivity more reliable.
Favorite Software AND Hardware Tools for Embedded Systems Development
Tool choice can make or break an embedded project, and Stephane Boucher gathered developers' favorite hardware and software picks from the Embedded Online Conference into one handy roundup. The post points to a companion video and lists concrete tools from oscilloscopes and logic analyzers to J-Link probes, Python, unit-test frameworks, and soldering irons. It is a quick, practical peek at what experienced embedded engineers actually use.
Getting Started With Embedded Linux - From Nothing To A Login Prompt
This hands-on guide shows how to go from a blank board to a bootable embedded Linux system using Yocto and Docker. Follow the steps to build a reproducible Yocto environment, fetch Toradex manifests, set MACHINE to verdin-imx8mm, run bitbake, and produce the .wic.bmap image ready to flash. Ideal for engineers wanting a concise bringup path for a Verdin iMX8M Mini on a Dahlia carrier.
A New Related Site!
The post announces the launch of MLRelated, a new Related site dedicated to machine learning and deep learning. It positions MLRelated as complementary to existing Related sites by highlighting cross-cutting interests: TinyML for embedded developers, machine/deep learning applications in signal processing, and FPGA-based AI/ML implementations. The new site debuts with a modest amount of content and is expected to expand rapidly through contributions from the Related community in the form of blogs, forum threads, and webinars. The author invites readers to report navigation errors, share feedback, and propose ideas to help steer MLRelated into a practical, community-driven resource for researchers and practitioners in ML and adjacent domains.
Stuck with Jira — and Stuckons
Jason Sachs vents about Jira’s quirks and why it still feels stuck despite years of fixes. He walks through concrete pain points: nonstandard markup, relentless notification noise, poor meta-task support, and limited analytics that make day-to-day engineering work harder. To explain why schedules blow up, he introduces a simple kepton model of planons, workons, and stuckons that highlights unexpected work.
Round-robin or RTOS for my embedded system
Manuel Herrera walks through the practical tradeoffs between bare-metal round-robin loops and adopting an RTOS for embedded projects. He outlines two round-robin styles, explains how an RTOS gives independent threads and synchronization primitives, and highlights added code, licensing, interrupt latency, and the learning curve. Read this to sharpen decision criteria around timing guarantees, reuse, and whether an RTOS truly adds value to your firmware.
I Stopped Testing Embedded Systems by Hand. Here's What Replaced It.
Everardo Garcia walks through the shift from manual, terminal-based system-level testing to automated tests that run during development. He shows how OpenHTF (a framework originally built at Google for manufacturing lines) plus a laptop, a USB cable, and ~150 lines of Python closes the functional testing gap most embedded teams carry, and how spec-driven prompting with GitHub Copilot makes writing plugs and phases fast enough to keep up.
Here Comes The Noise!
Noise. That awful thing which nobody wants that most sadly never learn about. It's time to change that with this blog post.
Developing software for a safety-related embedded system for the first time
Developing a safety-related embedded product is not the same as writing ordinary firmware, and this article lays out eight practical steps to get you started. Using a washing-machine controller as a running example, it covers scoping, key requirements, hazard analysis, applicable standards, platform and MCU choices, runtime monitoring, and prototyping. The checklist helps teams prepare for verification, testing, and later certification work.
Three more things you need to know when transitioning from MCUs to FPGAs
Take a look at three more important difference between FPGAs and MCUs: "code reuse" vs templating, metastability and blocking vs. non-blocking operations.
In Memoriam: Frederick P. Brooks, Jr. and The Mythical Man-Month
Fred Brooks’ The Mythical Man-Month is still a surprisingly sharp guide to software projects, and Jason Sachs shows why it matters even more than its old mainframe setting suggests. He revisits Brooks’ ideas on surgical teams, conceptual integrity, throwaway prototypes, and schedule estimation, then maps them to modern embedded and software engineering realities. The result is a tribute, a book review, and a practical reminder that roles, architecture, and testing still make or break delivery.
Elliptic Curve Cryptography - Extension Fields
An introduction to the pairing of points on elliptic curves. Point pairing normally requires curves over an extension field because the structure of an elliptic curve has two independent sets of points if it is large enough. The rules of pairings are described in a general way to show they can be useful for verification purposes.
Elliptic Curve Cryptography
Secure online communications require encryption. One standard is AES (Advanced Encryption Standard) from NIST. But for this to work, both sides need the same key for encryption and decryption. This is called Private Key encryption.
Linear Feedback Shift Registers for the Uninitiated, Part II: libgf2 and Primitive Polynomials
Jason Sachs digs into practical finite-field arithmetic for LFSRs, using his libgf2 Python library as the hands-on guide. He shows how to test whether a polynomial is primitive, why that matters for maximal-length sequences, and how the library implements addition, multiplication, exponentiation, and shifts over GF(2). The post is both a math refresher and a code walkthrough for engineers who want to compute with LFSRs instead of just talk about them.
Review: Hands-On RTOS with Microcontrollers
Brian Amos's Hands-On RTOS with Microcontrollers delivers a practical path from bare-metal to full RTOS applications using FreeRTOS on an STM32 Nucleo-F767ZI board. The book combines clear explanations of concurrency, interrupts, and DMA with step-by-step toolchain setup and runnable examples that show building, debugging, monitoring, and scaling embedded systems for real projects and coursework.
Examining The Stack For Fun And Profit
Stack bloat can hide in short initialization paths, and this post walks through finding it with hands-on debugging. The author builds a tiny test program and uses gdb plus custom stack-helper scripts to scan, watch, and walk the stack. That process reveals getaddrinfo pulling in glibc DNS code that allocates large local buffers and uses alloca and PLT resolution, consuming roughly 11KB of stack.
Basic hand tools for electronics assembly
Though the software tools vary with different microcontrollers, many hardware tools are the same.
Linear Feedback Shift Registers for the Uninitiated, Part XVII: Reverse-Engineering the CRC
Jason Sachs shows how to pry CRC parameters out of a black-box oracle and reimplement the checksum yourself. By canceling the affine offsets, probing single-bit basis messages, and treating per-bit outputs as LFSR sequences, you can recover the generator polynomial, bit and byte order, and init/final XOR values. The post includes working Python code, a 4-message shortcut, and real-world tests such as zlib CRC32.
Linear Feedback Shift Registers for the Uninitiated, Part V: Difficult Discrete Logarithms and Pollard's Kangaroo Method
Most discrete-log problems are hopeless by brute force, but clever algorithms cut that cost to feasible levels. This installment walks through baby-step giant-step, Pollard’s rho and kangaroo methods, and how Silver-Pohlig-Hellman and index calculus leverage group structure to speed attacks on GF(2^n) fields. Jason Sachs includes Python examples, heuristics, and complexity nuggets so you can see when each method is practical.
Coding Step 2 - Source Control
Version control felt unnecessary to Stephen Friederichs when he was starting out, but this article shows why Git quickly becomes essential even for solo firmware work. He walks through installing Git on Windows, creating a repository for a simple Hello World project, making the first commit, and using reset to recover from a broken build. The post also captures a few early habits that save a lot of pain later, like committing often and keeping important files under source control.
Oscilloscope review: Hameg HMO2024
Jason Sachs tests the Hameg HMO2024, a 200MHz 4-channel mixed-signal oscilloscope that promises Agilent-like features at a lower price. He finds strong analog noise performance, useful hi-res and zoom modes, and inexpensive serial-decode options, but warns of clumsy digital-input handling, awkward data-transfer software, and missing per-channel thresholds and Ethernet waveform export. The review helps budget-conscious embedded engineers weigh the trade-offs.
Libgpiod - Toggling GPIOs The Right Way In Embedded Linux
Accessing GPIOs through sysfs is simple but fragile, causing race conditions when multiple userspace processes touch the same line. This post explains libgpiod, introduced in Linux 4.8, and shows concise Python examples on a Toradex Verdin iMX8M Plus for requesting lines, tagging the consumer, using active_low flags, and reading or driving values. Learn why libgpiod provides safer, atomic GPIO handling.
Linear Feedback Shift Registers for the Uninitiated, Part XIV: Gold Codes
Gold codes solve a practical spread-spectrum problem, sharing one PRBS across many transmitters eventually runs into ugly synchronization and correlation issues. Jason Sachs walks through why shifted copies of a single LFSR sequence are not enough, then shows how preferred pairs of m-sequences create a family of Gold codes with bounded cross-correlation. The post wraps with Python experiments and a UART DSSS demo that decodes multiple overlapping messages cleanly.
Sensors Expo - Trip Report & My Best Video Yet!
Stephane Boucher turns a first-time Sensors Expo visit into a fun travelogue and a polished conference highlights video. He mixes candid trip anecdotes from Moncton to San Jose, electric-scooter discoveries, Santa Cruz detours, Airbnb tips, and on-the-floor expo footage. The post culminates in what he calls his best highlights reel yet, plus a follow-up video focused on embedded and IoT.




















