版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Xidia n Uni versity西安电子科技大学 ARM培训讲义提纲 单位: 西安电子科技大学 编写: 何方勇 编写日期: 2005年 7月 1 日 i Xidia n Uni versity西安电子科技大学 1.绪言 本次ARM培训主要使各位受训人员了解嵌入式操作系统的基本概念、软硬件构成框架、 以及掌握与嵌入式操作系统相关的知识。 随着通信技术、电子技术、计算机技术、以及微电子技术的发展,片上系统(SOC )成 为当今电子技术的一大主流;这就使得嵌入式开发技术成为整个业界的研究和开发的热点。 我们知道当今世界通信与信息技术发展的 3大热点是:第三、四代移动通信技术、数字电视 技术、以
2、及汽车电子技术。在这几个热点技术的最终实现将被纳入系统的概念,其中嵌入式 系统将在里面伴有重要的角色。 2. 嵌入式操作系统 嵌入式操作系统作为一种新的系统,我们应该怎么把握呢?以下我们将简要介绍一下嵌 入式系统。 2.1. 嵌入式操作系统的基本概念 从字面上,我们可以从两方面理解嵌入式系统:嵌入式、系统。列举适当的例子说明嵌 入式系统的应用:手持设备、大型通信设备 2.2. 嵌入式操作系统与常见的单片机、DSP系统的细微区别 从系统的概念出发讲解:单片机、和DSP是没有系统概念的 2.3. 嵌入式操作系统的软硬件平台开发 1.嵌入式操作系统的硬件构成:核心处理器、程序和数据存储器、总线系统、
3、外围接口(设 备)等; 2 嵌入式操作系统的软件构成:系统软件、API、底层驱动、应用程序等 结合微机系统操作系统讲解 3. 常见嵌入式操作系统:VxWorks、PSOS、LINUX、WINCE、NUCLEUS等,各种操作系 统的区别和优点及应用前景。 2.4. 怎样进行嵌入式系统设计 嵌入式系统开发是本次培训的主要内容,那我们应该从以下方面入手:处理器、硬件部件、 操作系统、编程语言、软件开发工具、硬件开发平台、软件组成。 1)处理器:速度、io设计指标、处理器的软件支持、处理器调试方式、处理器提供商的 信誉度; 2)硬件部件:硬件实现难度、开发周期、市场前景、供货情况 3)操作系统:产品的
4、适合度、调试难度、代码结构、可开发潜力、移植可行性 4)编程语言:高级语言、低级语言 5)软件开发工具:系统调试功能如何、支持的库函数、开发商的软件支持 3. 嵌入式处理器 在以上的讲义中我们简要提到了嵌入式开发的各方面的问题,接下来我们将从硬件开始 讲解。在嵌入式系统中,主要以ARM芯片作为该系统的核心芯片。 3.1. 嵌入式处理器简介 ARM是Advaneed RISC Machines的缩写,ARM公司于1990成立,ARM 以低成本、 低功耗、高性能迅速占领了全球市场。其产品广泛应用到移动通信、消费电子、以及嵌入式 市场。ARM公司不生产芯片,只是IP供应商,只做设计。 常见ARM处理
5、器系列有:ARM7系列、ARM9系列、ARM9E系列、ARM10系列、 SeeurCore SC100、Strong ARM、XSeale。在此,我们主要讲解 ARM7 系列、ARM9 系列: 1) ARM7系列:0.9MIPS/MHZ3 级流水、冯诺依曼结构;其内核主要有ARM7TDMI 和 ARM720T ; T:支持16位THUMB指令,D支持在片调试,M增强型乘法器,产生全 64位结果,I:嵌入式ICE硬件提供片上断点和调试点支持 2) ARM9系列:1.1MIPS/MHZ5 级流水、哈佛结构;其内核主要有ARM920T、ARM722T 和 ARM940T ; 3.2. 基于ARM内核
6、的芯片扩展 由于ARM公司只做IP,不生产具体的芯片;所以我们所使用的 ARM芯片都是全世界 其他硬件芯片厂商在经过 ARM公司的授权,然后在此基础上进行硬件扩展,以满足不同领 域的需求。 ARM9系列是当今嵌入式系统应用的主流芯片内核技术。全世界各大厂商都采用ARM 公司的IP来开发自己的 ARM芯片,主要厂商有:三星、 AD、TI、菲利普、In tel、CIRRUS LOGIC 等。 下面,我们以三星公司的 ARM芯片S3C2410X为例来简要介绍基于 ARM内核的芯片 扩展。 注意:ARM9系列是兼容 ARM7系列的。 UWT a. 1. 2 I2C 廿越日Dmi A p I2S SDI
7、.MIMC GP1O Walrrtdog hmer B U S me PUB CONT ADC SPI 0, 1 0 Tlnir.PWM 1 D 3, 4(lnlerrail) 1 BLOCK DIAGRAM BUS CON I LCD LCD CCHT LhlA USB I tos! COHT. A H B B u S NAND CON T NANDFia = Rn. Rn := Rm TEO Test bitwise equality CPSR flags: = Rn EOR Op2 TST Test bits CPSR flajs: = Rn AND Op2 表4 3: ARM指令集 在
8、ARM犬态下,所有指令都会根据CPSR条件码和指令条件域的状态被有条件地执行。 该域(位31:28 )决定了执行一条指令的环境。如果C N、Z和V标志的状态满足该域的编 码条件,指令就被执行,否则不予执行。 存在着16个可能条件,每种由复加在指令记忆符后的一个双字符后缀表示。例如, Branch ( B为汇编语言)变为 BEQ表示Branch if Equal ”,意思是当Z标志被置位时执行 Branch指令。实际上,表 3-2中所列的15个不同的条件也许会用到,第16个(1111 )保 留,不能使用。在后缀缺省时,大多数指令的条件域被设置成Always ”(后缀AL)。这意 味着不管CPSR
9、勺条件码是什么,指令永远被执行。下表4- 4给出了条件码概况: Code Suffix Flags Meaning 0000 EQ Z set equal 0001 NE Z clear not equal 0010 CS C set unsigned higher or same 0011 CC C dear Linslgncond为双字母条件记忆符(即条件码),见表 示一个有效寄存器(比如:R0) 4 4,而Rn表 使用R15乍操作数: 如果将R15作操作数,该情况未定义。 ADR R0, I nto_THUMB + 1 ; 产生分支目标地址,bit0置位,进入THUM状态 BX R0:
10、: 分支并改变到 THUM状,R15(PC):=R0 CODE16 ;汇编作为THUM指令的后续码 In to_THUMB ADR R5, Back_to_ARM ;产生分支目标到字排列地址,bit0置低,变回到 BX R5 ;分支并变回到 ARM状态,R15(PC):=R0 ALIGN ;字排列 CODE32 ;汇编作为ARMh令的后续码 Back to ARM 例: ARM 2分支与带链接分支(B、BL) 该指令仅仅在条件为真时被执行, 参见表4 4。该指令的编码如下图 42所示。 Cond 101 L Offset| 31药 2 了 25 24 230 24 Link bit 0 = B
11、ranch1 = Branch with link 31:28 Condition Field 图4 2: B BL指令格式 分支指令包含有一个有符号的 2态补充24位偏移(相当于25根地址线+符号位,即+/-32M 字节)。这被左移两位,符号扩展至32位,并加到程序计数器PG因此该指令可以指定+/-32M 字节的分支。该指令偏置必须考虑预取操作, 它会引起程序计数器 PC超前当前指令2个字(8 个字节)。 超过+/-32M字节的分支必须使用偏置或事先装入寄存器的绝对目标。在这种情况下,如 果要求有带链接类型的分支操作,应当将PC直人工存入R14。 链接位: 带链接的分支(BL)将旧的PC写入
12、当前存储空间的链接寄存器(R14)。写入R14的值被 调整到允许预取,并包含紧跟着“分支与链接指令”的指令地址。注意CPSR不保留PC直, R141:0总是清零。 从带链接的分支返回,如果链接寄存器仍然有效,可使用M0WC,R14 ;或如果链接寄存 器以被Rn存作堆栈指针,使用LDM Rn!,.PC。 指令循环时间: 分支和带链接分支指令占用 2S+1N增加的周期(与B1样),这里S和N分别代表连续(S 周期)和内部(I周期)。 汇编程序语法: 中的内容任意, 中的内容必须出现 BLc ond L 常用请求带链接分支的指令形式。如果缺省,R14不受指令影响,即不将 旧的PC直存入R14。 co
13、nd 如表4 4中所示的双字母助记符 (条件码),如果缺省,默认为AL( Always )。 BAL here B there CMP R1,#0 BEQ fred BL sub+ROM ADDS R1,#1 BLCC sub here 目标单元,汇编程序计算偏移量。 ;等待,指令汇编成OxEAFFFFFE ;等待,默认条件是“ Always ” ;R1 = 0 ?比较 ;为零,则跳转;反之,继续下一个指令 ;跳转,调用子程序 ;R1 = R1 + 1,设置 CPSR 标志 ;C = 0,调用子程序 3数据处理: 数据处理指令仅在条件为真时被执行,参见表4- 4。该指令编码如下图4- 3所示。
14、 3126 27 26 25 2421 20 1916 1512 11 0 | Cond | 00 | 上| Op Cotte H Rn Rd OperandI 15:12 Destination register 0 = Branch 1 = Branch with link 19:16 1st operand register 0 - Branch 1 Branch with link 20 Set condition cod因此不断从n中减去32,直到n值在131 之间,见前面。 必须使带有控制移位寄存器指令的bit 7为零,该位为1会引起指令为乘或未定乂。 立即数循环: 立即数循环域是
15、一个4位无符号整数,指定对8位立即数进行移位操作。该值为扩展到32 位的零,然后通过在循环域中的两倍值服从右移。这可以产生许多常数,例如2的幕。 写入R15 当Rd为除R15外的寄存器时,CPS中的条件码标志可以从前面所述的ALL标志更新。 当Rd为R15并且指令中的S标志未置位时,操作结果被放入R15且CPS不受影响。 当Rd为R15且S标志置位时,操作结果被放入 R15,对应于当前模式的 SPS被移入CPSR 这允许自动存储PC和CPSR勺状态改变。这种指令格式在用户模式下不能使用。 用R15作操作数 如果R15 ( PC被用于数据处理指令中的一个操作数,可直接使用该寄存器。 PC直就是指
16、令地址、加上由于指令预取的8或12个字节。如果指令中指定了移位量,PC 为前8个字节。如果用寄存器指定移位量,则PC为前12个字节。 TEQ TST CM和 CM操作码: TEQ TST CMP口CMI不写结果操作结果但置位 CPSR中的标志位。即使助记符中没有指定, 汇编程序也应当总将这些指令的S标志置位。 不能使用TEQPf令,它是早期ARM处理器使用的TEQ旨令:代替PSR专移操作。 在ARM920中 TEQ的功能是:如果处理器工作在特许模式就将 SPSR_mode移入CPSR如 果在用户模式什么也不做。 指令周期:数据处理指令增加的周期数如下表4-6 : Processing T/pe
17、 Cycles Normal data |xocessing 1S Data processing /dth register specified shift 1S+ 11 Data processing with PC written 2S + 1N Data processing with register specified shift and PC written 2S+ 1N +11 表4-6 :增加的循环时间 注:S、N和I分别定义为顺序(S-周期)、非顺序(N-周期)和内部(I-周期)。 汇编程序句法 MOV,MVN (单操作数指令). co ndS Rd, CMP,CMN,TE
18、Q,TST (无结果指令). c ond Rn, AND,EOR,SUB,RSB,ADD,ADC,SBC,RSC,ORR,BIC co ndS Rd,R n, 这里: cond S Rd, Rn 和 Rm s Rm,或, 双字母条件助记符,见表 4一4 如果S表示(指CMP, CMN, TEQ, TST),置位条件码. 寄存器号表达式 如果使用,汇编程序将会产生一个移位的立即8位域来匹配表达 式,如果不用会出错 Shift name 或 shift name#expressi on,或 RRX (带扩展右移1位). ASL, LSL, LSR, ASR, ROR. (ASL与LSL意义相同,它
19、们的汇编 码一样) 例: ADDEQ TEQS SUB R2,R4,R5 R4,#3 R4,R5,R7,LSR R2 PC,R14 PC,R14 MOV MOVS 4PSR专移(MRS MSR : ;如果Z标志置位,使R2=R4+R5 ;测试R4等于3(S是多余的,由汇编程序自动插入 ) ;通过R2底部字节数逻辑右移 R7,从R5中减去结果,并 ;将答案放入R4 从子程序返回 从中断返回,并从SPSRT式保存CPSR 该指令仅当条件为真时执行,参见表4 - 4。MRS口 MS脂令来自于数据处理操作的子集, 并用TEQ TST CM和CMP旨令执行,不置位 S标志,编码参见下图 4 10。 这些
20、指令允许对CPSI和SPS寄存器存取。MR指令允许将CPS或SPSR_mode的内容移入 通用寄存器。MS指令允许将通用寄存器的内容移入 CPS或SPSR_mode寄存器。 MSI指令也允许将一个立即数或寄存器内容转移到CPS或SPSR_mode寄存器的条件码 标志(N Z、C和V)而不改变控制位。在这种情况下,指定的寄存器内容的高4位或32位立 即数被写入相应PSR(程序状态寄存器)的高 4位。 操作数限制: 在用户模式,CPSR勺控制位受保护,所以只有 CPSR勺条件码标志可以改变。在其它(特 许)模式,整个CPS均可改变。 软件决不能改变CPSR中 T位的状态。如果出现这种情况,处理器将
21、进入无法预料的 状态。 存取的SPSR寄存器取决于执行时的方式。例如,当处理器在FIQ模式时,只有 SPSR_fiq是可存取的。 不能将R15指定为源或目的寄存器。 在用户模式下不能存取 SPSR因为该寄存器不存在(用户不能使用)。 MRS (transfer PSR contents to a register) 3128 2723 22 2116 1512 110 Cond 00010 Ps 001111 R1 000000000000 15:12 Destination Register 22 Source PSR 0 = CPSR1 = SPSR_ 31:28 Condition Fi
22、eld MSR (transfer reg ister contents to PSR) 3128 2723 22 2112 114 30 Cond 00010 Pd 101001111 00000000 Rm 3:0 Source Register 22 Destination PSR 0 = CPSR1 = SPSRecurrent inodes 31:2S Condition Field MSR (transfer register contents or immediate value tc PSR flag bits only) 3128 27 26 25 24 23 22 2112
23、 110 Cond OO I 10 p|101001111|Source operand 22 Destination PSR 0 = CPSR1 = SPSRecurrent mode 25 Immediate Operand 0 = Source operand is a register 1 = SPSR_ 11:0 Source Operand 114 30 00000000 Rm 3:Q Source Register :1 i:4 Source operand is an inimediate value 11 8 7 0 Relate Imm 7:0 Unsigned 8 bit
24、 immediate value 11:8 Shift applied to I mm 31:28 Condition Field 图4 10: MRS MSR旨令格式 保留位: ARM920中只定义了 PSR勺12个位(N Z、C、V、I、F、T和M4:0),其余位保留为将 来的处理器使用。 为确保ARM920T和将来处理器之间的最大兼容性,应当遵守下列原则: 当改变PSR的值时,应当保护保留位; 当检查PSR状态时,程序不应当依赖保留位的特定值,因为将来的处理器可能会将它 们认作1或0。 例: 下列顺序完成模式改变: BIC R0,R0,#0 x1F ORR R0,R0,# new_mod
25、e MSR CPSR,R0 MRS RO,CPSR ;复制CPSR ;模式位清零,即将CPSR.M4:0清零 ;选择新模式 ;回写修改后的CPSR 当目的只是简单地改变 PSR中的条件方式码时,可直接将值写入标志位而不必影响控制 位。下列指令对 N Z、C和V标志置位: MSR CPSR_flg,#OxFOOOOOOO;对所有标志位置位,不考虑它们的过去 状态(不影响控制位) 不要试图向整个PSR写入8位立即数,因为这种操作不保护保留位。 指令循环周期: PSR转移占用1S增加的周期,这里 S定义为顺序(S-周期)。 汇编语言句法: MRS -将PSF内容转移到寄存器 MRSco nd Rd,
26、 MSR -将寄存器内容转移到 PSR MSRco nd ,Rm MSR -只将寄存器内容转移到 PSF标志位 MSRcond ,Rm 寄存器内容最重要的4位分别写入N、Z、C和V标志。 MSR -只将立即数转移到PSR标志位 MSRc ond , 应当用符号表示分别写入 N、Z、C和V标志的最重要4位的32位数值。 关键: cond 双字母条件助记符,见表 4一4 Rd and Rm 除R15外的寄存器表达式 CPSR, CPSR_all, SPSR 或 SPSR_all. (CPSR 和 CPSR_all 与 SPSR 和 SPSR_all意义相同) CPSR_flg 或 SPSR_flg
27、 如果使用,汇编程序将会产生一个移位的立即8位域来匹配表达式,如果 不用会出错 例: 在用户模式, 指令表现为: MSR CPSR_all,Rm MSR CPSR_flg,Rm MSR CPSR_flg,#0 xA0000000 MRS Rd,CPSR 在特许模式,指令表现为: MSR CPSR_all,Rm MSR CPSR_flg,Rm MSR CPSR_flg,#0 x50000000 MSR SPSR_all,Rm MSR SPSR_flg,Rm ;CPSR31:28 - Rm31:28 ;CPSR31:28 - Rm31:28 ;CPSR31:28 - 0 xA (set N,C;
28、clear Z,V) ;Rd31:0 - CPSR31:0 ;CPSR31:0 - Rm31:0 ;CPSR31:28 - Rm31:28 ;CPSR31:28 - 0 x5 (set Z,V; clear N,C) ;SPSR_31:0- Rm31:0 ;SPSR_31:28 - Rm31:28 MSR SPSR_flg,#OxCOOOOOOO ;SPSR_31:28 - OxC (set N,Z; clear C,V) MRS Rd,SPSR; Rd31:0 - SPSR_31:0 5乘和带累加的乘(MUL MLA : 该指令仅当条件为真时执行,参见表4 4。指令编码见下图4 11。 乘和
29、带累加的乘指令使用 8位布氏运算法则执行整形乘法。 3128 2722 21 20 1916 1512 118 74 30 Cond 0 0 0 0 0 0 A S Rd Rn Rs 10 0 1 Rm 1:33:0 Operand Registers 19:16 Destination Register 20 Set Condition Code 0 = Da not after condiition codes 1 = Set condition codes 21 Accumulate 0 = MLiltiply only 1 = Multiply and accumulate 31:28
30、 Condition Field 图4 11: MUL MLA指令格式 指令的乘法形式为Rd:=Rm*Rs Rn不考虑,并被设置为零,以兼容将来可能升级的指令 集。带累加的乘法形式为 Rd:=Rm*Rs+Rn保存了在某些环境下的一个外在ADD旨令。两种指 令形式均以有符号(两种独立)或无符号整数作操作数工作。 32位有符号乘法和无符号乘法的结果仅在高32位不同,低32位结果是一样的。这些 指令进产生乘法的低 32位,既可用于有符号乘法,也可用于无符号乘法。 例如 操作数A 操作数B 结果 0XFFFFFFF6 0 x00000014 0 xFFFFFF38 1)如果操作数被当作有符号的 操作数
31、A为-10,操作数B为20,结果-200被正确地表示为0 xFFFFFF3R1:=R2*R3 ;Con ditio nallyR1:=R2*R3+R4,Setti ng con diti oncodes. 6长乘和带累加的长乘(MULL MLAL 该指令仅当条件为真时执行,参见表4 - 4。指令编码见下图4 - 12。 长乘指令执行两个32位操作数整数乘法, 并产生64位结果。有符号和无符号乘法带可选 的累加给出4种变化。 Cond 0 0 0 0 1 U A S RdHi RdLo Rs 10 0 1 R(n 3128 27 23 22 21 20 1915 15 12 11 8 7 0 1
32、1:33:0 Operand Registers 19J615:12 Source Destination Registers 20 Set Condition Code 0 = Do not alter condition codes 1 = Set oondrticin codes 21 Accumulate 0 = Multiply only 1 = Multiply and 22 Unsigned 0 = Unsigned 1 = Signed 31:28 Condition Field 图 4 12 : MULL MLAL指令格式 乘法形式(UMULL和SMULL占用两个32位数,相
33、乘后得出形式为RdHi,RdLo:=Rm*Rs 的结果。64位结果的低32位写入RdLo,结果的高32位写入RdHi。 带累加乘法形式(UMLAL和SMLAL占用两个32位数,相乘后再加一个 64位数得出形 式为RdHi,RdLo:=Rm*Rs+RdHi,RdLo的结果。64位加数的低 32从RdLo读取,64位加数的高 32从RdHi读取,64位结果的低 32位写入RdLo,结果的高32位写入RdHi。 操作数限制 R15不能用作操作数或目标寄存器。 RdHi、RdLo和Rn必须指定不同的寄存器。 CPSR标志 对CPS中的标志置位是任意的,并受指令中S位控制。N和Z标志根据结果来置位 (N
34、为结 果的bit63,Z被置位当且仅当全部 64位为0时)。C和V置为无意义的值。 指令循环周期 MULL占用1S+(m+1)l周期,MLAL占用1S+(m+2)周期,这里n是执行乘法所需的8位乘数阵 列周期数,由Rs指定的乘数操作数控制。 其可能值如下: 对有符号指令SMULL SMLAL 如果乘数操作数31:8位为全0或全1 如果乘数操作数31:16 位为全0或全1 如果乘数操作数31:24 位为全0或全1 所有其它情况 对无符号指令UMULL UMLAL 如果乘数操作数31:8位为全0或全1 如果乘数操作数31:16 位为全0或全1 如果乘数操作数31:24 位为全0或全1 所有其它情况
35、 S和I分别代表连续(S周期)和内部(I周期)。 汇编句法 表4 - 7.汇编程序句法描述 Mnemonic Description Purpose UMULLcondS RdLo.RdHi.Rm.Rs Unsigned Multiply Long 32 x 32 = 64 UMLALcondS RdLo.RdHi.Rm.Rs Unsigned Multiply R4,R1:=R2*R3 UMLALS R1,R5,R2,R3; R5,R1:=R2*R3+R5 7单数据转移: 该指令仅当条件为真时执行参见表4- 4。指令编码见下图4 - 13。 单数据传输指令用于装载或存储单字节数据或字数据。用
36、于传输的“存储器地址”是由 Xidia n Uni versity西安电子科技大学 增加或减少一个基址寄存器的偏移量而得到的。 如果需要自动索引,则该计算结果可以被回写到这个基址寄存器。 312在R2+R4(均为寄存器)存储 R1,回写地址到R2 STR R1,R2,R4; 在R2存储R1,回写地址 R2+R4到 R2 LDR R1,R2,#16 ;从R2+16内容装入R1但不回写 LDR R1,R2,R3, LSL#2; 从R2+R3*4内容装入R1 LDREQB R1,R6,#5 ; 将R6+5字节有条件地装入 R1的07位,831位填零 STR R1,PLACE ; 产生PC相对偏移寻址
37、PLACE. 例: PLACE 8半字和有符号数据转移(LDRH/STRH/LDRSB/LDRSH 该指令仅当条件为真时执行。条件定义见表4 4。指令编码见图4-15、4- 16。 这些指令用来装载或存储半字数据也装载扩展符号字节或半字数据。转移的存储器地址 由一个基本寄存器加上或减去一个偏移量计算得到。 如果有要求,计算结果可回写到基 本寄存器。 3128 2725 24 23 22 21 20 1916 1512 118 7 6 5 4 30 Cond 000 P U 0 w L Rn Rd 0000 1 S H 1 Rm 3:0 Offset Register S H 0 0 = SWP
38、 instruction 0 1 = Unsigned halfword 1 1 = Signed byte 1 1 = Signed halfword 15:12 Source/Destination Register 19:16 Base Regisler 20 Load/Store 0 = Store to memory 1 = Load from memory 21 Write-back 0 = Nc write-back 1 = Write address into base 23 Up/Down 0 = Down: subtract offset from bmwe 1 = Up:
39、 Jdd offs将存在R2-R3地址中的半字装入 R1,并回写R2 R3,R4,#14;将R3中的半字存储到 R14+14中,不回写 R8,R2,#-223 ;将R2地址中的有符号数据字节存入R8中,并回写R2-223 到R2中 LDRNESH R11,R0 ;有条件,将R0存储地址中的内容半字装入R11中,并作符 号扩展 HERE ;产生PC相对于地址FRED的相对偏移量 STRH R5, PC,#(FRED-HERE-8) ;存储R5中的半字到地址 FRED中 FRED 9块数据转移(LDM STM 该指令仅当条件为真时执行,条件定义见表4 4。指令编码见图4-17。 块传输指令用于装载
40、(LDM)或存储(STM)当前的可以使用的存储器。它们支持所有可 能的堆栈模式(满堆栈或空堆栈)。 寄存器列表 寄存器列表在指令里面占有16位,每一个位对应一个寄存器。如bit 0 = 1,表示对R0 进行操作;反之,不对其进行操作。依此类推。 注意:寄存器列表不能为空。 无论何时将R15存入存储器,存储的值都是 STM的指令地址+ 12。 3128 2725 24 23 22 21 20 1916 150 Cond 100 p|u 5 w L Rn Reg ster lib 19:16 Base Register 20 Load/Store Bit 0 = Store to me in 07
41、 1 - Load from memory 21 Write-back Bit 0 = No write-ba dt 1 = Wriie address inlo base 22 PSR R15(SP), CPSR 不改变 ;R15 知(SP), CPSR - SPSR_mode ,仅用于特权模式 ;将用户模式寄存器放入堆栈中,仅用于特权模式 以下这些指令主要用于存储子程序入口状态,同时在子程序调用返回后在此存储。 STMED SP!,R0-R3,R14 BL somewhere LDMED SP!,R0-R3,R15 ;将RO到R3存储到空间,同时 R14用于返回 ;修改R14 ;存储空间,
42、并返回 SINGLE DATA SWAP (SWP) 单数据交换 3128 2723 22 21 20 1916 1512 118 74 30 Cond 00010 B OO Rn Rd 0000 1001 Rm 3:0 Source Register 15:12 Destination Register 19:16 Base Register 22 ByteA/Vo rd Bit 0 = Swiip word quantity 1 = Swap word quantity 31:28 Condition Field 图3-23.交换指令 The in struct ion is only e
43、xecuted if the con diti on is true. The various con diti ons are defi ned in Table 3-2. The in structio n en codi ng is show n in Figure 3-23. The data swap in struct ion is used to swap a byte or word qua ntity betwee n a register and exter nal memory. This in struct ionis impleme ntedas a memory r
44、ead followed by a memory write which are locked ” together (pscessor cannot be interrupted until both operations have completed, and the memory manager is warned to treat them as in separable). This class of in struct ion is particularly useful for impleme nti ng software semaphores. The swap addres
45、s is determ ined by the contents of the base register (Rn). The processor first reads the contents of the swap address. Then it writes the contents of thesource register (Rm) to the swap address, and stores the old memory contents in the desti nati on register (Rd). The same register may be specifie
46、d as both the source and destination. The LOCK output goes HIGH for the duration of the read and write operations to signal to the external memory manager that they are locked together, and should be allowed to complete without interruption. This is important in multi-processor systems where the swa
47、p in structio n is the only in divisible in structio n which may be used to impleme nt semaphores; control of the memory must not be removed from a processor while it is perform ing a locked operati on. 该指令仅当条件为真时执行。条件定义见表3-2。指令编码见图3-23 。 BYTES AND WORDS 字节和字 This instruction class may be used to sw
48、ap a byte (B=1) or a word (B=0) betweenan ARM920T register and memory. The SWP in structio n is impleme nted as a LDR followed by a STR and the acti on of these is as described in the sect ion on sin gle data tran sfers .In particular, the description of Big and Little Endian configurationapplies to
49、 the SWP in structio n. USE OF R15 使用R15 Do not use R15 as an opera nd (Rd, Rn or Rs) in a SWP in structi on. 不要在SWP指令中将R15作操作数(Rd、Rn或Rs )。 DATA ABORTS 数据中止 If the address used for the swap is un acceptable to a memory man ageme nt system, the memory manager can flag the problem by driving ABORT HIG
50、H. This can happen on either the read or the write cycle (or both), and in either case, the Data Abort trap will be taken. It is up to the system software to resolve the cause of the problem, then the in struct ion can be restarted and the origi nal program con ti nu ed. INSTRUCTION CYCLE TIMES 指令周期
51、 Swap in structi ons take 1S + 2N +1I in creme ntal cycles to execute, where S,N and I are defi ned as seque ntial (S-cycle), non-seque ntial, and intern al (I-cycle), respectively. SWAP指令占用1S+2N+1I周期,这里,S、N和I分别定义为顺序(S-周期)、非顺序(N- 周期)和内部(I-周期)。 ASSEMBLER SYNTAX 汇编程序语法 co ndB Rd,Rm,R n condTwo-charact
52、er con diti on mnemonic. See Table 3-2. BIf B is prese nt the n byte tran sfer, otherwise word tran sfer Rd,Rm,R n Expressi ons evaluati ng to valid register nu mbers Examples SWP R0,R1,R2 and SWPB R2,R3,R4 and SWPEQ R0,R0,R1 ;Load RO with the word addressed by R2, ;store R1 at R2. ;Load R2 with the
53、 byte addressed by R4, ;store bits 0 to 7 of R3 at R4. ;Con diti on ally swap the contents of the ;word addressed by R1 with RO. co ndB Rd,Rm,R n co nd双字母条件助记符,见表3-2 B如果出现B为字节转移,其余为字转移 Rd,Rm,R n有效寄存器号表示式 Examples SWP SWPB 的07位 R0,R1,R2 R2,R3,R4 SWPEQ R0,R0,R1 ;将以R2为地址的字装入R0,并在R2储存R1 ;将以R4为地址的字装入 R2,
54、并在R4储存R3 ;有条件地与R0交换以R1为地址字的内容 SOFTWARE INTERRUPT (SWI) 软件中断 The in struct ion is only executed if the con diti on is true. The various con diti ons are defi ned in Table 3-2. The in structio n en codi ng is show n in Figure 3-24, below. 该指令仅当条件为真时执行。条件定义见表3-2。指令编码见图3-24。 3128 2724 23 Cond 1111 Comme
55、nt Field (Ignored by Processor 31:2Get n ext character from read stream. ;Output a k to the write stream. ;Con diti on allycall supervisor with 0 in SWIc ond co nd双字母条件助记符,见表 3-2 估计和放入注释区(ARM920T不理睬). Examples SWIReadC SWIWriteI+k SWINE 0 ;从读流程中得到下一个字母 ;在写流程中输出 k ;有条件调用注释区0超级用户 Supervisor code 超级用户代
56、码 The previous examples assume that suitable supervisor code exists, for in sta nee: 0 x08 B Supervisor En tryTable DCD ZeroRt n DCD ReadCRt n ReadC Zero EQU 0 EQU 256 ;SWI entry poi nt ;Addresses of supervisor routi nes DCD WriteIRt n WriteIEQU 512 Supervisor; SWI has routi ne required in bits 8-23
57、 and data (if any) in ;bits 0-7. Assumes R13_svc points to a suitable stack STMFD R13,R0-R2,R14 ;Save work registers and return address LDR R0,R14,#-4 ;Get SWI in structio n. BIC R0,R0,#0 xFF000000 ;Clear top 8 bits. MOV R1,R0,LSR#8 ;Get rout ine offset. ADR R2,E ntryTable ;Get start address of entr
58、y table. LDR R15,R2,R1 ,L SL#2 ;Branch to appropriate routine. WriteIRtn ;En ter with character in R0 bits 0-7. LDMFD R13,R0-R2,R15A ;Restore workspace and retur n, ;restori ng processor mode and flags. COPROCESSOR DATA OPERATIONS (CDP) 协处理器数据操作 The in struct ion is only executed if the con diti on
59、is true. The various con diti ons are defi ned in Table 3-2. The in structio n en codi ng is show n in Figure 3-25. This class of in structi on is used to tell a coprocessor to perform some internal operati on. No result is com muni catedback to ARM920T, and it will not wait for the operati on to co
60、mplete. The coprocessor could contain a queue of such in struct ions await ing executi on, and their executi on can overlap other activity, allow ing the coprocessor and ARM920T to perform in depe ndent tasks in parallel. 该指令仅当条件为真时执行。条件定义见表 3-2。指令编码见图 3-25。 COPROCESSOR INSTRUCTIONS 协处理器指令 The S3C24
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年农产品采购合作协议
- 2025年内容审核员服务合同协议
- 服装行业品牌建设计划及渠道拓展方案
- 2025年劳务合同协议工作内容
- 工程师日常工作计划与安排指南
- 水生植被碳汇项目开发技术路线与实施计划
- 2025江西吉安赣江新材料有限公司招聘2人笔试历年参考题库附带答案详解
- 2025江西南昌水投赣宏港务有限公司(国资控股)招聘85人笔试历年参考题库附带答案详解
- 2025江苏南京水务集团有限公司招聘(22人)笔试历年参考题库附带答案详解
- 2025广东佛山市顺北集团有限公司综合行政岗招聘1人笔试历年参考题库附带答案详解
- 口腔医学技术生涯规划
- 混凝土外加剂试验原始记录
- 幼儿园拍摄技巧培训
- 四川省成都市锦江区2024届英语三年级第二学期期中经典试题含答案
- 《劳动法案例分享》课件
- 2023年大型集团企业IT信息化安全架构规划设计方案
- 河北省生态功能区划报告(技术报告)
- 量出下面角的度数练习题
- 项目发展与回顾
- 胸腔闭式引流护理-中华护理学会团体标准
- 机器人目标点调整及轴配置
评论
0/150
提交评论