Update cookies preferences

E-book: Firmware Handbook

3.58/5 (24 ratings by Goodreads)
(Founder and Principal Consultant, The Ganssle Group, Baltimore,MD, USA; Technical editor and columnist for Embedded Systems Programming magazine)
  • Format: PDF+DRM
  • Series: Embedded Technology
  • Pub. Date: 16-Apr-2004
  • Publisher: Newnes (an imprint of Butterworth-Heinemann Ltd )
  • Language: eng
  • ISBN-13: 9780080470177
  • Format - PDF+DRM
  • Price: 57,19 €*
  • * the price is final i.e. no additional discount will apply
  • Add to basket
  • Add to Wishlist
  • This ebook is for personal use only. E-Books are non-refundable.
  • Format: PDF+DRM
  • Series: Embedded Technology
  • Pub. Date: 16-Apr-2004
  • Publisher: Newnes (an imprint of Butterworth-Heinemann Ltd )
  • Language: eng
  • ISBN-13: 9780080470177

DRM restrictions

  • Copying (copy/paste):

    not allowed

  • Printing:

    not allowed

  • Usage:

    Digital Rights Management (DRM)
    The publisher has supplied this book in encrypted form, which means that you need to install free software in order to unlock and read it.  To read this e-book you have to create Adobe ID More info here. Ebook can be read and downloaded up to 6 devices (single user with the same Adobe ID).

    Required software
    To read this ebook on a mobile device (phone or tablet) you'll need to install this free app: PocketBook Reader (iOS / Android)

    To download and read this eBook on a PC or Mac you need Adobe Digital Editions (This is a free app specially developed for eBooks. It's not the same as Adobe Reader, which you probably already have on your computer.)

    You can't read this ebook with Amazon Kindle

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.

Included CD-Rom contains all the source code used in the design examples, so engineers can easily use it in their own designs

Reviews

"This handbook will be the standard reference in the field, it provides a much-needed comprehensive information source for firmware developers looking to increase their skills and productivity." --EDN Magazine

"This book is edited by Jack Ganssle and includes contributions from a wide range of writters, making this book very broadly based. Any software graduate reading this book would be taking a step in the right direction for learning about software issues that arise in developing production level embedded software. More experienced engineers may find a lot of the material familiar, though I came across a few points that I had not seen elsewhere.

The first thing I noticed was that unlike most embedded systems books, this one does not emphasise a particular processor, or RTOS, or technology. This is probably a good thing if you are looking for a broad embedded education, rather than details of one specific technology. The book also has more of a software emphasis than most books on this topic." --Panelsoft.com

More info

Master the complex world of firmware programming and troubleshooting with this comprehensive, practical reference written by the leader in the field!
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


Jack Ganssle has 30 years' experience developing embedded systems. He has authored two books, The Art of Programming Embedded Systems and The Art of Designing Embedded Systems, and writes a regular column in Embedded Systems Programming magazine. Michael Barr is the editor-in-chief of Embedded Systems Programming magazine and the principal of Netrino Consultants Network. He wrote Programming Embedded Systems in C and C++.