ARM培训讲义提纲_第1页
ARM培训讲义提纲_第2页
ARM培训讲义提纲_第3页
ARM培训讲义提纲_第4页
ARM培训讲义提纲_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ARM培训讲义提纲

单位:西安电子科技大学

编写:何方勇

编写日期:2005年7月1日

绪言

此次ARM培训要紧使各位受训人员了解嵌入式操作系统的差不多概

念、软硬件构成框架、以及把握与嵌入式操作系统有关的知识。

随着通信技术、电子技术、运算机技术、以及微电子技术的进展,片

上系统(SOC)成为当今电子技术的一大主流;这就使得嵌入式开发技术

成为整个业界的研究和开发的热点。我们明白当今世界通信与信息技术进

展的3大热点是:第三、四代移动通信技术、数字电视技术、以及汽车电

子技术。在这几个热点技术的最终实现将被纳入系统的概念,其中嵌入式

系统将在里面伴有重要的角色。

嵌入式操作系统

嵌入式操作系统作为一种新的系统,我们应该如何把握呢?以下我们

将简要介绍一下嵌入式系统。

嵌入式操作系统的差不多概念

从字面上,我们能够从两方面懂得嵌入式系统:嵌入式、系统。列举

适当的例子讲明嵌入式系统的应用:手持设备、大型通信设备

嵌入式操作系统与常见的单片机、DSP系统的细微区别

从系统的概念动身讲解:单片机、和DSP是没有系统概念的

嵌入式操作系统的软硬件平台开发

1.嵌入式操作系统的硬件构成:核心处理器、程序和数据储备器、总

线系统、外围接口(设备)等;

2.嵌入式操作系统的软件构成:系统软件、API、底层驱动、应用程

序等

结合微机系统操作系统讲解

3.常见嵌入式操作系统:VxWorks、PSOS、LINUX,WINCE、NUC

LEUS等,各种操作系统的区别和优点及应用前景。

如何样进行嵌入式系统设计

嵌入式系统开发是此次培训的要紧内容,那我们应该从以下方面入手:

处理器、硬件部件、操作系统、编程语言、软件开发工具、硬件开发平台、

软件组成。

处理器:速度、10设计指标、处理器的软件支持、处理器调试方式、

处理器提供商的信誉度;

硬件部件:硬件实现难度、开发周期、市场前景、供货情形

操作系统:产品的适合度、调试难度、代码结构、可开发潜力、移植

可行性

编程语言:高级语言、低级语言

软件开发工具:系统调试功能如何、支持的库函数、开发商的软件支

嵌入式处理器

在以上的讲义中我们简要提到了嵌入式开发的各方面的咨询题,接下

来我们将从硬件开始讲解。在嵌入式系统中,要紧以ARM芯片作为该系统

的核心芯片。

嵌入式处理器简介

ARM是AdvancedRISCMachines的缩写,ARM公司于1990成立,

ARM以低成本、低功耗、高性能迅速占据了全球市场。其产品广泛应用到

移动通信、消费电子、以及嵌入式市场。ARM公司不生产芯片,只是IP

供应商,只做设计。

常见ARM处理器系列有:ARM7系歹U、ARM9系歹U、ARM9E系列、

ARM10系列、SecurCoreSC100、StrongARM、XScale。在此,我们要紧

讲解ARM7系列、ARM9系列:

ARM7系列:0.9MIPS/MHz3级流水、冯・诺依曼结构;其内核要紧有A

RM7TDMI和ARM720T;T:支持16位THUMB指令,D支持在片调试,

M增强型乘法器,产生全64位结果,I:嵌入式ICE硬件提供片上断点和调

试点支持

ARM9系列:LlMIPS/MHz5级流水、哈佛结构;其内核要紧有ARM9

20T、ARM722T和ARM940T;

基于ARM内核的芯片扩展

由于ARM公司只做IP,不生产具体的芯片;因此我们所使用的ARM

芯片差不多上全世界其他硬件芯片厂商在通过ARM公司的授权,然后在此

基础上进行硬件扩展,以满足不同领域的需求。

下面,我们以三星公司的ARM芯片S3C2410X为例来简要介绍基于A

RM内核的芯片扩展。

LCDLCD1/1____Ky\___r\|_BUSCONT.

CGNTDMA-------1/AXi-------ArbHo”Decode

H

USBHostCONT.BInlerruptCQNT.

Power

Extr.taslerB

<^>[Manayn^nt

NANDCON7U

NANDFlashBootaSMemoryCONT

Loader<^>[SRAM.NOR'SDRAM

CKxKGenerator

(MPIX)Bridge&DMA(4Ch)

UART0.1.2gg12c

USBDeMcegAI2S

p旧.

SDI/MMCBg.GPIO

Watchdog

TimerBRTC

U

BUSCONT

gADC

Aibltor.'DecodBS

Tlmer.'PWM

8PI0,1

0*3,4(Internal)

Figure1-1.S3C2410XBlockDiagram

ARM920T内核详解

现在基于ARM920T内核的芯片逐步成为嵌入式系统芯片的主流,我们

有必基淫触甘娃加.卫星排一用空习物件开岩的箕碘山场的姓加囱加下

Figure1-1.ARM920TFunctionalBlockDiagram

下面我们将重点介绍ARM920T的协处理器CP15和内存治理单元MM

u

协处理器CP15

内存治理单元MMU

软件开发

嵌入式系统的软件开发包括:操作系统和应用程序开发两个方面。下

面我们进一步讲解基于ARM芯片的汇编语言。

ARM编程模型

ARM常见版本是V4和V5,现在要紧用的是V4,

处理器工作状态:ARM,THUMB

开关状态:进入THUMB状态、进入ARM状态

储备器格式:大小端点格式

指令长度:32位、16位

数据类型:字,半字,字节

操作模式:7种

寄存器:31个通用寄存器和6个状态寄存器

中断:

ARM差不多寻址方式

寄存器寻址:

赶忙寻址:

寄存器移位寻址:

寄存器间接寻址:

变址寻址:

多寄存器寻址:

堆栈寻址:

块拷贝寻址:

相对寻址:

ARM指令集

本章内容是详细讲解ARM指令集。

ARM指令格式

313029282726252423222120191817161514131211109876543210

Cond00IOpcodesRnRdOperand2Data/Processing/

PSRTransfer

Cond000000AsRdRnRs1001RmMultiply

Cond0000IUAsRdHiRdLoRn1001RmMultiplyLong

Cond00010B00RnRd00001001RmSingleDataSwap

Cond0001001011111I111I110001RnBranchandExchange

Cond000Pu0WLRnRd00001SH1RmHalfwordDataTransfer:

registeroffset

Cond000Pu1WLRnRdOffset1SH1OffsetHalfwordDataTransfer:

immendiateoffset

Cond01IPuBwLRnRdOffsetSingleDataTransfer

Cond0111Undefined

Cond10oPuBwLRnRegisterListBlockDataTransfer

Cond101LOffsetBranch

Cond110PUBwLRnCRdCP#OffsetCoprocessorDataTransfer

CondI110CPOpcCRnCRdCP#CP0CRmCoprocessorDataOperation

CPCRmCoprocessorRegisterTransfer

Cond1110LCRnRdCP#CP1

Opc

Cond1111IgnoredbyprocessorSoftwareInterrupt

313029282726252423222120191817161514131211109876543210

表4—1:ARM指令集格式

注意:

某些指令码没有定义,但并不导致未定义指令陷阱显现,例如一个乘

法指令的第6位变为lo不应使用这些指令,因为它们的作用也许会由以后

的ARM执行

ARM指令集表:

下面表4—2、表4—3列出了ARM指令集:

表4一2:

MSRMoveregistertoPSRstatus/flagsPSR:=Rm

MULMultiplyRd:=RmxRs

MVNMovenegativeregisterRd:=0xFFFFFFFFEOR0p2

ORRORRd:=RnOROp2

RSBReverseSubtractRd:=Op2-Rn

RSCReverseSubtractwithCarryRd:=Op2-Rn-1+Carry

SBCSubtractwithCarryRd:=Rn-0p2-1+Carry

STCStorecoprocessorregistertomemoryaddress:=CRn

STMStoreMultipleStackmanipulation(Push)

STRStoreregistertomemory<address>:=Rd

SUBSubtractRd:=Rn-0p2

SWISoftwareInterruptOScall

SWPSwapregisterwithmemoryRd:=[Rn]?[Rn]:=Rm

TEQTestbitwiseequalityCPSRflags:=RnEOROp2

TSTTestbitsCPSRflags:=RnANDOp2

表4—3:ARM指令集

CodeSuffixFlagsMeaning

0000EQZsetequal

0001NEZclearnotequal

被*0010CSCsetunsignedhigherorsame

0011ccCclearunsignedlower

NJ0100MlNsetnegative

。101PLNclearpositiveorzero

0110VS\/sutoverflow

表力0111VCVclearnooverflow

意其1000HICsetandZclearunsignedhigher

1001LSCclearorZsetunsignedlowerorsame

个d1010GENequalsVgreaterorequal

时,1011LTNnotequaltoVlessthan

1100GTZclearAND(NequalsV)greaterthan

PSF1101LEZsetOR(NnotequaltoV)lessthanorequal

1110AL(ignored)always

表4—4:ARM指令中的条件码

ARM指令集详解

★★1分支与交换(BX指令,Branch和Exchange指令):

该指令仅仅在条件为真时被执行,参见表4—4。

该指令通过将一个通用寄存器Rn的内容复制到程序计数器PC来执行

一个分支。那个分支会引起管道流,并会按照Rn指定的地址再入。该指令

也承诺交换指令集。当执行该指令时,Rn[O]的值决定了是否按照ARM指

令依旧THUMB指令对指令流进行解码。指令格式如下图4—1所示:

312827242320191615121187430

|Cond|000l|001o|l11“111”111"OOO"Rn

[3:0]OperandRegister

IfbitOofRn=1,subsequentinstructionsdecodedasTHUMBinstructions

IfbitOofRn=0,subsequentinstructionsdecodedasARMinstructions

[31:28]ConditionField

图4—1:BX指令格式

★指令循环时刻:

执行BX指令占用2S+1N周期(与BL一样),那个地点S和N分别代

表连续(S周期)和非连续(N周期)。

★汇编程序语法:

BX-分支和交换指令

BX{cond}Rn;{cond}为双字母条件经历符(即条件码),见

表4—4,而Rn表示一个有效寄存器(例如:R0)

★使用R15作操作数:

如果将R15作操作数,该情形未定义。

例:

ADRRO,Into_THUMB+1;产生分支目标地址,bitO置位,进入

THUMB状态

BXR0;分支并改变到THUMB状,R15(PC):=R

0

CODE16;汇编作为THUMB指令的后续码

Into_THUMB

ADRR5,Back_to_ARM;产生分支目标到字排列地址,bitO置

低,变回到ARM

BXR5;分支并变回到ARM状态,R15(PC):=R0

ALIGN;字排列

CODE32;汇编作为ARM指令的后续码

Back_to_ARM

★★2分支与带链接分支(B、BL)

3128272524230

|Cond|101|L|Offset

[24]Linkbit

0=Branch1=Branchwithlink

[31:28]ConditionField

图4—2:B、BL指令格式

分支指令包含有一个有符号的2态补充24位偏移(相当于25根地址线

+符号位,即+/-32M字节)。这被左移两位,符号扩展至32位,并加到程序

计数器PC。因此该指令能够指定+/-32M字节的分支。该指令偏置必须考虑

预取操作,它会引起程序计数器PC超前当前指令2个字(8个字节)。

超过+/-32M字节的分支必须使用偏置或事先装入寄存器的绝对目标。

在这种情形下,如果要求有带链接类型的分支操作,应当将PC值人工存入

R14o

★链接位:

带链接的分支(BL)将旧的PC写入当前储备空间的链接寄存器(R1

4)o写入R14的值被调整到承诺预取,并包含紧跟着“分支与链接指令”

的指令地址。注意CPSR不保留PC值,R14[l:0]总是清零。

从带链接的分支返回,如果链接寄存器仍旧有效,可使用MOVPC,R1

4;或如果链接寄存器以被Rn存作堆栈指针,使用LDMRn!,{..PC}。

★指令循环时刻:

分支和带链接分支指令占用2S+1N增加的周期(与BX一样),那个地

点S和N分别代表连续(S周期)和内部(I周期)。

★汇编程序语法:

什中的内容任意,<>中的内容必须显现

B{L}{cond}<expression>

{L}常用要求带链接分支的指令形式。如果缺省,R14

不受指令阻碍,即不将旧的PC值存入R14。

{cond}如表4—4中所示的双字母助记符(条件码),如果缺

省,默认为AL(Always)o

〈expression〉目标单元,汇编程序运算偏移量。

312827262524212019161512110

s

|Cond|00||L|Opcode|llRn|Rd1Operand2

[15:12]Destinationregister

0=Branch1=Branchwithlink

[19:16]1stoperandregister

0=Branch1=Branchwithlink

[20]Setconditioncodes

0=Donotafterconditioncodes1=Setconditioncodes

[24:21]Operationcodes

0000=AND-Rd:=Op1ANDOp2

0001=EOR-Rd:=Op1EOROp2

0010=SUB-Rd:=0p1-Qp2

0011=RSB-Rd:=Op2-Op1

0100=ADD-Rd:=0p1+0p2

0101=ADC-Rd:=Op1+Op2+C

图Z0110=SBC-Rd:=OP1-Op2+C-1

0111=RSC-Rd:=Op2-Op1+C-1

1000=TST-setconditioncodesonOp1ANDOp2

1001=TEOsetconditioncodesonOP1EOROp2

1010=CMP-setconditioncodeson0p1-0p2

1011=SMN-setconditioncodeson0p1+0p2

1100=ORR-Rd:=Op1OROp2

1101=MOV-Rd:=Op2

1110=BIC-Rd:=Op1ANDNOTOp2

1111=MVN-Rd:=NOTOp2

[25]Immediateoperand

0=Operand2isaregister1=Operand2isanimmediatevalue

[11:0]Operand2typeselection

[31:28]Conditionfield

图4—3:数据处理指令

该指令通过对一或两个操作数进行指定的算术或逻辑运算产生结果。

第一个操作数总是一个寄存器(Rn)。

按照指令中L(即D25)位的值,第二个操作数可能是一个移位寄存器

(Rm)或一个8位循环赶忙数(Imm)o按照指令中S位的值,确定该指令

的结果是否能够爱护或更新CPSR中的条件码。

5

THLL」二属"/nnonn/1/-dec、r1iz^x/1口一^01cc、HR/de

AssemblerMnemonicOPCodeAction

1-0AND。000Operand1ANDoperand2

EOROOCHOperand1EORoperand2

多口才

WUB0010Operand1-operand2

RSB0011Operand2operand1

ADD0100Operand1+operand2

ADC:Operand1+operand2+carry

ST、SBC011。Operand1-operand2+carry-1

RSC0111Operand2-operand1+carry-1

I.L.工!

的书TST1000AsAND,butresultisnotwritten

则(TEQ1。。1AsEOR,butresultisnotwritten

CMPAsSUB.butresultisnotwritten

移不CMN1011AsADD,butresultisnotwritten

为云ORR1100Operand1ORoperand2

MOV1101Operand2(operand1IsIgnored)

B,ICinoOperand1ANDNOToperand2(Bitclear)

MVN1111NOToperand2(operandlisignored)

表4—5:数据处理指令

算术运算(SUB、RSB、ADD、ADC、SBC、RSC、CMN)将每个操

作数都看作是一个32位的整数(无符号或两个独立的符号,两种情形时一

样的)。如果S位被置位(同时Rd不是R15),则CPSR中的V标志在结果

的bit31显现溢出时被置位,如果操作数均为无符号数能够不理会,但如果

操作数为两个独立的有符号数则会发出错误提示,C标志会由于执行ALU

的bit31被置位,Z标志当且仅当结果全零时被置位,N标志被置为结果bi

t31的值(如果认为操作数为两个独立的有符号数时指示结果为负)。

★移位:

当第二个操作数被指定为移位寄存器时,寄存器的移位操作受指令中

的移位域操纵。该域指示要执行的移位类型(逻辑左移或右移、算术右移

或循环右移)。寄存器要移动的值可包含在指令的赶忙域中,或者在另一个

寄存器(除了R15)。不同移位类型的编码如图4-4所示。

1176541187654

_____Ih|RS|o|I□

[6:5]Shifttype[6:5]Shifttype

00=logicalleft01=logicalright00=logicalleft01=logicalright

10=arithmeticright11=rotateright10=arithmeticright11=rotateright

[11:7]Shiftamount[11:8]Shiftregister

5bitunsignedintegerShiftamountspecifiedinbottom-byteofRs

图4-4:ARM移位操作

★指定偏移量指令:

当指令中指定了偏移量时,它包含了一个5位的区域,其赋值范畴为0

~31

的《

果耳

变2

如]

图4—6:逻辑右移

右爰

换后

而为

-7

图4—7:算术右移

图4—9:带扩展循环右移

★指定偏移量寄存器

只有Rs的最低端字节被用来确定偏移量。Rs能够是除R15外的任何

寄存器。

如果该字节为零,Rm未改变的内容将被当作第二操作数,同时旧的C

PSR的C标志值将会被作为shifter的进位输出。

如果1到31位之间字节有值,移位结果将与指定移位指令的同一个值

和移位操作匹配。

如果字节中的值大于等于32,结果为上面所述移位的逻辑扩展:

LSL32结果为零,进位输出等于Rm的。位;

LSL大于32结果为零,进位为零;

LSR32结果为零,进位输出等于Rm的31位;

LSR大于32结果为零,进位为零;

ASR大于等于32结果和进位等于Rm的31位;

ROR32结果等于Rm,进位等于Rm的31位;

RORn结果和进位与RORn-32相同,那个地点n大于32;因此持续

从n中减去32,直到n值在1〜31之间,见前面。

注意:

必须使带有操纵移位寄存器指令的bit7为零,该位为1会引起指令为

乘或未定义。

★赶忙数循环:

赶忙数循环域是一个4位无符号整数,指定对8位赶忙数进行移位操

作。该值为扩展到32位的零,然后通过在循环域中的两倍值服从右移。这

能够产生许多常数,例如2的福。

★写入R15

当Rd为除R15外的寄存器时,CPSR中的条件码标志能够从前面所述

的ALU标志更新。

当Rd为R15同时指令中的S标志未置位时,操作结果被放入R15且C

PSR不受阻碍。

当Rd为R15且S标志置位时,操作结果被放入R15,对应于当前模式

的SPSR被移入CPSR。这承诺自动储备PC和CPSR的状态改变。这种指

令格式在用户模式下不能使用。

★用R15作操作数

如果R15(PC)被用于数据处理指令中的一个操作数,可直截了当使

用该寄存器。

PC值确实是指令地址、加上由于指令预取的8或12个字节。如果指

令中指定了移位量,PC为前8个字节。如果用寄存器指定移位量,贝UPC

为前12个字节。

★TEQ、TST、CMP和CMN操作码:

注意:

TEQ、TST、CMP和CMN不写结果操作结果但置位CPSR中的标志位。

即使助记符中没有指定,汇编程序也应当总将这些指令的S标志置位。

不能使用TEQP指令,它是早期ARM处理器使用的TEQ指令:代替

PSR转移操作。

在ARM920T中TEQP的功能是:如果处理器工作在特许模式就将SP

SR_<mode>移入CPSR,如果在用户模式什么也不做。

指令周期:数据处理指令增加的周期数如下表4-6:

ProcessingTypeCycles

Normaldataprocessing1S

Dataprocessingwithregisterspecifiedshift1S+11

DataprocessingwithPCwritten2S+1N

DataprocessingwithregisterspecifiedshiftandPCwritten2S+1N+11

表4-6:增加的循环时刻

注:S、N和I分别定义为顺序(S-周期)、非顺序(N-周期)和内部(I

-周期)。

汇编程序句法

MOV,MVN(单操作数指令).

<opcode>{cond}{S}Rd,<Op2>

CMP,CMN,TEQ,TST(无结果指令).

<opcode>{cond}Rn,<Op2>

AND,EOR,SUB,RSB,ADD,ADC,SBC,RSC,ORR,BIC

<opcode>{cond}{S}Rd,Rn,<Op2>

那个地点:

<Op2>Rm{,<shift>}或,<#expression〉

{cond}双字母条件助记符,见表4—4

{S}如果S表示(指CMP,CMN,TEQ,TST),置位

条件码.

Rd,Rn和Rm寄存器号表达式

<#expression>如果使用,汇编程序将会产生一个移位的赶忙8位域

来匹配表达式,如果不用会出错

<shift><Shiftname><register>或<shiftname>#expression,或RR

X(带扩展右移1位).

<shiftname>sASL,LSL,LSR,ASR,ROR.(ASL与LSL意义相同,

它们的汇编码一样)

例:

ADDEQR2,R4,R5;如果Z标志置位,使R2=R4+R5

TEQSR4,#3;测试区4等于3(S是余外的,由汇编程序

自动插入)

SUBR4,R5,R7,LSRR2;通过R2底部字节数逻辑右移R7,从R

5中减去结果,并

;将答案放入R4

MOVPCR14:从孑程序扳同

MRS(transferPSRcontentstoaregister)

312827232221161512110

CP5Cond00010Ps001111Rd000000000000

[15:12]DestinationRegister

[22]SourcePSR

0=CPSR1=SPSR_<currentmode>

数击[31:28]ConditionField

标只

MSR(transferregistercontentstoPSR)

3128272322211211430

Cond00010I>d10100111100000000Rm

或S

[3:0]SourceRegister

容无

[22]DestinationPSR

0=CPSR1=SPSR_<currentmode>

[31:28]ConditionField

moc

形]MSR(transferregistercontentsorimmediatevaluetoPSRflagbitsonly)

31282726252423222112110

态考Cond0010>d101001111Sourceoperand

[22]DestinationPSR

0=CPSR1=SPSR_<currentmode>

能电[25]ImmediateOperand

0=Sourceoperandisaregister

1=SPSR_<currentmode>

理者[11:0]SourceOperand

11430

I00000000Rm

[3:0]SourceRegister

IQ,[11:4]Sourceoperandisanimmediatevalue

11870

RotateImm

[7:0]Unsigned8bitimmediatevalue

[11:8]ShiftappliedtoImm

使用

[31:28]ConditionField

图4—10:MRS、MSR指令格式

保留位:

ARM920T中只定义了PSR的12个位(N、Z、C、V、I、F、T和M[4:

0]),其余位保留为今后的处理器使用。

为确保ARM920T和今后处理器之间的最大兼容性,应当遵守下列原

则:

当改变PSR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论