Making embedded systems

Interested in developing embedded systems? Since they don't tolerate inefficiency, these systems require a disciplined approach to programming. This easy-to-read guide helps you cultivate a host of good development practices, based on classic software design patterns and new patterns unique to...

Descripción completa

Detalles Bibliográficos
Autor principal: White, Elecia (-)
Formato: Libro electrónico
Idioma:Inglés
Publicado: Sebastopol : O'Reilly October 2011
Edición:First edition
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009627997806719
Tabla de Contenidos:
  • Table of Contents; Preface; About This Book; About the Author; Acknowledgments; Organization of This Book; Conventions Used in This Book; Typography; Terminology; Using Code Examples; Safari® Books Online; How to Contact Us; Chapter 1. Introduction; Compilers, Languages, and Object-Oriented Programming; Embedded System Development; Debugging; More Challenges; Principles to Confront Those Challenges; Further Reading; Chapter 2. Creating a System Architecture; Creating System Diagrams; The Block Diagram; Hierarchy of Control; Layered View; From Diagram to Architecture; Encapsulate Modules
  • Delegation of TasksDriver Interface: Open, Close, Read, Write, IOCTL; Adapter Pattern; Getting Started with Other Interfaces; Example: A Logging Interface; Typical calls needed for logging; State of logging; Pattern: Singleton; Sharing private globals; A Sandbox to Play In; Further Reading; Chapter 3. Getting Your Hands on the Hardware; Hardware/Software Integration; Ideal Project Flow; Board Bring-Up; Reading a Datasheet; Datasheet Sections You Need When Things Go Wrong; Important Text for Software Developers; Evaluating Components Using the Datasheet; Your Processor Is a Language
  • Reading a SchematicHaving a Debugging Toolbox (and a Fire Extinguisher); Keep Your Board Safe; Toolbox; Digital Multimeter; Oscilloscopes and Logic Analyzers; Setting up a scope; Testing the Hardware (and Software); Building Tests; Flash Test Example; Test 1: Read existing data; Test 2: Byte access; Test 3: Block access; Test wrap-up; Command and Response; Creating a command; Invoking a command; Command Pattern; Dealing with Errors; Consistent Methodology; Error-Handling Library; Debugging Timing Errors; Further Reading; Chapter 4. Outputs, Inputs, and Timers; Toggling an Output
  • Starting with RegistersSet the Pin to Be an Output; Turn On the LED; Blinking the LED; Troubleshooting; Separating the Hardware from the Action; Board-Specific Header File; I/O-Handling Code; Main Loop; Facade Pattern; The Input in I/O; A Simple Interface to a Button; Momentary Button Press; Interrupt on a Button Press; Configuring the Interrupt; Debouncing Switches; Runtime Uncertainty; Dependency Injection; Using a Timer; Timer Pieces; Doing the Math; A Long Wait Between Timer Ticks; Using the Timer; Using Pulse-Width Modulation; Shipping the Product; Further Reading
  • Chapter 5. Managing the Flow of ActivityScheduling and Operating System Basics; Tasks; Communication Between Tasks; Avoiding Race Conditions; Priority Inversion; State Machines; State Machine Example: Stoplight Controller; State-Centric State Machine; State-Centric State Machine with Hidden Transitions; Event-Centric State Machine; State Pattern; Table-Driven State Machine; Choosing a State Machine Implementation; Interrupts; An IRQ Happens; Multiple sources for one interrupt; Interrupt priority; Nested interrupts; Nonmaskable interrupts; Save the Context; Calculating system latency
  • Reentrant functions