Simplifying Concepts.
Accelerating Innovation.

Jacob's Blog

Jacob Beningo
|

Book Review: Embedded Systems Architecture

https://www.amazon.com/Embedded-Systems-Architecture-architectural-pragmatic/dp/1788832507/ref=sr_1_3_sspa?crid=1J6FWAR3NRPS5&keywords=embedded+systems+architecture&qid=1578604641&sprefix=embedded+systems+ar%2Caps%2C176&sr=8-3-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUExOUJMVTQyVTZVVkxVJmVuY3J5cHRlZElkPUEwODIwNTk2MVQ0TFlaTDA2STNaOCZlbmNyeXB0ZWRBZElkPUEwOTAyMTI4M0hVNFRCTFA4WlE0QSZ3aWRnZXROYW1lPXNwX2F0ZiZhY3Rpb249Y2xpY2tSZWRpcmVjdCZkb05vdExvZ0NsaWNrPXRydWU=#reader_1788832507

Author: Danielle Lacamera

Published: 2018

Target Audience: Entry-level Engineers (0 – 3 Years’ Experience)

Jacob’s Rating: 5 Stars

Embedded Systems Architecture is an excellent book for entry-level engineers who are looking to gain a deeper understanding of microcontroller hardware. The book covers all the fundamentals that are often either quickly covered in college covers or skipped completely. For example, in Chapter 5 on memory management, the author starts at general level to describe the memory model for a microcontroller using the Arm Cortex-M as a reference. He examines the different memory regions, explains how they map into the linker file and then discusses in great detail the stack, heap and memory pools. At the very end of the chapter, memory protection units are even covered with example code on how to use them.

The book does a good job balancing the theory on how a microcontroller works with code examples on how to get things done. For example, in Chapter 4, The Boot-Up Procedure, each element of the boot process was discussed such as the .bss section initialization which was then followed by example code showing how the code in a real system looks. I particularly liked that the book showed an example how you can locate shared libraries that can be used by a bootloader and the application code in order to remove code duplication. This is something that I cover in my Bootloader Design Techniques for MCU’s course, but that I have not seen mentioned in any embedded systems literature that I recall reading.

Chapters 6 and 7 do a good job providing the reader with an overview and example code on how to work within microcontroller peripherals. There are several peripherals that are examined which include example code such as GPIO, SPI, UART and I2C. There is also some time spent on the watchdog timer which is a critical component in every embedded system and requires thoughtfulness to implement correctly. (You might want to check-out my watchdog paper here).

My favorite part of the book was Chapter 10, Parallel Tasks and Scheduling because it provides developers with a foundational understanding about how to schedule tasks in their system. The chapter covers how to write a task scheduler and goes beyond the simple, high-level treatment is often given to cooperative schedulers. The chapter demonstrates how to write a scheduler that treats each task, or thread, as its own semi-independent program and must make calls to yield the CPU. What’s interesting is the discussion about how to properly perform a context switch by saving and restoring the CPU registers for the tasks and maintain the states for various tasks. This chapter is important because it provides a developer with the foundational understanding necessary to write an RTOS or at least realize what is going on behind the scenes of a commercial or open source RTOS.

I would highly recommend that if you are new to embedded systems and are interested in learning more about low-level microcontroller hardware and software that you read this book. This is the most comprehensive book I’ve seen to date that covers microcontroller start-up, booting, memory and task management. If you are already an experienced developer, Chapter 10 will be the most interesting to you, but also may not be necessary unless you have a interest in scheduling algorithms and how scheduling works behind the scenes on an Arm Cortex-M processor.     

* * *

Struggling to keep your development skills up to date or facing outdated processes that slow down your team, raise costs, and impact product quality?

Here are 4 ways I can help you:

  • Embedded Software Academy: Enhance your skills, streamline your processes, and elevate your architecture. Join my academy for on-demand, hands-on workshops and cutting-edge development resources designed to transform your career and keep you ahead of the curve.
  • Consulting Services: Get personalized, expert guidance to streamline your development processes, boost efficiency, and achieve your project goals faster. Partner with us to unlock your team's full potential and drive innovation, ensuring your projects success.
  • Team Training and Development: Empower your team with the latest best practices in embedded software. Our expert-led training sessions will equip your team with the skills and knowledge to excel, innovate, and drive your projects to success.
  • Customized Design Solutions: Get design and development assistance to enhance efficiency, ensure robust testing, and streamline your development pipeline, driving your projects success.

Take action today to upgrade your skills, optimize your team, and achieve success.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.