A few years ago, embedded would have been a synonym for a small, resource-constrained, dedicated system. Nowadays, it's easy to find embedded systems with 1 GB or more of memory, plenty of storage, and dedicated hardware accelerators for things such as graphics, video, cryptography, and even high-end 64-bit multicore systems.
The embedded space is split between small microcontroller-based systems that are direct successors of the embedded systems from a few years back, and a new generation of embedded Linux-based systems which require a different set of tools, skills, and workflows to develop them.
Since the first edition of this book was published, the embedded Linux space has started to be influenced by young engineers with roots in the maker movement who are used to the rapid prototyping of products and ideas with Raspberry Pi-like hardware and PC-like distributions such as Debian, as well as the emergence of the Internet of Things as a disruptive force. This has brought the security of always-available, cloud-connected embedded devices to the front line, but has also blurred the line between professional embedded Linux systems and hobbyist products.
Still, professional embedded systems have a distinct set of requirements that are common to all of them:
- Industrial specifications, robustness, and reliability
- Dedicated optimized applications
- Security guarantees
- Remote and secure over-the-air updates
- Power management considerations
- Fast startup time
- Graphical user interfaces
- Some degree of real-time capabilities
- Long maintenance of line both for hardware and software, usually above 5 years.
When designing embedded products with the preceding requirements in mind, it is clear that educational hardware and desktop-oriented distributions are never going to be able to provide the level of control, configurability, and flexibility needed to design a professional embedded product.
This is why the Yocto Project remains the chosen embedded Linux builder for professional systems. It's flexibility and scalability allows it to build resource-constrained low-end to high-end embedded Linux products and adapt software accordingly.
In this new edition, the content has been completely reviewed and updated to the Yocto Project 2.4 release, and new content has been added to address some of the changes and trends that have appeared since the first edition was published.