rent-now

Rent More, Save More! Use code: ECRENTAL

5% off 1 book, 7% off 2 books, 10% off 3+ books

9780750676069

The Firmware Handbook

by
  • ISBN13:

    9780750676069

  • ISBN10:

    075067606X

  • Edition: CD
  • Format: Paperback
  • Copyright: 2004-03-18
  • Publisher: Elsevier Science
  • Purchase Benefits
  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
  • Complimentary 7-Day eTextbook Access - Read more
    When you rent or buy this book, you will receive complimentary 7-day online access to the eTextbook version from your PC, Mac, tablet, or smartphone. Feature not included on Marketplace Items.
List Price: $94.95 Save up to $0.09
  • Buy New
    $94.86
    Add to Cart Free Shipping Icon Free Shipping

    PRINT ON DEMAND: 2-4 WEEKS. THIS ITEM CANNOT BE CANCELLED OR RETURNED.

    7-Day eTextbook Access 7-Day eTextbook Access

Summary

This handbook provides a comprehensive reference for firmware developers looking to increase their skills and productivity. It addresses each critical step of the development process in detail, including how to optimize hardware design for better firmware. Topics covered include real-time issues, interrupts and ISRs, memory management (including Flash memory), handling both digital and analog peripherals, communications interfacing, math subroutines, error handling, design tools, and troubleshooting and debugging. The companion CD-ROM includes all the code used in the design examples and a searchable ebook version of the text. this book is not for the beginner, but rather is an in-depth, comprehensive one-volume reference that addresses all the major issues in firmware design and development, including the pertinent hardware issues.

Table of Contents

Preface xv
What's on the CD-Rom? xvi
Section I: Basic Hardware 1(52)
Introduction
3(2)
Chapter 1: Basic Electronics
5(28)
DC Circuits
5(9)
AC Circuits
14(6)
Active Devices
20(4)
Putting it Together-a Power Supply
24(3)
The Scope
27(6)
Chapter 2: Logic Circuits
33(16)
Coding
33(3)
Combinatorial Logic
36(7)
Sequential Logic
43(4)
Logic Wrap-up
47(2)
Chapter 3: Hardware Design Tips
49(4)
Diagnostics
49(1)
Connecting Tools
50(1)
Other Thoughts
51(1)
Summary
52(1)
Section II: Designs 53(102)
Introduction
55(2)
Chapter 4: Tools and Methods for Improving Code Quality
57(12)
Introduction
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)
Outlook and Summary
65(4)
Chapter 5: Tips to Improve Functions
69(8)
Minimize Functionality
69(1)
Encapsulate
70(1)
Remove Redundancies
70(1)
Reduce Real-Time Code
71(1)
Flow With Grace
71(1)
Refactor Relentlessly
72(1)
Employ Standards and Inspections
72(1)
Comment Carefully
73(2)
Summary
75(2)
Chapter 6: Evolutionary Development
77(24)
Introduction
77(1)
1. History
78(2)
2. Issues Addressed by Evo
80(9)
3. How Do We Use Evo in Projects
89(3)
4. Check Lists
92(2)
5. Introducing Evo in New Projects
94(1)
6. Testing With Evo
95(1)
7. Change Requests and Problem Reports
96(1)
8. Tools
97(1)
9. Conclusion
98(1)
Acknowledgment
99(1)
References
99(2)
Chapter 7: Embedded State Machine Implementation
101(10)
State Machines
101(1)
An Example
102(2)
Implementation
104(4)
Testing
108(1)
Crank It
108(1)
References
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)
Introduction
121(1)
Reliability and safety
121(1)
Along came DO-178B
122(1)
Overview of DO-178B
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)
Iterative Process
132(1)
Issues Facing 00 Certification
133(3)
Summary
136(1)
References
136(1)
Chapter 10: Installing and Using a Version Control System
137(18)
Introduction
137(1)
The Power and Elegance of Simplicity
138(1)
Version Control
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)
Bug Tracking
149(1)
Non-Configuration Management Tools
150(1)
Closing Comments
151(1)
Suggested Reading, References, and Resources
152(3)
Section III: Math 155(52)
Introduction
157(2)
Chapter 11: An Introduction To Machine Calculations
159(22)
Introduction
159(1)
Integer Arithmetic
159(6)
Floating-Point Math
165(11)
Fixed-Point Arithmetic
176(3)
Conclusion
179(1)
Bibliography
179(2)
Chapter 12: Floating Point Approximations
181(20)
General Trig Notes
182(1)
Cosine and Sine
182(7)
Higher Precision Cosines
189(1)
Tangent
190(5)
Higher Precision Tangents
195(1)
Arctangent, Arcsine and Arccosine
196(5)
Chapter 13: Math Functions
201(6)
Gray Code
201(1)
Integer Multiplication by a Constant
201(1)
Computing an Exclusive Or
201(1)
Integer Square Roots
202(1)
Important Basic Math Operations
202(1)
Chapter 14: IEEE 754 Floating Point Numbers
203(1)
Special values
204(3)
Section IV: Real-Time 207(74)
Introduction
209(2)
Chapter 15: Real-Time Kernels
211(20)
Introduction
211(1)
What is a Real-Time Kernel?
211(1)
What is a task?
212(3)
The Clock Tick
215(1)
Scheduling
216(2)
Context Switching
218(1)
Kernel Services
219(1)
Kernel Services, Semaphores
219(4)
Kernel Services, Message Queues
223(2)
Kernel Services, Memory Management
225(1)
Do You Need a Kernel?
225(1)
Can You Use a Kernel?
226(1)
Selecting a Kernel?
227(2)
Conclusion
229(2)
Chapter 16: Reentrancy
231(14)
Atomic Variables
231(2)
Two More Rules
233(1)
Keeping Code Reentrant
234(1)
Recursion
235(1)
Asynchronous Hardware/Firmware
236(1)
Race Conditions
237(1)
Options
238(1)
Other RTOSes
239(1)
Metastable States
240(2)
Firmware, not Hardware
242(3)
Chapter 17: Interrupt Latency
245(6)
Taking Data
248(3)
Chapter 18: Understanding Your C Compiler: How to Minimize Code Size
251(16)
Modern C Compilers
252(7)
Tips on Programming
259(6)
Final Notes
265(1)
Acknowledgements
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)
Minimize Local Variables
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)
Embedded Issues
275(1)
Real-Time Asserts
276(5)
Section V: Errors and Changes 281(74)
Introduction
283(2)
Chapter 21: Implementing Downloadable Firmware With Flash Memory
285(14)
Introduction
285(1)
The Microprogrammer
286(1)
Advantages of Microprogrammers
286(1)
Disadvantages of Microprogrammers
287(1)
Receiving a Microprogrammer
287(1)
A Basic Microprogrammer
288(1)
Common Problems and Their Solutions
289(6)
Hardware Alternatives
295(1)
Separating Code and Data
295(4)
Chapter 22: Memory Diagnostics
299(8)
ROM Tests
299(2)
RAM Tests
301(6)
Chapter 23: Nonvolatile Memory
307(6)
Supervisory Circuits
307(2)
Multi-byte Writes
309(2)
Testing
311(1)
Conclusion
312(1)
Chapter 24: Proactive Debugging
313(8)
Stacks and Heaps
313(2)
Seeding Memory
315(1)
Wandering Code
316(2)
Special Decoders
318(1)
MMUs
318(1)
Conclusion
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)
The Tar Pit
324(2)
Tar!
326(1)
The Royal Road
326(2)
The Assignment Operator-A Special Case
328(1)
In Bad Weather
329(3)
Looking back
332(5)
References
337(2)
Chapter 26: Building a Great Watchdog
339(18)
Internal WDTs
342(1)
External WDTs
343(2)
Characteristics of Great WDTs
345(2)
Using an Internal WDT
347(2)
An External WDT
349(1)
WDTs for Multitasking
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)
Byte Ordering
359(2)
Index 361

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Rewards Program