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 good development practices based on classic software design patterns and new patterns unique to embedded pr...
Otros Autores: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
Sebastopol, CA :
O'Reilly Media, Inc
2024.
|
Edición: | Second edition |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009798449706719 |
Tabla de Contenidos:
- Intro
- Copyright
- Table of Contents
- Preface
- About This Book
- Who This Book Is For
- About the Author
- Organization of This Book
- Terminology
- Conventions Used in This Book
- Using Code Examples
- O'Reilly Online Learning
- How to Contact Us
- Acknowledgments
- Chapter 1. Introduction
- Embedded Systems Development
- Compilers and Languages
- Debugging
- Resource Constraints
- Principles to Confront Those Challenges
- Prototypes and Maker Boards
- Further Reading
- Chapter 2. Creating a System Architecture
- Getting Started
- Creating System Diagrams
- The Context Diagram
- The Block Diagram
- Organigram
- Layering Diagram
- Designing for Change
- Encapsulate Modules
- Delegation of Tasks
- Driver Interface: Open, Close, Read, Write, IOCTL
- Adapter Pattern
- Creating Interfaces
- Example: A Logging Interface
- A Sandbox to Play In
- Back to the Drawing Board
- Further Reading
- Chapter 3. Getting Your Hands on the Hardware
- Hardware/Software Integration
- Ideal Project Flow
- Hardware Design
- Board Bring-Up
- Reading a Datasheet
- Datasheet Sections You Need When Things Go Wrong
- Datasheet Sections for Software Developers
- Evaluating Components Using the Datasheet
- Your Processor Is a Language
- Reading a Schematic
- Practice Reading a Schematic: Arduino!
- Keep Your Board Safe
- Creating Your Own Debugging Toolbox
- Digital Multimeter
- Oscilloscopes and Logic Analyzers
- Setting Up a Scope
- Testing the Hardware (and Software)
- Building Tests
- Flash Test Example
- Command and Response
- Command Pattern
- Dealing with Errors
- Consistent Methodology
- Error Checking Flow
- Error-Handling Library
- Debugging Timing Errors
- Further Reading
- Chapter 4. Inputs, Outputs, and Timers
- Handling Registers
- Binary and Hexadecimal Math
- Bitwise Operations
- Test, Set, Clear, and Toggle
- Toggling an Output
- Setting the Pin to Be an Output
- Turning 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
- Momentary Button Press
- Interrupt on a Button Press
- Configuring the Interrupt
- Debouncing Switches
- Runtime Uncertainty
- Increasing Code Flexibility
- Dependency Injection
- Using a Timer
- Timer Pieces
- Doing the Math
- More Math: Difficult Goal Frequency
- A Long Wait Between Timer Ticks
- Using a Timer
- Using Pulse-Width Modulation
- Shipping the Product
- Further Reading
- Chapter 5. Interrupts
- A Chicken Presses a Button
- An IRQ Happens
- Nonmaskable Interrupts
- Interrupt Priority
- Nested Interrupts
- Save the Context
- Retrieve the ISR from the Vector Table
- Initializing the Vector Table
- Looking Up the ISR
- Call the ISR
- Multiple Sources for One Interrupt
- Disabling Interrupts
- Critical Sections
- Restore the Context