Cortex A系列程序员指南 --前言

 本书为程序开发者提供了遵循ARM ARMv7-A架构的的ARM Cortex-A系列处理器的介绍。v7指的是架构的第7版,A指的是描述应用处理器的架构分目。它包含了Cortex-A5,Cortex-A7,Cortex-A8,Cortex-A9和Cortex-A15处理器。本书是作为一个补充不能替代诸如其他的Cortex-A系列处理器的ARM文档--每个不同分目自己的ARM Technical Reference Manuals(TRMs,ARM技术索引手册),每个设备或是板级的文档和最重量级的ARM Architecture Reference Manual(ARM ARM,ARM架构索引手册)。

本书的目的是向为Cortex-A系列处理器开发应用的程序开发者提供把广泛的不同类别的资源收集到一起集成为一本指南。我们将会涵盖那些对应用代码开发者有价值的缓存,内存管理等概念。本书的目的是为C\编开发者提供有用的信息。我们将会着手于像liunx那样复杂的操作系统如何使用ARM的特性,如何全部用起ARM处理器的很多高级特性,特别是为多核处理器编码和使用带有SIMD功能的设备。

尽管也适应于其他的ARM处理器,但是我们没有明确说本书覆盖了架构早期版本的处理器实现。Cortex-R系列和M系列会被提及但是不展开说。我们专注为ARM架构特性集细节提供通俗的介绍和为使Cortex-A处理器有效运行的C和汇编代码的编写提供实用的建议。

 本书不是入门型的书籍,我们假设读者有C和微处理器方面的知识。但是并不需要任何与ARM相关的背景知识。因为篇幅有限我们不可能对每一个专题详细展开。在有些章节我们建议(书目或是网络资源)进一步阅读关于这个主题的更深层次的知识。但是本书专注于ARM特有的细节。我们不会假定默认使用特定的工具链。所以过程中会对GNU和ARM工具链都有提到。我们希望本书能够让有PC桌面电脑或是X86背景的程序员适应踏入ARM处理器世界的第一步。

 本书的第一章描述了Cortex-A系列处理器的基本特性。第二章提供了ARM架构基础知识和个别处理器的一些背景。第三章为步入ARM世界的程序员简单概述了一些工具和不同平台的可用工具。第四、五章和第六章简单的介绍了ARM汇编语言并且覆盖了不同寄存器,模式和汇编指令的知识。第七、八章是浮点数和ARM高级SIMD拓展(NEON)。以上章节仅仅是相关主题的介绍,如果要详细讨论强大的NEON所有功能和如何在一般的信号处理应用的算法将花费很长的篇幅。之后我们将把主题转移到存储系统和缓存中,存储管理和内存字节序的第九、十、十一章。十二到十四章将会介绍终端和其它的异常。

剩下的章节提供了编程更高级的信息。十五章提供了启动代码的一览。十六章专注于从其他架构或是ARM更旧的架构到ARMv7架构上C语言和汇编代码的移植。十七章覆盖了ABI应用二进制接口和对C和汇编程序员有用的知识。代码剖析和代码优化会在十八、十九章中介绍。很多技术并不局限于ARM架构。我们另外提到了很多特定处理器的信息。

二十一到二十四章覆盖了多处理器部分。我们详细讨论了ARM是如何实现的和如何让你的代码使用它。二十一章介绍了对ARM编程至关重要的电源管理。本书的最后对ARM 安全拓展(TrustZone)、虚拟化拓展(二十七章)、大小核技术(二十八章)和程序员可用的强大的硬件调试特性(二十九章)作了简要介绍。附录A、B总结了ARM、NEON、VFP指令集。附录C一步步介绍了配置和建立ARM上的linux系统的步骤。

参考文献

Cohen,D."On Holy Wars and a Plea for peace",USC/ISI IEN April,1980,http://www.ietf.org/rfc/ien/ien137.txt.

Furber,Steve."ARM System-on-chip Architecture",2nd edition,Addison-Wesley,2000,ISBN:9780201675191

Hohl,William,"ARM Assembly Language:Fundamentals and Techniques"CRC Press,2009.ISBN:9781558608740.

ANSI/IEEE Std 754-1985,"IEEE Standard for Binary Floating-Point Arithmetic".

ANSI/IEEE Std 754-2008,"IEEE Standard for Binary Floating-Point Arithmetic".

ANSI/IEEE Std 1003.1-1990,"Standard for Infomation Technology - Portable Operating System Interface(POSIX) Base Specifications,Issue 7".

ANSI/IEEE Std 1149.1-2001,"IEEE Stanard Test Access Port and Boundary-Scan Architecture".

ARM架构参考手册(缩写为ARM ARM)是任何严谨ARM程序员的必读之物。他可以在注册后从ARM站点得到。它完整描述了ARMv7指令架构,编程模型,系统寄存器,调试特性和存储模型。对于任何AMR处理器必须遵从的模型实现它描述了详细的规范。

本书中引用ARM架构参考手册的中的:

ARM Architecture Reference Manual -ARMv7-A和ARMv7-R版(ARM DDI 0406).

---------------------------------------注意---------------------------------------------

如果本书中的内容有和ARM ARM冲突,ARM ARM作为最终的解释和优先断言。在多数情况下ARM ARM和Cortex-A Programer's Guide表述了ARM世界的不同视角的观察。ARM ARM为实现者(IC designer)提供信息,本书是为程序员提供的。最显而易见的场景就是本书描述的内容并不覆盖所有的架构约定行为-或是说实际上是对实际的抽象。

-----------------------------------------------------------------------------------------

ARM Generic Interrupt Controller Architecture Specification(ARM IHI 0048).

ARM Compiler Toolchian Assembler Reference(DUI 0489).

ARM C Language Extensions(IHI 0053)

对于各自不同的处理器技术参考手册提供了处理器的详细描述。它们可以从ARM站点文档区获得 http://infocenter.arm.com.

排版约定

本书使用如下排版约定:

斜体             强调了重要的说明,介绍了特比的技术,指定了内部交叉引用和篇外引用

粗体              在适当的位置的,描述列表使用

等款字体        指示键盘可敲出的文本,例如命令行,文件和程序名,指令名,参数和源码(译文使用微软雅黑)

等宽斜体        知识等宽字段中可被指定值替代的参数(译文中使用微软雅黑斜体)

<and>          代码或是代码片段中出现的汇编语法字段使用尖括号包围,如:

                    MRC p15, 0, <Rd>, <CRn>, <CRm>, <Opcode_2>

向本书反馈

我们努力保持Cortex-A Serices Programer's Guide是本书即易于阅读有使本书覆盖材料的深度适中,来对使用AMR处理器进行综合的介绍。

如果你对本书有任何想法。不理解我们的阐述,或是认为某些地方存在缺失,或是存在不正确的地方请发送邮件给errta@arm.com并给出以下信息:

  •     书名,The Cortex-A Serices Programer's Guide.
  •     本书的编号,ARM DEN0013C
  •     你想说明的页码
  •     你认为应该的改变

ARM同样欢迎附加的非针对性的建议和改善。

术语

此处定义本书用到的术语和缩略词

AAPCS          ARM Architecture Produre Call Standard.
ABI              Application Binary Interface.
ACP             Accelerator Coherency Port.
AHB            Advanced High-Performance Bus.
AMBA          Advanced Microcontroller Bus Architecture.
AMP            Asymmetric Multi-Processing.
APB            Advances Peripheral Bus
ARM ARM    The ARM Architecture Reference Manual.
ASIC          Application Specific Integrated Circuit.
APSR         Application Program Status Register.
ASID         Address Space ID.
ATPCS       ARM Thumb Procedure Call Standard.
AXI          Advanced eXtensible Interface.
BE8         Byte Invariant Big-Endian Mode.
BIU         Bus Interface Unit.
BSP         Board Support Package.
BTAC       Branch Target Address Cache.
BTB         Branch Target Buffer.
CISC        Complex Instruction Set Computer.
CP15        Coprocessor 15 - System control coprocessor.
CPSR        Current Program Status Register.
DAP          Debug Access Port.
DBX         Direct Bytecode Execution.
DDR         Double Data Rate(SDRAM).
DMA        Direct Memoey Access.
DMB        Data Memory Barrier.
DPU        Data Processing Unit.
DS-5        The ARM Development Studio.
DSB         Data Synchronization Barrier.
DSP         Digital Signal Processing.
DSTREAM  An ARM debug and trace unit.
DVFS Dynamic Voltage/Frequecy Scaling.
EABI    Embedded ABI.
ECC Error Crrecting Code.
ECT Embedded Trace Marocell.
FIQ An interrupt type(formerly fast interrupt).
FPSCR Floating-Point Status and Control Register.
GCC GNU Complier Collection.
GIC Generic Interrupt Controller.
GIF Graphics Interchange Format.
GPIO General Purpose Input/Output.
Gprof GUN profiler.
Harvard architecture
 Architecture with physically separate storage and signal pathways for instructions and data.
HCR Hyp Configuration Register.
ICU Instruction Cache Unit.
IDE Integrated development environment.
I/F Interface(abbreviation used in some diagrams).
IPA Intermediate Physical Adderss.
IRQ Interrupt Request(normally external interrupts.)
ISA Instruction Set Architecture.
ISB Instruction Synchronization Barrier.
ISR Interrupt Service Routine.
Jazelle The ARM bytecode acceleration technology.
JIT Just In Time.
L1/L2 Level 1/level 2.
LPAE Large Physical Address Extension.
LSB Least Significant Bit.
MESI A cache coherency protocol with for state;Modified,Exclusive,Shared and Invalid.
MMU Memory Management Unit.
MPU Memory Protection Unit.
MSB Most Significant Bit.
NEON The ARM Advanced SIMD Extensions.
NMI Non-Maskable Interrupt.
Oprofile A Linux system profiler.
QEMU A processor emulator.
PCI Peripheral Component Interconnect.A computer bus standard.
PCS Procedure Call Standard.
PFU Prefetch Unit.
PIPT Physically Indexed,Physically Tagged.
PLE Preload Engine.
PLI Preload Instruction.
PMU Performance Monitor Unit.
PoC Point of Coherency
PoU Point of Unification.
PPI Private Peripheral Input.
PSR Program Status Register.
PTE Page Table Entry.
RCT Runtime Complier Target.
RISC Reduced Instryction Set Computer.
RVCT RealView Compilation Tools(The "ARM Compiler").
SBZP Should Be Preserved.
SCU Snoop Control Unit.
SGI Software Generated Interrupt.
SIMD Single Instruction,Multiple Data.
SiP System in Package.
SMP Symmetric Multi-Processing.
SoC System on Chip.
SP Stack Pointer.
SPI Shared Peripheral Interrupt.
SPSR Saved Program Status Register.
Streamline A graphical performance analysis tool.
SVC Supervisor call instruction.(Perviously SWI)
SWI Software Interrupt instruction.(Replaced with SVC)
SYS System Mode.
TAP Test Access Port(JTAG Interface).
TCM Tightly Coupled Memory.
TDMI Thumb,Debug,Multiplier,ICE.
TEX Type Extension.
Thumb An instruction set extension to ARM.
Thumb-2 A technology extending the Thumb instruction set to support both 16-bit and 32-bit instructions.
TLB Translation Lookaside Buffer.
TLS Thread Local Storage.
TrustZone The ARM security extension.
TTB Translation Table Base.
TTBR Translation Table Base Register.
UAL Unified Assembly Language.
UART Universal Asynchronous Receiver/Transmitter.
UEFI Unified Extension Firmware Interface.
U-Boot A Linux Bootloader.
UNK Unknown.
USR User mode,a non-privileged processor mode.
VPF The ARM floating-point instruction set.Before ARMv7,The VPF extension was called the Vector Floating-Point architecture,and was used for Vector operations.
VIC Vectored Interrupt Controller.
VIPT Virtual Index,Physically Tagged.
VMID Virtual Machine ID.
VMSA Virtual Memory System Architecture.
XN Execute Never.

转载于:https://my.oschina.net/andrewzhou/blog/140745

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值