Building Embedded Systems: Programmable Hardware
This is a book about developing the software and hardware you never think about. We're talking about the nitty-gritty behind the buttons on your microwave, inside your thermostat, inside the keyboard used to type this description, and even running the monitor on which you are reading it now. Such stuff is termed embedded systems, and this book shows how to design and develop embedded systems at a professional level. Because yes, many people quietly make a successful career doing just that.
Building embedded systems can be both fun and intimidating. Putting together an embedded system requires skill sets from multiple engineering disciplines, from software and hardware in particular. Building Embedded Systems is a book about helping you do things in the right way from the beginning of your first project:
Whatever your background is, Building Embedded Systems is the perfect book to fill in any knowledge gaps and get you started in a career programming for everyday devices. Author Changyi Gu brings more than fifteen years of experience in working his way up the ladder in the field of embedded systems. He brings knowledge of numerous approaches to embedded systems design, including the System on Programmable Chips (SOPC) approach that is currently growing to dominate the field. His knowledge and experience make Building Embedded Systems an excellent book for anyone wanting to enter the field, or even just to do some embedded programming as a side project.
Why Read This Book
You will learn how to bridge hardware and software to build real-world embedded products, with a strong practical focus on firmware, RTOS integration, and programmable hardware. The book emphasizes hands-on techniques for ARM and RISC‑V platforms, debugging and validation, and hardware–software co‑design so you can ship reliable, constraint‑aware systems.
Who Will Benefit
Embedded software and hardware engineers (early career to mid‑career) who want to design and ship real products by mastering firmware, RTOS usage, and hardware–software integration on ARM/RISC‑V and similar platforms.
Level: Intermediate — Prerequisites: Basic C programming, fundamental digital electronics (logic, ADC/DAC basics), and familiarity with basic microcontroller concepts and a UNIX-like development workflow.
Key Takeaways
- Design hardware–software interfaces using GPIO, timers, ADC/DAC, and common peripherals
- Implement and optimize firmware for microcontrollers (ARM, RISC‑V, AVR) in C and assembly
- Integrate and configure an RTOS to manage tasks, synchronization, and resource constraints
- Develop device drivers and understand boot and bring‑up for embedded Linux
- Optimize for power, memory, and real‑time performance in constrained environments
- Debug and validate embedded systems using JTAG, GDB, logic analyzers, unit tests, and CI practices
Topics Covered
- Introduction to Embedded Systems and Design Constraints
- Microcontroller and Processor Architectures (ARM, RISC‑V, AVR)
- Hardware Fundamentals: GPIO, ADC, DAC, Timers, and Interrupts
- Peripherals and Communication: UART, SPI, I2C, CAN, Ethernet
- Firmware Architecture, Build Systems, and Toolchains
- Real‑Time Operating Systems: Concepts, Scheduling, and APIs
- Device Drivers and Low‑Level Hardware Access
- Embedded Linux: Boot, Kernel, and User‑Space Integration
- Power Management and Low‑Power Design Techniques
- Debugging, Testing, and Validation of Embedded Firmware
- IoT Connectivity, Security Basics, and OTA Considerations
- Hardware–Software Co‑Design and Case Studies
- Appendices: PCB basics, Test Equipment, and Reference Toolchains
Languages, Platforms & Tools
How It Compares
Similar in practical intent to Elecia White's 'Making Embedded Systems' but with a stronger emphasis on programmable hardware and hardware–software co‑design; compared to John Catsoulis's 'Designing Embedded Hardware' this book focuses more on firmware, RTOS, and integration than on detailed circuit design.













