Computers as Components: Principles of Embedded Computing System Design, Third Edition , presents essential knowledge on embedded systems technology and techniques. Updated for today's embedded systems design methods, this volume features new examples including digital signal processing, multimedia, and cyber-physical systems. It also covers the latest processors from Texas Instruments, ARM, and Microchip Technology plus software, operating systems, networks, consumer devices, and more. Like the previous editions, this textbook uses real processors to demonstrate both technology and techniques; shows readers how to apply principles to actual design practice; stresses necessary fundamentals that can be applied to evolving technologies; and helps readers gain facility to design large, complex embedded systems. Updates in this edition include: description of cyber-physical systems; exploration of the PIC and TI OMAP processors; high-level representations of systems using signal flow graphs; enhanced material on interprocess communication and buffering in operating systems; and design examples that include an audio player, digital camera, and cell phone. The author maintains a robust ancillary site at http://www.marilynwolf.us/CaC3e/index.html which includes a variety of support materials for instructors and students, including PowerPoint slides for each chapter; lab assignments developed for multiple systems including the ARM-based BeagleBoard computer; downloadable exercises solutions and source code; and links to resources and additional information on hardware, software, systems, and more. This book will appeal to students in an embedded systems design course as well as to researchers and savvy professionals schooled in hardware or software design. Description of cyber-physical systems: physical systems with integrated computation to give new capabilities Exploration of the PIC and TI OMAP multiprocessors High-level representations of systems using signal flow graphs Enhanced material on interprocess communication and buffering in operating systems Design examples include an audio player, digital camera, cell phone, and more Computers as Components: Principles of Embedded Computing System Design, Third Edition (2012) 529pp. 978-0-12-388436-7 Front Cover 1 Computers as Components: Principles of Embedded Computing System Design 4 Copyright Page 5 Dedication 6 Table of Contents 8 Foreword to the First Edition 16 Preface to the First Edition 18 A note to embedded system professionals 19 A note to teachers 19 Acknowledgments 20 Preface to the Second Edition 22 Acknowledgments 22 Preface to the Third Edition 24 1 Embedded Computing 26 1.1 Introduction 26 1.2 Complex systems and microprocessors 26 1.2.1 Embedding computers 27 1.2.2 Characteristics of embedded computing applications 29 1.2.3 Why use microprocessors? 31 1.2.4 Cyber-physical systems 32 1.2.5 Challenges in embedded computing system design 33 1.2.6 Performance of embedded computing systems 34 1.3 The embedded system design process 35 1.3.1 Requirements 37 1.3.2 Specification 41 1.3.3 Architecture design 42 1.3.4 Designing hardware and software components 44 1.3.5 System integration 44 1.3.6 Formalisms for system design 45 1.3.7 Structural description 46 1.3.8 Behavioral description 50 1.4 Design example: Model train controller 53 1.4.1 Requirements 54 1.4.2 DCC 55 1.4.3 Conceptual specification 57 1.4.4 Detailed specification 60 1.4.5 Lessons learned 67 1.5 A guided tour of this book 67 1.5.1 Chapter 2: Instruction sets 68 1.5.2 Chapter 3: CPUs 68 1.5.3 Chapter 4: Computing platforms 69 1.5.4 Chapter 5: Program design and analysis 69 1.5.5 Chapter 6: Processes and operating systems 70 1.5.6 Chapter 7: System design techniques 71 1.5.7 Chapter 8: Networks and multiprocessors 72 1.6 Summary 72 What we learned 73 Further reading 73 Questions 73 Lab exercises 75 2 Instruction Sets 76 2.1 Introduction 76 2.2 Preliminaries 76 2.2.1 Computer architecture taxonomy 77 2.2.2 Assembly languages 79 2.2.3 VLIW processors 81 2.3 ARM processor 82 2.3.1 Processor and memory organization 83 2.3.2 Data operations 84 2.3.3 Flow of control 91 2.3.4 Advanced ARM features 97 2.4 PICmicro mid-range family 98 2.4.1 Processor and memory organization 98 2.4.2 Data operations 98 2.4.3 Flow of control 101 2.5 TI C55x DSP 102 2.5.1 Processor and memory organization 103 2.5.2 Addressing modes 106 2.5.3 Data operations 108 2.5.4 Flow of control 109 2.5.5 C coding guidelines 111 2.6 TI C64x 112 2.7 Summary 115 What we learned 115 Further reading 116 Questions 116 Lab exercises 118 3 CPUs 120 3.1 Introduction 120 3.2 Programming input and output 121 3.2.1 Input and output devices 121 3.2.2 Input and output primitives 123 3.2.3 Busy-wait I/O 124 3.2.4 Interrupts 126 Basics 126 Priorities and vectors 132 Interrupt overhead 136 Interrupts in ARM 137 Interrupts in C55x 138 Interrupts in PIC16F 138 3.3 Supervisor mode, exceptions, and traps 139 3.3.1 Supervisor mode 139 3.3.2 Exceptions 140 3.3.3 Traps 140 3.4 Co-processors 140 3.5 Memory system mechanisms 141 3.5.1 Caches 141 3.5.2 Memory management units and address translation 148 3.6 CPU performance 153 3.6.1 Pipelining 153 3.6.2 Cache performance 157 3.7 CPU power consumption 158 3.8 Design example: Data compressor 162 3.8.1 Requirements and algorithm 162 3.8.2 Specification 165 3.8.3 Program design 166 3.8.4 Testing 173 3.9 Summary 174 What we learned 174 Further reading 175 Questions 175 Lab exercises 178 4 Computing Platforms 180 4.1 Introduction 180 4.2 Basic computing platforms 180 4.2.1 Platform hardware components 181 4.2.2 Platform software components 183 4.3 The CPU bus 184 4.3.1 Bus organization and protocol 185 4.3.2 DMA 192 4.3.3 System bus configurations 195 4.4 Memory devices and systems 197 4.4.1 Memory system organization 199 4.5 Designing with computing platforms 201 4.5.1 Example platforms 201 4.5.2 Choosing a platform 201 4.5.3 Intellectual property 204 4.5.4 Development environments 205 4.5.5 Debugging techniques 206 4.5.6 Debugging challenges 208 4.6 Consumer electronics architecture 210 4.6.1 Consumer electronics use cases and requirements 210 4.6.2 File systems 212 4.7 Platform-level performance analysis 213 4.8 Design example: Alarm clock 218 4.8.1 Requirements 218 4.8.2 Specification 219 4.8.3 System architecture 222 4.8.4 Component design and testing 225 4.8.5 System integration and testing 225 4.9 Design example: Audio player 225 4.9.1 Theory of operation and requirements 225 4.9.2 Specification 227 4.9.3 System architecture 229 4.9.4 Component design and testing 231 4.9.5 System integration and debugging 231 4.10 Summary 232 What we learned 232 Further reading 232 Questions 232 Lab exercises 235 5 Program Design and Analysis 238 5.1 Introduction 238 5.2 Components for embedded programs 239 5.2.1 State machines 239 5.2.2 Circular buffers and stream-oriented programming 241 5.2.3 Queues and producer/consumer systems 246 5.3 Models of programs 248 5.3.1 Data flow graphs 249 5.3.2 Control/data flow graphs 251 5.4 Assembly, linking, and loading 253 5.4.1 Assemblers 254 5.4.2 Linking 258 5.4.3 Object code design 260 5.5 Compilation techniques 261 5.5.1 The compilation process 261 5.5.2 Basic compilation methods 262 5.5.3 Compiler optimizations 270 5.6 Program-level performance analysis 279 5.6.1 Elements of program performance 281 5.6.2 Measurement-driven performance analysis 284 5.7 Software performance optimization 287 5.7.1 Loop optimizations 287 5.7.2 Cache optimizations 289 5.7.3 Performance optimization strategies 290 5.8 Program-level energy and power analysis and optimization 291 5.9 Analysis and optimization of program size 295 5.10 Program validation and testing 296 5.10.1 Clear-box testing 296 5.10.2 Black-box testing 303 5.10.3 Evaluating functional tests 304 5.11 Design example: Software modem 305 5.11.1 Theory of operation and requirements 305 5.11.2 Specification 308 5.11.3 System architecture 308 5.11.4 Component design and testing 309 5.11.5 System integration and testing 310 5.12 Design example: Digital still camera 310 5.12.1 Theory of operation and requirements 310 5.12.2 Specification 315 5.12.3 System Architecture 318 5.12.4 Component design and testing 321 5.12.5 System integration and testing 321 5.13 Summary 321 What we learned 321 Further reading 322 Questions 322 Lab exercises 330 6 Processes and Operating Systems 332 6.1 Introduction 332 6.2 Multiple tasks and multiple processes 333 6.2.1 Tasks and processes 333 6.3 Multirate systems 335 6.3.1 Timing requirements on processes 336 6.3.2 CPU usage metrics 341 6.3.3 Process state and scheduling 341 6.3.4 Running periodic processes 342 6.4 Preemptive real-time operating systems 344 6.4.1 Two basic concepts 345 6.4.2 Processes and context 346 6.4.3 Processes and object-oriented design 349 6.5 Priority-based scheduling 350 6.5.1 Rate-monotonic scheduling 351 6.5.2 Shared resources 355 6.5.3 Priority inversion 357 6.5.4 Earliest-deadline-first scheduling 358 6.5.7 RMS versus EDF 362 6.5.8 A closer look at our modeling assumptions 362 6.6 Interprocess communication mechanisms 365 6.6.1 Shared memory communication 365 6.6.2 Message passing 366 6.6.3 Signals 367 6.6.4 Mailboxes 368 6.7 Evaluating operating system performance 369 6.8 Power optimization strategies for processes 374 6.9 Example real-time operating systems 377 6.9.1 POSIX 377 6.9.2 Windows CE 382 6.10 Design example: Telephone answering machine 386 6.10.1 Theory of operation and requirements 386 6.10.2 Specification 389 6.10.3 System architecture 391 6.10.4 Component design and testing 393 6.10.5 System integration and testing 393 6.11 Design example: Engine control unit 394 6.11.1 Theory of operation and requirements 394 6.11.2 Specification 395 6.11.3 System architecture 396 6.11.4 Component design and testing 398 6.11.5 System integration and testing 399 6.12 Summary 399 What we learned 399 Further reading 399 Questions 400 Lab exercises 405 7 System Design Techniques 406 7.1 Introduction 406 7.2 Design methodologies 406 7.2.1 Why design methodologies? 406 7.2.2 Design flows 408 7.3 Requirements analysis 414 7.4 Specifications 415 7.4.1 Control-oriented specification languages 416 7.4.2 Advanced specifications 419 7.5 System analysis and architecture design 421 7.5.1 CRC cards 421 7.6 Quality assurance 425 7.6.1 Quality assurance techniques 427 7.6.2 Verifying the specification 429 7.6.3 Design reviews 431 7.7 Summary 432 What we learned 432 Further reading 433 Questions 433 Lab exercises 433 8 Networks and Multiprocessors 434 8.1 Introduction 434 8.2 Why networks and multiprocessors? 434 8.3 Categories of multiprocessors 437 8.4 Distributed embedded systems 439 8.4.1 Network abstractions 439 8.4.2 CAN bus 441 8.4.3 Distributed computing in cars and airplanes 444 8.4.4 I2C bus 447 8.4.5 Ethernet 451 8.4.6 Internet 454 8.5 MPSoCs and shared memory multiprocessors 456 8.5.1 Heterogeneous shared memory multiprocessors 456 8.5.2 Accelerators 457 8.5.3 Accelerator performance analysis 459 8.5.4 Scheduling and allocation 463 8.6 Design example: Video accelerator 466 8.6.1 Video compression 466 8.6.2 Algorithm and requirements 468 8.6.3 Specification 470 8.6.4 Architecture 471 8.6.5 Component design 474 8.6.6 System testing 474 8.7 Application example: Compact disc 474 8.8 Summary 479 What we learned 479 Further reading 479 Questions 480 Lab exercises 481 Glossary 484 A 484 B 484 C 485 D 487 E 489 F 490 G 490 H 490 I 491 J 492 L 492 M 493 N 494 O 494 P 495 Q 496 R 497 S 498 T 500 U 500 V 501 W 501 Z 501 References 502 Index 512 A 512 B 513 C 513 D 515 E 516 F 517 G 518 H 518 I 518 J 519 L 519 M 519 N 520 O 520 P 521 Q 522 R 522 S 523 T 524 U 524 V 525 W 525 X 525
Computers as Components: Principles of Embedded Computing System Design, 3e, presents essential knowledge on embedded systems technology and techniques. Updated for today's embedded systems design methods, this edition features new examples including digital signal processing, multimedia, and cyber-physical systems. Author Marilyn Wolf covers the latest processors from Texas Instruments, ARM, and Microchip Technology plus software, operating systems, networks, consumer devices, and more.
Like the previous editions, this textbook:
- Uses real processors to demonstrate both technology and techniques
- Shows readers how to apply principles to actual design practice
- Stresses necessary fundamentals that can be applied to evolving technologies and helps readers gain facility to design large, complex embedded systems
Updates in this edition include:
- Description of cyber-physical systems: physical systems with integrated computation to give new capabilities
- Exploration of the PIC and TI OMAP processors
- High-level representations of systems using signal flow graphs
- Enhanced material on interprocess communication and buffering in operating systems
- Design examples include an audio player, digital camera, cell phone, and more
Updates in this edition include:
- Description of cyber-physical systems: physical systems with integrated computation to give new capabilities
- Exploration of the PIC and TI OMAP multiprocessors
- High-level representations of systems using signal flow graphs
- Enhanced material on interprocess communication and buffering in operating systems
- Design examples include an audio player, digital camera, cell phone, and more
**__Computers as Components: Principles of Embedded Computing System Design, 3e__**, presents essential knowledge on embedded systems technology and techniques. Updated for today's embedded systems design methods, this edition features new examples including digital signal processing, multimedia, and cyber-physical systems. Author Marilyn Wolf covers the latest processors from Texas Instruments, ARM, and Microchip Technology plus software, operating systems, networks, consumer devices, and more. **Like the previous editions, this textbook:** * Uses real processors to demonstrate both technology and techniques * Shows readers how to apply principles to actual design practice * Stresses necessary fundamentals that can be applied to evolving technologies and helps readers gain facility to design large, complex embedded systems **Updates in this edition include:** * Description of cyber-physical systems: physical systems with integrated computation to give new capabilities * Exploration of the PIC and TI OMAP processors * High-level representations of systems using signal flow graphs * Enhanced material on interprocess communication and buffering in operating systems * Design examples include an audio player, digital camera, cell phone, and more Updates in this edition include: * Description of cyber-physical systems: physical systems with integrated computation to give new capabilities * Exploration of the PIC and TI OMAP multiprocessors * High-level representations of systems using signal flow graphs * Enhanced material on interprocess communication and buffering in operating systems * Design examples include an audio player, digital camera, cell phone, and more " ... presents essential knowledge on embedded systems technology and techniques. Updated for today's embedded systems design methods, this edition features new examples including digital signal processing, multimedia, and cyber-physical systems. Author Marilyn Wolf covers the latest processors from Texas Instruments, ARM, and Microchip Technology plus software, operating systems, networks, consumer devices, and more. Like the previous editions, this textbook: Uses real processors to demonstrate both technology and techniques -- Shows readers how to apply principles to actual design practice -- Stresses necessary fundamentals that can be applied to evolving technologies and helps readers gain facility to design large, complex embedded systems -- Helps readers gain facility to design large, complex embedded systems. Updates in this edition include: Description of cyber-physical systems: physical systems with integrated computation to give new capabilities -- Exploration of the PIC and TI OMAP processors -- High-level representations of systems using signal flow graphs -- Enhanced material on interprocess communication and buffering in operating systems -- Design examples include an audio player, digital camera, cell phone, and more."--Page 4 of cover This title presents essential knowledge on embedded systems technology and techniques. Updated for today's embedded systems design methods, this edition features new examples including digital signal processing, multimedia, and cyber-physical systems. Author Marilyn Wolf covers the latest processors from Texas Instruments, ARM, and Microchip Technology plus software, operating systems, networks, consumer devices, and more. Like the previous editions, this textbook: uses real processors to demonstrate both technology and techniques; shows readers how to apply principles to actual design practice; stresses necessary fundamentals that can be applied to evolving technologies; and, helps readers gain facility to design large, complex embedded systems. Updates in this edition include: description of cyber-physical systems: physical systems with integrated computation to give new capabilities; exploration of the PIC and TI OMAP processors; high-level representations of systems using signal flow graphs; enhanced material on interprocess communication and buffering in operating systems; and, design examples include an audio player, digital camera, cell phone, and more