Definitive Guide to the ARM Cortex-M0
The ARM Cortex-M0 processor is a modern microcontroller architecture developed specifically for 8-bit and 16-bit applications. It is easy to program and brings significant advantages in terms of performance and energy efficiency. This is the first book written on the ARM Cortex-M0 processor, written...
Gespeichert in:
| 1. Verfasser: | |
|---|---|
| Format: | E-Book |
| Sprache: | Englisch |
| Veröffentlicht: |
Chantilly
Elsevier
2011
Elsevier Science & Technology Newnes |
| Ausgabe: | 1 |
| Schriftenreihe: | Embedded technology series |
| Schlagworte: | |
| ISBN: | 0123854776, 9780123854773, 0750685344, 9780750685344 |
| Online-Zugang: | Volltext |
| Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Inhaltsangabe:
- Title Page Conventions Terms and Abbreviations Preface Table of Contents 1. Introduction 2. Cortex-M0 Technical Overview 3. Architecture 4. Introduction to Cortex-M0 Programming 5. Instruction Set 6. Instruction Usage Examples 7. Memory System 8. Exceptions and Interrupts 9. Interrupt Control and System Control 10. Operating System Support Features 11. Low-Power Features 12. Fault Handling 13. Debug Features 14. Getting Started with Keil MDK 15. Simple Application Programming 16. Assembly Projects and Mixed-Assembly and C Projects 17. Using Low-Power Features in Programming 18. Using SVC, PendSV, and Keil RTX Kernel 19. Getting Started with the ARM RealView Development Suite 20. Getting Started with the GNU C Compiler 21. Software Porting 22. Cortex-M0 Products Appendices Index
- Front Cover -- The Definitive Guide to the ARM Cortex-M0 -- Copyright -- Contents -- Foreword -- Preface -- Acknowledgments -- Conventions -- Terms and Abbreviations -- Chapter 1 Introduction -- Why Cortex-M0? -- Application of the Cortex-M0 Processors -- Background of ARM and ARM processors -- Cortex-M0 Processor Specification and ARM Architecture -- ARM Processors and the ARM Ecosystem -- Getting Started with the Cortex-M0 Processor -- Organization of This Book and Resources -- Chapter 2 Cortex-M0 Technical Overview -- General Information on the Cortex-M0 Processor -- The ARM Cortex-M0 Processor Features -- Advantages of the Cortex-M0 Processor -- Low-Power Applications -- Cortex-M0 Software Portability -- Chapter 3 Architecture -- Overview -- Programmer's Model -- Memory System Overview -- Stack Memory Operations -- Exceptions and Interrupts -- Nested Vectored Interrupt Controller (NVIC) -- System Control Block (SCB) -- Program Image and Startup Sequence -- Chapter 4 Introduction to Cortex-M0 Programming -- Introduction to Embedded System Programming -- Inputs and Outputs -- Development Flow -- C Programming and Assembly Programming -- What Is in a Program Image? -- C Programming: Data Types -- Accessing Peripherals in C -- Cortex Microcontroller Software Interface Standard (CMSIS) -- Benefits of CMSIS -- Chapter 5 Instruction Set -- Background of ARM and Thumb Instruction Set -- Assembly Basics -- Pseudo Instructions -- Chapter 6 Instruction Usage Examples -- Overview -- Program Control -- Data Accesses -- Data Type Conversion -- Data Processing -- Chapter 7 Memory System -- Overview -- Memory Map -- Program Memory, Boot Loader, and Memory Remapping -- Data Memory -- Little Endian and Big Endian Support -- Memory Attributes -- Chapter 8 Exceptions and Interrupts -- What Are Exceptions and Interrupts?
- SysTick Current Value Register (SysTick - VAL) -- SysTick Calibration Value Register (SysTick - CALIB) -- Appendix E Debug Registers Quick Reference -- Overview -- Core Debug Registers -- Breakpoint Unit -- Data Watchpoint Unit -- ROM Table Registers -- Appendix F Debug Connector Arrangement -- The 10-Pin Cortex Debug Connector -- The 20-Pin Cortex Debug + ETM Connector -- The Legacy 20-Pin IDC Connector Arrangement -- Appendix G Linker Script for CodeSourcery G++ Lite -- Appendix H Example Code Files -- Appendix H.1 system_LPC11xx.c -- Appendix H.2 system_LPC11xx.h -- Appendix H.3 LPC11xx.hs -- Appendix H.4 uart_test.s -- Appendix H.5 RTX_config.c -- Appendix I Troubleshooting -- I.1 Program Does Not Run/Start -- I.2 Program Started, but Entered a Hard Fault -- I.3 Sleep Problems -- I.4 Interrupt Problem -- I.5 Other Issues -- Index -- Chapter 1 - Introduction -- Why Cortex-M0? -- Application of the Cortex-M0 Processors -- Background of ARM and ARM processors -- Cortex-M0 Processor Specification and ARM Architecture -- ARM Processors and the ARM Ecosystem -- Getting Started with the Cortex-M0 Processor -- Organization of This Book and Resources -- Chapter 3 - Architecture -- Overview -- Programmertnqh_x2019s Model -- Memory System Overview -- Stack Memory Operations -- Exceptions and Interrupts -- Nested Vectored Interrupt Controller (NVIC) -- System Control Block (SCB) -- Program Image and Startup Sequence -- Chapter 5 - Instruction Set -- Background of ARM and Thumb Instruction Set -- Assembly Basics -- Pseudo Instructions -- Chapter 6 - Instruction Usage Examples -- Overview -- Program Control -- Data Accesses -- Data Type Conversion -- Data Processing -- Chapter 7 - Memory System -- Overview -- Memory Map -- Program Memory, Boot Loader, and Memory Remapping -- Data Memory -- Little Endian and Big Endian Support -- Memory Attributes
- Chapter 9 - Interrupt Control and System Control
- Porting Software from the ARM7TDMI to the Cortex-M0 -- Differences between the Cortex-M1 and the Cortex-M0 -- Porting Software between the Cortex-M0 and the Cortex-M1 -- Differences between the Cortex-M3 and the Cortex-M0 -- Porting Software between the Cortex-M0 and the Cortex-M3 -- Porting Software between the Cortex-M0 and the Cortex-M4 Processor -- Porting Software from 8-Bit/16-Bit Microcontrollers to the Cortex-M0 -- Chapter 22 Cortex-M0 Products -- Overview -- Microcontroller Products and Application-Specific Standard Products (ASSPs) -- Compilers and Software Development Suites -- Development Boards -- Appendix A Instruction Set Summary -- Appendix B Cortex-M0 Exception Type Quick Reference -- Exception Types -- Stack Contents after Exception Stacking -- Appendix C CMSIS Quick Reference -- Data Type -- Exception Enumeration -- NVIC Access Functions -- System and SysTick Access Functions -- Core Registers Access Functions -- Special Instructions Access Functions -- Appendix D NVIC, SCB, and SysTick Registers Quick Reference -- NVIC Register Summary -- Interrupt Set Enable Register (NVIC - ISER) -- Interrupt Clear Enable Register (NVIC - ICER) -- Interrupt Set Pending Register (NVIC - ISPR) -- Interrupt Clear Pending Register (NVIC - ICPR) -- Interrupt Priority Registers (NVIC - IPR[0] to NVIC - IPR[7]) -- SCB Register Summary -- CPU ID Base Register (SCB - CPUID) -- Interrupt Control State Register (SCB - ICSR) -- Application Interrupt and Control State Register (SCB - AIRCR) -- System Control Register (SCB - SCR) -- Configuration Control Register (SCB - CCR) -- System Handler Priority Register 2 (SCB - SHR[0]) -- System Handler Priority Register 3 (SCB - SHR[1]) -- System Handler Control and State Register -- SysTick Register Summary -- SysTIck Control and Status Register (SysTick - CTRL) -- SysTick Reload Value Register (SysTick - LOAD)
- Chapter 16 Assembly Projects and Mixed-Assembly and C Projects -- Project Development in Assembly -- Recommended Practice in Assembly Programming -- Structure of an Assembly Function -- Simple Assembly Project Example -- Allocating Data Space for Variables -- UART Example in Assembly -- Additional Text Output Functions -- Mixed-Language Projects -- Embedded Assembly -- Accessing Special Instructions -- Idiom Recognitions -- Chapter 17 Using Low-Power Features in Programming -- Overview -- Review of Sleep Modes in the Cortex-M0 Processor -- Using WFE and WFI in Programming -- Using the Send-Event-on-Pend Feature -- Using the Sleep-on-Exit Feature -- Wakeup Interrupt Controller (WIC) Feature -- Event Communication Interface -- Developing Low-Power Applications -- Example of Using Low-Power Features on the LPC111x -- Chapter 18 Using SVC, PendSV, and Keil RTX Kernel -- Introduction -- Using the SVC Exception -- Using the PendSV Exception -- Using an Embedded OS -- Keil RTX Real-Time Kernel -- OS Startup Sequence -- Chapter 19 Getting Started with the ARM RealView Development Suite -- Overview -- Simple Application Example -- Using the Scatter Loading File -- Example with Vector Table in C -- Using MicroLIB in RVDS -- Using Assembly for Application Development in RVDS -- Flash Programming -- Debugging Using RealView Debugger -- Using Serial Wire Debug with the RealView Debugger -- Retargeting in RVDS -- Chapter 20 Getting Started with the GNU C Compiler -- Overview -- Typical Development Flow -- Simple C Application Development -- CodeSourcery Common Startup Code Sequence (CS3) -- Using a User-Defined Vector Table -- Using Printf in gcc -- Inline Assembler -- SVC Example in gcc -- Hard Fault Handler Example -- Flash Programming and Debug -- Chapter 21 Software Porting -- Overview -- ARM Processors -- Differences between the ARM7TDMI and the Cortex-M0
- Exception Types on the Cortex-M0 Processor -- Exception Priority Definition -- Vector Table -- Exception Sequence Overview -- EXC_RETURN -- Details of Exception Entry Sequence -- Details of Exception Exit Sequence -- Chapter 9 Interrupt Control and System Control -- Overview of the NVIC and System Control Block Features -- Interrupt Enable and Clear Enable -- Interrupt Pending and Clear Pending -- Interrupt Priority Level -- Generic Assembly Code for Interrupt Control -- Exception Masking Register (PRIMASK) -- Interrupt Inputs and Pending Behavior -- Interrupt Latency -- Control Registers for System Exceptions -- System Control Registers -- Chapter 10 Operating System Support Features -- Overview of the OS Support Features -- The SysTick Timer -- SysTick Registers -- Process Stack and Process Stack Pointer -- SVC -- PendSV -- Chapter 11 Low-Power Features -- Low-Power Embedded System Overview -- Low-Power Advantages of the Cortex-M0 Processor -- Overview of the Low-Power Features -- Sleep Modes -- Wait-for-Event (WFE) and Wait-for-Interrupt (WFI) -- Sleep-on-Exit Feature -- Wakeup Interrupt Controller -- Chapter 12 Fault Handling -- Fault Exception Overview -- Analyze a Fault -- Accidental Switching to ARM State -- Error Handling in Real Applications -- Lockup -- Preventing Lockup -- Chapter 13 Debug Features -- Software Development and Debug Features -- Debug Features Overview -- Debug Interface -- Halt Mode and Debug Events -- Debug System -- Chapter 14 Getting Started with Keil MDK -- Introduction to Keil MDK -- First Step of Using Keil MDK -- Other Project Configurations -- Customizing the Startup Code in Keil -- Using the Scatter Loading Feature in Keil -- Chapter 15 Simple Application Programming -- Using CMSIS -- Using the SysTick Timer as a Single Shot Timer -- UART Examples -- Simple Interrupt Programming -- Different Versions of CMSIS

