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 | |
Chapter 1 Embedded Computing |
|
1 | (54) |
|
|
1 | (1) |
|
1.2 Complex systems and microprocessors |
|
|
1 | (11) |
|
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 Cyber-physical systems |
|
|
7 | (1) |
|
1.2.5 Safety and security |
|
|
8 | (2) |
|
1.2.6 Challenges in embedded computing system design |
|
|
10 | (1) |
|
1.2.7 Performance of embedded computing systems |
|
|
11 | (1) |
|
1.3 The embedded system design process |
|
|
12 | (19) |
|
|
14 | (4) |
|
|
18 | (1) |
|
1.3.3 Architecture design |
|
|
19 | (2) |
|
1.3.4 Designing hardware and software components |
|
|
21 | (1) |
|
|
22 | (1) |
|
1.3.6 Formalisms for system design |
|
|
22 | (1) |
|
1.3.7 Structural description |
|
|
23 | (5) |
|
1.3.8 Behavioral description |
|
|
28 | (3) |
|
1.4 Design example: model train controller |
|
|
31 | (15) |
|
|
32 | (1) |
|
|
33 | (2) |
|
1.4.3 Conceptual specification |
|
|
35 | (3) |
|
1.4.4 Detailed specification |
|
|
38 | (7) |
|
|
45 | (1) |
|
1.5 A guided tour of this book |
|
|
46 | (5) |
|
1.5.1 Chapter 2: Instruction sets |
|
|
46 | (1) |
|
|
47 | (1) |
|
1.5.3 Chapter 4: Computing platforms |
|
|
47 | (1) |
|
1.5.4 Chapter 5: Program design and analysis |
|
|
48 | (1) |
|
1.5.5 Chapter 6: Processes and operating systems |
|
|
49 | (1) |
|
1.5.6 Chapter 7: System design techniques |
|
|
50 | (1) |
|
1.5.7 Chapter 8: Internet-of-Things |
|
|
50 | (1) |
|
1.5.8 Chapter 9: Automotive and aerospace systems |
|
|
50 | (1) |
|
1.5.9 Chapter 10: Embedded multiprocessors |
|
|
50 | (1) |
|
|
51 | (1) |
|
|
51 | (1) |
|
|
51 | (1) |
|
|
52 | (1) |
|
|
53 | (2) |
Chapter 2 Instruction Sets |
|
55 | (44) |
|
|
55 | (1) |
|
|
55 | (7) |
|
2.2.1 Computer architecture taxonomy |
|
|
56 | (2) |
|
|
58 | (2) |
|
|
60 | (2) |
|
|
62 | (15) |
|
2.3.1 Processor and memory organization |
|
|
62 | (1) |
|
|
63 | (7) |
|
|
70 | (6) |
|
2.3.4 Advanced ARM features |
|
|
76 | (1) |
|
2.4 PICmicro midrange family |
|
|
77 | (5) |
|
2.4.1 Processor and memory organization |
|
|
77 | (1) |
|
|
78 | (3) |
|
|
81 | (1) |
|
|
82 | (10) |
|
2.5.1 Processor and memory organization |
|
|
82 | (2) |
|
|
84 | (4) |
|
|
88 | (1) |
|
|
89 | (2) |
|
2.5.5 C coding guidelines |
|
|
91 | (1) |
|
|
92 | (3) |
|
|
95 | (1) |
|
|
96 | (1) |
|
|
96 | (1) |
|
|
96 | (2) |
|
|
98 | (1) |
Chapter 3 CPUs |
|
99 | (62) |
|
|
99 | (1) |
|
3.2 Programming input and output |
|
|
99 | (18) |
|
3.2.1 Input and output devices |
|
|
100 | (2) |
|
3.2.2 Input and output primitives |
|
|
102 | (1) |
|
|
103 | (1) |
|
|
104 | (13) |
|
3.3 Supervisor mode, exceptions, and traps |
|
|
117 | (2) |
|
|
117 | (1) |
|
|
118 | (1) |
|
|
118 | (1) |
|
|
119 | (1) |
|
3.5 Memory system mechanisms |
|
|
119 | (12) |
|
|
120 | (6) |
|
3.5.2 Memory management units and address translation |
|
|
126 | (5) |
|
|
131 | (6) |
|
|
131 | (5) |
|
|
136 | (1) |
|
3.7 CPU power consumption |
|
|
137 | (4) |
|
3.7.1 CMOS power consumption |
|
|
137 | (1) |
|
3.7.2 Power management modes |
|
|
138 | (3) |
|
3.7.3 Program-level power management |
|
|
141 | (1) |
|
|
141 | (2) |
|
3.9 Design example: data compressor |
|
|
143 | (11) |
|
3.9.1 Requirements and algorithm |
|
|
143 | (2) |
|
|
145 | (2) |
|
|
147 | (6) |
|
|
153 | (1) |
|
|
154 | (1) |
|
|
155 | (1) |
|
|
155 | (1) |
|
|
155 | (4) |
|
|
159 | (2) |
Chapter 4 Computing Platforms |
|
161 | (60) |
|
|
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 | (6) |
|
|
171 | (4) |
|
4.3.3 System bus configurations |
|
|
175 | (2) |
|
4.4 Memory devices and systems |
|
|
177 | (4) |
|
4.4.1 Memory system organization |
|
|
179 | (2) |
|
4.5 Designing with computing platforms |
|
|
181 | (10) |
|
|
181 | (2) |
|
4.5.2 Choosing a platform |
|
|
183 | (1) |
|
4.5.3 Intellectual property |
|
|
184 | (1) |
|
4.5.4 Development environments |
|
|
185 | (1) |
|
|
186 | (1) |
|
4.5.6 Debugging techniques |
|
|
187 | (2) |
|
4.5.7 Debugging challenges |
|
|
189 | (2) |
|
4.6 Consumer electronics architecture |
|
|
191 | (3) |
|
4.6.1 Consumer electronics use cases and requirements |
|
|
191 | (2) |
|
|
193 | (1) |
|
4.7 Platform-level performance analysis |
|
|
194 | (6) |
|
4.8 Platform-level power management |
|
|
200 | (1) |
|
4.9 Design example: alarm clock |
|
|
201 | (7) |
|
|
201 | (1) |
|
|
202 | (3) |
|
4.9.3 System architecture |
|
|
205 | (3) |
|
4.9.4 Component design and testing |
|
|
208 | (1) |
|
4.9.5 System integration and testing |
|
|
208 | (1) |
|
4.10 Design example: audio player |
|
|
208 | (7) |
|
4.10.1 Theory of operation and requirements |
|
|
208 | (3) |
|
|
211 | (1) |
|
4.10.3 System architecture |
|
|
211 | (3) |
|
4.10.4 Component design and testing |
|
|
214 | (1) |
|
4.10.5 System integration and debugging |
|
|
215 | (1) |
|
|
215 | (1) |
|
|
215 | (1) |
|
|
215 | (1) |
|
|
215 | (4) |
|
|
219 | (2) |
Chapter 5 Program Design and Analysis |
|
221 | (100) |
|
|
221 | (1) |
|
5.2 Components for embedded programs |
|
|
222 | (9) |
|
|
222 | (2) |
|
5.2.2 Circular buffers and stream-oriented programming |
|
|
224 | (5) |
|
5.2.3 Queues and producer/consumer systems |
|
|
229 | (2) |
|
|
231 | (5) |
|
|
232 | (2) |
|
5.3.2 Control/data flow graphs |
|
|
234 | (2) |
|
5.4 Assembly, linking, and loading |
|
|
236 | (8) |
|
|
238 | (4) |
|
|
242 | (1) |
|
|
243 | (1) |
|
5.5 Compilation techniques |
|
|
244 | (18) |
|
5.5.1 The compilation process |
|
|
244 | (2) |
|
5.5.2 Basic compilation methods |
|
|
246 | (8) |
|
5.5.3 Compiler optimizations |
|
|
254 | (8) |
|
5.6 Program-level performance analysis |
|
|
262 | (9) |
|
5.6.1 Analysis of program performance |
|
|
264 | (4) |
|
5.6.2 Measurement-driven performance analysis |
|
|
268 | (3) |
|
5.7 Software performance optimization |
|
|
271 | (5) |
|
5.7.1 Basic loop optimizations |
|
|
271 | (2) |
|
5.7.2 Cache-oriented loop optimizations |
|
|
273 | (2) |
|
5.7.3 Performance optimization strategies |
|
|
275 | (1) |
|
5.8 Program-level energy and power analysis and optimization |
|
|
276 | (4) |
|
5.9 Analysis and optimization of program size |
|
|
280 | (1) |
|
5.10 Program validation and testing |
|
|
281 | (10) |
|
|
282 | (7) |
|
|
289 | (1) |
|
5.10.3 Evaluating functional tests |
|
|
290 | (1) |
|
|
291 | (1) |
|
5.12 Design example: software modem |
|
|
292 | (5) |
|
5.12.1 Theory of operation and requirements |
|
|
292 | (3) |
|
|
295 | (1) |
|
5.12.3 System architecture |
|
|
295 | (1) |
|
5.12.4 Component design and testing |
|
|
296 | (1) |
|
5.12.5 System integration and testing |
|
|
297 | (1) |
|
5.13 Design example: digital still camera |
|
|
297 | (11) |
|
5.13.1 Theory of operation and requirements |
|
|
297 | (4) |
|
|
301 | (4) |
|
5.13.3 System architecture |
|
|
305 | (3) |
|
5.13.4 Component design and testing |
|
|
308 | (1) |
|
5.13.5 System integration and testing |
|
|
308 | (1) |
|
|
308 | (1) |
|
|
308 | (1) |
|
|
309 | (1) |
|
|
309 | (9) |
|
|
318 | (3) |
Chapter 6 Processes and Operating Systems |
|
321 | (70) |
|
|
321 | (1) |
|
6.2 Multiple tasks and multiple processes |
|
|
322 | (2) |
|
|
324 | (10) |
|
6.3.1 Timing requirements on 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 | (5) |
|
|
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 |
|
|
339 | (16) |
|
6.5.1 Rate-monotonic scheduling |
|
|
341 | (4) |
|
6.5.2 Earliest-deadline-first scheduling |
|
|
345 | (4) |
|
|
349 | (1) |
|
|
349 | (2) |
|
|
351 | (1) |
|
6.5.6 Scheduling for low power |
|
|
352 | (1) |
|
6.5.7 A closer look at our modeling assumptions |
|
|
352 | (3) |
|
6.6 Interprocess communication mechanisms |
|
|
355 | (4) |
|
6.6.1 Shared memory communication |
|
|
355 | (1) |
|
|
356 | (1) |
|
|
357 | (1) |
|
|
358 | (1) |
|
6.7 Evaluating operating system performance |
|
|
359 | (4) |
|
6.8 Example real-time operating systems |
|
|
363 | (6) |
|
6.9 Design example: telephone answering machine |
|
|
369 | (9) |
|
6.9.1 Theory of operation and requirements |
|
|
369 | (3) |
|
|
372 | (2) |
|
6.9.3 System architecture |
|
|
374 | (3) |
|
6.9.4 Component design and testing |
|
|
377 | (1) |
|
6.9.5 System integration and testing |
|
|
377 | (1) |
|
6.10 Design example: engine control unit |
|
|
378 | (5) |
|
6.10.1 Theory of operation and requirements |
|
|
378 | (1) |
|
|
379 | (1) |
|
6.10.3 System architecture |
|
|
380 | (2) |
|
6.10.4 Component design and testing |
|
|
382 | (1) |
|
6.10.5 System integration and testing |
|
|
382 | (1) |
|
|
383 | (1) |
|
|
383 | (1) |
|
|
383 | (1) |
|
|
383 | (6) |
|
|
389 | (2) |
Chapter 7 System Design Techniques |
|
391 | (32) |
|
|
391 | (1) |
|
|
391 | (9) |
|
7.2.1 Why design methodologies? |
|
|
391 | (2) |
|
|
393 | (7) |
|
7.3 Requirements analysis |
|
|
400 | (1) |
|
|
401 | (6) |
|
7.4.1 Control-oriented specification languages |
|
|
401 | (3) |
|
7.4.2 Advanced specifications |
|
|
404 | (3) |
|
7.5 System analysis and architecture design |
|
|
407 | (3) |
|
|
407 | (3) |
|
7.6 Dependability, safety, and security |
|
|
410 | (11) |
|
|
411 | (2) |
|
7.6.2 Quality assurance techniques |
|
|
413 | (2) |
|
7.6.3 Verifying the specification |
|
|
415 | (2) |
|
|
417 | (1) |
|
7.6.5 Safety-oriented methodologies |
|
|
418 | (3) |
|
|
421 | (1) |
|
|
421 | (1) |
|
|
421 | (1) |
|
|
421 | (1) |
|
|
422 | (1) |
Chapter 8 Internet-of-Things Systems |
|
423 | (26) |
|
|
423 | (1) |
|
8.2 IoT system applications |
|
|
423 | (2) |
|
8.3 IoT system architectures |
|
|
425 | (2) |
|
|
427 | (13) |
|
|
427 | (1) |
|
|
428 | (2) |
|
8.4.3 IoT networking concepts |
|
|
430 | (4) |
|
8.4.4 Bluetooth and Bluetooth Low Energy |
|
|
434 | (3) |
|
8.4.5 802.15.4 and ZigBee |
|
|
437 | (1) |
|
|
438 | (2) |
|
8.5 Databases and timewheels |
|
|
440 | (4) |
|
|
440 | (3) |
|
|
443 | (1) |
|
|
444 | (2) |
|
|
446 | (1) |
|
|
447 | (1) |
|
|
447 | (1) |
|
|
447 | (1) |
|
|
448 | (1) |
Chapter 9 Automotive and Aerospace Systems |
|
449 | (12) |
|
|
449 | (1) |
|
9.2 Networked control systems in cars and airplanes |
|
|
449 | (4) |
|
|
453 | (4) |
|
|
453 | (2) |
|
9.3.2 Other automotive networks |
|
|
455 | (2) |
|
|
457 | (2) |
|
|
459 | (1) |
|
|
459 | (1) |
|
|
459 | (1) |
|
|
459 | (1) |
|
|
460 | (1) |
Chapter 10 Embedded Multiprocessors |
|
461 | (36) |
|
|
461 | (1) |
|
10.2 Why multiprocessors? |
|
|
461 | (3) |
|
10.3 Categories of multiprocessors |
|
|
464 | (2) |
|
10.4 MPSOCs and shared memory multiprocessors |
|
|
466 | (15) |
|
10.4.1 Heterogeneous shared memory multiprocessors |
|
|
466 | (1) |
|
|
467 | (2) |
|
10.4.3 Accelerator performance analysis |
|
|
469 | (5) |
|
10.4.4 Scheduling and allocation |
|
|
474 | (2) |
|
10.4.5 System integration |
|
|
476 | (4) |
|
|
480 | (1) |
|
10.5 Design example: video accelerator |
|
|
481 | (8) |
|
|
481 | (2) |
|
10.5.2 Algorithm and requirements |
|
|
483 | (2) |
|
|
485 | (1) |
|
|
486 | (2) |
|
|
488 | (1) |
|
|
489 | (1) |
|
10.6 Application example: optical disk |
|
|
489 | (5) |
|
|
494 | (1) |
|
|
494 | (1) |
|
|
494 | (1) |
|
|
495 | (1) |
|
|
496 | (1) |
Glossary |
|
497 | (20) |
References |
|
517 | (10) |
Index |
|
527 | |