ATSAM中文数据手册.docx

上传人:b****3 文档编号:4140611 上传时间:2022-11-28 格式:DOCX 页数:53 大小:200.57KB
下载 相关 举报
ATSAM中文数据手册.docx_第1页
第1页 / 共53页
ATSAM中文数据手册.docx_第2页
第2页 / 共53页
ATSAM中文数据手册.docx_第3页
第3页 / 共53页
ATSAM中文数据手册.docx_第4页
第4页 / 共53页
ATSAM中文数据手册.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

ATSAM中文数据手册.docx

《ATSAM中文数据手册.docx》由会员分享,可在线阅读,更多相关《ATSAM中文数据手册.docx(53页珍藏版)》请在冰豆网上搜索。

ATSAM中文数据手册.docx

ATSAM中文数据手册

11.ARM926EJ-S处理器概论

11.1概论

ARM926EJ-S处理器是通用微处理器ARM9家族中的一员。

ARM926EJ-S属于5TEJ版ARM架构,针对的是多任务应用,包括全储存器管理,高性能,小核心尺寸和低功耗都是其重要的特点。

ARM926EJ-S处理器支持32位ARM和16位THUMB指令集,使得用户能在高性能和高代码密度上取得平衡。

支持8位Java指令集并且包括Java字节代码有效执行的功能部件,提供和JIT(Just-In-Time编译器)相似的Java性能,这些性能为下一代Java无线和嵌入式的设备提供了有力支持。

为了提高DSP性能,还包含了一个增强的乘法器设计。

ARM926EJ-S处理器支持ARM调试架构,包括对辅助硬件和软件调试的逻辑。

ARM926EJ-S提供了一个完全高性能的处理器子系统,包括:

●ARM9EJ-S整核

●一个存储器管理部件(MMU)

●独立的指令和数据AMBATMAHB总线接口

●独立的指令和数据TCM接口

11.2方块图

图11-1ARM926EJ-S内部功能方块图

11.3ARM9EJ-S处理器

11.3.1ARM9EJ-S运行状态

ARM9EJ-S处理器能用三种不同状态操作,每种状态带一个特殊指令集:

●ARM状态:

32位,字对齐ARM指令

●THUMB状态:

16位,半字对齐的THUMB指令

●Jazelle状态:

可变长度,字节对齐的Jazelle指令

在Jazelle状态,按字(words)取所有的指令。

11.3.2状态切换

ARM9EJ-S核的操作状态在以下状态间切换:

●用BX和BLX指令切换ARM状态和THUMB状态,并加载到PC

●用BXJ指令切换ARM状态和Jazelle状态

所有的异常都在ARM状态下进入,处理和退出。

如果一个异常发生在Thumb状态或Jazelle状态,处理器还原到ARM状态。

从异常模式处理程序退出时自动切换回Thumb或Jazelle状态。

11.3.3指令流水线

ARM9EJ-S核有两种流水线用来提高处理器指令节的速度。

一个五级(五个时钟周期)流水线被用于ARM和Thumb状态。

由取指,译码,执行,存储和回写阶段组成。

一个六级(六个时钟周期)流水线被用于Jazelle状态。

由取指,Jazelle/译码(两时钟周期),执行,存储和回写阶段。

11.3.4存储器访问

ARM9EJ-S核支持字节(8位),半字(16位)和字(32位)访问。

字必须对齐到四字节边界,半字必须对齐到两字节边界而字节可以被放置在任何字节边界。

因为流水线的性质,一个当前操作需要的值在被放置到寄存器前可能被一个先前的指令操作(使得当前流水线预取的值失效,译者注)。

ARM9EJ-S的控制逻辑自动检测这些情况并停止内核或先前传输的数据。

11.3.5Jazelle技术

在ARM处理器上,Jazelle技术直接且有效的执行Java字节代码,为下一代Java无线应用和嵌入式设备提供高性能。

ARM9EJ-S新的Java特性可以被描述为JVM(Java虚拟机)的一个硬件模拟。

Java模式将表现为另外一种状态:

取代执行ARM或Thumb指令,而执行Java字节代码。

实现于ARM9EJ-S上Java字节代码解码器逻辑实现了95%可执行字节代码的解码,并且在无任何额外开销的情况下把它们转换为ARM指令,同时,较小频率使用的字节解码被分解成顺序优化的ARM指令。

硬件/软件拆分对编程者,应用程序,以及操作系统都是不可见的。

所有现存的ARM寄存器在Jazelle状态被重复使用,并且在此模式下所有的寄存器都有特殊的功能。

最小的中断延迟被维护于ARM状态和Java状态切换。

所以字节代码执行可以被重新开启,以方便中断处理程序执行,一个中断自动触发其内核从Java状态到ARM状态改变。

这意味着当执行字节代码时没有特殊的为控制中断而准备的规定,无论是硬件还是软件。

11.3.6AEM9EJ-S操作模式

●在所有的状态下,有七种操作模式:

●用户模式是一般的ARM程序执行状态。

被用于执行大多数应用程序

●快速中断(FIQ)模式被用于控制快速中断。

适用于高速数据传输或通道进程

●中断(IRQ)模式被用于一般目的中断的处理

●管理模式是一种操作系统的保护模式

●中止(abort)模式在一个数据或指令预取中止后进入

●系统模式是一个操作系统的特权用户模式

●未定义模式当一个未定义指令异常发生后进入模式转换可在软件控制下发生,或可能被外部中断或异常处理所引发。

大多数的应用程序执行是在用户模式下进行的。

非用户模式,又称特权模式,用于处理中断或异常,以及访问被保护的资源。

11.3.7AEM9EJ-S寄存器

AEM9EJ-S内核共有37个寄存器

●31个通用的32位寄存器

●6个32位的状态寄存器

表11-1显示了所有模式下所有寄存器

表11-1.ARM9TDMI™模式和寄存器配置

用户模式和

系统模式

管理模式

中止模式

未定义模式

中断模式

快速中断模式

R0

R0

R0

R0

R0

R0

R1

R1

R1

R1

R1

R1

R2

R2

R2

R2

R2

R2

R3

R3

R3

R3

R3

R3

R4

R4

R4

R4

R4

R4

R5

R5

R5

R5

R5

R5

R6

R6

R6

R6

R6

R6

R7

R7

R7

R7

R7

R7

R8

R8

R8

R8

R8

R8_FIQ

R9

R9

R9

R9

R9

R9_FIQ

R10

R10

R10

R10

R10

R10_FIQ

R11

R11

R11

R11

R11

R11_FIQ

R12

R12

R12

R12

R12

R12_FIQ

表11-1.ARM9TDMI™模式和寄存器配置(续)

R13

R13_SVC

R13_ABORT

R13_UNDEF

R13_IRQ

R13_FIQ

R14

R14_SVC

R14_ABORT

R14_UNDEF

R14_IRQ

R14_FIQ

PC

PC

PC

PC

PC

PC

CPSR

CPSR

CPSR

CPSR

CPSR

CPSR

SPSR_SVC

SPSR_ABORT

SPSR_UNDEF

SPSR_IRQ

SPSR_FIQ

表中阴影部分为:

特定模式下的备份寄存器

ARM状态寄存器集包括16个直接存取寄存器,r0到r15,和一个附加寄存器:

当前程序状态寄存器(CPSR)。

寄存器r0到r13是用于保存数据或地址值的通用寄存器。

寄存器r14被用作一个连接寄存器(LinkRegister),当BL或BLX被执行的时候,用来保存r15的值(返回地址)。

寄存器r15被用作程序计数器(PC),当前程序状态寄存器(CPSR)包含条件代码标志位和当前模式位。

在特权模式(FIQ,管理模式,中止模式,IRQ,未定义模式),特定模式备份寄存器(FIQ模式的r8到r14或其他模式的r13到r14)可用。

当中断或异常发生,或当BL或BLX指令在中断或异常例程的情况被执行,对应的备份寄存器r14_FIQ,r14_SVC,r14_ABT,r14_IRQ,r14_UND相似的被用于保存r15(PC)的值(为每个模式的返回地址)。

还有另外的一个叫保存程序状态寄存器(SPSR)的寄存器,在特权模式下代替CPSR变成可用。

此寄存器保存进入到当前模式(特权模式)之前模式的代码标志位及当前模式位。

出于软件一致性,在所有的模式下,r13被用作堆栈指针。

所有的上面描述的寄存器的功能和用途都应该服从ARMProcedureCallStandard(APCS),包括:

●寄存器用途的约束

●堆栈约定

●参数传递并返回结果的约定Thumb状态寄存器集是一个ARM状态集的一个子集。

编程者可直接访问:

●八个通用寄存器R0-R7

●堆栈指针,SP

●连接寄存器,LR(ARMR14)

●PC

●CPSR每个特权模式都有备份寄存器SPs,LRs和SPSRs(更多的细节见ARM9EJ-S技术参考手册,ref.DDI0222B,revisionr1p2)。

11.3.7.1状态寄存器

ARM9EJ-S内核包括一个CPSR,和五个异常模式处理程序使用的SPSRs。

程序状态寄存器包括:

●保存最近ALU操作运行的信息

●使能和禁用中断

●设置处理器操作模式

图11-2状态寄存器格式

图11-2展示了状态寄存器格式:

●四个ALU标志位,N:

Negative(负),Z:

Zero(零),C:

Carry(进位),V:

Overflow(溢出)

●黏着(sticky)溢出标志位(Q)可以被特定的乘法和小数运算指令像QADD,QDADD,QSUB,QDSUB,SMLAxy,以及AMLAWy置位,完成需要的DSP操作。

Q标志位是黏着的,意味着当其被一指令置位后,此标志位将一直保持置位,除非通过一个MSR指令写CPSR明确地清零。

指令并不能依Q标志位的状态按条件执行。

●CPSR中的J位表示ARM9EJ-S内核在Jazelle状态:

-J=0:

处理器在ARM或Thumb状态,取决于T位

-J=1:

处理器在Jazelle状态

●模式:

五位编码用于确定当前处理器模式

11.3.7.2异常

异常类型和优先级

ARM9EJ-S支持五种异常。

每种类型在一个特权模式下驱动ARM9EJ-S。

异常的类型有:

●快速中断(FIQ)

●一般中断(IRQ)

●数据和预取指中止(Abort)

●未定义指令(未定义)

●软件中断和复位(管理模式)

当一个异常发生,R14的备份寄存器软中断和管理模式与异常模式下的SPSR用来保存状态。

在同一时间可以发生多于一个的异常。

因此ARM9EJ-S根据以下的优先级运行引发的异常:

●复位(最高优先级)

●数据中止

●FIQ

●IRQ

●预取指中止

●BKPT,未定义的指令,和软件中断(SWI)(最低优先级)

BKPT,或未定义指令,和SWI异常是互斥的。

在优先级序列中有一个例外,当FIQ使能,并且发生数据中止异常时一个FIQ也同时发生,ARM9EJ-S内核进入数据中止(DataAborts)处理程序,然后立即进入FIQ向量。

一个FIQ的一般中断返回导致(先前的)数据中断(DataAborts)处理继续执行。

数据中断(DataAborts)必须是比FIQ有较高优先级以确保传输错误不会漏过检测。

异常模式和控制

无论何时,当异常发生,一个程序的正常流程必须暂时停止,例如,处理一个外设中断。

当处理一个ARM的异常时,ARM9EJ-S内核执行以下操作:

1.保存下一条指令的地址到进入的新模式所对应的Link寄存器当异常从以下状态进入:

-ARM和Jazelle状态,ARM9EJ-S把下一个指令的地址复制到LR(根据异常,当前PC(r15)+4或PC+8)

-THUMB状态,ARM9EJ-S写PC的值到LR,偏移一个值(根据异常,当前PC+2,PC+4或PC+8),使得程序能从正确地址返回重开始的值。

2.复制CPSR到相应的SPSR

3.根据异常状态强制设置CPSR相关模式位

4.强制PC从相关的异常向量获取下一个指令。

寄存器r13也是备份的,通过异常模式向每个异常处理提供专用堆栈指针。

ARM9EJ-S也可以置位中断禁止标志位,以阻止不可管理的异常嵌套。

当一个异常处理完成,异常处理必须把备份LR的值减去一个偏移量的后移到PC,把SPSR复制到CPSR。

偏移量根据异常类型变化。

此操作恢复PC和CPSR。

快速中断模式有七个专用寄存器r8-r14(备份寄存器),可以减少不需要对寄存器的保存操作,以降低上下文切换的额外消耗。

预取指中止是中止模式之一,表示当前存储器访问不能完成。

当一个预取指中止发生,ARM9EJ-S标记预取指令为无效,但指令在流水线中未到达执行阶段则不执行例外异常模式。

如果指令没有执行,例如由于一个分支在流水线中发生,则中止不发生。

断点指令(BKPT)是ARM9EJ-S的一个新的特性,被设计用于解决预取指中止的问题。

一个断点指令像导致一个预取指中止的指令一样执行。

断点指令不会使ARM9EJ-S去执行预取指中止异常模式,直到指令到达流水线的执行阶段。

如果指令未执行,例如因为一个分支在流水线中发生,断点不再发生。

11.3.8ARM指令集一览

ARM指令集被分成:

●分支(Branch)指令

●数据处理指令

●状态寄存器传输指令

●装载和存储指令

●协处理器指令

●异常产生(Exception-generating)指令

ARM指令可以被有条件的执行。

每个指令包含一个4位条件代码字段(位[31:

38])。

表11-2给出了ARM指令助记符列表。

表11-2.ARM指令助记符列表

助记符

操作

助记符

操作

MOV

Move传送

MVN

MoveNot取反传送

ADD

Add加

ADC

AddwithCarry带进位加

SUB

Subtract减

SBC

SubtractwithCarry带借位减

RSB

ReverseSubtract逆减

RSC

ReverseSubtractwithCarry带借位逆减

CMP

Compare比较

CMN

CompareNegated取反比较

TST

Test测试

TEQ

TestEquivalence测试等价

AND

LogicalAND逻辑与

BIC

BitClear位清零

EOR

LogicalExclusiveOR逻辑异或

ORR

Logical(inclusive)OR逻辑或

MUL

Multiply乘

MLA

MultiplyAccumulate乘累加

SMULL

SignLongMultiply带符号长乘

UMULL

UnsignedLongMultiply无符号长乘

SMLAL

SignedLongMultiplyAccumulate带符号长乘累加

UMLAL

UnsignedLongMultiplyAccumulate

无符号长乘累加

MSR

MovetoStatusRegister

传送到状态寄存器

MRS

MoveFromStatusRegister

从状态寄存器传送

B

Branch分支

BL

BranchandLink分支并链接

BX

BranchandExchange

分支并交换

SWI

SoftwareInterrupt软件中断

LDR

LoadWord装载字

STR

StoreWord存储字

LDRSH

LoadSignedHalfword

装载带符号半字

LDRSB

LoadSignedByte

装载带符号字节

LDRH

LoadHalfWord装载半字

STRH

StoreHalfWord存储半字

LDRB

LoadByte装载字节

STRB

StoreByte存储字节

LDRBT

LoadRegisterBytewithTranslation

装载带转换的寄存器字节

STRBT

StoreRegisterBytewithTranslation

存储带转换的寄存器字节

LDRT

LoadRegisterwithTranslation

装载带转换的寄存器

STRT

StoreRegisterwithTranslation

存储带转换的寄存器

LDM

LoadMultiple批量装载

STM

StoreMultiple批量存储

SWP

SwapWord字交换

SWPB

SwapByte交换字节

MCR

MoveToCoprocessor

传送至协处理器

MRC

MoveFromCoprocessor

从协处理器传送

LDC

LoadtoCoprocessor

装载至协处理器

STC

StoreFromCoprocessor

从协处理器存储

CDP

CoprocessorDataProcessing

协处理器数据处理

11.3.9新ARM指令集

表11-3.新ARM指令助记符列表

助记符

操作

助记符

操作

BXJ

BranchandexchangetoJava

分支并切换至Java

MRRC

Movedoublefromcoprocessor

从协处理器传送双字

BLX

(1)

Branch,Linkandexchange

分支,连接并切换

MCR2

AlternativemoveofARMregtocoprocessor

ARM寄存器到协处理器的选择传送

SMLAxy

SignedMultiplyAccumulate16*16bit

带符号乘累加16*16位

MCRR

Movedoubletocoprocessor

传送双字到协处理器

SMLAL

SignedMultiplyAccumulateLong

带符号长型乘累加

CDP2

AlternativeCoprocessorDataProcessing

选择协处理器数据处理

SMLAWy

SignedMultiplyAccumulate32*16bit

带符号乘累加32*16位

BKPT

Breakpoint断点

SMULxy

*SignedMultiply16*16bit

带符号乘16*16位

PLD

SoftPreload,Memorypreparetoloadfromaddress

软预装载,存储器从地址装载

SMULWy

SignedMultiply32*16bit

带符号乘32*16位

STRD

StoreDouble存储双字

QADD

turatedAdd饱和加

STC2

AlternativeStorefromCoprocessor

从协处理器选择存储

QDADD

SaturatedAddwithDouble

饱和双精度加

LDRD

LoadDouble装载双字

QSUB

Saturatedsubtract饱和减

LDC2

AlternativeLoadtoCoprocessor

选择装载到协处理器

QDSUB

SaturatedSubtractwithdouble

饱和双精度减

CLZ

CountLeadingZeroes前导零计数

注意:

一个ThumbBLX包含两个连续的Thumb指令,并需四个时钟周期。

11.3.10Thumb指令集概论

Thumb指令集是ARM指令集的一个重编码子集。

Thumb指令集被分成:

·分支指令

·数据处理指令

·装载和存储指令

·批量装载和批量存储指令

·异常产生指令

表11-4给出了Thumb指令助记符列表。

表11-4Thumb指令助记符列表

助记符

操作

助记符

操作

MOV

Move传送

MVN

MoveNot取反传送

ADD

Add加

ADC

AddwithCarry带进位加

SUB

Subtract减

SBC

SubtractwithCarry带借位减

CMP

Compare比较

CMN

CompareNegated取反比较

TST

Test测试

NEG

Negate取反

AND

LogicalAND逻辑与

BIC

BitClear位清零

EOR

LogicalExclusiveOR逻辑异或

ORR

Logical(inclusive)OR逻辑或

LSL

LogicalShiftLeft逻辑左移

LSR

LogicalShiftRight逻辑右移

ASR

ArithmeticShiftRight算数右移

ROR

RotateRight循环右移

MUL

Multiply乘

BLX

Branch,Link,andExchange分支,连接,切换

B

Branch分支

BL

BranchandLink分支并连接

BX

BranchandExchange分支并切换

SWI

SoftwareInterrupt软件中断

LDR

LoadWord装载字

STR

StoreWord存储字

LDRH

LoadHalfWord装载半字

STRH

StoreHalfWord存储半字

LDRB

LoadByte装载字节

STRB

StoreByte存储字节

LDRSH

LoadSignedHalfword装载带符号半字

LDRSB

LoadSignedByte装载带符号字节

LDMIA

LoadMultiple批量装载

STMIA

StoreMultiple批量存储

PUSH

PushRegistertostack寄存器入栈

POP

PopRegisterfromstack出栈到寄存器

BCC

ConditionalBranch条件分支

BKPT

Breakpoint断点

11.4CP15协处理器

协处理器15,或系统控制协处理器CP15,被用于配置和控制下表中所有项:

●ARM9EJ-S

●高速缓冲(ICache,DCache和写缓冲器)

●TCM

●MMU

●其他系统选项为了控制这些功能部件,CP15提供了16个附加寄存器。

见表11-5

表11-5CP15寄存器

寄存器

名称

读/写

0

IDCode

(1)ID代码*

Read/Unpredictable读/不可预测

0

Cachetype

(1)Cache类型*

Read/Unpredictable读/不可预测

0

TCMstatus

(1)TCM状态*

Read/Unpredictable读/不可预测

1

Control控制

Read/write读/写

2

TranslationTableBase转换表基址

Read/write读/写

3

DomainAccessControl域访问控制

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1