




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统设计与开发复习提纲2013年12月复习提纲Chap1/2知识点:嵌入式系统的组成:通常由嵌入式处理器、外围设备、嵌入式操作系统和应用软件等四大部分组成。嵌入式系统的硬件可分成三部分嵌入式处理器、外围电路和外设终端。嵌入式系统的软件可分成嵌入式操作系统和嵌入式应用软件两部分。嵌入式处理器可以分为:1.嵌入式微处理器(EMPU)2.嵌入式微控制器(EMCU)3.嵌入式DSP处理器(EDSP)4.片上系统(SoC)典型嵌入式操作系统:1.VxWorks2.WindowsCE3.嵌入式Linux4.uC/OS-II嵌入式系统的定义和特点嵌入式系统的层次结构(Chap2.1)硬件层中间层(HAL,BSP)软件层功能层嵌入式系统设计流程(Chap2.2)自顶向下的设计流程各步骤的作用嵌入式系统开发工具编译器/汇编器/连接器/调试器的作用1.()不是常规意义上的嵌入式系统。A.手机B.MP3C.PC机D.数码相机2.下面哪个系统不属于嵌入式系统()。A、MP3播放器 B、GPS接收机C、“银河玉衡”核心路由器 D、“天河一号”计算机系统3.()完全把系统软件和硬件部分隔离开来,从而大大提高了系统的可移植性。硬件抽象层B.驱动映射层C.硬件交互层D.中间层4.一般而言,嵌入式系统的构架可以分为4个部分:处理器、___、输入/输出和软件,一般软件亦分为_____和应用软件两个主要部分。5.________是嵌入式系统的核心部件,是控制、辅助系统运行的硬件单元。英文缩写解释:
DSP,SoC,PDA,EMPU,EMCU,RISC,ARM,OS,……第二章ARM处理器ARM处理器的工作状态:ARM状态,此时处理器执行32位的字对齐的ARM指令;Thumb状态,此时处理器执行16位,半字对齐的Thumb指令。ARM微处理器的七种运行模式:用户模式、快速中断模式、外部中断模式、管理模式、数据访问终止模式、系统模式、未定义指令中止模式。特权模式:除用户模式外,其它模式均为特权模式。异常模式:除用户模式和系统模式,其他5种模式。外当特定的异常出现时,处理器进入相应的模式。CPSR寄存器中哪些位用来定义处理器模:M[4:0](bit[4:0])ARM的寄存器组织:内含37个寄存器,31个通用寄存器,6个状态寄存器ARM寄存器组织的特点:1)、未分组寄存器R0-R7:都指向同一个物理寄存器,未被系统用作特殊的用途。在中断或异常处理进行运行模式转换时应注意。2)、分组寄存器R8-R14:每一次访问的物理寄存器与处理器当前的运行模式有关。对R8-R12来说,每个寄存器对应两个不同的物理寄存器;对R13、R14来说,每个寄存器对于6个不同的物理寄存器。3)、程序计数器PC(R15):寄存器R15用作程序计数器,虽然可以用作通用寄存器,但是有一些指令在使用R15是有一些特殊限制,如不注意,执行的结果哦将是不可预料的。4)、寄存器R16:用作CPSR(当前程序状态寄存器),它在任何运行模式下被访问。每一种运行模式下又有一个专业的物理状态寄存器(SPSR),当发生异常时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR.大(小)端地址模式:占多字节的数据在存储时,如果高位字节存在低地址(首地址),称大端地址模式;如果低位字节存在低地址(首地址),称小端地址模式。例如:存放0x010203040x010x020x030x04大端模式0x300000x300030x040x030x020x01小端模式0x300000x30003填空题1.ARM微处理器有七种工作模式,它们分为两类____、___。其中用户模式属于__。2.ARM核有两个指令集,分别是______
、______。
3.ARM微处理器复位后,PC(R15)的地址通常是______。选择题:1.存储一个32位数0x2168465到2000H-2003H四个字节单元中,若以大端模式存储,则2000H存储单元内容为()A、0x21B、0x68C、0x65D、0x022.寄存器R13除了可以做通用寄存器外,还可以做()A、程序计数器B、链接寄存器C、栈指针寄存器D、基址寄存器4.寄存器R15除可做通用寄存器外,还可以做()A、程序计数器B、链接寄存器C、栈指针寄存器D、基址寄存器5.用ARM汇编编程时,其寄存器有多个别名,通常PC是指(),LR是指(),SP是指()
A.R12
B.R13C.R14D.R156.S3C2410采用的是()核心
A.ARM7TDMI
B.ARM9TDMIC.ARM926EJ-SD.ARM920T简述题:简述ARM9处理器的内部寄存器结构,并分别说明R13、R14、R15寄存器的作用
Chap3ARM指令ARM指令的基本格式:<opcode>{<cond>}{S}<Rd>,<Rn>{,<operand2>}
第2个操作数“operand2”能够提高代码效率.它有如下的形式:#immed_8r——常数表达式;Rm——寄存器方式;Rm,shift——寄存器移位方式LSL移位操作:0LSR移位操作:0ASR移位操作:ROR移位操作:RRX移位操作:C指令条件码表条件码助记符标志含义EQZ=1相等NEZ=0不相等CS/HSC=1无符号数大于或等于CC/LOC=0无符号数小于1.寄存器寻址MOVR1,R2 ;R2->R1SUBR0,R1,R2;R1-R2->R0
指令执行时直接取出寄存器值操作。2.立即寻址
SUBSR0,R0,#1;R0-1->R0MOVR0,#0xff00;0xff00->R0数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数。立即数要以“#”为前缀,表示16进制数值时以“0x”表示。3.寄存器偏移寻址MOVR0,R2,LSL#3 ;R2的值左移3位,结果放入R0,即R0=R2*8ANDSR1,R1,R2,LSLR3;R2的值左移R3位,然后和R1相与操作,结果放入R1
寄存器偏移寻址是ARM指令集特有的寻址方式当第2操作数是寄存器偏移方式时,第2个寄存器操作数在与第1个操作数结之前,选择进行移位操作。4、寄存器间接寻址LDRR1,[R2];将R2中的数值作为地址,取出此地址中的数据保存在R1中SWPR1,R1,[R2];将如R2中的数值作为地址,取出此地址中的数值与R1中的值交换指令中的地址码给出的是一个通用寄存器编号,所需要的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。
5、基址寻址LDRR2,[R3,#0x0F];将R3中的数值加0x0F作为地址,取出此地址的数值保存在R2中STRR1,[R0,#-2];将R0中的数值减2作为地址,把R1中的内容保存到此地址位置
基址寻址是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址,基址寻址用于访问基址附近的存储单元,常用于查表,数组操作,功能部件寄存器访问等。6、多寄存器寻址LDMIAR1!,{R2-R7,R12};将R1单元中的数据读出到R2-R7,R12,R1自动加4
多寄存器寻址就是一次可以传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。使用多寄存器寻址指令时,寄存器子集的顺序时由小到大的顺序排列,连续的寄存器可用“-”连接,否则,用“,”分隔书写。
7、堆栈寻址STMFDSP!,{R1-R7,LR};将R1~R7,LR入栈。满递减堆栈。LDMFDSP!,{R1-R7,LR};数据出栈,放入R1~R7,LR寄存器。满递减堆栈。
向上生长:向高地址方向生长,称为递增堆栈向下生长:向低地址方向生长,称为递减堆栈满堆栈:堆栈指针指向最后压入的堆栈的有效数据项空堆栈:堆栈指针指向下一个要放入的空位置
满递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向内含有效数据项的最高地址。指令如LDMFA,STMFA等。空递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈上的第一个空位置。指令如LDMEA,STMEA等
满递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有效数据项的最低地址。指令如LDMFD,STMFD等。空递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向堆栈下的第一个空位置。指令如LDMED,STMED等。8、块拷贝寻址STMIAR0!,{R1-R7};将R1~R7的数据保存到存储器中,存储器指针在保存第一个值之后增加,增长方向为向上增长。STMIBR0!,{R1-R7};将R1~R7的数据保存到存储器中,存储器指针在保存第一个值之前增加,增长方向为向上增长。STMDAR0!,{R1-R7};将R1~R7的数据保存到存储器中,存储器指针在保存第一个值之后增加,增长方向为向下增长。STMDBR0!,{R1-R7};将R1~R7的数据保存到存储器中,存储器指针在保存第一个值之前增加,增长方向为向下增长。多寄存器传送指令用于一块数据从存储器的某一位置拷贝到另一位置。
变址模式:变址模式数据基址寄存器示例回写前变址mem[base+offset]!基址寄存器加上偏移LDRr0,[r1,#4]!前变址mem[base+offset]不变LDRr0,[r1,#4]后变址mem[base]+offset基址寄存器加上偏移LDRr0,[r1],#4分支指令ARM有两种方法可以实现程序跳转:跳转指令直接向PC寄存器(R15)中写入目标地址。ARM跳转指令有以下4种:①B分支指令,语法B{cond}label②BL带链接分支指令语法:BL{cond}label③BX分支并可选地交换指令集语法:BX{cond}Rm④BLX带链接分支并可选择地交换指令集。语法:BLX{cond}label|RmARM汇编程序中每一行的通用格式:{标号}指令|伪操作|伪指令操作数{;注解}。在ARM汇编语言源程序中,除了标号和注释外,指令、伪指令和指示符都必须有前导空格,而不能顶格书写。如果每一行的代码太长,可以使用字符“\”将其分行书写,并允许有空行。指令、伪操作和寄存器名既可以用大写字母,也可以用小写字母,但不能混用。注释从“;”开始,到该行结束为止。标号代表一个地址,段内标号的地址值在汇编时确定,段外标号的地址值在链接时确定。ARM汇编程序的书写格式:符号定义伪操作伪操作语法格式作用GBLAGBLAVariable声明一个全局的算术变量,并将其初始化成0。GBLLGBLLVariable声明一个全局的逻辑变量,并将其初始化成{FALSE}。GBLSGBLSVariable声明一个全局的字符串变量,并将其初始化成空串“”。LCLALCLAVariable声明一个局部的算术变量,并将其初始化成0。LCLLLCLLVariable声明一个局部的逻辑变量,并将其初始化成{FALSE}。LCLSLCLSVariable声明一个局部的串变量,并将其初始化成空串“”。SETASETAVariableexpr给一个全局或局部算术变量赋值。SETLSETLVariableexpr给一个全局或局部逻辑变量赋值。SETSSETSVariableexpr给一个全局或局部字符串变量赋值。RLISTnameLIST{listofregisters}为一个通用寄存器列表定义名称。CNnameCNexpr为一个协处理器的寄存器定义名称。CPnameCPexpr为一个协处理器定义名称。DN/SNnameDN/SNexprDN/SN为一个双精度/单精度的VFP寄存器定义名称。FNnameFNexpr为一个FPA浮点寄存器定义名称。数据定义伪操作伪操作语法格式作用MAPMAPexpr{,base-register}定义一个结构化的内存表的首地址=expr{+BR}FIELD{label}FIELDexpr定义一个结构化内存表中的数据域长度expr(B)。SPACE{label}SPACEexpr分配一块连续内存单元expr(B),并用0初始化。DCB{label}DCBexpr{,expr}分配一段字节内存单元,并用expr初始化。DCD/DCDU{label}DCDexpr{,expr}…分配一段字内存单元。DCDO{label}DCDOexpr{,expr}…分配一段字对齐的字内存单元。DCFD/DCFDU{label}DCFD{U}fpliteral{,fpliteral}…为双精度的浮点数分配字对齐的内存单元。DCFS/DCFSU{label}DCFS{U}fpliteral{,fpliteral}…为单精度的浮点数分配字对齐的内存单元。DCI{label}DCIexpr{,expr}…在ARM代码中分配一段字对齐的内存单元;在Thumb代码中,分配一段半字对齐的半字内存单元。DCQ/DCQU{label}DCQ{U}{﹣}literal{,{﹣}literal}…分配一段以双字(8个字节)为单位的内存DCW/DCWU{label}DCW{U}expr{,expr}…DCW用于分配一段半字对齐的半字内存单元。汇编控制伪操作
伪操作语法格式作用IFELSEENDIFIFlogicalexpression…{ELSE…}ENDIF能够根据条件把一段源代码包括在汇编语言程序内或者将其排除在程序之外。WHILEWENDWHILElogicalexpression…WEND能够根据条件重复汇编相同的一段源代码。MACRO
MENDMEXITMACRO{$label}macroname{$parameter{,$parameter}…}…;宏代码
{MEXIT};根据需要插入
…;宏代码MENDMACRO标识宏定义的开始,MEND标识宏定义的结束。MEXIT用于从宏中跳转出去。用MACRO和MEND定义的一段代码,称为宏定义体。通过宏名称来调用宏。其他伪操作AREAsectionname{,attr}{,attr}…定义一个代码段或者数据段。ENTRY指定程序的入口点。CODE32告诉汇编编译器后面的指令序列为32位的ARM指令。END告诉编译器已经到了源程序结尾。nameEQUexpr{,type}为数字常量、基于寄存器的值和程序中的标号(基于PC的值)定义一个字符名称。ALIGN{expr{,offset}}通过添加补丁字节使当前位置满足一定的对齐方式。EXPORT/GLOBALsymbol{[WEAK]}声明一个符号可以被其他文件引用,相当于声明了一个全局变量。IMPORT/EXTERNsymbol{[WEAK]}告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符号。GET/INCLUDEfilename将一个源文件包含到当前源文件中,并将被包含的文件在其当前位置进行汇编处理。nameRNexpr为一个特定的寄存器定义名称。MOV指令与LDR加载指令的区别及用途:MOV将有效立即数或寄存器(operand2)传送到目标寄存器(Rd),可用于移位运算等操作。读取指定地址上的存储器单元内容,执行条件AL.LDR伪指令的用法,指令格式与LDR加载指令的区别:LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。第二个数为地址表达式。ARM状态与Thumb状态的切换指令:可以使用BX指令将ARM7TDMI内核的操作状态在ARM和Thumb之间切换。;从ARM状态转换位Thumb状态LDRR0,=LABLE+1BXR0;从Thumb状态转换位ARM状态LDRR0,=LABLEBXR0
ARM指令集和Thumb指令集分别是()位的。A、8位,16位B、16位,32位C、16位,16位D、32位,16位指令“LDMIAR0!,{R1,R2,R3,R4}”的寻址方式为()。A、立即寻址 B、寄存器间接寻址C、多寄存器寻址D、堆栈寻址对寄存器R1的内容乘以4的正确指令是()。A、LSRR1,#2
B、LSLR1,#2C、MOVR1,R1,LSL#2
D、MOVR1,R1,LSR#2下面指令执行后,改变R1寄存器内容的指令是(
)。A、TSTR1,#2
B、ORR
R1,R1,R1
C、CMPR1,#2
D、EOR
R1,R1,R1ADDR0,R0,#1属于()A、立即寻址B、寄存器间接寻址C、寄存器寻址D、基址变址寻址汇编程序中子程序的最后一条指令必须是()A、MOVPC,R14B、MOVPC,R14_undC、SUBSPC,R14_fig,#4D、SUBSPC,R14_irg,#4若R1=2000H,(2000H)=0x86,(2008H)=0x39,则执行指令LDRR0,[R1,#8]!后R0的值为()。A、0x2000 B、0x86 C、0x2008 D、0x39
说明如下的伪指令的作用LDRR1,=0xFF880022XEQU0xE00111阅读如下代码,对每行作注释,并说明程序的功能是什么?
XEQU19;定义X的值19NEQU20;定义Y的值20AREAExample,CODE,READONLY;声明代码段Example,属性为只读
ENTRY;标示程序入口
CODE32;声明是32位的arm指令STARTLDRR0,=X;R0的值为XLDRR1,=N;R1的值为YBLMAX;跳到MAX处执行,并保存下一条指令的地址到LRHALTBHALT;死循环MAXCMPR0,R1;比较大小
MOVHIR2,R0;如果R0的值大,就赋给R2MOVLSR2,R1;如果R1的值大,就赋给R2MOVPC,LR;返回语句
END;程序结束解释如下指令的功能,并说明寻址方式:SUBSR1,R1,#1ADDNER2,R1,#0x20;SUBR0,R1,R2ADDR3,R2,R1,LSRR4STRR1,[R0]LDRR1,[R2,#4]!STMIAR0,{R1,R2,R3}STMIAR0!,{R1,R2,R3}STMEDSP!,{R4-R7,LR}LDMFDsp!,{r4-r7,pc}_________是根据指令中的信息来寻找真实操作数地址的方式。实现程序跳转的指令有______和__________两种方法。C语言调用汇编程序,一般使用_____声明外部函数,即可调用汇编子程序。在汇编程序中用______申明本子程序,以使其他程序可以调用此子程序。汇编程序调用C程序,在汇编中用_______声明将要调用的C程序函数,即可在汇编程序中调用C程序。写一个程序,判断R1的值是否大于0x30,是则将R1减去0x30。CMP指令将寄存器Rn的值减去operand2的值,根据操作的结果更新CPSR中的相应条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。 CMPR1,#0x30 SUBHIR1,R1,#0x30调用子程序是用B什么指令?请写出返回子程序的指令? BL指令用于子程序调用。 MOVPC,R14写一条ARM指令,完成操作r1=r2*4MOVR1,R2,LSL#2将R1中的数据保存到R0-0x12地址处 STRR1,[R0,#-0x12]将R0+R2地址处的数据读出,保存到R1中 LDRR1,[R0,R2]将R1中数据保存到R0+R2地址处 STRR1,[R0,R2]将R0-R2地址处的数据读出,保存到R1中 LDRR1,[R0,-R2]将R1中的数据保存到R0-R2地址处 STRR1,[R0,-R2]求R1+R2,和放在R1中 ADDR1,R1,R2求R1-R2,差放在R1中 SUBR1,R1,R2将R0最低4位数据保留,并影响标志位 ANDSR0,R0,#0x0F将R0的1,3,5位置1 ORRR0,R0,#0x2A将R0的1,3,5位置0 BICR0,R0,0x2AR1与99比较,设置相关标志位 CMPR1,#99R1与R2比较,设置相关标志位 CMPR1,R2跳转到标号waiter处 Bwaiter调用子程序whiet BLwhiet将CPSR状态寄存器读取,保存到R1中 MRSR1,CPSR将SPSR状态寄存器读出,保存到R2中 MRSR2,SPSR
编程题求R4R3-R2R1,差放在R6R5中 SUB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024德阳城市轨道交通职业学院辅导员招聘笔试真题
- 法律文书校对员考试试卷及答案
- 法律风险评估员考试试卷及答案
- 食品感官分析师笔试试题及答案
- 2025年精密陶瓷劈刀项目建议书
- 2025年教师编制考试教育学基础知识必会题库完整版【答案】
- 2025年厦门市湖里生态环境局辅助岗位人员招聘考试笔试试题【答案】
- 2025年电子计步器实验分析仪器项目发展计划
- 湘艺版二年级下册教案第四课 箫
- 2025年上半年公司网管述职报告范文
- 2024北京四中初一(下)开学考数学试题及答案
- 物料堆放限高管理制度
- 夫妻债务隔离约定协议书
- T/CECS 10226-2022抗裂硅质防水剂
- 2025年应用化学专业综合素质考试试题及答案
- 原发性醛固酮增多症诊断治疗的专家共识(2024版)解读课件
- DB31 581-2019 矿渣粉单位产品能源消耗限额
- 《水产品加工》课件
- 《分子动力学模拟的应用》课件
- 职高高考语文试题及答案
- NIH-FDA-IND-IDE-II期III期临床试验方案模板
评论
0/150
提交评论