Preface |
|
xv | |
What's on the CD-Rom? |
|
xvi | |
Section I: Basic Hardware |
|
1 | (52) |
|
|
3 | (2) |
|
Chapter 1: Basic Electronics |
|
|
5 | (28) |
|
|
5 | (9) |
|
|
14 | (6) |
|
|
20 | (4) |
|
Putting it Together-a Power Supply |
|
|
24 | (3) |
|
|
27 | (6) |
|
Chapter 2: Logic Circuits |
|
|
33 | (16) |
|
|
33 | (3) |
|
|
36 | (7) |
|
|
43 | (4) |
|
|
47 | (2) |
|
Chapter 3: Hardware Design Tips |
|
|
49 | (4) |
|
|
49 | (1) |
|
|
50 | (1) |
|
|
51 | (1) |
|
|
52 | (1) |
Section II: Designs |
|
53 | (102) |
|
|
55 | (2) |
|
Chapter 4: Tools and Methods for Improving Code Quality |
|
|
57 | (12) |
|
|
57 | (1) |
|
The Traditional Serial Development Cycle of an Embedded Design |
|
|
57 | (1) |
|
Typical Challenges in Today's Embedded Market |
|
|
58 | (1) |
|
Generic Methods to Improve Code Quality and Reduce the Time-to-Market |
|
|
59 | (1) |
|
Major Time Factors for the Engineering Cycle |
|
|
60 | (1) |
|
Where is Most Time Needed? |
|
|
60 | (1) |
|
How to Improve Software Development Time and Code Quality |
|
|
60 | (4) |
|
How to Reduce Hardware Development Time |
|
|
64 | (1) |
|
|
65 | (4) |
|
Chapter 5: Tips to Improve Functions |
|
|
69 | (8) |
|
|
69 | (1) |
|
|
70 | (1) |
|
|
70 | (1) |
|
|
71 | (1) |
|
|
71 | (1) |
|
|
72 | (1) |
|
Employ Standards and Inspections |
|
|
72 | (1) |
|
|
73 | (2) |
|
|
75 | (2) |
|
Chapter 6: Evolutionary Development |
|
|
77 | (24) |
|
|
77 | (1) |
|
|
78 | (2) |
|
2. Issues Addressed by Evo |
|
|
80 | (9) |
|
3. How Do We Use Evo in Projects |
|
|
89 | (3) |
|
|
92 | (2) |
|
5. Introducing Evo in New Projects |
|
|
94 | (1) |
|
|
95 | (1) |
|
7. Change Requests and Problem Reports |
|
|
96 | (1) |
|
|
97 | (1) |
|
|
98 | (1) |
|
|
99 | (1) |
|
|
99 | (2) |
|
Chapter 7: Embedded State Machine Implementation |
|
|
101 | (10) |
|
|
101 | (1) |
|
|
102 | (2) |
|
|
104 | (4) |
|
|
108 | (1) |
|
|
108 | (1) |
|
|
109 | (2) |
|
Chapter 8: Hierarchical State Machines |
|
|
111 | (10) |
|
Conventional State Machine Example |
|
|
112 | (2) |
|
Hierarchical State Machine Example |
|
|
114 | (7) |
|
Chapter 9: Developing Safety Critical Applications |
|
|
121 | (16) |
|
|
121 | (1) |
|
|
121 | (1) |
|
|
122 | (1) |
|
|
123 | (1) |
|
Failure Condition Categorization |
|
|
123 | (2) |
|
System Architectural Considerations |
|
|
125 | (1) |
|
System Architectural Documentation |
|
|
126 | (1) |
|
DO-178B Software life cycle |
|
|
126 | (5) |
|
Object Oriented Technology and Safety Critical Software Challenges |
|
|
131 | (1) |
|
|
132 | (1) |
|
Issues Facing 00 Certification |
|
|
133 | (3) |
|
|
136 | (1) |
|
|
136 | (1) |
|
Chapter 10: Installing and Using a Version Control System |
|
|
137 | (18) |
|
|
137 | (1) |
|
The Power and Elegance of Simplicity |
|
|
138 | (1) |
|
|
138 | (1) |
|
Typical Symptoms of Not (Fully) Utilizing a Version Control System |
|
|
139 | (1) |
|
Simple Version Control Systems |
|
|
139 | (1) |
|
Advanced Version Control Systems |
|
|
139 | (1) |
|
What Files to Put Under Version Control |
|
|
140 | (1) |
|
Sharing of Files and the Version Control Client |
|
|
140 | (1) |
|
Integrated Development Environment Issues |
|
|
141 | (1) |
|
Graphical User Interface (GUI) Issues |
|
|
141 | (1) |
|
Common Source Code Control Specification |
|
|
142 | (1) |
|
World Wide Web Browser Interface or Java Version Control Client |
|
|
142 | (7) |
|
|
149 | (1) |
|
Non-Configuration Management Tools |
|
|
150 | (1) |
|
|
151 | (1) |
|
Suggested Reading, References, and Resources |
|
|
152 | (3) |
Section III: Math |
|
155 | (52) |
|
|
157 | (2) |
|
Chapter 11: An Introduction To Machine Calculations |
|
|
159 | (22) |
|
|
159 | (1) |
|
|
159 | (6) |
|
|
165 | (11) |
|
|
176 | (3) |
|
|
179 | (1) |
|
|
179 | (2) |
|
Chapter 12: Floating Point Approximations |
|
|
181 | (20) |
|
|
182 | (1) |
|
|
182 | (7) |
|
|
189 | (1) |
|
|
190 | (5) |
|
Higher Precision Tangents |
|
|
195 | (1) |
|
Arctangent, Arcsine and Arccosine |
|
|
196 | (5) |
|
Chapter 13: Math Functions |
|
|
201 | (6) |
|
|
201 | (1) |
|
Integer Multiplication by a Constant |
|
|
201 | (1) |
|
Computing an Exclusive Or |
|
|
201 | (1) |
|
|
202 | (1) |
|
Important Basic Math Operations |
|
|
202 | (1) |
|
Chapter 14: IEEE 754 Floating Point Numbers |
|
|
203 | (1) |
|
|
204 | (3) |
Section IV: Real-Time |
|
207 | (74) |
|
|
209 | (2) |
|
Chapter 15: Real-Time Kernels |
|
|
211 | (20) |
|
|
211 | (1) |
|
What is a Real-Time Kernel? |
|
|
211 | (1) |
|
|
212 | (3) |
|
|
215 | (1) |
|
|
216 | (2) |
|
|
218 | (1) |
|
|
219 | (1) |
|
Kernel Services, Semaphores |
|
|
219 | (4) |
|
Kernel Services, Message Queues |
|
|
223 | (2) |
|
Kernel Services, Memory Management |
|
|
225 | (1) |
|
|
225 | (1) |
|
|
226 | (1) |
|
|
227 | (2) |
|
|
229 | (2) |
|
|
231 | (14) |
|
|
231 | (2) |
|
|
233 | (1) |
|
|
234 | (1) |
|
|
235 | (1) |
|
Asynchronous Hardware/Firmware |
|
|
236 | (1) |
|
|
237 | (1) |
|
|
238 | (1) |
|
|
239 | (1) |
|
|
240 | (2) |
|
|
242 | (3) |
|
Chapter 17: Interrupt Latency |
|
|
245 | (6) |
|
|
248 | (3) |
|
Chapter 18: Understanding Your C Compiler: How to Minimize Code Size |
|
|
251 | (16) |
|
|
252 | (7) |
|
|
259 | (6) |
|
|
265 | (1) |
|
|
266 | (1) |
|
Chapter 19: Optimizing C and C++ Code |
|
|
267 | (8) |
|
Adjust Structure Sizes to Power of Two |
|
|
267 | (1) |
|
Place Case Labels in Narrow Range |
|
|
267 | (1) |
|
Place Frequent Case Labels First |
|
|
267 | (1) |
|
Break Big Switch Statements into Nested Switches |
|
|
268 | (1) |
|
|
269 | (1) |
|
Declare Local Variables in the Innermost Scope |
|
|
269 | (1) |
|
Reduce the Number of Parameters |
|
|
269 | (1) |
|
Use References for Parameter Passing and Return Value for Types Bigger than 4 Bytes |
|
|
269 | (1) |
|
Don't Define a Return Value if Not Used |
|
|
270 | (1) |
|
Consider Locality of Reference for Code and Data |
|
|
270 | (1) |
|
Prefer int over char and short |
|
|
270 | (1) |
|
Define Lightweight Constructors |
|
|
271 | (1) |
|
Prefer Initialization Over Assignment |
|
|
272 | (1) |
|
Use Constructor Initialization Lists |
|
|
272 | (1) |
|
Do Not Declare "Just in Case" Virtual Functions |
|
|
273 | (1) |
|
Inline 1 to 3 Line Functions |
|
|
273 | (2) |
|
Chapter 20: Real-Time Asserts |
|
|
275 | (6) |
|
|
275 | (1) |
|
|
276 | (5) |
Section V: Errors and Changes |
|
281 | (74) |
|
|
283 | (2) |
|
Chapter 21: Implementing Downloadable Firmware With Flash Memory |
|
|
285 | (14) |
|
|
285 | (1) |
|
|
286 | (1) |
|
Advantages of Microprogrammers |
|
|
286 | (1) |
|
Disadvantages of Microprogrammers |
|
|
287 | (1) |
|
Receiving a Microprogrammer |
|
|
287 | (1) |
|
|
288 | (1) |
|
Common Problems and Their Solutions |
|
|
289 | (6) |
|
|
295 | (1) |
|
|
295 | (4) |
|
Chapter 22: Memory Diagnostics |
|
|
299 | (8) |
|
|
299 | (2) |
|
|
301 | (6) |
|
Chapter 23: Nonvolatile Memory |
|
|
307 | (6) |
|
|
307 | (2) |
|
|
309 | (2) |
|
|
311 | (1) |
|
|
312 | (1) |
|
Chapter 24: Proactive Debugging |
|
|
313 | (8) |
|
|
313 | (2) |
|
|
315 | (1) |
|
|
316 | (2) |
|
|
318 | (1) |
|
|
318 | (1) |
|
|
319 | (2) |
|
Chapter 25: Exception Handling in C++ |
|
|
321 | (18) |
|
The Mountains (Landmarks of Exception Safety) |
|
|
322 | (1) |
|
A History of this Territory |
|
|
323 | (1) |
|
|
324 | (2) |
|
|
326 | (1) |
|
|
326 | (2) |
|
The Assignment Operator-A Special Case |
|
|
328 | (1) |
|
|
329 | (3) |
|
|
332 | (5) |
|
|
337 | (2) |
|
Chapter 26: Building a Great Watchdog |
|
|
339 | (18) |
|
|
342 | (1) |
|
|
343 | (2) |
|
Characteristics of Great WDTs |
|
|
345 | (2) |
|
|
347 | (2) |
|
|
349 | (1) |
|
|
350 | (2) |
|
Summary and Other Thoughts |
|
|
352 | (3) |
Appendix A: ASCII Table |
|
355 | (2) |
Appendix B: Byte Alignment and Ordering |
|
357 | (4) |
|
Byte Alignment Restrictions |
|
|
357 | (2) |
|
|
359 | (2) |
Index |
|
361 | |