EmbeddedRelated.com
The 2026 Embedded Online Conference

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.


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.


UML Statechart tip: Handling errors when entering a state

Matthew EshlemanMatthew Eshleman March 8, 20204 comments

Handling synchronous failures during state entry is trickier than the UML spec implies, because UML forbids transitions inside entry actions. This post compares three practical firmware patterns: explicit guarded transitions, self-posting a failure event to a LIFO queue, and converting the operation into an asynchronous service. It lays out benefits, downsides, and when each approach is appropriate for small teams, mid-sized projects, or larger firmware efforts.


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.


A brief overview of flight control software

Igor MišićIgor Mišić May 3, 20193 comments

Open source flight control software can feel like a maze of forks, retirements, and overlapping projects. In this post, the author builds a chart and comparison table to map how drone flight controller software evolved over time, using git commit history and repository data. It is a handy starting point if you want a quick overview of the current landscape before diving deeper.


Tenderfoot: Embedded Software and Firmware Specialties

Matthew EshlemanMatthew Eshleman August 20, 20179 comments

This post revisits an earlier Stack Overflow answer and breaks embedded firmware into practical specialties, from assembly optimization and device drivers to DSP, IoT networking, security, UI, and systems architecture. It outlines the core skills, tools, and math each specialty demands, and explains how product constraints and industries shape those roles. Newcomers get clear guidance on where to focus their learning and career development.


Tenderfoot: Recommended Reading

Matthew EshlemanMatthew Eshleman June 28, 20171 comment

Twenty years on, these are the books that turned an electrical engineer into an embedded software pro. Matthew Eshleman walks through influential reads from Code Complete to Practical Statecharts and Test Driven Development, explaining how each shaped his design, estimation, and testing practices. This short list is a practical starting point for 'tenderfoots' launching an embedded firmware career.


Tenderfoot: Introduction to Magic (Numbers that is...)

Matthew EshlemanMatthew Eshleman May 10, 20173 comments

A source-code review revealed repeated numeric literals in C, exposing the classic problem of magic numbers in embedded software. This post explains what magic numbers are, why they are especially painful in firmware, and simple fixes using named constants and comments tied to specs. Read this if you want clearer, safer embedded C code and fewer surprises during maintenance.


Favorite Tools: C++11 User-defined literals

Matthew EshlemanMatthew Eshleman November 14, 20161 comment

Units are a frequent source of bugs in embedded software, and keeping code aligned with product specs helps prevent mistakes. This post shows how C++11 user-defined literals let you write expressive, type-safe unit values like 80_MPH and convert them to meters per second using constexpr operator"" overloads. The conversion happens at compile time, improving readability and reducing reliance on macros or magic numbers.


Massive Open Online Courses ( Transforming education )

Jayaraman Kiruthi VasanJayaraman Kiruthi Vasan October 10, 20124 comments

Jayaraman Kiruthi Vasan outlines why MOOCs have become a practical way for embedded engineers and programmers to learn from top universities without quitting jobs. The post highlights platform options like Coursera, edX, Udacity and Khan Academy, explains how on-demand video lectures and clear prerequisites make targeted upskilling feasible, and points to DSP and Python courses useful for embedded design.


Embedded Developers, Ditch Your IDEs – Here’s Why!

Amar MahmutbegovicAmar Mahmutbegovic September 25, 20231 comment

Ditching your Integrated Development Environment (IDE) temporarily can be a transformative learning experience in embedded development. This post invites you to explore the underpinnings of IDEs by delving into alternative tools and processes like Makefile, CMake, Vim, GDB, and OpenOCD. Understanding these tools can demystify the background operations of IDEs, revealing the intricacies of compiling, linking, and debugging. This journey into the “under the hood” aspects of development is not just about learning new tools, but also about gaining a deeper appreciation for the convenience and efficiency that IDEs provide. By stepping out of your comfort zone and experimenting with these alternatives, you can sharpen your skills, enhance your knowledge, and possibly discover a more tailored and streamlined development experience. Whether you're a novice or a seasoned developer, this exploration promises insights and revelations that can elevate your embedded development journey.


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.


Tenderfoot: Introduction to Magic (Numbers that is...)

Matthew EshlemanMatthew Eshleman May 10, 20173 comments

A source-code review revealed repeated numeric literals in C, exposing the classic problem of magic numbers in embedded software. This post explains what magic numbers are, why they are especially painful in firmware, and simple fixes using named constants and comments tied to specs. Read this if you want clearer, safer embedded C code and fewer surprises during maintenance.


Moulding the Embedded Systems Engineers of Tomorrow: Adapting to a Constantly Transforming Technological Terrain

Lance HarvieLance Harvie June 26, 2023

Embedded systems engineers, previously focused on device architecture, are now steering the digital era, encompassing firmware, software, complex silicon, and cloud computing. To keep pace, mastery in new areas like cybersecurity, artificial intelligence (AI), machine learning (ML), and cloud technologies is critical. In today's highly connected world, security is foundational to design, necessitating knowledge in encryption, secure coding, and data protection laws. Additionally, expertise in AI and ML is essential for managing vast global data, requiring understanding of ethical implications and effective system design for data analysis. The advent of cloud technology mandates learning about cloud architectures and data security. In this fast-paced field, continuous learning and adapting these new skills is the key to staying relevant and spearheading future advancements.


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.


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.


A brief overview of flight control software

Igor MišićIgor Mišić May 3, 20193 comments

Open source flight control software can feel like a maze of forks, retirements, and overlapping projects. In this post, the author builds a chart and comparison table to map how drone flight controller software evolved over time, using git commit history and repository data. It is a handy starting point if you want a quick overview of the current landscape before diving deeper.


Favorite Tools: C++11 User-defined literals

Matthew EshlemanMatthew Eshleman November 14, 20161 comment

Units are a frequent source of bugs in embedded software, and keeping code aligned with product specs helps prevent mistakes. This post shows how C++11 user-defined literals let you write expressive, type-safe unit values like 80_MPH and convert them to meters per second using constexpr operator"" overloads. The conversion happens at compile time, improving readability and reducing reliance on macros or magic numbers.


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.


The 2026 Embedded Online Conference