Errata

Making Embedded Systems

Errata for Making Embedded Systems, Second Edition

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date submitted
Other Digital Version Circular buffers (3643 of 7353 on Kindle version)
Putting Peripherals and Communication Together

In both cases below, the positions of "read" and "write" in the illustrations provided in the comments should be swapped:

/* **********
|-----|----------|-------|
write read
*/

int32_t length = cb-> write - cb-> read;
if (length > = 0) {return length;}


/* bbbbbb aaaaaaaa
|-----|----------|-------|
read write
*/

return (cb-> size – cb-> write) + /* aaaa */
( cb-> read); /* bbbbb */
}

Daniel Peer  Mar 04, 2025 
PDF Page page 30, section: State of Logging
3rd paragraph in section State of Logging

"In general, the less state held in the module, the better (so that your functions do the same things every time you call them). However, eliminating all state is generally unavoidable (or at least extremely cumbersome)."

“..., eliminating all state is generally unavoidable...” does not make sense to me. I think the author means to say
"..., eliminating all state is generally impractical..."

Dunzhi Chen  Oct 17, 2025 
Printed Page Power consumption
357

Measuring power consumption -- The book describes how difficult it is to measure very small values of power consumption.

Would it be workable to make cumulative measurement on a population of operating devices in order to increase the total power consumption figure?

For example, take 100 units off the manufacturing line and plug them all into a common power source and measure their quiescent power consumption?

Anonymous  Mar 04, 2026 
PDF Page 25, Adapter Pattern
First paragraph of the Adapter Pattern section.

I think you confused the Adapter pattern with the Facade pattern. The Adapter pattern is intended to make two components that aren't really designed to work together work together. The Facade pattern is actually the one that makes more complicated interfaces easier to use.

Shane Kirk  May 15, 2024 
Printed Page 118
Under "1. Calculate the minimum and maximum prescaler values".

The formula for calculating minPrescaler and maxPrescaler are identical. Having referenced the online excel sheet shared on Github, I believe the formula for maxPrescaler should be updated to use minCompare in place of maxCompare. The full formula for maxPrescaler now should be: maxPrescaler = clockInput / (goalFrequency * minCompare).

Anonymous  Jun 24, 2026 
Printed Page 137
Figure 5-5

In figure 5-5, the right hand graphic representation called "Contents of processor register" section C) the binary representation is not changed while the hexadecimal representation is changed.

The section demonstrates clearing the register by a read which is reflected in the hexadecimal but not binary representation of register content.

Rasmus Linusson  May 07, 2024 
Printed Page 137
table, Contents of processor register, third section

In the last row of the table,
“0000 0010 = 0x00”
should read,
“0000 0000 = 0x00”

Paul Evans  Oct 13, 2024 
Printed Page 182
3rd paragraph (not counting the general note)

Typo in acronym expansion of UART "receiver/transmitter" has been typed as "received/transmitter"

Rasmus Linusson  May 22, 2024 
Printed Page 182
third paragraph

“UART (universal asynchronous received/transmitter)…”

“received” should be “receiver”

Paul Evans  Oct 13, 2024 
Printed Page 205
Last two lines of the code excerpt at the top of page

The formula calculating the length of data available in the buffer after a wrap occurs should be:
(cb->size - cb->read) + (cb->write)

Pascal Bodin  Jun 30, 2024 
Printed Page 236
formula at the bottom of the page

The formula for bandwidth gives bits per second, but is written as, “bytes per second.”

Paul Evans  Oct 19, 2024 
Printed Page 282
Second paragraph

The first sentence of the second paragraph says: "The CM may need you to write software to test the firmware before shipment." Shouldn't it be: "The CM may need you to write software to test the hardware before shipment."?

Pascal Bodin  Jul 14, 2024 
Printed Page 382-384
Figures 14-3, 14-4 & 14-5

All three figures are titled "Triangular motion" while Figure 14-4 shows trapezoidal motion and Figure 14-5 shows S-curve motion as described in text body.

Rasmus Linusson  Jul 13, 2024