This book was the first to bring essential knowledge on embedded systems technology and techniques under a single cover. This second edition has been updated to the state-of-the-art by reworking and expanding performance analysis with more examples and exercises, and coverage of electronic systems now focuses on the latest applications. Researchers, students, and savvy professionals schooled in hardware or software design, will value Wayne Wolf's integrated engineering design approach.The second edition gives a more comprehensive view of multiprocessors including VLIW and superscalar architectures as well as more detail about power consumption. There is also more advanced treatment of all the components of the system as well as in-depth coverage of networks, reconfigurable systems, hardware-software co-design, security, and program analysis. It presents an updated discussion of current industry development software including Linux and Windows CE. The new edition's case studies cover SHARC DSP with the TI C5000 and C6000 series, and real-world applications such as DVD players and cell phones. * Uses real processors (ARM processor and TI C55x DSP) to demonstrate both technology and techniques...Shows readers how to apply principles to actual design practice.* Covers all necessary topics with emphasis on actual design practice...Realistic introduction to the state-of-the-art for both students and practitioners.* Stresses necessary fundamentals which can be applied to evolving technologies...helps readers gain facility to design large, complex embedded systems that actually work.
Author(s): Wayne Wolf
Edition: 2
Year: 2008
Language: English
Pages: 544
Front Cover......Page 1
About the Author......Page 3
Computers as Components......Page 4
Copyright Page......Page 5
Disclaimer......Page 7
Foreword to The First Edition......Page 8
Table of Contents......Page 10
List of Examples......Page 18
Preface to The Second Edition......Page 20
Preface to The First Edition......Page 22
1.1 Complex Systems and Microprocessors......Page 26
1.1.1 Embedding Computers......Page 27
1.1.2 Characteristics of Embedded Computing Applications......Page 29
1.1.3 Why Use Microprocessors?......Page 31
1.1.5 Challenges in Embedded Computing System Design......Page 33
1.1.6 Performance in Embedded Computing......Page 35
1.2 The Embedded System Design Process......Page 36
1.2.1 Requirements......Page 37
1.2.2 Specification......Page 42
1.2.3 Architecture Design......Page 43
1.2.5 System Integration......Page 45
1.3 Formalisms for System Design......Page 46
1.3.1 Structural Description......Page 47
1.3.2 Behavioral Description......Page 52
1.4 Model Train Controller......Page 55
1.4.1 Requirements......Page 56
1.4.2 DCC......Page 57
1.4.3 Conceptual Specification......Page 59
1.4.4 Detailed Specification......Page 62
1.4.5 Lessons Learned......Page 69
1.5 A Guided Tour of this Book......Page 70
1.5.3 Chapter 4: Bus-Based Computer Systems......Page 71
1.5.4 Chapter 5: Program Design and Analysis......Page 72
1.5.5 Chapter 6: Processes and Operating Systems......Page 73
1.5.6 Chapter 7: Multiprocessors......Page 74
1.5.8 Chapter 9: System Design Techniques......Page 75
Further Reading......Page 76
Questions......Page 77
Lab Exercises......Page 78
2.1.1 Computer Architecture Taxonomy......Page 80
2.1.2 Assembly Language......Page 83
2.2 ARM Processor......Page 84
2.2.1 Processor and Memory Organization......Page 85
2.2.2 Data Operations......Page 86
2.2.3 Flow of Control......Page 94
2.3.1 Processor and Memory Organization......Page 101
2.3.2 Addressing Modes......Page 103
2.3.3 Data Operations......Page 107
2.3.4 Flow of Control......Page 108
2.3.5 C Coding Guidelines......Page 110
Questions......Page 111
Lab Exercises......Page 114
3.1 Programming Input and Output......Page 116
3.1.1 Input and Output Devices......Page 117
3.1.2 Input and Output Primitives......Page 118
3.1.3 Busy-Wait I/O......Page 120
3.1.4 Interrupts......Page 121
3.2 Supervisor Mode, Exceptions, and Traps......Page 135
3.2.2 Exceptions......Page 136
3.3 Co-Processors......Page 137
3.4.1 Caches......Page 138
3.4.2 Memory Management Units and Address Translation......Page 144
3.5.1 Pipelining......Page 149
3.5.2 Caching......Page 153
3.6 CPU Power Consumption......Page 154
3.7.1 Requirements and Algorithm......Page 159
3.7.2 Specification......Page 161
3.7.3 Program Design......Page 164
3.7.4 Testing......Page 170
Further Reading......Page 172
Questions......Page 173
Lab Exercises......Page 176
4.1 The CPU Bus......Page 178
4.1.1 Bus Protocols......Page 179
4.1.2 DMA......Page 185
4.1.3 System Bus Configurations......Page 187
4.1.4 AMBA Bus......Page 190
4.2.1 Memory Device Organization......Page 191
4.2.2 Random-Access Memories......Page 192
4.3.1 Timers and Counters......Page 194
4.3.3 Keyboards......Page 196
4.3.5 Displays......Page 198
4.4 Component Interfacing......Page 200
4.4.2 Device Interfacing......Page 201
4.5.1 System Architecture......Page 202
4.5.2 Hardware Design......Page 204
4.5.3 The PC as a Platform......Page 205
4.6.1 Development Environments......Page 208
4.6.2 Debugging Techniques......Page 209
4.6.3 Debugging Challenges......Page 212
4.7.1 System-Level Performance Analysis......Page 214
4.7.2 Parallelism......Page 219
4.8.1 Requirements......Page 221
4.8.2 Specification......Page 223
4.8.3 System Architecture......Page 225
4.8.4 Component Design and Testing......Page 228
Summary......Page 229
Questions......Page 230
Lab Exercises......Page 232
Introduction......Page 234
5.1.1 State Machines......Page 235
5.1.2 Stream-Oriented Programming and Circular Buffers......Page 237
5.1.3 Queues......Page 238
5.2.1 Data Flow Graphs......Page 240
5.2.2 Control/Data Flow Graphs......Page 242
5.3 Assembly, Linking, and Loading......Page 245
5.3.1 Assemblers......Page 247
5.3.2 Linking......Page 250
5.4 Basic Compilation Techniques......Page 252
5.4.1 Statement Translation......Page 254
5.4.2 Procedures......Page 258
5.4.3 Data Structures......Page 259
5.5.1 Expression Simplification......Page 261
5.5.3 Procedure Inlining......Page 262
5.5.4 Loop Transformations......Page 263
5.5.5 Register Allocation......Page 264
5.5.6 Scheduling......Page 269
5.5.7 Instruction Selection......Page 271
5.5.9 Interpreters and JIT Compilers......Page 272
5.6 Program-Level Performance Analysis......Page 273
5.6.1 Elements of Program Performance......Page 275
5.6.2 Measurement-Driven Performance Analysis......Page 279
5.7.1 Loop Optimizations......Page 282
5.7.2 Performance Optimization Strategies......Page 286
5.8 Program-Level Energy and Power Analysis and Optimization......Page 287
5.9 Analysis and Optimization of Program Size......Page 291
5.10 Program Validation and Testing......Page 292
5.10.1 Clear-Box Testing......Page 293
5.10.2 Black-Box Testing......Page 301
5.10.3 Evaluating Function Tests......Page 302
5.11.1 Theory of Operation and Requirements......Page 303
5.11.3 System Architecture......Page 305
Summary......Page 307
Questions......Page 308
Lab Exercises......Page 316
Introduction......Page 318
6.1.1 Tasks and Processes......Page 319
6.1.2 Multirate Systems......Page 321
6.1.3 Timing Requirements on Processes......Page 323
6.1.4 CPU Metrics......Page 327
6.1.6 Some Scheduling Policies......Page 328
6.1.7 Running Periodic Processes......Page 331
6.2.1 Preemption......Page 333
6.2.2 Priorities......Page 334
6.2.3 Processes and Context......Page 335
6.2.4 Processes and Object-Oriented Design......Page 340
6.3.1 Rate-Monotonic Scheduling......Page 341
6.3.2 Earliest-Deadline-First Scheduling......Page 345
6.3.3 RMS vs. EDF......Page 348
6.3.4 A Closer Look at Our Modeling Assumptions......Page 349
6.4 Interprocess Communication Mechanisms......Page 350
6.4.1 Shared Memory Communication......Page 351
6.4.3 Signals......Page 354
6.5 Evaluating Operating System Performance......Page 355
6.6 Power Management and Optimization for Processes......Page 358
6.7.1 Theory of Operation and Requirements......Page 361
6.7.2 Specification......Page 365
6.7.3 System Architecture......Page 367
6.7.4 Component Design and Testing......Page 369
Summary......Page 370
Questions......Page 371
Lab Exercises......Page 377
7.1 Why Multiprocessors?......Page 378
7.2 CPUs and Accelerators......Page 381
7.2.1 System Architecture Framework......Page 382
7.3.1 Accelerators and Speedup......Page 385
7.3.2 Performance Effects of Scheduling and Allocation......Page 389
7.3.3 Buffering and Performance......Page 393
7.4.1 Use Cases and Requirements......Page 394
7.4.2 Platforms and Operating Systems......Page 396
7.4.3 Flash File Systems......Page 397
7.5 Design Example: Cell Phones......Page 398
7.6 Design Example: Compact DISCs and DVDs......Page 400
7.7 Design Example: Audio Players......Page 405
7.8 Design Example: Digital Still Cameras......Page 406
7.9.1 Algorithm and Requirements......Page 409
7.9.3 Architecture......Page 413
7.9.4 Component Design......Page 415
Summary......Page 417
Questions......Page 418
Lab Exercises......Page 420
Introduction......Page 422
8.1 Distributed Embedded Architectures......Page 423
8.1.2 Network Abstractions......Page 424
8.1.3 Hardware and Software Architectures......Page 426
8.1.4 Message Passing Programming......Page 429
8.2 Networks for Embedded Systems......Page 430
8.2.1 The I2C Bus......Page 431
8.2.2 Ethernet......Page 436
8.3 Network-Based Design......Page 438
8.4 Internet-Enabled Systems......Page 441
8.4.1 Internet......Page 442
8.4.2 Internet Applications......Page 444
8.5 Vehicles as Networks......Page 446
8.5.1 Automotive Networks......Page 447
8.5.2 Avionics......Page 450
8.6 Sensor Networks......Page 451
8.7 Design Example: Elevator Controller......Page 452
8.7.1 Theory of Operation and Requirements......Page 453
8.7.2 Specification......Page 455
8.7.3 Architecture......Page 456
8.7.4 Testing......Page 458
Questions......Page 459
Lab Exercises......Page 461
9.1.1 Why Design Methodologies?......Page 462
9.1.2 Design Flows......Page 464
9.2 Requirements Analysis......Page 471
9.3.1 Control-Oriented Specification Languages......Page 472
9.3.2 Advanced Specifications......Page 476
9.4 System Analysis and Architecture Design......Page 479
9.5 Quality Assurance......Page 482
9.5.1 Quality Assurance Techniques......Page 485
9.5.2 Verifying the Specification......Page 487
9.5.3 Design Reviews......Page 489
Questions......Page 491
Lab Exercises......Page 492
A.2 Diagram Types......Page 494
A.2.2 State Diagram......Page 496
A.2.3 Sequence and Collaboration Diagrams......Page 498
Glossary......Page 500
References......Page 514
Index......Page 522