Professional Embedded ARM Development

個数:
電子版価格 ¥3,888
  • 電書あり

Professional Embedded ARM Development

  • 提携先の海外書籍取次会社に在庫がございます。通常2週間で発送いたします。
    重要ご説明事項
    1. 納期遅延や、ご入手不能となる場合が若干ございます。
    2. 複数冊ご注文の場合、分割発送となる場合がございます。
    3. 美品のご指定は承りかねます。
  • 【重要:入荷遅延について】
    各国での新型コロナウィルス感染拡大により、洋書・洋古書の入荷が不安定になっています。
    海外からのお取り寄せの場合、弊社サイト内で表示している標準的な納期よりもお届けまでに日数がかかる見込みでございます。
    申し訳ございませんが、あらかじめご了承くださいますようお願い申し上げます。

  • 製本 Paperback:紙装版/ペーパーバック版/ページ数 259 p.
  • 言語 ENG
  • 商品コード 9781118788943
  • DDC分類 005

Full Description


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.

Table of Contents

Introduction                                       xxi
PART I ARM SYSTEMS AND DEVELOPMENT
Chapter 1 The History Of Arm 3 (10)
The Origin of ARM 3 (4)
Why Acorn Decided to Create a New 5 (1)
Processor
Why Acorn Became ARM 5 (1)
Why ARM Doesn't Actually Produce 6 (1)
Microprocessors
ARM Naming Conventions 7 (4)
How to Tell What Processor You Are 8 (1)
Dealing With
Differences between ARM7TDMI and 9 (1)
ARM926EJ-S
Differences between ARM7 and ARMv7 10 (1)
Differences between Cortex-M and 11 (1)
Cortex-A
Manufacturer Documentation 11 (1)
What Is ARM Doing Today? 11 (1)
Summary 12 (1)
Chapter 2 Arm Embedded Systems 13 (16)
ARM Embedded Systems Defined 15 (6)
What Is a System on Chip? 15 (1)
What's the Difference between Embedded 16 (1)
Systems and System Programming?
Why Is Optimization So Important? 17 (2)
What Is the Advantage of a RISC 19 (2)
Architecture?
Choosing the Right Processor 21 (1)
What Should You Start With? 22 (6)
What Boards Are Available? 23 (1)
What Operating Systems Exist? 24 (1)
Which Compiler Is Best Suited to My 25 (1)
Purpose?
Getting Ready for Debugging 26 (1)
Are There Any Complete Development 26 (1)
Environments?
Is There Anything Else I Need to Know? 27 (1)
Summary 28 (1)
Chapter 2 Arm Architecture
Understanding the Basics 29 (4)
Register 30 (1)
Stack 31 (1)
Internal RAM 31 (1)
Cache 31 (2)
Getting to Know the Different ARM 33 (7)
Subsystems
Presenting the Processor Registers 33 (2)
Presenting the CPSR 35 (2)
Calculation Unit 37 (1)
Pipeline 37 (2)
Tightly Coupled Memory 39 (1)
Coprocessors 39 (1)
Understanding the Different Concepts 40 (7)
What Is an Exception? 40 (2)
Handling Different Exceptions 42 (1)
Modes of Operation 43 (1)
Vector Table 44 (1)
Memory Management 45 (2)
Presenting Different Technologies 47 (4)
JTAG Debug (D) 47 (1)
Enhanced DSP (E) 47 (1)
Vector Floating Point (F) 48 (1)
Embedded ICE (I) 48 (1)
Jazelle (J) 48 (1)
Long Multiply (M) 48 (1)
Thumb (T) 49 (1)
Synthesizable (S) 49 (1)
TrustZone 49 (1)
NEON 50 (1)
big.LITTLE 50 (1)
Summary 51 (2)
Chapter 4 Arm Assembly Language 53 (20)
Introduction to Assembly Language 53 (1)
Talking to a Computer 54 (1)
Why Learn Assembly? 55 (4)
Speed 55 (1)
Size 56 (1)
Fun! 57 (1)
Compilers Aren't Perfect 57 (1)
Understanding Computer Science through 58 (1)
Assembly
Shouldn't You Just Write in Assembly? 58 (1)
Uses of Assembly 59 (1)
Writing Bootloaders 59 (1)
Reverse Engineering 59 (1)
Optimization 60 (1)
ARM Assembly Language 60 (9)
Layout 61 (1)
Instruction Format 61 (1)
Condition Codes 62 (3)
Updating Condition Flags 65 (1)
Addressing Modes 66 (3)
ARM Assembly Primer 69 (2)
Loading and Storing 69 (1)
Setting Values 69 (1)
Branching 69 (1)
Mathematics 70 (1)
Understanding an Example Program 70 (1)
Summary 71 (2)
Chapter 5 First Steps 73 (34)
Hello World! 74 (3)
Taking the World Apart 77 (2)
Hello World, for Real This Time! 79 (2)
Software Implementation 81 (2)
Memory Mapping 83 (2)
Real World Examples 85 (17)
Silicon Labs STK3800 85 (4)
Silicon Labs STK3200 89 (6)
Atmel D20 Xplained Pro 95 (7)
Case Study: U-Boot 102(1)
Machine Study: Raspberry Pi 103(2)
Boot Procedure 103(1)
Compiling Programs for the Raspberry Pi 104(1)
What's Next? 105(1)
Summary 105(2)
Chapter 6 Thumb Instruction Set 107(14)
Thumb 108(1)
Thumb-2 Technology 109(1)
How Thumb Is Executed 109(1)
Advantages of Using Thumb 110(1)
Cores Using Thumb 111(2)
ARM-Thumb Interworking 113(1)
Introduction to Thumb-1 113(2)
Register Availability 114(1)
Removed Instructions 114(1)
No Conditionals 114(1)
Set Flags 114(1)
No Barrel Shifter 115(1)
Reduced Immediates 115(1)
Stack Operations 115(1)
Introduction to Thumb-2 115(3)
New Instructions 116(1)
Coprocessor 117(1)
DSP 118(1)
FPU 118(1)
Writing for Thumb 118(1)
Summary 119(2)
Chapter 7 Assembly Instructions 121(24)
Movement 122(3)
MOV 122(1)
MVN 122(1)
MOVW 123(1)
MOVT 123(1)
NEG 123(1)
Example: Loading a 32-Bit Constant from 123(2)
the Instruction Stream
Arithmetic 125(2)
ADD 125(1)
ADC 126(1)
SUB 126(1)
SBC 126(1)
RSB 126(1)
RSC 127(1)
Example: Basic Math 127(1)
Saturating Arithmetic 127(2)
QADD 128(1)
QSUB 128(1)
QDADD 128(1)
QDSUB 129(1)
Data Transfer 129(1)
LDR 129(1)
STR 130(1)
Example: memcpy 130(1)
Logical 130(1)
AND 131(1)
EOR 131(1)
ORR 131(1)
BIC 131(1)
CLZ 131(1)
Compare 131(1)
CMP 132(1)
CMN 132(1)
TST 132(1)
TEQ 132(1)
Branch 132(3)
B 133(1)
BL 133(1)
BX 133(1)
BLX 134(1)
Example: Counting to Zero 134(1)
Example: Thumb Interworking 134(1)
What Is MOV pc, Ir? 135(1)
Multiply 135(1)
MUL 135(1)
MLA 135(1)
UMULL 136(1)
UMLAL 136(1)
SMULL 136(1)
SMLAL 136(1)
Divide 136(1)
SDIV 137(1)
UDIV 137(1)
Multiple Register Data Transfer 137(2)
STM 138(1)
LDM 139(1)
Barrel Shifter 139(1)
LSL 139(1)
LSR 140(1)
ASR 140(1)
ROR 140(1)
RRX 140(1)
Stack Operations 140(1)
PUSH 141(1)
POP 141(1)
Example: Returning from a Subroutine 141(1)
Coprocessor Instructions 141(1)
MRC 141(1)
MCR 142(1)
Miscellaneous Instructions 142(1)
SVC 142(1)
NOP 143(1)
MRS 143(1)
MSR 143(1)
Summary 143(2)
Chapter 8 Neon 145(14)
What Are the Advantages to Neon? 145(2)
What Data Types Does Neon Support? 147(1)
Using Neon in Assembly 147(6)
Presenting the Registers 147(1)
Loading and Storing Data 148(4)
Optimized memcpy 152(1)
NEON Instructions 152(1)
Using NEON in C 153(5)
Presenting Intrinsics 154(1)
Using NEON Intrinsics 155(1)
Converting an Image to Grayscale 156(2)
Summary 158(1)
Chapter 9 Debugging 159(16)
What Is a Debugger? 159(3)
What Can a Debugger Do? 160(1)
ARM Debugging Capabilities 160(2)
Types of Debugging 162(1)
Loops 162(1)
Routines 163(1)
Interrupt Controllers 163(1)
Bootloaders 163(1)
Debuggers 163(2)
GNU Debugger 163(2)
J-Link GDB Debugger 165(1)
Example Debugging 165(4)
Infinite Loop 165(2)
Unknown Exception 167(1)
Dividing by Zero 168(1)
In-Depth Analysis 169(5)
Data Abort 169(1)
Corrupted Serial Line 170(2)
64-Bit Calculations 172(1)
A Timely Response 173(1)
Summary 174(1)
Chapter 10 Writing Optimized C 175(18)
Rules for Optimized Code 175(1)
Don't Start with Optimization 176(1)
Know Your Compiler 176(1)
Know Your Code 176(1)
Profiling 176(4)
Profiling Inside an Operating System 177(1)
Profiling on a Bare Metal System 178(2)
C Optimizations 180(6)
Basic Example 180(2)
Count Down, Not Up 182(1)
Integers 183(1)
Division 183(1)
Don't Use Too Many Parameters 184(1)
Pointers, Not Objects 185(1)
Don't Frequently Update System Memory 185(1)
Alignment 185(1)
Assembly Optimizations 186(1)
Specialized Routines 186(1)
Handling Interrupts 186(1)
Hardware Configuration Optimizations 187(3)
Frequency Scaling 187(1)
Configuring Cache 188(2)
Summary 190(3)
Part II REFERENCE
Appendix A Terminology
Branch Prediction 193(1)
Cache 193(1)
Coprocessors 194(1)
CP10 195(1)
CP11 195(1)
CP14 195(1)
CP15 195(1)
Cycle 195(1)
Exception 195(1)
Interrupt 196(1)
Jazelle 196(1)
JTAG 196(1)
MIPS 196(1)
NEON 196(1)
Out-of-Order Execution 197(1)
Pipeline 197(1)
Register 197(1)
SIMD 197(1)
SOC 197(1)
Synthesizable 197(1)
TrustZone 198(1)
Vector Tables 198(1)
Appendix B Arm Architecture Versions 199(6)
ARMv1 200(1)
ARMv2 200(1)
ARMv3 200(1)
ARMv4 201(1)
ARMv5 201(1)
ARMv6 202(1)
ARMv6-M 202(1)
ARMv7-A/R 203(1)
ARMv7-M 203(1)
ARMv8 203(2)
Appendix C Arm Core Versions 205(10)
ARM6 205(1)
ARM7 205(1)
ARM7TDMI 206(1)
ARM8 206(1)
StrongARM 206(1)
ARM9TDMI 207(1)
ARM9E 207(1)
ARM10 207(1)
XScale 208(1)
ARM11 208(1)
Cortex 208(7)
Appendix D Neon Intrinsics And Instructions 215(6)
Data Types 215(1)
Lane Types 216(1)
Assembly Instructions 216(4)
Intrinsic Naming Conventions 220(1)
Appendix E Assembly Instructions 221(26)
ARM Instructions 221(13)
Thumb Instructions on Cortex-M Cores 234(13)
Index 247