Dedication;Foreword;Preface; Why We Wrote This Book; Intended Audience; Organization; Conventions, Typographical and Otherwise; Obtaining the Examples Online; Using Code Examples; Comments and Questions; SafariĀ® Enabled; Personal Comments and Acknowledgments;Chapter 1: Introduction; What Is an Embedded System?; Variations on a Theme; Embedded Design Examples; Life As an Embedded Software Developer; The C Language: The Lowest Common Denominator; A Few Words About Hardware;Chapter 2: Getting to Know the Hardware; Understanding the Big Picture; Hardware Basics; Examine the Landscape; Learn How to Communicate; Getting to Know the Processor; Study the External Peripherals; Initialize the Hardware;Chapter 3: Your First Embedded Program; Hello, World!; The Blinking LED Program; The Role of the Infinite Loop;Chapter 4: Compiling, Linking, and Locating; The Build Process; Building the Blinking LED Program; A Quick Look at Makefiles;Chapter 5: Downloading and Debugging; Downloading the Blinking LED Program; Remote Debuggers; Emulators; Other Useful Tools; Dig into the Hardware;Chapter 6: Memory; Types of Memory; Direct Memory Access; Endian Issues; Memory Testing; Validating Memory Contents; Using Flash Memory;Chapter 7: Peripherals; Control and Status Registers; The Device Driver Philosophy; Device Driver Design;Chapter 8: Interrupts; Overview; Interrupt Map; Interrupt Service Routine; The Improved Blinking LED Program; Summary of Interrupt Issues;Chapter 9: Putting It All Together; Application Overview; Working with Serial Ports; Command-Line Interface Processing;Chapter 10: Operating Systems; History and Purpose; The Scheduler; Tasks; Task Synchronization; Message Passing; Other Functionality; Interrupt Handling; Real-Time Characteristics; To Use or Not to Use an RTOS; Additional Resources;Chapter 11: eCos Examples; Introduction; Task Mechanics; Mutex Task Synchronization; Semaphore Task Synchronization; Message Passing; eCos Interrupt Handling;Chapter 12: Embedded Linux Examples; Introduction; Accessing Hardware in Linux; Task Mechanics; Mutex Task Synchronization; Semaphore Task Synchronization; Message Passing;Chapter 13: Extending Functionality; Common Peripherals; Networking for All Devices Great and Small;Chapter 14: Optimization Techniques; Increasing Code Efficiency; Decreasing Code Size; Problems with Optimizing Compilers; Reducing Memory Usage; Power-Saving Techniques; Limiting the Impact of C++;Appendix 1: The Arcom VIPER-Lite Development Kit;Appendix 2: Setting Up Your Software Development Environment; Windows Host Installation; Linux Host Installation; Example Code Installation;Appendix 3: Building the GNU Software Tools; Extracting the Source Files; Building the Toolchain;Appendix 4: Setting Up the eCos Development Environment; The eCos Build Environment;Appendix 5: Setting Up the Embedded Linux Development Environment; Linux Build Environment Setup; Embedded Linux Examples;.
Programming Embedded Systems : With C and GNU Development Tools