Embedded Software: Know It All
Samenvatting
Embedded software developments is perhaps the most crucial aspect of any embedded system design project and may also be the most difficult. Memory space and clock cycles are often scarce commodities, and software/hardware "mating" is more critical than in programming fo0r PCs and other larger computers. The development process, especially error handling and debugging, can be bewildering and the information necessary for embedded software development has-until now-been scattered among numerous different books, papers, and other references.
That's why you need Embedded Software! Assembled form the works of noted embedded software experts, this book provides a broad and detailed examination of embedded software development that no book by a single author can possible provide. 'Embedded Software: Know It All' provides a solid foundation in the essentials of embedded software development as well as comprehensive discussion of such advanced topics as digital processing (DSP) in embedded systems, development tools and systems, debugging embedded software and much more.
Embedded Software: Know It All give you:
- Best practice techniques for embedded operating systems
- Proven coding methods for embedded
- Practical examples of driver development and embedded media processing
- Real-world approaches to networking embedded systems
Specificaties
Inhoudsopgave
Introduction
1. Basic Embedded Programming Concepts
1.1 Numbering Systems
1.2 Signed Binary Numbers
1.3 Data Structures
1.4 Communication Protocols
1.5 Mathematics
1.6 Numeric Comparison
1.7 State Machines
1.8 Multitasking
2. Device Drivers
2.1 In This Chapter
2.2 Example 1: Device Drivers for Interrupt- Handling
2.3 Example 2: Memory Device Drivers
2.4 Example 3: Onboard Bus Device Drivers
2.5 Board I/O Driver Examples
2.6 Summary
3. Embedded Operating Systems
3.1 In This Chapter
3.2 What Is a Process?
3.3 Multitasking and Process Management
3.4 Memory Management
3.5 I/O and File System Management
3.6 OS Standards Example: POSIX (Portable Operating System Interface)
3.7 OS Performance Guidelines
3.8 OSes and Board Support Packages (BSP)
3.9 Summary
4. Networking
4.1 Introduction to the RCM3200 Rabbit Core
4.2 Introduction to the Dynamic C Development Environment
4.3 Brief Introduction to Dynamic C Libraries
4.4 Memory Spaces in Dynamic C
4.5 How Code Is Compiled and Run
4.6 Setting Up a PC as an RCM3200 Development System
4.7 Time to Start Writing Code!
4.8 Embedded Networks
4.9 Dynamic C Support for Networking Protocols
4.10 Typical Network Setup
4.11 Setting Up a Core Module?s Network Configuration
4.12 Project 1: Bringing Up a Rabbit Core Module for Networking
4.13 The Client Server Paradigm
4.14 The Berkeley Sockets Interface
4.15 Using TCP versus UDP in an Embedded Application
4.16 Important Dynamic C Library Functions for Socket Programming
4.17 Project 2: Implementing a Rabbit TCP/IP Server
4.18 Project 3: Implementing a Rabbit TCP/IP Client
4.19 Project 4: Implementing a Rabbit UDP Server
4.20 Some Useful (and Free!) Networking Utilities
4.21 Final Thought
5. Error Handling and Debugging
5.1 The Zen of Embedded Systems Development and Troubleshooting
5.2 The FIXER Hat
5.3 Proactive Debugging
5.4 Stacks and Heaps
5.5 Seeding Memory
5.6 Wandering Code
5.7 Special Decoders
5.8 MMUs
5.9 Conclusion
5.10 Implementing Downloadable Firmware with Flash Memory
5.11 The Microprogrammer
5.12 Advantages of Microprogrammers
5.13 Disadvantages of Microprogrammers
5.14 Receiving a Microprogrammer
5.15 A Basic Microprogrammer
5.16 Common Problems and Their Solutions
5.17 Hardware Alternatives
5.18 Memory Diagnostics
5.19 ROM Tests
5.20 RAM Tests
5.21 Nonvolatile Memory
5.22 Supervisory Circuits
5.23 Multibyte Writes
5.24 Testing
5.25 Conclusion
5.26 Building a Great Watchdog
5.27 Internal WDTs
5.28 External WDTs
5.29 Characteristics of Great WDTs
5.30 Using an Internal WDT
5.31 An External WDT
5.32 WDTs for Multitasking
5.33 Summary and Other Thoughts
6. Hardware/Software Co-Verification
6.1 Embedded System Design Process
6.2 Verification and Validation
6.3 Human Interaction
6.4 Co-Verification
7. Techniques for Embedded Media Processing
7.1 A Simplified Look at a Media Processing System
7.2 System Resource Partitioning and Code Optimization
7.3 Event Generation and Handling
7.4 Programming Methodology
7.5 Architectural Feature for Efficient Programming
7.6 Compiler Considerations for Efficient Programming
7.7 System and Core Synchronization
7.8 Memory Architecture-the Need for Management
7.9 Physics of Data Movement
7.10 Media processing Frameworks
7.11 Defining Your Framework
7.12 Asymmetric and Symmetric Dual-Core Processors
7.13 Programming Models
7.14 Strategies for Architecting a Framework
7.15 Other Topics in Media Frameworks
8. DSP in Embedded Systems
8.1 Overview of Embedded Systems and Real-Time Systems
8.2 Real-Time Systems
8.3 Hard Real-Time and Soft Real-Time Systems
8.4 Efficient Execution and the Execution Environment
8.5 Challenges in Real-Time System Design
8.6 Summary
8.7 Overview of Embedded Systems Development Life Cycle Using DSP
8.8 The Embedded System Life Cycle Using DSP
8.9 Optimizing DSP Software
8.10 What Is Optimization?
8.11 The Process
8.12 Make the Common Case Fast
8.13 Make the Common Case Fast-DSP Architectures
8.14 Make the Common Case Fast-DSP Algorithms
8.15 Make the Common Case Fast-DSP Compilers
8.16 An In-Depth Discussion of DSP Optimization
8.17 Direct Memory Access
8.18 Using DMA
8.19 Loop Unrolling
8.20 Software Pipelining
8.21 More on DSP Compilers and Optimization
8.22 Programmer Helping Out the Compiler
8.23 Profile-Based Compilation
8.24 References
9. Practical Embedded Coding Techniques
9.1 Reentrancy
9.2 Atomic Variables
9.3 Two More Rules
9.4 Keeping Code Reentrant
9.5 Recursion
9.6 Asynchronous Hardware/Firmware
9.7 Race Conditions
9.8 Options
9.9 Other RTOSes
9.10 Metastable States
9.11 Fireware, not Hardware
9.12 Interrupt Latency
9.13 Taking Data
9.14 Understanding Your C Compiler: How to Minimize Code Size
9.15 Modern C Compilers
9.16 Tips on Programming
9.17 Final Notes
9.18 Acknowledgments
10. Development Technologies and Trends
10.1 How to Choose a CPU for Your System or Chip Design
10.2 Emerging Technology for Embedded Systems Software Development
10.3 Making Development Tool Choices
10.4 Eclipse-Bringing Embedded Tools Together
10.5 Embedded Software and UML
10.6 Model-Based Systems Development with xtUML
10.7 The future
Index
Anderen die dit boek kochten, kochten ook
Net verschenen
Rubrieken
- aanbestedingsrecht
- aansprakelijkheids- en verzekeringsrecht
- accountancy
- algemeen juridisch
- arbeidsrecht
- bank- en effectenrecht
- bestuursrecht
- bouwrecht
- burgerlijk recht en procesrecht
- europees-internationaal recht
- fiscaal recht
- gezondheidsrecht
- insolventierecht
- intellectuele eigendom en ict-recht
- management
- mens en maatschappij
- milieu- en omgevingsrecht
- notarieel recht
- ondernemingsrecht
- pensioenrecht
- personen- en familierecht
- sociale zekerheidsrecht
- staatsrecht
- strafrecht en criminologie
- vastgoed- en huurrecht
- vreemdelingenrecht