Preface |
|
xi | |
Acknowledgments |
|
xv | |
Part I: Real-Time Embedded Theory |
|
|
|
3 | (18) |
|
|
3 | (1) |
|
1.2 A Brief History of Real-Time Systems |
|
|
4 | (3) |
|
1.3 A Brief History of Embedded Systems |
|
|
7 | (1) |
|
|
7 | (9) |
|
|
16 | (2) |
|
|
18 | (1) |
|
|
18 | (1) |
|
|
19 | (2) |
|
Chapter 2 System Resources |
|
|
21 | (46) |
|
|
21 | (2) |
|
|
23 | (8) |
|
2.3 Real-Time Service Utility |
|
|
31 | (7) |
|
|
38 | (1) |
|
2.4.1 Multiprocessor Systems |
|
|
39 | (1) |
|
|
39 | (2) |
|
|
41 | (9) |
|
2.6.1 Preemptive vs. Non-preemptive Schedulers |
|
|
44 | (3) |
|
2.6.2 Preemptive Fixed-Priority Scheduling Policy |
|
|
47 | (3) |
|
2.7 Real-Time Operating Systems |
|
|
50 | (9) |
|
2.8 Thread-Safe Reentrant Functions |
|
|
59 | (2) |
|
|
61 | (1) |
|
|
62 | (2) |
|
|
64 | (3) |
|
|
67 | (32) |
|
|
67 | (1) |
|
3.2 Preemptive Fixed-Priority Policy |
|
|
68 | (4) |
|
|
72 | (1) |
|
3.4 Rate-Monotonic Least Upper Bound |
|
|
73 | (11) |
|
3.5 Necessary and Sufficient Feasibility |
|
|
84 | (5) |
|
3.5.1 Scheduling Point Test |
|
|
84 | (3) |
|
3.5.2 Completion Time Test |
|
|
87 | (2) |
|
3.6 Deadline-Monotonic Policy |
|
|
89 | (2) |
|
3.7 Dynamic-Priority Policies |
|
|
91 | (4) |
|
|
95 | (1) |
|
|
96 | (2) |
|
|
98 | (1) |
|
|
99 | (16) |
|
|
99 | (1) |
|
4.2 Worst-Case Execution Time |
|
|
100 | (4) |
|
|
104 | (3) |
|
|
107 | (3) |
|
|
110 | (1) |
|
|
111 | (1) |
|
|
112 | (1) |
|
|
113 | (2) |
|
|
115 | (14) |
|
|
115 | (1) |
|
|
116 | (4) |
|
5.3 Capacity and Allocation |
|
|
120 | (1) |
|
|
120 | (1) |
|
|
121 | (5) |
|
|
126 | (1) |
|
|
127 | (1) |
|
|
128 | (1) |
|
|
128 | (1) |
|
Chapter 6 Multiresource Services |
|
|
129 | (12) |
|
|
129 | (1) |
|
|
130 | (1) |
|
6.3 Deadlock and Livelock |
|
|
130 | (2) |
|
6.4 Critical Sections to Protect Shared Resources |
|
|
132 | (1) |
|
|
132 | (6) |
|
6.5.1 Unbounded Priority Inversion Solutions |
|
|
134 | (4) |
|
6.6 Power Management and Processor Clock Modulation |
|
|
138 | (1) |
|
|
139 | (1) |
|
|
139 | (1) |
|
|
140 | (1) |
|
Chapter 7 Soft Real-Time Services |
|
|
141 | (12) |
|
|
141 | (1) |
|
|
142 | (1) |
|
|
143 | (1) |
|
7.4 Alternatives to Rate-Monotonic Policy |
|
|
144 | (3) |
|
7.5 Mixed Hard and Soft Real-Time Services |
|
|
147 | (1) |
|
|
148 | (1) |
|
|
148 | (1) |
|
|
149 | (4) |
Part II: Designing Real-Time Embedded Components |
|
|
Chapter 8 Embedded System Components |
|
|
153 | (38) |
|
|
153 | (2) |
|
|
155 | (21) |
|
|
155 | (3) |
|
|
158 | (1) |
|
|
159 | (4) |
|
8.2.4 Processor Complex or SoC |
|
|
163 | (1) |
|
8.2.5 Processor and JO Interconnection |
|
|
164 | (1) |
|
8.2.6 Bus Interconnection |
|
|
165 | (5) |
|
8.2.7 High-Speed Serial Interconnection |
|
|
170 | (2) |
|
8.2.8 Low-Speed Serial Interconnection |
|
|
172 | (1) |
|
8.2.9 Interconnection Systems |
|
|
173 | (1) |
|
|
174 | (2) |
|
|
176 | (2) |
|
|
176 | (1) |
|
|
177 | (1) |
|
8.3.3 Operating System Services |
|
|
178 | (1) |
|
|
178 | (4) |
|
|
179 | (1) |
|
|
180 | (1) |
|
|
181 | (1) |
|
8.4.4 Software Virtual Timers |
|
|
181 | (1) |
|
|
182 | (1) |
|
8.5 Software Application Components |
|
|
182 | (6) |
|
8.5.1 Application Services |
|
|
182 | (3) |
|
8.5.2 Reentrant Application Libraries |
|
|
185 | (1) |
|
8.5.3 Communicating and Synchronized Services |
|
|
186 | (2) |
|
|
188 | (1) |
|
|
188 | (1) |
|
|
189 | (2) |
|
Chapter 9 Traditional Hard Real-Time Operating Systems |
|
|
191 | (30) |
|
|
191 | (1) |
|
9.2 Evolution of Real-Time Scheduling and Resource Management |
|
|
192 | (2) |
|
9.3 AMP (Asymmetric Multi-core Processing) |
|
|
194 | (5) |
|
9.4 SMP (Symmetric Multi-core Processing) |
|
|
199 | (1) |
|
9.5 Processor Core Affinity |
|
|
200 | (16) |
|
9.6 Future Directions for RTOS |
|
|
216 | (1) |
|
|
217 | (1) |
|
|
218 | (1) |
|
|
219 | (1) |
|
|
219 | (1) |
|
|
220 | (1) |
|
Chapter 10 Open Source Real-Time Operating Systems |
|
|
221 | (16) |
|
10.1 FreeRTOS Alternative to Proprietary RTOS |
|
|
221 | (4) |
|
10.2 FreeRTOS Platform and Tools |
|
|
225 | (3) |
|
10.3 FreeRTOS Real-Time Service Programming Fundamentals |
|
|
228 | (7) |
|
|
235 | (1) |
|
|
235 | (2) |
|
Chapter 11 Integrating Embedded Linux into Real-Time Systems |
|
|
237 | (16) |
|
|
237 | (1) |
|
11.2 Embedding Mainline Linux: Interactive and Best-Effort |
|
|
238 | (6) |
|
11.3 Linux as a Non-Real-Time Management and User Interface Layer |
|
|
244 | (1) |
|
11.4 Methods to Patch and Improve Linux for Predictable Response |
|
|
245 | (4) |
|
11.5 Linux for Soft Real-Time Systems |
|
|
249 | (1) |
|
11.6 Tools for Linux for Soft Real-Time Systems |
|
|
249 | (1) |
|
|
250 | (1) |
|
|
250 | (1) |
|
|
251 | (2) |
|
Chapter 12 Debugging Components |
|
|
253 | (42) |
|
|
253 | (1) |
|
|
254 | (8) |
|
|
262 | (1) |
|
12.4 Checking Return Codes |
|
|
263 | (1) |
|
12.5 Single-Step Debugging |
|
|
264 | (9) |
|
12.6 Kernel Scheduler Traces |
|
|
273 | (5) |
|
|
278 | (2) |
|
|
280 | (2) |
|
12.9 Power-On Self-Test and Diagnostics |
|
|
282 | (5) |
|
12.10 External Test Equipment |
|
|
287 | (4) |
|
12.11 Application-Level Debugging |
|
|
291 | (1) |
|
|
292 | (1) |
|
|
293 | (1) |
|
|
293 | (2) |
|
Chapter 13 Performance Tuning |
|
|
295 | (24) |
|
|
295 | (1) |
|
13.2 Basic Concepts of Drill-Down Tuning |
|
|
296 | (4) |
|
13.3 Hardware-Supported Profiling and Tracing |
|
|
300 | (4) |
|
13.4 Building Performance Monitoring into Software |
|
|
304 | (1) |
|
13.5 Path Length, Efficiency, and Calling Frequency |
|
|
305 | (12) |
|
13.6 Fundamental Optimizations |
|
|
317 | (1) |
|
|
318 | (1) |
|
|
318 | (1) |
|
|
318 | (1) |
|
Chapter 14 High Availability and Reliability Design |
|
|
319 | (12) |
|
|
319 | (1) |
|
14.2 Reliability and Availability Similarities and Differences |
|
|
320 | (1) |
|
|
321 | (2) |
|
|
323 | (1) |
|
|
324 | (3) |
|
14.6 Hierarchical Approaches for Fail-Safe Design |
|
|
327 | (1) |
|
|
327 | (1) |
|
|
327 | (1) |
|
|
328 | (3) |
Part III: Putting it All Together |
|
|
Chapter 15 System Life Cycle |
|
|
331 | (34) |
|
|
331 | (1) |
|
|
332 | (3) |
|
|
335 | (1) |
|
|
336 | (1) |
|
|
336 | (3) |
|
15.6 Component Detailed Design |
|
|
339 | (9) |
|
15.7 Component Unit Testing |
|
|
348 | (9) |
|
15.8 System Integration and Test |
|
|
357 | (1) |
|
15.9 Configuration Management and Version Control |
|
|
357 | (5) |
|
|
362 | (1) |
|
|
362 | (1) |
|
|
362 | (1) |
|
|
363 | (2) |
|
Chapter 16 Continuous Media Applications |
|
|
365 | (18) |
|
|
365 | (2) |
|
|
367 | (3) |
|
16.3 Uncompressed Video Frame Formats |
|
|
370 | (1) |
|
|
371 | (2) |
|
|
373 | (1) |
|
16.7 Video Stream Analysis and Debug |
|
|
374 | (4) |
|
16.8 Audio Codecs and Streaming |
|
|
378 | (1) |
|
16.9 Audio Stream Analysis and Debug |
|
|
379 | (1) |
|
16.10 Voice-Over Internet Protocol (VoIP) |
|
|
379 | (2) |
|
|
381 | (1) |
|
|
381 | (1) |
|
|
382 | (1) |
|
Chapter 17 Robotic Applications |
|
|
383 | (20) |
|
|
383 | (1) |
|
|
384 | (3) |
|
|
387 | (6) |
|
|
393 | (1) |
|
|
393 | (5) |
|
|
398 | (2) |
|
17.7 Automation and Autonomy |
|
|
400 | (1) |
|
|
401 | (1) |
|
|
402 | (1) |
|
|
402 | (1) |
|
|
402 | (1) |
|
Chapter 18 Computer Vision Applications |
|
|
403 | (14) |
|
|
403 | (1) |
|
|
404 | (2) |
|
18.3 Image Processing for Object Recognition |
|
|
406 | (3) |
|
18.4 Characterizing Cameras |
|
|
409 | (2) |
|
18.5 Pixel and Servo Coordinates |
|
|
411 | (1) |
|
|
412 | (1) |
|
|
413 | (1) |
|
|
414 | (1) |
|
|
414 | (3) |
Appendix A Terminology Glossary |
|
417 | (38) |
Appendix B About the DVD |
|
455 | (4) |
Appendix C Wind River Systems University Program for Workbench/VxWorks |
|
459 | (2) |
Appendix D Real-Time and Embedded Linux Distributions and Resources |
|
461 | (2) |
Bibliography |
|
463 | (8) |
Index |
|
471 | |