Errata to Wolf: Computers as components

 

This errata complements the author’s own errata which can be found here:

http://www.ee.princeton.edu/~wolf/embedded-book/about.html

 

However, note that there are errata to the errata for p82 and p347.

 

Page 66, Example 2-1: 231 – 1 + 1 leads to NZCV = 1001 (not 0101 as is written).

 

Page 88, Example 2-6:

 

According to the example and to the ARM procedure call standard, the code for f1 should read:

 

f1   BL  f2        ; Argument a is already in reg r0

     MOVE r15, r14 ; return

 

This makes the code trivial and not very interesting. A better example is given in the lecture notes of lecture 2.

 

Page 111, Example 3-4:

 

The line:

 

achar = (char) peek(IN_DATA);    /* read the character */

 

needs to be complemented with the following line:

 

poke(IN_DATA,0);

 

so as to reset the input device.

 

Page 133, EQ 3-2: tav = h1tL1 + (h2-h1)tL2 + (1-h1-h2)tmain

 

should be (depend on definition of h2):

 

According to the book h2 is the rate at which access hit the second-level cache but not the first-level cache:

 

            tav = h1tL1 + h2tL2 + (1-h1-h2)tmain

 

However, if we define h2 to be the second-level hit rate, i.e. the rate by which references that miss in L1 hits in L2, the formula becomes:

 

            tav = h1tL1 + (1-h1)(h2tL2 + (1-h2)tmain)

 

Page 135, Figure 3-10: Set 1, Set 2, Set n should be Way 1, Way 2, Way n. and “Set select” should be “Way select”.

 

Page 138, End of example 3-9: In the two-way set-associative example with four blocks, block 0 data for set 1 should be 0001.

 

Page 191, first paragraph: Replace AHB in the third line with APB.

 

Page 210, example 4-1: There should be 21 address lines. All addresses in the picture and paragraph: 10 should be 20; 9 should be 19, 11 should be 21.

 

Page 347, figure 6-2:

 

The figure should be:

Fill in the original code where it says …

 

Page 378, example 6-6:

 

Replace

 

 

with