The bookComputers as Components: Principles of Embedded Computing System Design is a new textbook on embedded computing published by Morgan Kaufman Publishers. Computers as Components aims to be a comprehensive introduction to modern embedded computing: high-performance microprocessors and high-level language programming serving complex applications. The book is intended for both students and professionals interested in embedded computing. Wayne Wolf is Professor of Electrical Engineering at Princeton University. Before joining Princteon, he was with AT&T Bell Laboratories, Murray Hill, New Jersey. He received all three degrees in electrical engineering from Stanford University. He is a Fellow of the IEEE and a member of ACM and SPIE. ErrataHey, nobody's perfect. Here are the errors that I and others have found so far. If you have mistakes, questions, or comments about the book, please feel free to write me at wolf@princeton.edu. Chapter 1p. 25: "pixel pixelval(pixel " -> "pixeltype pixel("pixeltype". "void set_pixel(pixel " -> "void set_pixel(pixeltype". p. 25: C++ reference should be to Stroustrup's book, not Kernighan. p. 26: "pixel 1_pixels" -> "pixeltype d1_pixels". Figure 1-9 (p. 29): contains relationship should have a ball on the message end. Figure 1-13 (p. 32): "m: Menu" -> "u: Menu"; "which_menu(x,y,i)" should be "which_menu(i). Figure 1-14 (p. 33): The message is shown with the first bit on the right-hand end of the message, not on the left-hand end. p. 37: "The Transmitter class contains analog electronics" -> "The Transmitter class interfaces to analog electronics". Figure 1-19 (p. 40): Behavior in Detector* class should be "<integer>read-bit()". Figure 1-26 (p. 44): First action after start should be "panel*:read-knob()". Q1-9 (p. 55): "receive-message" -> "receive-command"; receive-command() is shown i Figure 1-28. p. 66 (Example 2-1): NZCV should be 1001. Chapter 2p. 71: "LDR r2,x ; get value of c" -> "LDR r2,[r4]; get value of c". p. 74: "if (a > b) {" -> "if (a < b) {" p. 75: "ADD r0,r0,r1 ; compute a + b" -> "ADD r0,r0,r1
; compute c + d". p. 76: "ADDLT r0,r0,r1 ; compute a + b" -> "ADDLT r0,r0,r1
; compute c + d". p. 82: ARM code should be ldr r0,[r13] str r14,[r13]! str r0,[r13]! bl f2 sub r13,#4 p. 84: "ASTAT1" -> "ASTAT" p. 92: "SUB R3 = R3 - R2" -> "R3 = R3 - R2;". Chapter 3p. 109: All assembly statements should end in a semicolon. "R1 = DM(i0" -> "R1 = DM(I0". p. 116: nchar() should be if (buf_tail >= buf_head) return buf_tail-buf_head; else return BUF_SIZE + buf_tail - buf_head; Figure 3-6 (p. 124): The activities on :CPU and :Device show when, for example, an interrupt request is received. The CPU does not send an interrupt request. p. 133: average access time formula should be tav = h1 * tL1 + (h2-h1)tL2 + (1-h2)tMain p. 147: "DM(i8" -> "DM(I8". p. 161: "The class's buffer and current-bit attributes" -> "The class's buffer and current-bit behaviors". p. 169: "data_buffer& fullbuf" -> "data_buffer *fullbuf". Chapter 4p. 229: "testing software in Section" -> "testing software in Section 5.9". Chapter 5Figure 5-5 (p. 254): Add an arrow from x1 to d. p. 303: "replaces a[0]" -> "replaces a[0][0]". "repeats itself at a[0][4]" -> "repeats itself at a[1][0]". Figure 5-32 (p. 321): should be no def-use pair to the left-hand side of a = a->next. p. 329: Header should be "5.10 Design Example: Software Modem" Chapter 6Figure 6-2 (p. 347): Coroutine 1 should use "ADR r14" everywhere, not "ADR r13". Questions Q6-17, Q6-18, Q6-19, Q6-20, Q6-21, Q6-22, Q6-23, Q6-25, Q6-26: in all these problems, processes are periodic with periods equal to their deadlines. Chapter 7p. 439: "search[i-ox+XCENTER][i-oy..." -> "search[i-ox+XCENTER][j-oy...". Chapter 8EQ 8-2 (p. 476): Should be "ty = td + tm". Figure 8-30 (p. 490): Link between Floor and Controller should have quantity 1 on Controller end. Figure 8-31 (p. 490): "elevator-positions[H][F]" -> "elevator-positions[1..H][1..F]". Figure 8-32 (p. 491): "request-lights[F]" -> "request-lights[1..F]". Figure 8-33 (p. 491): "car-floor[H]" -> "car-floor[1..H]". "emergency-stop[H]" -> "emergency-stop[1..H]". Chapter 9Figure 9-8 (p. 511): Traditional state transition diagram should have edges from s1-4 and s2-3 to s5, activated by r. p. 523: "low probabilities were to certain errors" -> "low probabilities were ASSIGNED to certain errors". |