嵌入式体系结构_第1页
嵌入式体系结构_第2页
嵌入式体系结构_第3页
嵌入式体系结构_第4页
嵌入式体系结构_第5页
已阅读5页,还剩71页未读, 继续免费阅读

下载本文档

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

文档简介

1、嵌入式体系结构设计嵌入式系统的第一步确定指令系统,以指导选择嵌入式内核嵌入式体系结构嵌入式微内核嵌入式微处理器嵌入式控制器嵌入式DSPSOC(在片系统)本章介绍微处理器(ARM),DSP(SHARC)嵌入式体系结构一、计算机体系结构1、冯.诺依曼结构五大部件:ALU,Controller, Memory, Input,Output核心部件:早期是CPU,后来是Memory存储程序(stored program):程序以数字形式存在,可以与数据一样被读写嵌入式体系结构指令执行次序:顺序跳转程序计数器Program Counter(PC)嵌入式体系结构2、哈佛体系结构程序与数据有单独的存储器PC只

2、能指向程序存储器目前仍然广泛应用指令cache与数据cache适用于实时信号处理(大部分的DSP)大量数据流入计算机数据必须在精确的时间内处理完成嵌入式体系结构3、RISC与CISCCISC:复杂指令系统计算机RISC:精简指令系统计算机RISC一般性能比CISC高嵌入式体系结构4、汇编语言种类1)堆栈型汇编Push aPush bAddPop c嵌入式体系结构2)累加器型汇编Load aAdd bStore c嵌入式体系结构3)通用寄存器型汇编Load $1, ALoad $2, BAdd $3, $1, $2Store $3, C嵌入式体系结构二、ARM处理器属于RISC体系自己不制造VL

3、SI设备,只提供授权ARM:只设计内核的英国公司嵌入式体系结构ARM内核系列ARM720T嵌入式体系结构ARM720T特性Features: 32/16-bit RISC architecture (ARMv4T) Power-efficient three-stage pipeline 32-bit ALU and high-performance multiplier 8 KByte unified cache Memory Management Unit (MMU) Extensive debug facilities: Embedded ICE-RT real-time debug u

4、nit JTAG interface unit Interface for direct connection to Embedded Trace Macrocell (ETM)嵌入式体系结构集成ARM内核的芯片ARM720TCirrus Logic公司EP7312三星:应用于手持设备与网络设备Intel:StrongArm系列&Xscale系列Motorola:手持设备(由68改过来)Cirrus Logic:EP7312嵌入式体系结构ARM内核ARM内核被授权给数百家厂商ARM主要应用于无线局域网、3G、手机、手持设备、有线网络通讯应用形式:集成到专用芯片中作控制器嵌入式体系结构ARM体系

5、结构ARM7采用冯.诺依曼体系ARM9采用哈佛体系对汇编程序员透明嵌入式体系结构ARM基本数据类型两种:32位长的字4个8bit的字节嵌入式体系结构地址32位地址长度可以配置为低序或者高序 字的最低位放最低位字节(低序) 字的最低位放最高位字节(高序)嵌入式体系结构2.1 汇编书写模式属于通用寄存器型(GPR)汇编LoadStore结构数据必须装载到寄存器才能运算Load从内存装到寄存器Store从寄存器存储到内存嵌入式体系结构ARM的寄存器16个通用寄存器r0r15r15 同时做PC1个特殊寄存器:当前程序状态寄存器CPSR在进行运算时被自动设置嵌入式体系结构CPSR高四位为NZCVN:负数

6、Z:为0C:进位V:溢出嵌入式体系结构数据运算1)寄存器型指令:add r0, r1, r2r1寄存器的内容加r2寄存器的内容,存到r0嵌入式体系结构算术运算Add加Adc进位加Sub减Sbc进位减Rsb:逆减Rsc:进位逆减Mul:乘Mla:乘且累加嵌入式体系结构逻辑运算And:按位与Orr:按位或EOR:按位异或BIC:位清除嵌入式体系结构移位运算LSL:逻辑左移(添0)LSR:逻辑右移(添0)ASL:算术左移ASR:算术右移ROR:循环右移RRX:带进位位的循环右移嵌入式体系结构比较指令CMP:比较CMN:比较求反TST:按位测试TEQ:按位测试求反嵌入式体系结构移动指令MOV:移动MV

7、N:移动求反嵌入式体系结构内存访问指令LDR:装入STR:存储LDRH:装入半字STRH:存储半字LDRSH:装入半个带符号字LDRB:装入字节STRB:存储字节ADR:设置寄存器为地址嵌入式体系结构2)立即数寻址Add r0, r1, #2嵌入式体系结构3)寄存器间接寻址LDR r0, r1, #4嵌入式体系结构4)自动变址LDR r0,r1, #16!r1的内容加16,然后用这个新值作为地址嵌入式体系结构5)后变址LDR r0, r1, #16把r1为地址的内存数据载入到r0,然后把r1的值加入16并把新值赋值给r1嵌入式体系结构6)例子:x=(a+b)-c;ADR r4, aLDR r0

8、, r4ADR r5, bLDR r1, r5ADD r3, r0, r1ADR r4, cLDR r2, r4SUB r3, r3, r2LDR r4, xSTR r3, r4嵌入式体系结构2.3 控制流1)B指令分支指令分支目标计算例子B 100表示当前程序计数器的值加上400。(100字长)嵌入式体系结构2)条件码EQ:等于0,Z1NE:不等于0,Z0CS:进位置1,C1CC:进位清除:C0MI:负数,N1PL:非负数:N0嵌入式体系结构VS:溢出,V1VC:非溢出:V0HI:无符号大于,C1且Z0LS:无符号小于或等于,C0或Z1GE:有符号小于或等于,NVLT:有符号小于,NVGT:

9、有符号大于,Z0且NVLE:有符号小于或等于,Z1或NV嵌入式体系结构3)例子:If ( a b )X=5;Y=c+d;ElseX=c-d;嵌入式体系结构ADR r4, aLDR r0, r4ADR r4, bLDR r1, r4CMP r0, r1;a=b, goto fblockMOV r0, #5ADR r4, xSTR r0, r4嵌入式体系结构ADR r4, cLDR r0, r4ADR r4, dLDR r1, r4ADD r0, r0, r1;a+bADR r4, ySTR r0, r4B after;branch to end嵌入式体系结构fblock: ADR r4, cLD

10、R r0, r4ADR r4, dLDR r1. r4SUB r0, r0, r1;a-bADR r4, xSTR r0,r4after:嵌入式体系结构同样c程序,用汇编可以写成不需要跳转的。如下:嵌入式体系结构ADR r4, aLDR r0, r4ADR r4, bLDR r1, r4CMP r0, r1;ab?嵌入式体系结构MOVLT r0, #5ADRLT r4, xSTRLT r0, r4ADRLT r4, cLDRLT r0, r4ADRLT r4, dLDRLT r1, r4ADDLT r0, r0, r1;a+bADRLT r4, ySTRLT r0, r4嵌入式体系结构ADRG

11、E r4, cLDRGE r0, r4ADRGE r4, dLDRGE r1. r4SUBGE r0, r0, r1;a-bADRGE r4, xSTRGE r0,r4嵌入式体系结构2.4 函数X=a+b;Foo(x);Y=c-d;汇编:BL foo;分支链接分支前将当前pc值存在r14中。返回只要MOV r15, r14调用过程必须注意不覆盖r14嵌入式体系结构嵌套调用上述方法不适用于嵌套调用嵌套调用时,将返回地址存堆栈Void f1(int a)f2 (a);嵌入式体系结构f1LDR r0, r13STR r13!, r14STR r13!, r0BL f2SUB r13, #4LDR r

12、13!, r15嵌入式体系结构三、SHARC处理器使用哈佛结构的DSP例子:R1=DM(M0,I0), R2=PM(M8,I8);!注释LABEL:R3=R1+R2;每条指令用分号结束,!开始为注释嵌入式体系结构存储器结构SHARC指令48位基本数据字32位地址位32位片上带大量的存储器系列中的21061有1Mbit片上存储器存储器包括PM:程序存储器DM:数据存储器芯片外还能够加更多的存储器嵌入式体系结构数据类型32位IEEE单精度浮点40位IEEE扩展精度浮点32位整数主要设计为浮点密集型运算适用DSP嵌入式体系结构改进的哈佛结构程序存储器可以包含数据与指令数据可以并行取出嵌入式体系结构3

13、.2 体系结构整数操作使用R0到R15,16个整数寄存器浮点操作使用F0到F15,16个浮点寄存器所有数据都是40bit,如果32位数据存储时,存在高32位嵌入式体系结构三个数据功能单元一个ALU一个乘法器一个移位器嵌入式体系结构三个模式寄存器算术状态(ASTAT)粘着(STKY)模式1(MODE 1)嵌入式体系结构3.3 整数运算Rn=Rx+Ry加Rn=Rx-Ry减Rn=Rx+Ry+CI进位加Rn=Rx-Ry+CI-1借位减Rn=(Rx+Ry)/2平均COMP(Rx, Ry)比较Rn=Rx+CI进位加Rn=Rx+CI-1借位加嵌入式体系结构Rn=Rx+1加1Rn=Rx-1减1Rn=-Rx求反

14、Rn=ABS Rx绝对值Rn=PASS Rx将Rx拷贝到RnRn=Rx and Ry 逻辑加Rn=Rx or Ry逻辑或嵌入式体系结构Rn=Rx xor Ry逻辑异或Rn=Not Rx逻辑非Rn=Min(Rx, Ry)求最小值Rn=Max(Rx, Ry)求最大值Rn=Clip Rx by Ry在-Ry,Ry范围内截取Rx嵌入式体系结构溢出处理溢出导致最大范围的值不是循环嵌入式体系结构3.4 浮点运算Fn=Fx+FyFn=Fx-FyFn=ABS(Fx+Fy)Fn=ABS(Fx-Fy)Fn=(Fx+Fy)/2COMP(Fx, Fy)Fn=-Fx嵌入式体系结构Fn=ABS FxFn=Pass FxF

15、n=RND Fx舍入Fn=Scalb Fx by Ry用Ry换算成Fx的指数Rn=Mant Fx提取Fx的尾数Rn=LOGB Fx把Fx的指数换算成整数Rn=FIX Fx, Rn= TRUNC Fx 将浮点转换成整数Rn=FLOAT Rx by Ry, FLOAT Rx 将整数换成浮点嵌入式体系结构Fn=RECIPS Fx为倒数创建种子Fn=RSQRTS Fx为倒数平方根创建种子Fn=Fx COPYSIGN Fy把Fy的符号拷贝到FxFn=Min(Fx, Fy)Fn=Max(Fx, Fy)Fn=Clip Fx by Fy嵌入式体系结构3.5 SHARC的移位操作Rn=LSHIFT Rx by

16、Ry逻辑移位Ry位Rn=Rn OR SHIFT Rx by Ry逻辑移位并逻辑或Rn=ASHIFT Rx by Ry算术移位Rn=Rn OR ASHIFT Rx by Ry算术移位并逻辑或Rn=ROT Rx by Ry循环移位Ry位Rn=BCLR Rx by Ry清Rx中的一位Rn=BSET Rx by RY设Rx中的一位嵌入式体系结构Rn=BTGL Rx by Ry切换Rx中的1位BTST Rx by Ry测试Rx中的1位Rn=FDEP Rx by Ry将Rx中的域累计进Rn中Rn=Rn OR FDEP Rx by Ry使用OR操作累计并符号扩展Rn=FEXT Rx by Ry提取Rx中的域

17、Rn=EXP Rx提取指数域嵌入式体系结构Rn=EXP Rx (Ex)从ALU中提取指数域Rn=LEFTZ Rx提取引导0的个数Rn=LEFTO Rx提取引导1的个数Rn=FPACK Fx将32位浮点数转换为16位浮点数Rn=FUNPACK Rn将16位浮点数转换为32位浮点数嵌入式体系结构3.6 数操作状态位ASTAT中有AZ, AU, AN, AV, AC, AI, MN, MV, MU, MI, SZ, SV, SSSTKY中溢出位AOS, MOS, MVS, MUS, MIS具体含义略嵌入式体系结构内存操作装入存储体系结构提供用来控制装入和存储的特殊寄存器两个数据地址发生器(DAG)一

18、个是数据存储器一个是程序存储器DAG能够象对数组一样进行访问数据嵌入式体系结构3.8 DAG寻址模式1)最简单的立即值R0=DM(0 x20000000)或者R0=RM(_a)或DM(_a)=R02)绝对地址3)具有更新的后修改模式R0=DM(I3, M1)DM(I2,1)=R1嵌入式体系结构4)基址加偏移量寻址R0=DM(M1,I0)如I0=0 x20000000, M1=4将0 x20000004数据装入R05)循环缓冲区6)反位寻址应用于FFT嵌入式体系结构3.9 程序例子X=(a+b)-c嵌入式体系结构R0=DM(_a);R1=DM(_b);R3=R1+R2;R2=DM(_c);R3=R3-R2;DM(_x)=R3嵌入式体系结构3.10 控制流JUMP foo跳转到foo三种寻址方式直接寻址间接寻址相对P

温馨提示

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

评论

0/150

提交评论