EmbeddedRelated.com

Steve Branam (@sdbranam)

Embedded software engineer, primarily for IoT and communications-related systems.

Some Embedded System Software Design Resources

Steve BranamSteve Branam July 23, 2024

Embedded systems span many architectures and run-times, so there is no single definitive resource. This curated list brings together practical embedded-focused books by Elecia White and Jacob Beningo, general design guidance from Robert Martin, and a TDD primer by James W. Grenning, plus concrete advice on BDD-style TDD and off-target testing. Skim the list in a day, then try the techniques hands-on.


Bit-Banged Async Serial Output And Disciplined Engineering

Steve BranamSteve Branam August 3, 2023

This post covers implementing asynchronous serial output directly on a GPIO with bit-banging. This can be a valuable debug tool for getting information out of a system. It also covers disciplined engineering, using the bit-banging module as an example and template you can apply to other projects.


The Missing Agile Conversation

Steve BranamSteve Branam May 15, 2023

In this article, we learn about Agile practices and how they use stories as units of development. Stories consist of a brief description, one to a few sentences. They don’t contain details sufficient to allow a developer to implement them. The Agile practice is to defer details as long as possible because conditions may change. When a developer takes on a story to implement, that’s the time for them to perform the work that has been deferred. They do this by having a conversation, a series of specific discussions working closely with the various SME’s (Subject Matter Experts) who have information relevant to the story.


Review: Embedded Software Design: A Practical Approach to Architecture, Processes, and Coding Techniques

Steve BranamSteve Branam February 28, 2023

Jacob Beningo's Embedded Software Design is a practical, discipline-first guide to building reliable embedded systems. It frames development around a software triad: architecture, Agile/DevOps processes, and coding techniques, with security integrated from the start. The book mixes principles with hands-on recipes and includes appendices that walk through GitLab CI/CD and TDD examples you can reuse on real projects.


Soft Skills For Embedded Systems Software Developers

Steve BranamSteve Branam October 18, 20222 comments

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.


Skills For Embedded Systems Software Developers

Steve BranamSteve Branam August 9, 2022

Embedded development demands a broad, practical skillset, and this post lays out the core knowledge employers expect across software, hardware, and tooling. It highlights essential languages like C, low-level concepts such as interrupts and RTOS, plus hardware skills like debugging with JTAG and using oscilloscopes. You also get realistic timelines, hands on study advice, and resource pointers to build a portfolio that proves you can ship reliable firmware.


Learning A New Microcontroller

Steve BranamSteve Branam July 3, 20221 comment

Learning a new microcontroller becomes manageable with a repeatable, stepwise process that focuses on common peripherals, tools, and example programs. This post lays out hands-on exercises from blinky and UART echoes through I2C/SPI, PWM and ADC to DMA and RTOS variations, and shows how to evolve prototype code into reusable HAL and OSAL layers. Practical tips cover hardware setup, logic analyzers, and keeping an engineering notebook.


Review: Modern Software Engineering

Steve BranamSteve Branam December 27, 20212 comments

Long-lived branches, manual releases, and slow feedback waste engineering time. This review of three Dave Farley books distills a practical playbook: continuous delivery pipelines, trunk-based development, and disciplined TDD to keep trunk always releasable. It shows how fast, automated feedback at every stage shrinks cycle time, reduces merge pain, and makes teams far more productive.


VolksEEG: Rust Development On Adafruit nRF52840 Feather Express

Steve BranamSteve Branam December 13, 2021

Setting up Rust embedded development on an Adafruit Feather nRF52840 Express inside a VS Code devcontainer can save time, but the toolchain has a few gotchas. This post walks through using the VolksEEG prototype echo-server to verify the USB serial path, configuring probe-rs with J-Link and OpenOCD for on-chip debugging, and diagnosing a container build error fixed by adding libudev-dev. Expect step-by-step commands and troubleshooting tips.


Working With ESP-C3-32S-Kit Dev Board

Steve BranamSteve Branam November 24, 20211 comment

This hands-on guide walks through setting up the ESP-C3-32S-Kit with ESP-IDF, from installing the toolchain to flashing and monitoring a hello-world example. It shows JTAG debugging with OpenOCD and GDB, how to use the NimBLE BLE stack for peripheral and central roles, and how to capture and filter BLE traffic with a Nordic sniffer and Wireshark so you can inspect pairing and connection behavior.


Learning Rust For Embedded Systems

Steve BranamSteve Branam November 12, 2021

Rust eliminates whole classes of memory and concurrency bugs, making it a compelling choice for embedded projects, and the author recommends it for the VolksEEG project after a rapid evaluation. The post connects Rust fundamentals such as ownership and borrowing, RAII, traits, and unsafe blocks to familiar embedded patterns. It also provides a curated on-ramp of videos, books, and tools like Cargo, RTIC, and probe-rs to get hands-on quickly.


Six Software Design Tools

Steve BranamSteve Branam November 5, 20211 comment

Software design need not be mysterious, these six practical tools give a disciplined way to shape readable, testable, and maintainable code. The post walks through naming (DAMP), duplication control (DRY), complexity metrics (MCC), SOLID principles, API layering, and test-driven development, showing how each idea applies across languages and embedded systems. Use them as checklists for code reviews and design thinking.


VolksEEG Project: Initial Hardware Architecture

Steve BranamSteve Branam November 2, 20211 comment

The VolksEEG prototype pairs an Adafruit Feather nRF52840 Sense MCU with an ADS1299 analog front end, organized into non-isolated and isolated domains to protect patients. The post explains why isolation is required, which chips bridge the domains, and why simple, high-level power and signal diagrams help clarify the KiCad schematics for engineers and reviewers.


Introducing The VolksEEG Project

Steve BranamSteve Branam October 31, 2021

VolksEEG is an open-source effort to build an FDA-cleared clinical EEG and publish every design so others can manufacture it. The volunteer-driven project centers on the TI ADS1299 8-channel, 24-bit biopotential ADC and combines medical and electrical engineering expertise to confront regulatory, safety, and usability challenges. This blog series will document technical decisions, isolation and safety concerns, and ways engineers can contribute.


Video-Based STEM Embedded Systems Curriculum, Part 2

Steve BranamSteve Branam October 25, 2021

Part 2 delivers three ready-to-run lesson plans for a video-based STEM embedded course, starting with Arduino hands-on projects using an Elegoo UNO starter kit and Bryan Vines video walkthroughs that explain the code. It then teaches Fritzing for pictorial and schematic circuit drawings, followed by Collin Cunningham videos that cover resistors, capacitors, transistors, schematics, and other core components. The sequence stresses design, draw, build, test to keep students engaged.


Video-Based STEM Embedded Systems Curriculum, Part 1

Steve BranamSteve Branam October 24, 2021

This curriculum shows how to teach introductory embedded systems using free online videos and low-cost kits, suitable for middle-school, high-school, college, or adult learners. It packages curated educator recommendations, a per-student equipment and book list, essential free software, and core lesson topics like Arduino, MicroPython, Kicad board design, soldering, and RTOS basics. The approach stresses hands-on labs, safety, backups, mentorship, and adapting to local budgets.


Review: Prototype to Product

Steve BranamSteve Branam October 16, 2021

Alan Cohen's Prototype to Product is a practical systems engineering playbook for anyone taking an embedded idea to market. The review emphasizes uncovering surprises early, disciplined planning, and cross-discipline collaboration across electrical, mechanical, software, and manufacturing domains. It highlights concrete topics such as prototyping, DFM/DFA, staged testing, and regulatory considerations that help avoid costly late-stage rework.


Learning From Engineering Failures

Steve BranamSteve Branam July 29, 2021

Engineering failures are the best teachers when you study them with curiosity and rigor. This post gathers the author's approach and curated resources for learning from incidents, with an emphasis on treating human error as a symptom of layered systemic problems rather than the root cause. Read on for practical guidance, longtime sources like Risks Digest, and a mindset: trust nothing, and verify.


Acceptance Tests vs. TDD

Steve BranamSteve Branam July 17, 2021

Writing the tests in a Jira ticket is not the same as doing TDD, this post explains why. It separates acceptance tests, which define business completeness and are written up-front by the customer, from TDD unit tests, which developers write incrementally as a design and feedback tool. Readable advice covers test speed, avoiding brittle tests, and how both test types fit into CI and maintainable embedded development.


My Guiding Principles As An Engineer

Steve BranamSteve Branam February 27, 2021

An embedded-systems veteran distills 40 years of experience into practical guiding principles for engineers. The post mixes classic quotes with hard-earned aphorisms focused on testing, instrumentation, planning, and integrity, showing how persistence, preparation, and evidence-based thinking prevent mistakes. Read it for concise, actionable habits you can apply to firmware, hardware-software integration, and team practices.


Dumb Embedded System Mistakes: Running The Wrong Code

Steve BranamSteve Branam February 14, 20212 comments

Running the wrong firmware on a board can waste hours. This post shows a practical marking strategy for embedded Linux that embeds searchable proof-of-life strings into kernel, rootfs, overlay, and application code. It walks through choosing early-boot log points, using compile-time timestamps, and a small shell script to set, find, and clear marks so you can verify builds before flashing.


Advice For High School Students

Steve BranamSteve Branam January 24, 2021

Short attention span engineering is a recipe for disaster, so this post gives practical, no-nonsense advice to high school students thinking about engineering majors. It explains how to build college-ready study habits, why hands-on projects like Arduino or Raspberry Pi matter, which math you should focus on, and which soft skills will make you a reliable engineer.


Your Career Archive

Steve BranamSteve Branam December 30, 2020

Background checks have turned routine hiring into a paperwork sprint, and many engineers find themselves scrambling for proof. This post shows how to build a practical career archive of job records, education documents, and tax/payroll forms, plus advice on redaction, storage formats, and backups. Capture verifiable details when you get them to avoid last-minute stress and make future vetting simple and reliable.


Review: Hands-On RTOS with Microcontrollers

Steve BranamSteve Branam September 20, 20202 comments

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.


Review: Project Management for the Unofficial Project Manager

Steve BranamSteve Branam July 26, 2020

You don't need a PMP to manage effective engineering projects. Project Management for the Unofficial Project Manager, by Kory Kogon, Suzette Blakemore, and James Wood, distills PMBOK concepts into readable, lightweight procedures for people who end up coordinating work without formal training. The book emphasizes people-first behaviors, simple process groups, and concise documentation so engineers can manage risk, scope, and change without heavy bureaucracy.


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.


The Self-Directed Virtual Internship

Steve BranamSteve Branam May 3, 2020

Summer internships may be gone, but your career momentum does not have to be. This post shows how to design a self-directed, unpaid virtual internship in embedded systems, with concrete options: project-based builds, tutorials, reports, or open-source contributions. Follow the one-page plan approach, treat it like a real remote job, and produce demonstrable deliverables to show employers.


Simple Automated Log Processing

Steve BranamSteve Branam April 25, 2020

You don't need heavy tools to make sense of megabytes of embedded logs. This post shows a practical bash script that trims noisy serial and semihosting output, samples hourly heap-profile lines, and converts them into a CSV ready for graphing. It gives a simple, adaptable pattern you can reuse to spot memory leaks or triage recurring log signatures quickly.


Some Advice For Working From Home

Steve BranamSteve Branam March 28, 20201 comment

Treat working from home like an intentional, repeatable process rather than a perk. Keep regular hours, a dedicated workspace, and clear household boundaries to preserve productivity and personal time. This post bundles practical setup and network tips, cybersecurity reminders, and quick mental-health habits such as exercise, meditation, and low-stress hobbies, with a reminder about social responsibility when teams shift to remote work.


Examining The Stack For Fun And Profit

Steve BranamSteve Branam February 19, 20201 comment

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.


So You Want To Be An Embedded Systems Developer

Steve BranamSteve Branam February 5, 20205 comments

This is a practical, boots-on-the-ground roadmap of books, videos, and inexpensive dev boards you can actually use to become an embedded systems developer. It contrasts hobbyist platforms like Arduino and Raspberry Pi with professional ARM-based evaluation kits, lists must-read resources for firmware, real-time systems, and testing, and emphasizes hands-on practice and the safety responsibilities of working with real-world devices.


Re: So, You Want to be an Engineering Manager?

Reply posted 5 years ago (10/03/2020)
I'll give another vote for "Peopleware", and right along with it, Fred Brooks' "The Mythical Man-Month", 20th anniversary edition.I briefly mentioned these in my...

Re: Custom LCD

Reply posted 6 years ago (07/26/2020)
You might try contacting Adafruit. Not that they would be able to make one, but they might have the right contacts. They might know a guy who knows a guy (or gal!)...
I would highly recommend you investigate Miro Samek's FSM (Finite State Machine) approach as an alternative to an RTOS. Your project sounds like a heavily event-driven...

Re: Covid-19 Stories

Reply posted 6 years ago (03/25/2020)
I'm in Massachusetts. I've done enough random days of working from home that this isn't much of a change for me other than now doing it every day. As a result, I...

Re: Funny or Not Funny?

Reply posted 6 years ago (02/13/2020)
You're instinct was good, because it made you stop and think, and then ask for a second opinion! So you're able to counteract your inheritance!

Re: Funny or Not Funny?

Reply posted 6 years ago (02/13/2020)
While I do appreciate the humor and the line of jokes that could address computer vs. biological viruses, this is unequivocally bad taste. People have died, tens...

Use this form to contact sdbranam

Before you can contact a member of the *Related Sites:

  • You must be logged in (register here)
  • You must confirm you email address