Muutke küpsiste eelistusi

E-raamat: Embedded Software: The Works

(Mentor, a Siemens business, Newbury, UK)
  • Formaat: PDF+DRM
  • Ilmumisaeg: 01-May-2012
  • Kirjastus: Newnes (an imprint of Butterworth-Heinemann Ltd )
  • Keel: eng
  • ISBN-13: 9780124159693
Teised raamatud teemal:
  • Formaat - PDF+DRM
  • Hind: 45,68 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
  • Formaat: PDF+DRM
  • Ilmumisaeg: 01-May-2012
  • Kirjastus: Newnes (an imprint of Butterworth-Heinemann Ltd )
  • Keel: eng
  • ISBN-13: 9780124159693
Teised raamatud teemal:

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

As the embedded world expands, developers must have a strong grasp of many complex topics in order to make faster, more efficient and more powerful microprocessors to meet the public’s growing demand. Embedded Software: The Works covers all the key subjects embedded engineers need to understand in order to succeed, including Design and Development, Programming, Languages including C/C++, and UML, Real Time Operating Systems Considerations, Networking, and much more. New material on Linux, Android, and multi-core gives engineers the up-to-date practical know-how they need in order to succeed.

Colin Walls draws upon his experience and insights from working in the industry, and covers the complete cycle of embedded software development: its design, development, management, debugging procedures, licensing, and reuse. For those new to the field, or for experienced engineers looking to expand their skills, Walls provides the reader with detailed tips and techniques, and rigorous explanations of technologies.

Key features include:

  • New chapters on Linux, Android, and multi-core - the cutting edge of embedded software development!
  • Introductory roadmap guides readers through the book, providing a route through the separate chapters and showing how they are linked
  • Accompanying source code and PowerPoint slides provide helpful training material and real-world experience for readers

About the Author

Colin Walls has over twenty-five years experience in the electronics industry, largely dedicated to embedded software. A frequent presenter at conferences and seminars and author of numerous technical articles and two books on embedded software, he is a member of the marketing team of the Mentor Graphics Embedded Software Division. He writes a regular blog on the Mentor website (blogs.mentor.com/colinwalls).

  • New chapters on Linux, Android, and multi-core - the cutting edge of embedded software development!
  • Introductory roadmap guides readers through the book, providing a route through the separate chapters and showing how they are linked
  • Accompanying source code and PowerPoint slides provide helpful training material and real-world experience for readers

Muu info

Understand the complete cycle of embedded software development, from concepts to applications to future trends!
Foreword xix
Preface to the First Edition xxiii
Preface to the Second Edition xxix
What's on the Website? xxxi
Roadmap to Embedded Software Development xxxv
Chapter 1 Embedded Software
1(46)
1.1 What Makes an Embedded Application Tick?
1(7)
1.1.1 Development Challenges
2(1)
1.1.2 Reusable Software
3(1)
1.1.3 Real-Time Operating System
4(1)
1.1.4 File System
5(1)
1.1.5 USB
5(1)
1.1.6 Graphics
5(1)
1.1.7 Networking
6(2)
1.1.8 Conclusion
8(1)
1.2 Memory in Embedded Systems
8(4)
1.2.1 Memory
9(1)
1.2.1 Implementation Challenges
10(1)
1.2.3 When All Goes Wrong
11(1)
1.2.4 When All Goes Right
11(1)
1.3 Memory Architectures
12(6)
1.3.1 The Options
12(1)
1.3.2 Flat Single-Space Memory
13(1)
1.3.3 Segmented Memory
13(1)
1.3.4 Bank-Switched Memory
14(1)
1.3.5 Multiple-Space Memory
15(2)
1.3.6 Virtual Memory
17(1)
1.3.7 Cache Memory
17(1)
1.3.8 Memory Management Units
17(1)
1.3.9 Conclusions
18(1)
1.4 How Software Influences Hardware Design
18(4)
1.4.1 Who Designs the Hardware?
18(1)
1.4.2 Software Leading Hardware
19(1)
1.4.3 Software/Hardware Trade-Offs
19(1)
1.4.4 Debug Hardware
20(1)
1.4.5 Self-Test Support
21(1)
1.4.6 Conclusions
22(1)
1.5 Migrating Your Software to a New Processor Architecture
22(7)
1.5.1 Target Specifics
22(3)
1.5.2 RTOS Issues
25(1)
1.5.3 Processor Migration and Open Standards
26(3)
1.5.4 Conclusions
29(1)
1.6 Embedded Software for Transportation Applications
29(4)
1.6.1 Introduction
29(1)
1.6.2 Transportation System Characteristics
29(1)
1.6.3 Programming Issues
30(1)
1.6.4 Real-Time Operating System Factors
31(1)
1.6.5 Conclusions
32(1)
1.7 How to Choose a CPU for Your System on Chip Design
33(3)
1.7.1 Design Complexity
33(1)
1.7.2 Design Reuse
33(1)
1.7.3 Memory Architecture and Protection
34(1)
1.7.4 CPU Performance
34(1)
1.7.5 Power Consumption
35(1)
1.7.6 Costs
35(1)
1.7.7 Software Issues
35(1)
1.7.8 Multicore SoCs
35(1)
1.7.9 Conclusions
36(1)
1.8 An Introduction to USB Software
36(4)
1.8.1 What Is USB?
36(1)
1.8.2 A USB Peripheral
37(1)
1.8.3 USB Communications
37(1)
1.8.4 USB Software
38(1)
1.8.5 USB and Embedded Systems
39(1)
1.8.6 Conclusions
40(1)
1.9 Toward USB 3.0
40(7)
1.9.1 Introduction
41(1)
1.9.2 Bus Architecture
41(1)
1.9.3 Cables and Connectors
41(1)
1.9.4 Packet Routing
41(1)
1.9.5 Bidirectional Protocol Flow
41(1)
1.9.6 Bulk Streaming
42(1)
1.9.7 USB 3.0 Power Management
43(1)
1.9.8 USB 3.0 Hubs
43(1)
1.9.9 xHCI---New Host Controller Interface
43(1)
1.9.10 Future Applications for USB
43(1)
1.9.11 Conclusions
44(1)
Further Reading
45(2)
Chapter 2 Design and Development
47(54)
2.1 Emerging Technology for Embedded Systems Software Development
47(7)
2.1.1 Microprocessor Device Technology
48(1)
2.1.2 System Architecture
48(2)
2.1.3 Design Composition
50(1)
2.1.4 Software Content
51(1)
2.1.5 Programming Languages
52(1)
2.1.6 Software Team Size and Distribution
52(1)
2.1.7 UML and Modeling
53(1)
2.1.8 Key Technologies
53(1)
2.1.9 Conclusions
54(1)
2.2 Making Development Tool Choices
54(11)
2.2.1 The Development Tool Chain
54(1)
2.2.2 Compiler Features
55(1)
2.2.3 Extensions for Embedded Systems
56(2)
2.2.4 Optimizations
58(1)
2.2.5 Build Tools: Key Issues Recapped
59(1)
2.2.6 Debugging
59(4)
2.2.7 Debug Tools: Key Issues Recapped
63(1)
2.2.8 Standards and Development Tool Integration
63(1)
2.2.9 Implications of Selections
64(1)
2.2.10 Conclusions
65(1)
2.3 Eclipse---Bringing Embedded Tools Together
65(4)
2.3.1 Introduction
65(1)
2.3.2 Eclipse Platform Philosophy
66(1)
2.3.3 Platform
66(1)
2.3.4 How Eclipse Gets Embedded
67(2)
2.3.5 Conclusions
69(1)
2.4 A Development System That Crosses RTOS Boundaries
69(4)
2.4.1 Are Standards the Solution?
69(1)
2.4.2 The Eclipse Solution
70(1)
2.4.3 Eclipse Plug-Ins
70(1)
2.4.4 Eclipse Licensing
71(1)
2.4.5 Eclipse User Advantages
71(1)
2.4.6 Perspectives
71(1)
2.4.7 Nonembedded Plug-Ins
72(1)
2.5 Embedded Software and UML
73(12)
2.5.1 Why Model in UML?
73(4)
2.5.2 Separating Application from Architecture
77(4)
2.5.3 xtUML Code Generation
81(3)
2.5.4 Conclusions
84(1)
2.6 User Interface Development
85(5)
2.6.1 User Interface Diversity
85(1)
2.6.2 Implementing a User Interface
86(2)
2.6.3 A Rationalized UI Solution
88(2)
2.6.4 Conclusions
90(1)
2.7 Software and Power Consumption
90(11)
2.7.1 Introduction
90(2)
2.7.2 Software Issues
92(2)
2.7.3 Power Control in Software
94(2)
2.7.4 Multicore
96(1)
2.7.5 Hardware Issues
97(2)
2.7.6 Virtual Programming
99(1)
2.7.7 Conclusions
99(2)
Chapter 3 Programming
101(24)
3.1 Programming for Exotic Memories
101(4)
3.1.1 Exotic Memories
101(1)
3.1.2 Nonvolatile RAM
102(2)
3.1.3 Shared Memory
104(1)
3.1.4 Conclusions
105(1)
3.2 Self-Testing in Embedded Systems
105(4)
3.2.1 Memory Testing
105(3)
3.2.2 Input/Output Devices
108(1)
3.2.3 Multithreading Issues
108(1)
3.2.4 Watchdogs
109(1)
3.2.5 Self-Test Failures
109(1)
3.2.6 Final Points
109(1)
3.3 A Command-Line Interpreter
109(9)
3.3.1 Embedded Systems Diagnostics
110(1)
3.3.2 An Embedded System Comes Alive
111(1)
3.3.3 A Command-Line Interpreter---Requirements
111(1)
3.3.4 Designing a Command-Line Interpreter
111(1)
3.3.5 A CLI Implementation
112(1)
3.3.6 CLI Prototype Code
113(5)
3.3.7 Conclusions
118(1)
3.4 Traffic Lights: An Embedded Software Application
118(7)
3.4.1 The Application
119(1)
3.4.2 Hardware Configuration
119(1)
3.4.3 Program Implementation
119(1)
3.4.4 Main Loop
120(1)
3.4.5 Interrupts
121(1)
3.4.6 Time Delays
122(1)
3.4.7 Lights
122(1)
3.4.8 Using Global Variables
123(2)
Chapter 4 C Language
125(52)
4.1 C Common
125(3)
4.2 Using C Function Prototypes
128(2)
4.2.1 Before Prototypes
128(1)
4.2.2 Applying Prototypes
129(1)
4.2.3 Prototypes in Use
129(1)
4.3 Interrupt Functions and ANSI Keywords
130(4)
4.3.1 Interrupt Functions
130(2)
4.3.2 ANSI C const Keyword
132(1)
4.3.3 ANSI C Volatile Keyword
133(1)
4.4 Bit by Bit
134(4)
4.4.1 Bitwise Operators
135(1)
4.4.2 Binary Constants
135(1)
4.4.3 Bit Fields in Structures
135(1)
4.4.4 Microprocessor Bit-Field Instructions
136(1)
4.4.5 I/O Devices and Bit Fields
137(1)
4.4.6 Conclusions
138(1)
4.5 Programming Floating-Point Applications
138(3)
4.5.1 A Test Case
138(1)
4.5.2 Running the Test Case
139(1)
4.5.3 Troubleshooting
140(1)
4.5.4 Lessons Learned
140(1)
4.6 Looking at C---A Different Perspective
141(3)
4.6.1 Static Things
141(1)
4.6.2 All Those Semicolons
142(1)
4.6.3 Pointers and Pointer Arithmetic
142(1)
4.6.4 When Being Clever Is Not Being Smart
142(1)
4.6.5 Conclusions
143(1)
4.7 Reducing Function Call Overhead
144(4)
4.7.1 Compilers and Structured Code
144(1)
4.7.2 Inline Functions
145(1)
4.7.3 Function Calls
145(1)
4.7.4 Parameter Passing
145(1)
4.7.5 Local Storage
146(1)
4.7.6 Stack Frame Generation
146(2)
4.7.7 Return Values
148(1)
4.7.8 Conclusions
148(1)
4.8 Structure Layout---Become an Expert
148(14)
4.8.1 Key Concepts
149(4)
4.8.2 Bit Fields
153(1)
4.8.3 Tips and Techniques
154(8)
4.9 Memory and Programming in C
162(2)
4.9.1 Memory
163(1)
4.9.2 Sections
163(1)
4.9.3 Conclusions
163(1)
4.10 Pointers and Arrays in C and C++
164(2)
4.10.1 Pointers and Pointer Arithmetic
164(1)
4.10.2 Arrays and Pointers
165(1)
4.10.3 Conclusions
166(1)
4.11 Using Dynamic Memory in C and C++
166(11)
4.11.1 C/C++ Memory Spaces
166(2)
4.11.2 Dynamic Memory in C
168(1)
4.11.3 Dynamic Memory in C++
169(1)
4.11.4 Issues and Problems
170(1)
4.11.5 Memory Fragmentation
171(2)
4.11.6 Memory with an RTOS
173(1)
4.11.7 Real-Time Memory Solutions
174(1)
4.11.8 Conclusions
175(2)
Chapter 5 C++
177(52)
5.1 C++ in Embedded Systems---A Management Perspective
177(2)
5.1.1 Embedded Systems Development Teams
177(1)
5.1.2 Object-Oriented Programming
178(1)
5.1.3 Team Management and Object-Oriented Techniques
178(1)
5.1.4 C++ as an Object-Oriented Language
178(1)
5.1.5 Overheads
179(1)
5.1.6 The Way Forward
179(1)
5.2 Why Convert from C to C++?
179(6)
5.2.1 Hide Implementation Details
180(1)
5.2.2 Reuse Class Code
180(1)
5.2.3 Reuse Generic Classes
181(1)
5.2.4 Extend Operators
181(1)
5.2.5 Derive Classes from Base Classes
181(1)
5.2.6 Avoid Errors Through Function Prototyping
182(1)
5.2.7 Add Parameters Without Changing Function Calls
182(1)
5.2.8 Using Safer, Simpler I/O
182(1)
5.2.9 Improve Performance with Fast Inline Functions
183(1)
5.2.10 Overload Function Names
183(1)
5.2.11 Embedded System Support
184(1)
5.2.12 Change Involves Effort
184(1)
5.2.13 Massage C Code into C++
184(1)
5.2.14 The Hard Part: Designing Objects
185(1)
5.2.15 If It Ain't Broke, Don't Fix it
185(1)
5.3 Clearing the Path to C++
185(9)
5.3.1 A Strategy for Transition
186(1)
5.3.2 Evolutionary Steps
186(1)
5.3.3 Applying Reusability
186(1)
5.3.4 Writing Clean C
187(4)
5.3.5 C+---Nearly C++
191(3)
5.3.6 Conclusions---The Path Ahead
194(1)
5.4 C++ Templates---Benefits and Pitfalls
194(6)
5.4.1 What Are Templates?
195(2)
5.4.2 Template Instantiation
197(1)
5.4.3 Problems with Templates
197(1)
5.4.4 Multiple Template Parameters
198(1)
5.4.5 Other Template Applications
199(1)
5.4.6 Conclusions
199(1)
5.4.7 Postscript
199(1)
5.5 Exception Handling in C++
200(7)
5.5.1 Error Handling in C
200(1)
5.5.2 Does Not Involve Interrupts
200(1)
5.5.3 C++ Exception Handling
201(2)
5.5.4 Special Cases
203(3)
5.5.5 EHS and Embedded Systems
206(1)
5.5.6 Conclusions
206(1)
5.6 Looking at Code Size and Performance with C++
207(7)
5.6.1 How Efficient Is C++ Compared to C?
207(1)
5.6.2 How C++ Affects Application Memory Requirements
208(4)
5.6.3 Doing C++ Right
212(1)
5.6.4 Conclusions
213(1)
5.7 Write-Only Ports in C++
214(9)
5.7.1 Encapsulating Expertise
214(1)
5.7.2 Defining the Problem
214(2)
5.7.3 A Solution in C
216(1)
5.7.4 A First Attempt in C++
216(1)
5.7.5 Using Overloaded Operators
217(1)
5.7.6 Enhancing the wop Class
218(1)
5.7.7 Addressing Reentrancy
219(2)
5.7.8 Using an RTOS
221(1)
5.7.9 Expertise Encapsulated
222(1)
5.7.10 Other Possibilities
223(1)
5.7.11 The Way Forward
223(1)
5.8 Using Nonvolatile RAM with C++
223(6)
5.8.1 Requirements of Using Nonvolatile RAM with C++
223(1)
5.8.2 NVRAM Implementation
224(1)
5.8.3 A C++ nvram Class
224(3)
5.8.4 Enhancing the nvram Class
227(1)
5.8.5 Conclusions
227(1)
Further Reading
228(1)
Chapter 6 Real Time
229(14)
6.1 Real-Time Systems
229(3)
6.1.1 Implementing an RTS
230(1)
6.1.2 A Processing Loop
230(1)
6.1.3 Interrupts
230(1)
6.1.4 Multitasking
231(1)
6.1.5 Using an RTOS
232(1)
6.2 Visualizing Program Models of Embedded Systems
232(4)
6.2.1 Which Programming Model Is Best for Building Real-Time Systems?
232(1)
6.2.2 What Purpose Do Models Serve for a Real-Time System?
232(1)
6.2.3 What Differences Exist Between Models, and What Gains Require What Sacrifices?
233(1)
6.2.4 What Is the Single-Threaded Programming Model?
233(1)
6.2.5 What Are the Advantages and Disadvantages of the Single-Threaded Programming Model?
233(1)
6.2.6 Is a Polling Loop a Single-Threaded Program?
233(1)
6.2.7 Is a State Machine a Single-Threaded Program?
234(1)
6.2.8 What Is a Multi-Threaded System?
234(1)
6.2.9 What Are the Advantages and Disadvantages of the Multi-Threaded Programming Model?
234(1)
6.2.10 Can Multiple Threads of Execution Really Run Simultaneously on One CPU?
235(1)
6.2.11 How Can a Multi-Threaded Environment for a Real-Time System Be Acquired?
235(1)
6.3 Event Handling in Embedded Systems
236(3)
6.3.1 What Is an Event?
236(1)
6.3.2 Is a Signal the Same Thing as an Event?
237(1)
6.3.3 What Events Are the Most Time Critical?
237(1)
6.3.4 What Does the Microprocessor Do When it Detects an Exception?
237(1)
6.3.5 Are All Exceptions the Same?
237(1)
6.3.6 What Is a Synchronous Exception?
237(1)
6.3.7 What Is an Asynchronous Exception?
238(1)
6.3.8 How Do Interrupts Get Generated and Serviced?
238(1)
6.3.9 What State Gets Saved by the CPU?
238(1)
6.3.10 Is the Machine State the Same as the Thread State?
238(1)
6.3.11 Should I Write Exception Handlers in Assembly Language or in C?
239(1)
6.3.12 How Do I Avoid Doing Work in the Exception Handler?
239(1)
6.4 Programming for Interrupts
239(4)
6.4.1 Setting up Interrupts
240(1)
6.4.2 Interrupt Service Routines
240(1)
6.4.3 Interrupt Vector
241(1)
6.4.4 Initialization
241(1)
6.4.5 Conclusions
241(2)
Chapter 7 Real-Time Operating Systems
243(44)
7.1 Debugging Techniques with an RTOS
243(11)
7.1.1 Introduction
243(1)
7.1.2 Multiprocess Concept
244(1)
7.1.3 Execution Environment
245(1)
7.1.4 Target Connection
246(1)
7.1.5 Debugging Modes
247(1)
7.1.6 RTOS-Aware Debugging Functionality
248(2)
7.1.7 Shared Code
250(1)
7.1.8 Task-Aware Breakpoints
250(1)
7.1.9 Dependent Tasks
251(1)
7.1.10 Memory Management Units
252(1)
7.1.11 Multiple Processors
253(1)
7.1.12 Conclusions
254(1)
7.2 A Debugging Solution for a Custom Real-Time Operating System
254(4)
7.2.1 Implementing Task-Aware Debugging
255(1)
7.2.2 Task-Awareness Facilities
256(2)
7.2.3 Conclusions
258(1)
7.3 Debugging---Stack Overflows
258(1)
7.3.1 Conclusions
259(1)
7.4 Bring in the Pros---When to Consider a Commercial RTOS
259(6)
7.4.1 Commercial and Custom RTOSes
260(1)
7.4.2 Advantages of a Commercial RTOS
260(1)
7.4.3 Commercial RTOS Downsides
260(1)
7.4.4 Why Write a Custom RTOS?
261(1)
7.4.5 Reasons Not to Create a Custom RTOS
262(1)
7.4.6 Conclusions
263(2)
7.5 On the Move
265(6)
7.5.1 Migrating from One RTOS to Another
265(1)
7.5.2 Code Migration
265(1)
7.5.3 Wrappers
266(3)
7.5.4 Drivers and More
269(1)
7.5.5 Debugging Issues
269(1)
7.5.6 Conclusions
269(2)
7.6 Introduction to RTOS Driver Development
271(3)
7.6.1 The Two Sides of a Device Driver
272(1)
7.6.2 Data Corruption
272(1)
7.6.3 Thread Control
272(1)
7.6.4 Program Logic
273(1)
7.6.5 Conclusions
274(1)
7.7 Scheduling Algorithms and Priority Inversion
274(4)
7.7.1 Introduction
274(1)
7.7.2 Real-Time Requirements
274(1)
7.7.3 Scheduling Algorithms
275(1)
7.7.4 Implications for Operating Systems and Applications
275(2)
7.7.5 Conclusions
277(1)
7.8 Time Versus Priority Scheduling
278(3)
7.8.1 RTOS Scheduling
278(1)
7.8.2 Perfect World
278(1)
7.8.3 Real World with Priority Scheduling
279(1)
7.8.4 Time Domain Bounded Without Relinquish
279(1)
7.8.5 Time Domain Bounded With Relinquish
280(1)
7.8.6 Conclusions
280(1)
7.9 An Embedded File System
281(2)
7.9.1 Requirements of an Embedded File System
282(1)
7.9.2 MS-DOS File System Overview
282(1)
7.9.3 Long Filenames
283(1)
7.9.4 Formatting
283(1)
7.9.5 Partitioning
283(1)
7.9.6 Devices
283(1)
7.10 OSEK---An RTOS Standard
283(4)
7.10.1 About OSEK
284(1)
7.10.2 OSEK Requirements
284(1)
7.10.3 OSEK Tasks
285(1)
7.10.4 Alarms
286(1)
7.10.5 Error Treatment
286(1)
Chapter 8 Networking
287(50)
8.1 What's Wi-Fi?
287(5)
8.1.1 Wireless Datacom
288(1)
8.1.2 IEEE 802.11
289(1)
8.1.3 802.11 Basics
289(1)
8.1.4 Wi-Fi and Bluetooth
290(1)
8.1.5 Where Next?
291(1)
8.2 Who Needs a Web Server?
292(6)
8.2.1 Introduction
292(1)
8.2.2 Three Primary Capabilities
292(2)
8.2.3 Web Servers at Work
294(2)
8.2.4 Brief Summary of the Web Server's Capabilities
296(1)
8.2.5 What Else Should You Consider?
297(1)
8.2.6 Conclusion
297(1)
8.3 Introduction to SNMP
298(4)
8.3.1 Why SNMP?
298(1)
8.3.2 The Role of Network Manager
299(1)
8.3.3 Architectural Model
299(1)
8.3.4 A Common Misperception
299(1)
8.3.5 Application-Level Manager-Agents
299(1)
8.3.6 How to Write Your MIB
300(1)
8.3.7 Terminology
301(1)
8.3.8 Conclusions
302(1)
8.4 IPv6---The Next Generation Internet Protocol
302(7)
8.4.1 Limitations of the Internet Protocol
303(1)
8.4.2 Introduction to IP Version 6
303(1)
8.4.3 Dual Stack Eases Transition
304(1)
8.4.4 How IPv6 Works
304(4)
8.4.5 RFC Support
308(1)
8.5 The Basics of DHCP
309(6)
8.5.1 A DHCP Server
309(1)
8.5.2 Theory of Operation
310(4)
8.5.3 RFC Support
314(1)
8.6 NAT Explained
315(3)
8.6.1 NAT Explained
315(2)
8.6.2 RFC Support
317(1)
8.6.3 Protocol Support
317(1)
8.6.4 Application Level Gateways
318(1)
8.6.5 The Private Network Address Assignment
318(1)
8.7 PPP---Point-to-Point Protocol
318(6)
8.7.1 Introduction
318(1)
8.7.2 How PPP Works
319(2)
8.7.3 PPP Details
321(3)
8.7.4 RFC Support
324(1)
8.8 Introduction to SSL
324(4)
8.8.1 Introduction
325(1)
8.8.2 How SSL Works
325(2)
8.8.3 Some SSL Details
327(1)
8.9 DHCP Debugging Tips
328(3)
8.10 IP Multicasting
331(6)
8.10.1 Initializing Multicasting
332(1)
8.10.2 IGMP Protocol
333(1)
8.10.3 Implementing Multicasting
333(2)
8.10.4 Bringing it All Together
335(2)
Chapter 9 Open Source, Embedded Linux, and Android
337(28)
9.1 GNU Toolchain for Embedded Development: Build or Buy
337(13)
9.1.1 Introduction
337(1)
9.1.2 Toolchain Components
338(2)
9.1.3 Building the Toolchain
340(4)
9.1.4 Validating the Toolchain
344(3)
9.1.5 Testing Multiple Options
347(2)
9.1.6 Conclusions
349(1)
9.2 Introduction to Linux for Embedded Systems
350(5)
9.2.1 Introduction
350(1)
9.2.2 Challenges Using Open Source
350(2)
9.2.3 OpenEmbedded
352(1)
9.2.4 Understanding Metadata
353(2)
9.2.5 Project Workflow
355(1)
9.2.6 Summary
355(1)
9.3 Android Architecture and Deployment
355(5)
9.3.1 What Is Android?
355(1)
9.3.2 Android Architecture
356(1)
9.3.3 Application Development
357(2)
9.3.4 The Android UI
359(1)
9.3.5 Extending Android Beyond Mobile
359(1)
9.3.6 Conclusion
360(1)
9.4 Android, MeeGo, and Embedded Linux in Vertical Markets
360(5)
9.4.1 Introduction
360(1)
9.4.2 How Vertical Markets Are Different
360(1)
9.4.3 The Appeal of Android
361(1)
9.4.4 The Promise of MeeGo
362(1)
9.4.5 The Versatility of Embedded Linux
363(1)
9.4.6 Conclusion
363(2)
Chapter 10 Multicore Embedded Systems
365(18)
10.1 Introduction to Multicore
365(2)
10.1.1 System Architecture
365(1)
10.1.2 Power
366(1)
10.1.3 Challenges
367(1)
10.2 Multiple Cores: Multiple Operating Systems
367(7)
10.2.1 SMP Hardware for AMP
368(1)
10.2.2 AMP Hardware Architecture
368(1)
10.2.3 AMP Software Architecture
369(1)
10.2.4 The Importance of Inter-Process Communication
370(1)
10.2.5 AMP Development Tools
370(1)
10.2.6 Difficulties
371(1)
10.2.7 AMP Use Cases
372(1)
10.2.8 The Use of a Hypervisor
373(1)
10.2.9 Conclusions
374(1)
10.3 Selecting Multiple Operating Systems for Multiple Cores
374(4)
10.3.1 Introduction
374(1)
10.3.2 Types of OS
375(1)
10.3.3 OS Selection
375(2)
10.3.4 Multicore Systems
377(1)
10.3.5 Conclusions
378(1)
10.4 CPU to CPU Communication: MCAPI
378(5)
10.4.1 Introduction
378(1)
10.4.2 Multicore
379(1)
10.4.3 The MCAPI
379(3)
10.4.4 Conclusion
382(1)
Afterword 383(2)
Index 385
Colin Walls has over forty years' experience in the electronics industry, largely involved with embedded software - very much a pioneer in this specialty. He has been a frequent presenter at conferences and seminars including:

Embedded Systems Conference, San Jose and Boston

Embedded World, Nuremberg

Arm Tech Con, California

Mentor events world-wide

Numerous partner events

Colin has authored a great many technical articles and one of the first books on embedded software [ "Programming Dedicated Microprocessors"; Macmillan Education, 1986]. His most recent publication is "Embedded Software: The Works" [ 2nd edition; Newnes, 2012], which addresses a wide range of embedded software topics. He is an embedded software technologist with Mentor, a Siemens business, and maintains a blog at http://blogs.mentor.com/colinwalls. Colin is based in the UK, where he lives with his family. Away from work, his main interests are photography, reading/writing, and food and drink.