Foreword to the First Edition |
|
xvii | |
Preface to the First Edition |
|
xix | |
Preface to the Second Edition |
|
xxiii | |
Preface to the Third Edition |
|
xxv | |
Preface to the Fourth Edition |
|
xxvii | |
Preface to the Fifth Edition |
|
xxix | |
|
Chapter 1 Embedded Computing |
|
|
1 | (52) |
|
|
1 | (1) |
|
1.2 Complex systems and microprocessors |
|
|
1 | (9) |
|
1.2.1 Embedding computers |
|
|
2 | (2) |
|
1.2.2 Characteristics of embedded computing applications |
|
|
4 | (1) |
|
1.2.3 Why use microprocessors? |
|
|
5 | (2) |
|
1.2.4 Embedded computing, IoT systems, and Cyber-Physical Systems |
|
|
7 | (1) |
|
1.2.5 Safety and security |
|
|
7 | (1) |
|
1.2.6 Challenges in embedded computing system design |
|
|
8 | (1) |
|
1.2.7 Performance of embedded computing systems |
|
|
9 | (1) |
|
1.3 The embedded system design process |
|
|
10 | (19) |
|
|
12 | (5) |
|
|
17 | (1) |
|
1.3.3 Architecture design |
|
|
18 | (2) |
|
1.3.4 Designing hardware and software components |
|
|
20 | (1) |
|
|
20 | (1) |
|
1.3.6 Formalisms for system design |
|
|
21 | (1) |
|
1.3.7 Structural description |
|
|
22 | (4) |
|
1.3.8 Behavioral description |
|
|
26 | (3) |
|
1.4 Design example: Model train controller |
|
|
29 | (14) |
|
|
31 | (1) |
|
1.4.2 Digital Command Control (DCC) |
|
|
32 | (1) |
|
1.4.3 Conceptual specification |
|
|
33 | (3) |
|
1.4.4 Detailed specification |
|
|
36 | (7) |
|
|
43 | (1) |
|
1.5 A guided tour of this book |
|
|
43 | (6) |
|
1.5.1 Chapter 2: Instruction sets |
|
|
44 | (1) |
|
|
45 | (1) |
|
1.5.3 Chapter 4: Computing platforms |
|
|
45 | (1) |
|
1.5.4 Chapter 5: Program design and analysis |
|
|
46 | (1) |
|
1.5.5 Chapter 6: Processes and operating systems |
|
|
47 | (1) |
|
1.5.6 Chapter 7: System design techniques |
|
|
48 | (1) |
|
1.5.7 Chapter 8: Internet-of-Things |
|
|
48 | (1) |
|
1.5.8 Chapter 9: Automotive and aerospace systems |
|
|
49 | (1) |
|
1.5.9 Chapter 10: Embedded multiprocessors |
|
|
49 | (1) |
|
|
49 | (4) |
|
|
49 | (1) |
|
|
50 | (1) |
|
|
50 | (2) |
|
|
52 | (1) |
|
Chapter 2 Instruction Sets |
|
|
53 | (44) |
|
|
53 | (1) |
|
|
53 | (7) |
|
2.2.1 Computer architecture taxonomy |
|
|
54 | (3) |
|
|
57 | (1) |
|
|
58 | (2) |
|
|
60 | (16) |
|
2.3.1 Processor and memory organization |
|
|
60 | (1) |
|
|
61 | (8) |
|
|
69 | (7) |
|
2.3.4 Advanced Arm features |
|
|
76 | (1) |
|
2.4 PICmicro mid-range family |
|
|
76 | (4) |
|
2.4.1 Processor and memory organization |
|
|
77 | (1) |
|
|
77 | (1) |
|
|
78 | (2) |
|
|
80 | (11) |
|
2.5.1 Processor and memory organization |
|
|
81 | (2) |
|
|
83 | (3) |
|
|
86 | (1) |
|
|
87 | (2) |
|
2.5.5 C coding guidelines |
|
|
89 | (2) |
|
|
91 | (2) |
|
|
93 | (4) |
|
|
94 | (1) |
|
|
94 | (1) |
|
|
94 | (2) |
|
|
96 | (1) |
|
|
97 | (64) |
|
|
97 | (1) |
|
3.2 Programming input and output |
|
|
98 | (18) |
|
|
98 | (2) |
|
3.2.2 Input and output primitives |
|
|
100 | (1) |
|
|
101 | (2) |
|
|
103 | (13) |
|
3.3 Supervisor mode, exceptions, and traps |
|
|
116 | (2) |
|
|
116 | (1) |
|
|
117 | (1) |
|
|
117 | (1) |
|
|
118 | (1) |
|
3.5 Memory system mechanisms |
|
|
118 | (12) |
|
|
119 | (6) |
|
3.5.2 Memory management units and address translation |
|
|
125 | (4) |
|
3.5.3 Memory protection units |
|
|
129 | (1) |
|
|
130 | (6) |
|
|
131 | (5) |
|
|
136 | (1) |
|
3.7 CPU power consumption |
|
|
136 | (4) |
|
3.7.1 CMOS power consumption |
|
|
136 | (1) |
|
3.7.2 Power management modes |
|
|
137 | (2) |
|
3.7.3 Program-level power management |
|
|
139 | (1) |
|
|
140 | (2) |
|
3.9 Design example: Data compressor |
|
|
142 | (12) |
|
3.9.1 Requirements and algorithm |
|
|
142 | (2) |
|
|
144 | (2) |
|
|
146 | (6) |
|
|
152 | (2) |
|
|
154 | (7) |
|
|
154 | (1) |
|
|
154 | (1) |
|
|
155 | (4) |
|
|
159 | (2) |
|
Chapter 4 Computing Platforms |
|
|
161 | (58) |
|
|
161 | (1) |
|
4.2 Basic computing platforms |
|
|
161 | (4) |
|
4.2.1 Platform hardware components |
|
|
162 | (2) |
|
4.2.2 Platform software components |
|
|
164 | (1) |
|
|
165 | (12) |
|
4.3.1 Bus organization and protocol |
|
|
165 | (7) |
|
4.3.2 Direct memory access |
|
|
172 | (3) |
|
4.3.3 System bus configurations |
|
|
175 | (2) |
|
4.4 Memory devices and systems |
|
|
177 | (4) |
|
4.4.1 Memory system organization |
|
|
179 | (2) |
|
|
181 | (2) |
|
4.6 Designing with computing platforms |
|
|
183 | (11) |
|
|
183 | (1) |
|
4.6.2 Choosing a platform |
|
|
184 | (3) |
|
4.6.3 Intellectual property |
|
|
187 | (1) |
|
4.6.4 Development environments |
|
|
188 | (1) |
|
|
189 | (1) |
|
4.6.6 Debugging techniques |
|
|
189 | (3) |
|
4.6.7 Debugging challenges |
|
|
192 | (2) |
|
4.7 Embedded file systems |
|
|
194 | (1) |
|
4.8 Platform-level performance analysis |
|
|
194 | (6) |
|
4.9 Platform-level power management |
|
|
200 | (1) |
|
|
201 | (1) |
|
4.11 Design example: alarm clock |
|
|
202 | (8) |
|
|
202 | (2) |
|
|
204 | (4) |
|
4.11.3 System architecture |
|
|
208 | (1) |
|
4.11.4 Component design and testing |
|
|
209 | (1) |
|
4.11.5 System integration and testing |
|
|
210 | (1) |
|
4.12 Design example: jet engine controller |
|
|
210 | (3) |
|
4.12.1 Theory of operation and requirements |
|
|
210 | (1) |
|
|
211 | (1) |
|
4.12.3 System architecture |
|
|
211 | (1) |
|
|
212 | (1) |
|
4.12.5 System integration and testing |
|
|
212 | (1) |
|
|
213 | (6) |
|
|
213 | (1) |
|
|
213 | (1) |
|
|
213 | (4) |
|
|
217 | (2) |
|
Chapter 5 Program Design and Analysis |
|
|
219 | (102) |
|
|
219 | (1) |
|
5.2 Components for embedded programs |
|
|
220 | (10) |
|
|
220 | (2) |
|
5.2.2 Circular buffers and stream-oriented programming |
|
|
222 | (6) |
|
5.2.3 Queues and producer/consumer systems |
|
|
228 | (2) |
|
|
230 | (5) |
|
|
230 | (3) |
|
5.3.2 Control/data flow graphs |
|
|
233 | (2) |
|
5.4 Assembly, linking, and loading |
|
|
235 | (7) |
|
|
236 | (4) |
|
|
240 | (2) |
|
|
242 | (1) |
|
5.5 Compilation techniques |
|
|
242 | (18) |
|
5.5.1 The compilation process |
|
|
243 | (1) |
|
5.5.2 Basic compilation methods |
|
|
244 | (8) |
|
5.5.3 Compiler optimizations |
|
|
252 | (8) |
|
5.6 Program-level performance analysis |
|
|
260 | (10) |
|
5.6.1 Analysis of program performance |
|
|
262 | (5) |
|
5.6.2 Measurement-driven performance analysis |
|
|
267 | (3) |
|
5.7 Software performance optimization |
|
|
270 | (5) |
|
5.7.1 Basic loop optimizations |
|
|
270 | (2) |
|
5.7.2 Cache-oriented loop optimizations |
|
|
272 | (2) |
|
5.7.3 Performance optimization strategies |
|
|
274 | (1) |
|
5.8 Program-level energy, and power analysis and optimization |
|
|
275 | (4) |
|
5.9 Analysis and optimization of program size |
|
|
279 | (1) |
|
5.10 Program validation and testing |
|
|
280 | (10) |
|
|
281 | (7) |
|
|
288 | (1) |
|
5.10.3 Evaluating functional tests |
|
|
289 | (1) |
|
|
290 | (2) |
|
5.12 Design example: software modem |
|
|
292 | (4) |
|
5.12.1 Theory of operation and requirements |
|
|
292 | (2) |
|
|
294 | (1) |
|
5.12.3 System architecture |
|
|
294 | (1) |
|
5.12.4 Component design and testing |
|
|
295 | (1) |
|
5.12.5 System integration and testing |
|
|
296 | (1) |
|
5.13 Design example: digital still camera |
|
|
296 | (12) |
|
5.13.1 Theory of operation and requirements |
|
|
296 | (5) |
|
|
301 | (4) |
|
5.13.3 System architecture |
|
|
305 | (1) |
|
5.13.4 Component design and testing |
|
|
306 | (1) |
|
5.13.5 System integration and testing |
|
|
306 | (2) |
|
|
308 | (13) |
|
|
308 | (1) |
|
|
308 | (1) |
|
|
309 | (9) |
|
|
318 | (3) |
|
Chapter 6 Processes and Operating Systems |
|
|
321 | (60) |
|
|
321 | (1) |
|
6.2 Multiple tasks and processes |
|
|
322 | (2) |
|
|
324 | (10) |
|
6.3.1 Timing requirements for processes |
|
|
326 | (4) |
|
|
330 | (1) |
|
6.3.3 Process state and scheduling |
|
|
331 | (1) |
|
6.3.4 Running periodic processes |
|
|
332 | (2) |
|
6.4 Preemptive Real-Time Operating Systems |
|
|
334 | (6) |
|
|
335 | (1) |
|
6.4.2 Processes and context |
|
|
336 | (3) |
|
6.4.3 Processes and object-oriented design |
|
|
339 | (1) |
|
6.5 Priority-based scheduling |
|
|
340 | (16) |
|
6.5.1 Rate-monotonic scheduling |
|
|
341 | (4) |
|
6.5.2 Earliest-deadline-first scheduling |
|
|
345 | (4) |
|
|
349 | (1) |
|
6.5.4 Shared resources, mutexes, and semaphores |
|
|
349 | (3) |
|
|
352 | (1) |
|
6.5.6 Scheduling for low power |
|
|
353 | (1) |
|
6.5.7 A closer look at our modeling assumptions |
|
|
353 | (2) |
|
6.5.8 Events and sporadic tasks |
|
|
355 | (1) |
|
6.6 Interprocess communication mechanisms |
|
|
356 | (5) |
|
6.6.1 Shared memory communication |
|
|
357 | (1) |
|
|
358 | (1) |
|
|
359 | (1) |
|
|
360 | (1) |
|
6.7 Evaluating operating system performance |
|
|
361 | (4) |
|
6.8 POSIX real-time operating systems |
|
|
365 | (1) |
|
6.9 Design example: engine control unit |
|
|
366 | (5) |
|
6.9.1 Theory of operation and requirements |
|
|
366 | (1) |
|
|
367 | (1) |
|
6.9.3 System architecture |
|
|
368 | (3) |
|
6.9.4 Component design and testing |
|
|
371 | (1) |
|
6.9.5 System integration and testing |
|
|
371 | (1) |
|
|
371 | (10) |
|
|
372 | (1) |
|
|
372 | (1) |
|
|
372 | (6) |
|
|
378 | (3) |
|
Chapter 7 System Design Techniques |
|
|
381 | (30) |
|
|
381 | (1) |
|
|
381 | (4) |
|
7.2.1 Why design methodologies? |
|
|
381 | (2) |
|
7.2.2 Design methodologies for embedded computing |
|
|
383 | (2) |
|
7.3 Requirements analysis and specification |
|
|
385 | (6) |
|
7.3.1 Requirements capture |
|
|
385 | (4) |
|
7.3.2 From requirements to specification |
|
|
389 | (1) |
|
7.3.3 Validating the specification |
|
|
389 | (2) |
|
|
391 | (7) |
|
|
391 | (3) |
|
7.4.2 UML dialects for modeling |
|
|
394 | (4) |
|
7.5 System analysis and architecture design |
|
|
398 | (2) |
|
|
398 | (2) |
|
7.5.2 Transaction-level modeling |
|
|
400 | (1) |
|
7.6 Dependability, safety, and security |
|
|
400 | (9) |
|
7.6.1 Quality assurance techniques |
|
|
401 | (2) |
|
|
403 | (1) |
|
7.6.3 Safety-oriented methodologies |
|
|
404 | (4) |
|
|
408 | (1) |
|
|
409 | (2) |
|
|
409 | (1) |
|
|
409 | (1) |
|
|
409 | (1) |
|
|
410 | (1) |
|
Chapter 8 Internet-of-Things Systems |
|
|
411 | (26) |
|
|
411 | (1) |
|
8.2 IoT system applications |
|
|
411 | (2) |
|
8.3 IoT system architectures |
|
|
413 | (1) |
|
|
414 | (14) |
|
8.4.1 The open systems interconnection model |
|
|
415 | (1) |
|
|
416 | (3) |
|
8.4.3 IoT networking concepts |
|
|
419 | (4) |
|
8.4.4 Bluetooth and Bluetooth Low Energy |
|
|
423 | (2) |
|
8.4.5 802.15.4 and ZigBee |
|
|
425 | (2) |
|
|
427 | (1) |
|
|
428 | (1) |
|
8.5 Databases and timewheels |
|
|
428 | (4) |
|
|
428 | (3) |
|
|
431 | (1) |
|
|
432 | (3) |
|
|
435 | (2) |
|
|
435 | (1) |
|
|
435 | (1) |
|
|
435 | (1) |
|
|
436 | (1) |
|
Chapter 9 Automotive and Aerospace Systems |
|
|
437 | (16) |
|
|
437 | (1) |
|
|
437 | (3) |
|
9.2.1 Vehicles as cyber-physical systems |
|
|
437 | (2) |
|
9.2.2 Driver assistance and autonomy |
|
|
439 | (1) |
|
9.3 Networked control systems in cars and airplanes |
|
|
440 | (3) |
|
|
440 | (2) |
|
9.3.2 Vehicle network architectures |
|
|
442 | (1) |
|
|
443 | (5) |
|
|
443 | (3) |
|
9.4.2 Other automotive networks |
|
|
446 | (2) |
|
|
448 | (3) |
|
|
451 | (2) |
|
|
451 | (1) |
|
|
451 | (1) |
|
|
452 | (1) |
|
|
452 | (1) |
|
Chapter 10 Embedded Multiprocessors |
|
|
453 | (32) |
|
|
453 | (1) |
|
10.2 Why multiprocessors? |
|
|
453 | (3) |
|
10.3 Categories of multiprocessors |
|
|
456 | (1) |
|
10.4 MPSoCs and shared memory multiprocessors |
|
|
457 | (15) |
|
10.4.1 Heterogeneous shared memory multiprocessors |
|
|
457 | (1) |
|
|
458 | (2) |
|
10.4.3 Accelerator performance analysis |
|
|
460 | (5) |
|
10.4.4 Scheduling and allocation |
|
|
465 | (2) |
|
10.4.5 System integration |
|
|
467 | (5) |
|
|
472 | (1) |
|
10.5 Design example: video accelerator |
|
|
472 | (9) |
|
|
472 | (2) |
|
10.5.2 Algorithm and requirements |
|
|
474 | (2) |
|
|
476 | (2) |
|
|
478 | (2) |
|
|
480 | (1) |
|
|
481 | (1) |
|
|
481 | (4) |
|
|
481 | (1) |
|
|
482 | (1) |
|
|
482 | (1) |
|
|
483 | (2) |
Glossary |
|
485 | (20) |
References |
|
505 | (14) |
Index |
|
519 | |