EmbeddedRelated.com

Optimizing Hardware Design: Reducing Iterations with DSM

Emmanuel OdunladeEmmanuel Odunlade March 3, 2025

Often, product teams curate feature roadmaps that fail to account for the interdependencies in product components. For this article, I wrote about how system architecture tools like Design(dependency) Structure matrix (DSM) can be used to evaluate feature roadmaps to avoid the purgatory of change propagation and accompanying endless Iteration loops. These iteration loops are sometimes affordable (manageable) in software development (Agile saves lives), but for hardware teams - especially small product teams and startups - the lost time, and money is the stuff of which product graves are made.


3 Tips for Developing Embedded Systems with AI

Jacob BeningoJacob Beningo March 1, 2025

Explore how to leverage AI in developing embedded systems with three practical tips, learn why documenting your workflows, supercharging testing and debugging, and adopting AI-assisted code generation can save time, reduce errors, and boost performance in your projects, and discover actionable insights to streamline development in resource-constrained environments, this blog explains how to prepare for AI integration while keeping the expertise of experienced engineers intact, offering real-world examples that show how even incremental AI adoption can revolutionize your development process, whether you’re new to AI or seeking to enhance existing practices, these strategies provide a clear roadmap to build smarter, more efficient embedded systems using AI.


Static or static

Colin WallsColin Walls February 24, 2025

The keyword static in C and C++ has multiple uses, which are not always well understood.


The Most Annoying Sound

Ido GendelIdo Gendel February 17, 2025

Independent consultants often face requests and requirements that go beyond the technicalities of software and hardware. Designing user interfaces is a common example, and even though most of us are not UI experts, we still have to get it right, otherwise the users may get annoyed, and the product will fail. However, what happens when we're asked explicitly to annoy users? Here's a true story about such a case.


Sheep Bridge: In Praise of Generalists and System Engineers

Jason SachsJason Sachs February 11, 2025

Jason Sachs makes the case for hiring generalists and valuing system engineers, because they do more than take a high-level view. He explains how multi-scale thinking, arbitration among subsystems, and clear visualization prevent integration failures, using concrete examples from battery-voltage tradeoffs, Sheep Bridge map lessons, and encoder signal checks. Read this for practical rules that keep embedded projects coherent.


OS influence on power consumption

Colin WallsColin Walls January 27, 20251 comment

Power consumption of an embedded system may be influenced in software in general, but selection of an operating system can be key.


The Teardown Conference Call for Proposals is Open for Another Week!

Nathan JonesNathan Jones January 6, 2025

The Teardown conference "Call for Proposals" goes until Wednesday, January 15th! Get yours in soon!


Scorchers, Part 4: Burned by the Happy Path (Simon Says)

Jason SachsJason Sachs December 31, 2024

Designs that only work along the happy path break in real use, causing frustration and sometimes safety risks. Jason M. Sachs uses everyday examples from microwaves to car Auto Park logic to show how mutable software and physical state create brittle behavior. He outlines practical firmware fixes such as clear state machines, sensor or user-driven resynchronization, soft-start delays, and a ‘‘Drunken Happy Path’’ fuzzing approach to find real-world failure modes.


Using a board with NuttX RTOS as an RS-485 / Modbus Slave Device

Alan C AssisAlan C Assis December 22, 2024

This practical walk-through shows how to turn a NuttX-equipped board into an RS-485 Modbus RTU slave using a cheap MAX485 transceiver and an STM32F4Discovery board. It explains why a simple UART plus a GPIO for DE/RE is enough, why the RP2040 needs special handling, and gives step-by-step configuration in NuttX, wiring for the transceiver, and a quick test using FreeModbus and mbpoll.


On optimizing manual soldering

Ido GendelIdo Gendel December 9, 2024

When faced with manual soldering of thousands of components, speed and efficiency become pivotal. Here are some takeaways from my own experience attempting to optimize such a process.


An overview of Linux Boot Process for Embedded Systems

Kunal SinghKunal Singh December 25, 200811 comments

Booting Linux on embedded hardware collapses PC boot stages into a single bootloader, and understanding the early steps helps troubleshoot low-level failures. Kunal Singh breaks down the sequence from the bootstrap firmware and primary/secondary bootloaders through zImage decompression, MMU and page table setup, start_kernel, and the initrd pivot to the root filesystem. Practical focus favors ARM examples.


Boot sequence for an ARM based embedded system -2

 DM DM April 6, 201213 comments

DM walks through the concrete steps of an ARM system startup, from the reset vector to handing control to C. The post explains what the early assembly reset code must do: set system registers, initialize stacks, set up the MMU, copy .data and clear .bss, and remap the vector table into RAM for faster interrupts. It finishes with external memory bring-up and loading an OS image.


Introduction to Microcontrollers - Further Beginnings

Mike SilvaMike Silva September 1, 20134 comments

Mike Silva walks through the CPU plumbing every embedded engineer needs to know before writing their first LED blinky. The post explains registers (data, address, stack pointer, link), the fetch-execute cycle, and the main instruction classes such as arithmetic, logic, shifts, branches, and call/return mechanics. Read this to see how C maps to CPU operations and why stack versus link register choices matter.


Lost Secrets of the H-Bridge, Part IV: DC Link Decoupling and Why Electrolytic Capacitors Are Not Enough

Jason SachsJason Sachs April 29, 20147 comments

Switching H-bridges can kick nasty voltage spikes onto the DC link, and a single electrolytic capacitor rarely fixes the problem. Jason Sachs uses simulations and practical PCB layout advice to show how a three-tier decoupling strategy — bulk electrolytic, mid-value ceramics or film, and many small HF bypass capacitors plus PCB plane capacitance — tames spikes, reduces EMI, and avoids harmful resonances when parts and vias are placed correctly.


Absolute Beginner's Guide To Getting Started With Raspberry Pi

Steve BranamSteve Branam July 12, 2020

Getting started with Raspberry Pi can feel overwhelming. This guide strips the noise and shows the simplest path from unboxing to a working desktop. It recommends buying a preloaded NOOBS microSD to avoid imaging hassles, lists exact parts and suppliers, and walks through booting, recovery, and making a backup. If you want embedded electronics it also lists starter parts and ESD safety tips.


Arduino robotics #1 - motor control

Lonnie HoneycuttLonnie Honeycutt October 13, 20133 comments

Clusterbot is Lonnie Honeycutt's first autonomous robot, built on a tight budget to teach practical motor control. This post explains why you cannot drive motors directly from an Arduino, how to wire and enable the Toshiba TB6612FNG motor driver, and offers hands-on PWM and calibration tips for getting smooth motion from cheap Mabuchi FA-130 toy motors.


Creating a Hardware Abstraction Layer (HAL) in C

Jacob BeningoJacob Beningo October 23, 20233 comments

In my last post, C to C++: Using Abstract Interfaces to Create Hardware Abstraction Layers (HAL), I discussed how vital hardware abstraction layers are and how to use a C++ abstract interface to create them. You may be thinking, that’s great for C++, but I work in C! How do I create a HAL that can easily swap in and out different drivers? In today’s post, I will walk through exactly how to do that while using the I2C bus as an example.


How to Estimate Encoder Velocity Without Making Stupid Mistakes: Part II (Tracking Loops and PLLs)

Jason SachsJason Sachs November 17, 201313 comments

Jason Sachs explains why simple differentiation of encoder counts often fails and how tracking loops and PLLs give more robust velocity estimates. Using a pendulum thought experiment and Python examples, he shows how a PI-based tracking loop reduces noise and eliminates steady-state ramp error, and why vector PLLs with quadrature mixing avoid cycle slips and atan2 unwrap pitfalls in noisy or analog sensing.


Embedded Systems Roadmaps

Nathan JonesNathan Jones November 9, 2023

What skills should every embedded systems engineer have? What should you study next to improve yourself as an embedded systems engineer? In this article I'll share with you a few lists from well-respected sources that seek to answer these questions, with the hope of helping provide you a path to mastery. Whether you've only just finished your first Arduino project or you've been building embedded systems for decades, I believe there's something in here for everyone to help improve themselves as embedded systems engineers.


PID Without a PhD

Tim WescottTim Wescott April 26, 201612 comments

You do not need control theory to implement useful PID loops in embedded projects. Tim Wescott walks through simple, ready-to-use C code, clear explanations of P, I and D terms, and a practical tuning recipe you can apply to motors, precision actuators, and heaters. The article highlights anti-windup, sampling-rate guidance, and when to call in a control expert.


DSPRelated and EmbeddedRelated now on Facebook & I will be at EE Live!

Stephane BoucherStephane Boucher February 27, 20148 comments

Stephane Boucher announces two practical updates for DSPRelated readers. He launched Facebook pages for DSPRelated and EmbeddedRelated so members can get faster updates, and he will be attending EE Live in San Jose from March 30 to April 3 with a $100-off promo code for early registration. He also asks the community for ideas on how to make his conference coverage most useful.


Free Embedded Systems Books

Stephane BoucherStephane Boucher May 28, 2013

Want a one-stop list of legally free embedded systems books online? Stephane Boucher launched a collaborative Google Docs experiment to crowdsource the best titles made available by authors and publishers, not pirates. Add missing entries, prune unsuitable links, and help build a curated, shareable collection of trusted embedded-reading material for firmware engineers and embedded Linux developers.


Collaborative Writing Experiment: What are your favorite Embedded Systems Online Resources?

Stephane BoucherStephane Boucher May 20, 20139 comments

Stephane Boucher invited the EmbeddedRelated community to co-create a live, crowd-sourced list of favorite embedded systems online resources using a Google Docs document. Readers could add links, vote by adding pluses, and watch edits appear in real time, while the author monitored for spam, planned moderation, and later closed the document after collecting contributions and trying to boost participation via Reddit/ece. It is a hands-on experiment in community curation.


Success Story

Stephane BoucherStephane Boucher April 24, 20132 comments

A single C programming article just set a new pageview record across the related sites, and the reason is pretty clear. Stephen Friederichs’s Data Hiding in C caught fire on Reddit, drew more than 7,000 readers, and even pushed a companion code snippet into the reward max. The post is also a quick look at how good technical writing can turn into real visibility and payment.


Code Snippets Winners Announced

Stephane BoucherStephane Boucher April 12, 20132 comments

Stephane Boucher announces the winners of EmbeddedRelated’s code snippet reward program after reviewing more than 50 submissions. The selected snippets include a software timer system, MSP430 SPI master IO without interrupts, base64 encoding, a debug print trace macro, and bit manipulation macros. It is also a reminder that submissions are still open, with cash rewards still available for approved snippets.


Now on Twitter + More Code Snippets Incentives

Stephane BoucherStephane Boucher February 28, 20134 comments

Stephane Boucher announces that EmbeddedRelated, DSPRelated, and FPGARelated are now on Twitter, with occasional timed giveaways for early visitors. He also highlights the new code snippets section, which has ten submissions and a rewards program: approved snippets can earn up to $50, and five standout March submissions will receive an extra $100 each. The post invites engineers to share useful embedded code.


New Code Snippet Section

Stephane BoucherStephane Boucher January 15, 20134 comments

Stephane Boucher launches a code snippet section on EmbeddedRelated, inviting embedded engineers to share short, useful code. Contributors get $10 for each approved submission via PayPal, plus performance bonuses: $10 when a snippet reaches 100 pageviews and $30 at 500 pageviews through 2013. It's an easy way to get credit and a small reward for reusable firmware and microcontroller code.


Two jobs

Stephane BoucherStephane Boucher December 5, 201223 comments

Stephane Boucher explains why EmbeddedRelated went quiet for a few months after a volunteer project demanded more of his time. He and his wife organized a clown-gymnastics show with 15 kids, sold more than 700 of 800 tickets, and raised $2,700 for the Tree of Hope. Now the shows are done and he plans to resume regular posting with new site features.


October winner announced

Stephane BoucherStephane Boucher November 15, 20121 comment

EmbeddedRelated is wrapping up another monthly draw for forum users who helped rate old threads and clean up the archives. For October, the new iPod Touch goes to hssathya, and Stephane Boucher also looks ahead to the next prize, an iPad mini, tied to ratings submitted in November and December. It is a simple incentive, but it keeps the forums tidier and the community engaged.


Behold, the New Comments System!

Stephane BoucherStephane Boucher September 18, 201229 comments

EmbeddedRelated has a new commenting system, and it is built to feel much smoother for readers. Stephane Boucher says it uses Ajax so comments post without reloading the page, and it now supports threaded replies for cleaner discussions. He also notes that guests can still comment, as long as they confirm their email address.