Book Image

Embedded Programming with Modern C++ Cookbook

By : Igor Viarheichyk
Book Image

Embedded Programming with Modern C++ Cookbook

By: Igor Viarheichyk

Overview of this book

Developing applications for embedded systems may seem like a daunting task as developers face challenges related to limited memory, high power consumption, and maintaining real-time responses. This book is a collection of practical examples to explain how to develop applications for embedded boards and overcome the challenges that you may encounter while developing. The book will start with an introduction to embedded systems and how to set up the development environment. By teaching you to build your first embedded application, the book will help you progress from the basics to more complex concepts, such as debugging, logging, and profiling. Moving ahead, you will learn how to use specialized memory and custom allocators. From here, you will delve into recipes that will teach you how to work with the C++ memory model, atomic variables, and synchronization. The book will then take you through recipes on inter-process communication, data serialization, and timers. Finally, you will cover topics such as error handling and guidelines for real-time systems and safety-critical systems. By the end of this book, you will have become proficient in building robust and secure embedded applications with C++.
Table of Contents (17 chapters)

Data polling

The first approach to waiting for data from an external source is called polling. An application periodically queries the input port of an external device to check if it has new data. It is easy to implement but has significant downsides.

First, it wastes processor resources. Most poll calls report that data is not available yet and we need keep waiting. Since these calls do not lead to some data processing, it is waste of computing resources. Moreover, the polling interval should be short enough that it responds to an external event quickly. Developers should look for a compromise between the efficient utilization of processor power and reaction time.

Secondly, it makes the logic of the program convoluted. If the program should poll for events, for example, every 5 milliseconds, none of its subroutines should take longer than 5 milliseconds. As a result, developers...