Professional Embedded ARM Development. için kapak resmi
Professional Embedded ARM Development.
Başlık:
Professional Embedded ARM Development.
Yazar:
Langbridge, James A.
ISBN:
9781118789018
Yazar Ek Girişi:
Basım Bilgisi:
1st ed.
Fiziksel Tanımlama:
1 online resource (288 pages)
İçerik:
Professional Embedded ARM Development -- Copyright -- About the Author -- About the Technical Editors -- Acknowledgments -- Contents -- Introduction -- Who This Book Is For -- What This Book Covers -- How This Book Is Structured -- What You Need to Use This Book -- Conventions -- Source Code -- Errata -- P2P.Wrox.Com -- Part 1: Arm Systems and Development -- Chapter 1: The History of ARM -- The Origin of ARM -- Why Acorn Decided to Create a New Processor -- Why Acorn Became ARM -- Why ARM Doesn't Actually Produce Microprocessors -- ARM Naming Conventions -- How to Tell What Processor You Are Dealing With -- Differences between ARM7TDMI and ARM926EJ-S -- Differences between ARM7 and ARMv7 -- Differences between Cortex-M and Cortex-A -- Manufacturer Documentation -- What Is ARM Doing Today? -- Summary -- Chapter 2: ARM Embedded Systems -- ARM Embedded Systems Defined -- What Is a System on Chip? -- What's the Difference between Embedded Systems and System Programming? -- Why Is Optimization So Important? -- What Is the Advantage of a R ISC Architecture? -- Choosing the Right Processor -- What Should You Start With? -- What Boards Are Available? -- What Operating Systems Exist? -- Which Compiler Is Best Suited to My Purpose? -- Getting Ready for Debugging -- Are There Any Complete Development Environments? -- Is There Anything Else I Need to Know? -- Summary -- Chapter 3: ARM Architecture -- Understanding the Basics -- Register -- Stack -- Internal RAM -- Cache -- Getting to Know the Different ARM Subsystems -- Presenting the Processor Registers -- Presenting the CPSR -- Calculation Unit -- Pipeline -- Tightly Coupled Memory -- Coprocessors -- Understanding the Different Concepts -- What Is an Exception? -- Handling Different Exceptions -- Modes of Operation -- Vector Table -- Memory Management -- Presenting Different Technologies -- JTAG Debug (D).

Enhanced DSP (E) -- Vector Floating Point (F) -- EmbeddedICE (I) -- Jazelle (J) -- Long Multiply (M) -- Thumb (T) -- Synthesizable (S) -- TrustZone -- NEON -- big.LITTLE -- Summary -- Chapter 4: ARM Assembly Language -- Introduction to Assembly Language -- Talking to a Computer -- Why Learn Assembly? -- Speed -- Size -- Fun! -- Compilers Aren't Perfect -- Understanding Computer Science through Assembly -- Shouldn't You Just Write in Assembly? -- Uses of Assembly -- Writing Bootloaders -- Reverse Engineering -- Optimization -- ARM Assembly Language -- Layout -- Instruction Format -- Condition Codes -- Updating Condition Flags -- Addressing Modes -- ARM Assembly Primer -- Loading and Storing -- Setting Values -- Branching -- Mathematics -- Understanding an Example Program -- Summary -- Chapter 5: First Steps -- Hello World! -- Taking the World Apart -- Hello World, for Real This Time! -- Software Implementation -- Memory Mapping -- Real World Examples -- Silicon Labs STK3800 -- Silicon Labs STK3200 -- Atmel D20 Xplained Pro -- Case Study: U-Boot -- Machine Study: Raspberry Pi -- Boot Procedure -- Compiling Programs for the Raspberry Pi -- What's Next? -- Summary -- Chapter 6: Thumb Instruction Set -- Thumb -- Thumb-2 Technology -- How Thumb Is Executed -- Advantages of Using Thumb -- Cores Using Thumb -- ARM-Thumb Interworking -- Introduction to Thumb-1 -- Register Availability -- Removed Instructions -- No Conditionals -- Set Flags -- No Barrel Shifter -- Reduced Immediates -- Stack Operations -- Introduction to Thumb-2 -- New Instructions -- Coprocessor -- DSP -- FPU -- Writing for Thumb -- Summary -- Chapter 7: Assembly Instructions -- Movement -- MOV -- MVN -- MOVW -- MOVT -- NEG -- Example: Loading a 32-Bit Constant from the Instruction Stream -- Arithmetic -- ADD -- ADC -- SUB -- SBC -- RSB -- RSC -- Example: Basic Math -- Saturating Arithmetic.

QADD -- QSUB -- QDADD -- QDSUB -- Data Transfer -- LDR -- STR -- Example: memcpy -- Logical -- AND -- EOR -- ORR -- BIC -- CLZ -- Compare -- CMP -- CMN -- TST -- TEQ -- Branch -- B -- BL -- BX -- BLX -- Example: Counting to Zero -- Example: Thumb Interworking -- What Is MOV pc, lr? -- Multiply -- MUL -- MLA -- UMULL -- UMLAL -- SMULL -- SMLAL -- Divide -- SDIV -- UDIV -- Multiple Register Data Transfer -- STM -- LDM -- Barrel Shifter -- LSL -- LSR -- ASR -- ROR -- RRX -- Stack Operations -- PUSH -- POP -- Example: Returning from a Subroutine -- Coprocessor Instructions -- MRC -- MCR -- Miscellaneous Instructions -- SVC -- NOP -- MRS -- MSR -- Summary -- Chapter 8: NEON -- What Are the Advantages of NEON? -- What Data Types Does NEON Support? -- Using NEON in Assembly -- Presenting the Registers -- Loading and Storing Data -- Optimized memcpy -- NEON Instructions -- Using NEON in C -- Presenting Intrinsics -- Using NEON Intrinsics -- Converting an Image to Grayscale -- Summary -- Chapter 9: Debugging -- What Is a Debugger? -- What Can a Debugger Do? -- ARM Debugging Capabilities -- Types of Debugging -- Loops -- Routines -- Interrupt Controllers -- Bootloaders -- Debuggers -- GNU Debugger -- J-Link GDB Debugger -- Example Debugging -- Infinite Loop -- Unknown Exception -- Dividing by Zero -- In-Depth Analysis -- Data Abort -- Corrupted Serial Line -- 64-Bit Calculations -- A Timely Response -- Summary -- Chapter 10: Writing Optimized C -- Rules for Optimized Code -- Don't Start with Optimization -- Know Your Compiler -- Profiling -- Profiling Inside an Operating System -- Profiling on a Bare Metal System -- C Optimizations -- Basic Example -- Count Down, Not Up -- Integers -- Division -- Don't Use Too Many Parameters -- Pointers, Not Objects -- Don't Frequently Update System Memory -- Alignment -- Assembly Optimizations -- Specialized Routines.

Handling Interrupts -- Hardware Configuration Optimizations -- Frequency Scaling -- Configuring Cache -- Summary -- Part 2: Reference -- Appendix A: Terminology -- Branch Prediction -- Cache -- Cache Hit -- Cache Line -- Cache Miss -- Coprocessors -- CP10 -- CP11 -- CP14 -- CP15 -- Cycle -- Exception -- Interrupt -- Jazelle -- JTAG -- MIPS -- NEON -- Out-of-Order Execution -- Pipeline -- Register -- SIMD -- SOC -- Synthesizable -- Trustzone -- Vector Tables -- Appendix B: ARM Architecture Versions -- ARMV1 -- ARMV2 -- ARMV3 -- ARMV4 -- ARMV5 -- ARMV6 -- ARMV6-M -- ARMV7-A/R -- ARMV7-M -- ARMV8 -- Appendix C: ARM Core Versions -- ARM6 -- ARM7 -- ARM7TDMI -- ARM8 -- StrongARM -- ARM9TDMI -- ARM9E -- ARM10 -- XSCALE -- ARM11 -- Cortex -- Cortex-A -- Cortex-R -- Cortex-M -- Appendix D: NEON Intrinsics and Instructions -- Data Types -- Lane Types -- Assembly Instructions -- Intrinsic Naming Conventions -- Appendix E: Assembly Instructions -- ARM Instructions -- Arithmetic Instructions -- Parallel Arithmetic -- Movement -- Load -- Store -- Logical -- Comparison -- Saturate -- Branch -- Extend -- Miscellaneous -- Thumb Instructions on Cortex-M Cores -- Index.
Özet:
A practical Wrox guide to ARM programming for mobile devices With more than 90 percent of mobile phones sold in recent years using ARM-based processors, developers are eager to master this embedded technology. If you know the basics of C programming, this guide will ease you into the world of embedded ARM technology. With clear explanations of the systems common to all ARM processors and step-by-step instructions for creating an embedded application, it prepares you for this popular specialty. While ARM technology is not new, existing books on the topic predate the current explosive growth of mobile devices using ARM and don't cover these all-important aspects. Newcomers to embedded technology will find this guide approachable and easy to understand. Covers the tools required, assembly and debugging techniques, C optimizations, and more Lists the tools needed for various types of projects and explores the details of the assembly language Examines the optimizations that can be made to ensure fast code Provides step-by-step instructions for a basic application and shows how to build upon it Professional Embedded ARM Development prepares you to enter this exciting and in-demand programming field.
Notlar:
Electronic reproduction. Ann Arbor, Michigan : ProQuest Ebook Central, 2017. Available via World Wide Web. Access may be limited to ProQuest Ebook Central affiliated libraries.
Elektronik Erişim:
Click to View
Ayırtma: Copies: