An Embedded-friendly printf Implementation

We've worked on numerous embedded projects which avoid the use of printf() due to concerns about binary size bloat. Instead, teams will create their own non-standard printf alternative. A classic example is the Arduino SDK's Print class, which requires users to split print statements into multiple function calls to support different variable display formats. Rather …

Enforce Correct Integer Arithmetic using the C++ Safe Numerics Library

The Boost Safe Numerics library, created by Robert Ramey aims to enforce correct mathematical operations with the C++ language. Why are safer numeric operations needed? C++ inherited the behavior of the integral types (int, unsigned, long, etc.) from the C language, where they were designed to map closely to the underlying processor hardware. The types …

October 2018: EA Framework Announcement & More Embedded Libraries

1 October 2018 by Phillip Johnston • Last updated 27 September 2019 Welcome to the October 2018 edition of the Embedded Artistry Newsletter! This is a monthly newsletter of curated and original content to help you build superior embedded systems. This newsletter is intended to supplement the website and covers topics not mentioned there. This month we’ll cover: Embedded Artistry’s C++ Framework ProjectThree more projects embedded developers should be aware ofEmbedded articles from around the webWebsite updates Embedded Artistry Framework Project Over the past two years in San Francisco, I’ve had the opportunity to consult with dozens of companies and …

EMB2: A C/C++ Framework for Multi-core and Multi-chip Embedded Systems

EMB2 is a C/C++ framework developed by Siemens and the University of Houston. EMB2 provides generic building blocks for building multi-core or multi-chip embedded applications, including basic parallel algorithms, concurrent data structures, and application skeletons. Since EMB2 is targeted for embedded applications, it provides soft-real-time support, predictable memory consumption (no dynamic memory allocations after startup), …

crect: A C++14 Library for Generating a Stack Resource Policy Scheduler at Compile Time

The crect project (pronounced correct) is a C++14 library for generating a scheduler for Cortex-M microcontrollers at compile-time. crect uses the Cortex-M's Nested Vector Interrupt Controller (NVIC) to implement a Stack Resource Policy (SRP) scheduler which guarantees deadlock-free and data-race-free execution. crect is built upon the Kvasir Meta-programming Library, which is also the foundation of …