Virtual Devices in Embedded Systems Software

The most common challenge we encounter on embedded software projects is the software’s dependency on the hardware. This dependency primarily manifests in embedded software projects in three ways: A belief that firmware development cannot begin in earnest until hardware is available The tendency to use the interfaces provided by an SDK throughout our programs Referencing …

A Classic Paper on Designing Hardware Abstractions for Embedded Systems

The central theme in our Practical Architecture series is exploring ways that we can design our systems to reduce the costs of change. We've worked with many teams who are asked to change the processor or RTOS, only to realize that their entire program must be rewritten because SDK functions are used throughout the code …

Managing Coupling with the Mediator and Facade Patterns

In Leveraging Our Build Systems to Support Portability, I described techniques we can use for enforcing the use of proper abstractions in our embedded programs. By using these techniques, we place ourselves in a better position to respond to changes in the underlying hardware. Components can be quickly swapped out, and code changes are only …

Leveraging Our Build Systems to Support Portability

We’ve shared practical decoupling techniques and discussed lightweight abstractions that help us create portable firmware modules. These techniques help us create portable software, but they don’t prevent anyone directly using vendor SDKs and native OS function calls in portable modules. In this article we will share techniques that leverage build systems and repository structures to enforce loose coupling between firmware and …

Prototyping and Design for Change: Lightweight Architectural Strategies

Tom Anderson asked this excellent question in the Embedded.fm Slack group: Many designs start as feasibility investigations using Arduino and then move to a lower power or otherwise better embedded platform. Is there anything that these Arduino practitioners can do to make this transition easier? As we outlined in “Musings on the Tight Coupling Between …