ARM复习提市公开课获奖课件省名师优质课赛课一等奖课件.ppt
《ARM复习提市公开课获奖课件省名师优质课赛课一等奖课件.ppt》由会员分享,可在线阅读,更多相关《ARM复习提市公开课获奖课件省名师优质课赛课一等奖课件.ppt(49页珍藏版)》请在咨信网上搜索。
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二层,第三层,第四层,第五层,*,华清远见,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二层,第三层,第四层,第五层,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,复习提要,理论部分,试验部分,1/49,复习提要,第一章知识点:,嵌入式系统组成,:通常由嵌入式处理器、外围设备、嵌入式操作系统和应用软件等四大部分组成。,嵌入式系统硬件可分成三部分:,关键处理器、外围电路和外部设备,交叉开发环境,:是指实现编译、链接和调试应用程序代码环境与运行应用程序环境不一样,它分散在有通信连接宿主机与目标机环境之中。,宿主机(Host):,是一台通用计算机,普通是PC机。它经过串口或网络连接与目标机通信。,目标机(Target):,能够是嵌入式应用软件实际运行环境,也能够是能替换实际环境仿真系统。,2/49,第一章知识点:,BSP(板级支持包),:因为嵌入式系统中采取微处理器多样性,嵌入式操作系统可移植性显得愈加主要。所以有些嵌入式操作系统内核明确分成两层,上层普通称为“内核”,而低层则称为“,硬件抽象层,”,即BSP(Board Support Package)。板级支持包是操作系统与目标应用硬件环境中间接口,它是软件包中含有平台依赖性那一部分。,3/49,1.()不是常规意义上嵌入式系统。,A.手机 B.MP3 C.PC机 D.数码相机,2.下面哪个系统不属于嵌入式系统()。,A、MP3播放器 B、GPS接收机,C、“银河玉衡”关键路由器D、“天河一号”计算机系统,3.()完全把系统软件和硬件部分隔离开来,从而大大提升了系统可移植性。,硬件抽象层 B.驱动映射层 C.硬件交互层 D.中间层,1.,嵌入式开发普通采取,_,方式,其中宿主机普通是指,_,。,2.,普通而言,嵌入式系统构架能够分为4个部分:处理器、_、输入/输出和软件,普通软件亦分为_和应用软件两个主要部分。,3._,是嵌入式系统关键部件,是控制、辅助系统运行硬件单元。,4/49,名词解释:,1.交叉开发环境,2.宿主机,3.目标机,5/49,第二章 ARM处理器,ARM处理器工作状态,:,ARM状态,此时处理器执行32位,字,对齐ARM指令;,Thumb状态,此时处理器执行16位,,半字,对齐Thumb指令。,ARM微处理器七种运行模式,:,用户模式、快速中止模式、外部中止模式、管理模式、数据访问终止模式、系统模式、未定义指令中止模式。,特权模式:,除用户模式外,其它模式均为特权模式。,异常模式:,除用户模式和系统模式,其它5种模式。外当特定异常出现时,处理器进入对应模式。,CPSR存放器中哪些位用来定义处理器模,:M4:0,(bit4:0),6/49,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.,7/49,8/49,大(小)端地址模式,:占多字节数据在存放时,假如高位字节存在低地址(首地址),称大端地址模式;假如低位字节存在低地址(首地址),称小端地址模式。比如:存放0 x01020304,0 x01,0 x02,0 x03,0 x04,大端模式,0 x30000,0 x30003,0 x04,0 x03,0 x02,0 x01,小端模式,0 x30000,0 x30003,9/49,判断题:,1.嵌入式系统是看不见计算机系统,其开发环境和运行环境一致。(),2.ARM处理器是经典CISC体系。(),填空题:,1.ARM处理器共有37个存放器,其中包含_个通用存放器和_个状态存放器。,2.ARM,处理其每种模式下都有一组存放器可用,其中_模式和_模式含有完全一样存放器组。,3.,存放器_在ARM指令中惯用作堆栈指针。_也称作子程序连接存放器或连接存放器LR,当发生中止或异常时,对应分组存放器用来保留R15返回值。,4.,存放器R15用作程序计数器(PC)。该存放器在ARM状态下,位_为0,位31:2用于保留PC;在Thumb状态下,位_为0,位31:1用于保留PC。,5.CPSR,可在_运行模式下被访问。每一个运行模式下又都有一个专用物理状态存放器,称为_。,10/49,6.ARM7TDMI,采取_级流水线结构,ARM920TDMI,采取_级流水线。,7.ARM,微处理器有七种工作模式,它们分为两类 _、_。其中用户模式属于 _。,8.ARM,核有两个指令集,分别是_,、_。,9.ARM,微处理器复位后,,PC,(,R15,)地址通常是 _。,选择题:,1.下面哪一个工作模式不属于ARM特权模式()。,A、用户模式B、管理模式C、软中止模式D、FIQ模式,2.存放一个32位数0 x2168465到H-H四个字节单元中,若以大端模式存放,则H存放单元内容为(),A、0 x21 B、0 x68 C、0 x65 D、0 x02,3.存放器R13除了能够做通用存放器外,还能够做(),A、程序计数器 B、链接存放器,C、栈指针存放器 D、基址存放器,11/49,4.存放器R15除可做通用存放器外,还能够做(),A、程序计数器 B、链接存放器,C、栈指针存放器 D、基址存放器,5.以下CPSR存放器标志位作用说法错误是(),A、N:负数 B、Z:零 C、C:进位 D、V:借位,6.关于ARM处理器异常描述不正确是()。,A、复位属于异常B、除数为零会引发异常,C、全部异常都要返回D、外部中止会引发异常,7.以下哪个不是RISC架构ARM微处理器普通特点:(),A、体积小、低功耗 B、大量使用存放器,C、采取可变长度指令格式,灵活高效 D、寻址方式灵活简,8.,以下描述不属于,RISC,计算机特点是()。,A,流水线每七天期前深入。,B,更多通用存放器。,C,指令长度不固定,执行需要多个周期。,D,独立,Load,和,Store,指令完成数据在存放器和外部存放器之间传输。,12/49,9.,在用,ARM,汇编编程是,其存放器有多个别名,通常,PC,是指(),,LR,是指(),,SP,是指(),A,R12,B,R13 C.R14 D.R15,10.CPSR,存放器中反应处理器状态位是(),A.J,位,B.I,位,C.F,位,D.T,位,11.S3C2410,采取是()关键,A.ARM7TDMI,B.ARM9TDMI C.ARM926EJ-S D.ARM920T,12.,程序状态存放器,CPSR,中第,6,位,也即,F,位为(),A.,模式位,B.,状态位,C.,中止使能位,D.,快速中止使能位,13.,不属于,ARM7,三级流水线是(),A.,取指,B.,译码,C.PC,值递增,D.,执行,14.,对于,ARM7,三级流水线,当一条指令被译码时,上一条指令正被(),A.,取指,B.,译码,C.PC,值递增,D.,执行,15.,对于,ARM7,三级流水线,当一条指令被译码时,下一条指令正被(),A.,取指,B.,译码,C.PC,值递增,D.,执行,简述题:,简述ARM9处理器内部存放器结构,并分别说明R13、R14、R15存放器作用,13/49,第三章 ARM指令,ARM指令基本格式:,S ,第2个操作数,“,operand2,”,能够提升代码效率.它有以下形式:,#immed_8r,常数表示式;,Rm,存放器方式;,Rm,shift,存放器移位方式,LSL,移位操作:,0,LSR,移位操作:,0,ASR,移位操作:,ROR,移位操作:,RRX,移位操作:,C,14/49,指令条件码表,条件码助记符,标志,含义,EQ,Z,1,相等,NE,Z,0,不相等,CS/HS,C,1,无符号数大于或等于,CC/LO,C,0,无符号数小于,15/49,1.存放,器,寻址,MOV R1,R2;R2 -R1,SUB R0,R1,R2 ;R1 -R2 -R0,指令执行时直接取出存放器值操作。,2.马上寻址,SUBS R0,R0,#1 ;R0-1-R0 MOV R0,#0 xff00 ;0 xff00-R0,数据就包含在指令当中,取出指令也就取出了能够马上使用操作数。,马上数要以“”为前缀,表示16进制数值时以“0 x”表示。,3.存放器偏移寻址,MOV R0,R2,LSL#3;R2值左移3位,结果放入R0,即R0=R2*8,ANDS R1,R1,R2,LSL R3 ;R2值左移R3位,然后和R1相与操作,结果放入R1,存放器偏移寻址是ARM指令集,特有,寻址方式,当第2操作数是存放器偏移方式时,第2个存放器操作数在与第1个操作数结之前,选择进行移位操作。,16/49,4、存放器间接寻址,LDR R1,R2;将R2中数值作为地址,取出此地址中数据保留在R1中,SWP R1,R1,R2;将如R2中数值作为地址,取出此地址中数值与R1中值交换,指令中地址码给出是一个通用存放器编号,所需要操作数保留在存放器指定地址存放单元中,即 存放器为操作数地址指针。,5、基址寻址,LDR R2,R3,#0 x0F ;将R3中数值加0 x0F作为地址,取出此地址数值保留在R2中,STR R1,R0,#-2 ;将R0中数值减2作为地址,把R1中内容保留到此地址位置,基址寻址是将基址存放器内容与指令中给出偏移量相加,形成操作数有效地址,基址寻址用于访问 基址附近存放单元,惯用于查表,数组操作,功效部件存放器访问等。,6、多存放器寻址,LDMIA R1!,R2-R7,R12 ;将R1单元中数据读出到R2R7,R12,R1自动加4,多存放器寻址就是一次能够传送几个存放器值,允许一条指令传送16个存放器任何子集或全部存放器。使用多存放器寻址指令时,存放器子集次序时由小到大次序排列,连续存放器可用“”连接,否 则,用“,”分隔书写。,17/49,7、堆栈寻址,STMFD SP!,R1-R7,LR ;将R1R7,LR入栈。满递减堆栈。,LDMFD SP!,R1-R7,LR ;数据出栈,放入R1R7,LR存放器。满递减堆栈。,向上生长:向高地址方向生长,称为递增堆栈,向下生长:向低地址方向生长,称为递减堆栈,满堆栈:堆栈指针指向最终压入堆栈有效数据项,空堆栈:堆栈指针指向下一个要放入空位置,满递增:堆栈经过增大存放器地址向上增加,堆栈指针指向内含有效数据项最高地址。指令如 LDMFA,STMFA 等。,空递增:堆栈经过增大存放器地址向上增加,堆栈指针指向堆栈上第一个空位置。指令如 LDMEA,STMEA 等,满递减,:堆栈经过减小存放器地址向下增加,堆栈指针指向内含有效数据项最低地址。指令如 LDMFD,STMFD 等。,空递减:堆栈经过减小存放器地址向下增加,堆栈指针指向堆栈下第一个空位置。指令如 LDMED,STMED等。,18/49,8、块拷贝寻址,STMIA R0!,R1-R7,;将 R1R7 数据保留到存放器中,存放器指针在保留第一个值之后增加,增加方向为向上增加。,STMIB R0!,R1-R7,;将 R1R7 数据保留到存放器中,存放器指针在保留第一个值之前增加,增加方向为向上增加。,STMDA R0!,R1-R7,;将 R1R7 数据保留到存放器中,存放器指针在保留第一个值之后增加,增加方向为向下增加。,STMDB R0!,R1-R7,;将 R1R7 数据保留到存放器中,存放器指针在保留第一个值之前增加,增加方向为向下增加。,多存放器传送指令用于一块数据从存放器某一位置拷贝到另一位置。,19/49,变址模式:,变址模式,数据,基址存放器,示例,回写前变址,membase+offset!,基址存放器加上偏移,LDR r0,,,r1,,,#4,!,前变址,membase+offset,不变,LDR r0,,,r1,,,#4,后变址,membase+offset,基址存放器加上偏移,LDR r0,,,r1,,,#4,20/49,分支指令,ARM有两种方法能够实现程序跳转:,跳转指令,直接向PC存放器(R15)中写入目标地址。,ARM跳转指令有以下4种:,B 分支指令,语法,Bcond label,BL 带链接分支指令,语法:BLcond label,BX 分支并可选地交换指令集,语法:BXcond Rm,BLX 带链接分支并可选择地交换指令集。,语法:BLXcond label|Rm,21/49,ARM汇编程序中每一行通用格式:,标号 指令|伪操作|伪指令 操作数;注解。,在ARM汇编语言源程序中,除了标号和注释外,指令、伪指令和指示符都必须有前导空格,而不能顶格书写。,假如每一行代码太长,能够使用字符“”将其分行书写,并允许有空行。,指令、伪操作和存放器名既能够用大写字母,也能够用小写字母,但不能混用。,注释从“;”开始,到该行结束为止。,标号代表一个地址,段内标号地址值在汇编时确定,段外标号地址值在链接时确定。,ARM汇编程序书写格式:,22/49,符号定义伪操作,伪操作,语法格式,作 用,GBLA,GBLA Variable,申明一个全局算术变量,并将其初始化成,0,。,GBLL,GBLL Variable,申明一个全局逻辑变量,并将其初始化成,FALSE,。,GBLS,GBLS Variable,申明一个全局字符串变量,并将其初始化成空串“”。,LCLA,LCLA Variable,申明一个局部算术变量,并将其初始化成,0,。,LCLL,LCLL Variable,申明一个局部逻辑变量,并将其初始化成,FALSE,。,LCLS,LCLS Variable,申明一个局部串变量,并将其初始化成空串“”。,SETA,SETA Variable expr,给一个全局或局部算术变量赋值。,SETL,SETL Variable expr,给一个全局或局部逻辑变量赋值。,SETS,SETS Variable expr,给一个全局或局部字符串变量赋值。,RLIST,name LIST,list of registers,为一个通用存放器列表定义名称。,CN,name CN expr,为一个协处理器存放器定义名称。,CP,name CP expr,为一个协处理器定义名称。,DN/SN,name DN/SN expr,DN/SN,为一个双精度,/,单精度,VFP,存放器定义名称。,FN,name FN expr,为一个,FPA,浮点存放器定义名称。,23/49,数据定义伪操作,伪操作,语法格式,作 用,MAP,MAP expr,base-register,定义一个结构化内存表,首地址,=expr+BR,FIELD,label FIELD expr,定义一个结构化内存表中,数据域长度,expr(B),。,SPACE,label SPACE expr,分配一块连续内存单元,expr(B),,并用,0,初始化。,DCB,label DCB expr,expr,分配一段字节内存单元,并用,expr,初始化。,DCD/,DCDU,label DCD expr,expr,分配一段字内存单元。,DCDO,label DCDO expr,expr,分配一段字对齐字内存单元。,DCFD/DCFDU,label DCFD Ufpliteral,fpliteral ,为双精度浮点数分配字对齐内存单元。,DCFS/,DCFSU,label DCFS U fpliteral,fpliteral,为单精度浮点数分配字对齐内存单元。,DCI,label DCI expr,expr,在,ARM,代码中分配一段字对齐内存单元,;,在,Thumb,代码中,分配一段半字对齐半字内存单元。,DCQ/,DCQU,label DCQUliteral,literal,分配一段以双字(,8,个字节)为单位内存,DCW/,DCWU,label DCWUexpr,expr,DCW,用于分配一段半字对齐半字内存单元。,24/49,汇编控制伪操作,伪操作,语法格式,作 用,IF,ELSE,ENDIF,IF logical expression,ELSE,ENDIF,能够依据条件把一段源代码包含在汇编语言程序内或者将其排除在程序之外。,WHILE,WEND,WHILE logical expression,WEND,能够依据条件重复汇编相同一段源代码。,MACRO,MEND,MEXIT,MACRO$label macroname,$parameter,$parameter ,;,宏代码,MEXIT;,依据需要插入,;,宏代码,MEND,MACRO,标识宏定义开始,,MEND,标识宏定义结束。,MEXIT,用于从宏中跳转出去。用,MACRO,和,MEND,定义一段代码,称为宏定义体。经过宏名称来调用宏。,25/49,其它伪操作,AREA sectionname,attr,attr,定义一个代码段或者数据段。,ENTRY,指定程序入口点。,CODE32,告诉汇编编译器后面指令序列为32位ARM指令。,END,告诉编译器已经到了源程序结尾。,name EQU expr,type,为数字常量、基于存放器值和程序中标号(基于PC值)定义一个字符名称。,ALIGN expr,offset,经过添加补丁字节使当前位置满足一定对齐方式。,EXPORT/GLOBAL symbol WEAK,申明一个符号能够被其它文件引用,相当于申明了一个全局变量。,IMPORT/EXTERN symbol WEAK,告诉编译器当前符号不是在根源文件中定义,而是在其它源文件中定义,在根源文件中可能引用该符号。,GET/INCLUDE filename,将一个源文件包含到当前源文件中,并将被包含文件在其当前位置进行汇编处理。,name RN expr,为一个特定存放器定义名称。,26/49,M,OV指令与LDR加载指令区分及用途:,MOV 将有效马上数或存放器(operand2)传送到目标存放器(Rd),可用于移位运算等操作。读取指定地址上存放器单元内容,执行条件AL.,LDR伪指令使用方法,指令格式与LDR加载指令区分:,LDR 伪指令用于加载 32 位马上数或一个地址值到指定存放器。第二个数为地址表示式。,ARM状态与Thumb状态切换指令:,能够使用,BX指令,将ARM7TDMI内核操作状态在ARM和Thumb之间切换。,;从ARM 状态转换位Thumb状态,LDR R0,=LABLE+1,BX R0,;从Thumb状态转换位ARM状态,LDR R0,=LABLE,BX R0,27/49,ARM指令集和Thumb指令集分别是()位。,A、8位,16位 B、16位,32位 C、16位,16位 D、32位,16位,指令“LDMIA R0!,R1,R2,R3,R4”寻址方式为()。,A、马上寻址B、存放器间接寻址 C、多存放器寻址 D、堆栈寻址,对存放器R1内容乘以4正确指令是()。,A、LSR R1,#2 B、LSL R1,#2,C、MOV R1,R1,LSL#2 D、MOV R1,R1,LSR#2,下面指令执行后,改变R1存放器内容指令是()。,A、TST R1,#2 B、ORR R1,R1,R1,C、CMP R1,#2 D、EOR R1,R1,R1,ADD R0,R0,#1属于(),A、马上寻址 B、存放器间接寻址 C、存放器寻址 D、基址变址寻址,28/49,汇编程序中子程序最终一条指令必须是(),A、MOV PC,R14 B、MOV PC,R14_und,C、SUBS PC,R14_fig,#4 D、SUBS PC,R14_irg,#4,若,R1=H,,,(H)=0 x86,,,(H)=0 x39,,则执行指令,LDR R0,,,R1,,,8,!后,R0,值为()。,A,、,0 xB,、,0 x86,C,、,0 xD,、,0 x39,说明以下伪指令作用,LDR R1,,,=0 xFF880022,X EQU 0 xE00111,29/49,阅读以下代码,对每行作注释,并说明程序功效是什么?,X EQU 19,;定义,X,值,19,N EQU 20,;定义,Y,值,20,AREA Example,,,CODE,,,READONLY,;申明代码段,Example,,属性为只读,ENTRY,;标示程序入口,CODE32,;申明是,32,位,arm,指令,START LDR R0,=X,;,R0,值为,X,LDR R1,=N,;,R1,值为,Y,BL MAX,;跳到,MAX,处执行,并保留下一条指令地址到,LR,HALT B HALT,;死循环,MAX CMP R0,R1,;比较大小,MOVHI R2,R0,;假如,R0,值大,就赋给,R2,MOVLS R2,R1,;假如,R1,值大,就赋给,R2,MOV PC,LR,;返回语句,END,;程序结束,30/49,解释以下指令功效,并说明寻址方式:,SUBS R1,,,R1,,,#1,ADDNE R2,,,R1,,,#0 x20,;,SUB R0,,,R1,,,R2,ADD R3,,,R2,,,R1,,,LSR R4,STR R1,,,R0,LDR R1,,,R2,,,4,!,STMIA R0,,,R1,,,R2,,,R3,STMIA R0,!,,R1,,,R2,,,R3,STMED SP!,R4-R7,LR,LDMFD sp!,r4-r7,pc,31/49,_是依据指令中信息来寻找真实操作数地址方式。,实现程序跳转指令有_和_两种方法。,C语言调用汇编程序,普通使用_申明外部函数,即可调用汇编子程序。在汇编程序中用_申明本子程序,以使其它程序能够调用此子程序。,汇编程序调用C程序,在汇编中用_申明将要调用C程序函数,即可在汇编程序中调用C程序。,32/49,写一个程序,判断R1值是否大于0 x30,是则将R1减去0 x30。,CMP 指令将存放器Rn 值减去operand2 值,依据操作结果更新CPSR 中对应条 件标志位,方便后面指令依据对应条件标志来判断是否执行。,CMP R1,#0 x30,SUBHI R1,R1,#0 x30,调用子程序是用B什么指令?请写出返回子程序指令?,BL 指令用于子程序调用。,MOV PC,R14,33/49,写一条,ARM,指令,完成操作,r1=r2*4,MOV R1,R2,LSL#2,将,R1,中数据保留到,R0,-,0 x12,地址处,STR R1,,,R0,,,#,-,0 x12,将,R0+R2,地址处数据读出,保留到,R1,中,LDR R1,,,R,0,,R2,将,R1,中数据保留到,R0+R2,地址处,STR R1,,,R,0,,R2,将,R0,-,R2,地址处数据读出,保留到,R1,中,LDR R1,,,R0,,,-,R2,将,R1,中数据保留到,R0,-,R2,地址处,STR R1,,,R0,,,-,R2,求,R1+R2,,和放在,R1,中,ADD R1,,,R1,,,R2,34/49,求,R1,-,R2,,差放在,R1,中,SUB R1,,,R1,,,R2,将,R0,最低,4,位数据保留,并影响标志位,ANDS R0,,,R0,,,#0 x0F,将,R0,1,,,3,,,5,位置,1,ORR R0,,,R0,,,#0 x2A,将,R0,1,,,3,,,5,位置,0,BIC R0,,,R0,,,0 x2A,R1,与,99,比较,设置相关标志位,CMP R1,,,#99,R1,与,R2,比较,设置相关标志位,CMP R1,,,R2,35/49,跳转到标号,waiter,处,B waiter,调用子程序,whiet,BL whiet,将,CPSR,状态存放器读取,保留到,R1,中,MRS R1,,,CPSR,将,SPSR,状态存放器读出,保留到,R2,中,MRS R2,,,SPSR,36/49,编程题,求,R4R3,-,R2R1,,差放在,R6R5,中,SUBS R5,,,R3,,,R1,S,U,BC R6,,,R4,,,R2,求,R4R3,R2R1,,和放在,R6R5,中,ADDS R5,,,R3,,,R1,ADC R6,,,R4,,,R2,求,R4R3,-,1,,差放在,R6R5,中,SUBS R5,,,R3,,,#1,S,U,BC R6,,,R4,,,#0,37/49,求,R4R3,1,,和放在,R6R5,中,ADDS R5,,,R3,,,#1,ADC R6,,,R4,,,#0,编写实现两个存放器,R0,,,R1,相加子程序。,ADD_SUB,ADDS R0,,,R0,,,R1,;,R0=R0+R1,MOV PC,,,LR,;子程序返回,38/49,使能,IRQ,中止,(CPSR,第,6,位置,0),ENABLE-IRQ,MRS R0,,,CPSR,BIC R0,,,R0,,,#0X80,MSR CPSR_,c,,,R0,MOV PC,,,LR,禁能,IRQ,中止,(CPSR,第,6,位置,1),DISABLE_IRQ,MRS R0 CPSR,ORR R0,,,R0,,,#0X80,MSR CPSR_,c,,,R0,MOV PC,,,LR,;,LR,即,R14,39/49,编写程序使能FIQ中止,(CPSR,第,5,位置,0),ENABLE_FIQ,MRS R0,CPSR,BIC R0,R0,#0X40,MSR CPSR_,c,R0,MOV PC,LR,编写程序禁能FIQ中止,(CPSR,第,5,位置,1),DISABLE_FIQ,MRS R0,CPSR,ORR R0,R0,#0X40,MSR CPSR_,c,R0,MOV PC,LR,40/49,烧写到FLASH里是()格式文件。,A.s B.bin C.o D.c,汇编程序中伪指令是在()阶段起作用。,编辑 B.链接 C.编译 D.执行,ATPCS,要求中,栈是(),满加 B.满减 C.空加 D.空减,构建嵌入式系统开发环境工具链有各种,其中开放源码工具链是,_,工具链,,ARM,企业提供工具链是,_,工具链,ARM汇编程序设计采取分段式设计,一个ARM源程序最少需要_个代码段。,试验部分,41/49,C,语言与汇编语言混合编程应恪守规则,在C程序和ARM汇编程序之间相互调用时恪守,ATPCS 规则(,ARM-THUMB procedure call standard,),。,ATPCS要求了一些子程序间调用基本规则,比如:,存放器使用规则,子程序之间经过存放器r0r3来传递参数,当参数个数多于4个时,使用堆栈来传递参数。,在子程序中,使用存放器r4r11保留局部变量。,42/49,存放器,r12,用于保留堆栈指针,SP,,当子程序返回时使用该存放器出栈,记作,IP,。,存放器,r13,用作堆栈指针,记作,SP,。,存放器,r14,称为链接存放器,记作,LR,。该存放器用于保留子程序返回地址。,存放器,r15,称为程序计数器,记作,PC,。,堆栈使用规则,堆栈采取满递减类型(,FD,,,Full Descending,),即堆栈经过减小存放器地址而向下增加,堆栈指针指向内含有效数据项最低地址,。,43/49,ARM 存放器 ATPCS别名 ATPCS存放器说明,R0 R3,a1 a4,参数/结果/scratch 存放器1-4,R4 v1 局部变量存放器1,R5 v2 局部变量存放器2,R6 v3 局部变量存放器3,R7 v4、wr 局部变量存放器4,Thumb 状态工作存放器,R8 v5 ARM状态局部变量存放器5,R9 v6、sb ARM状态局部变量存放器6,RWPI 静态基址存放器,R10 v7、sl ARM状态局部变量存放器7,数据栈限制指针存放器,R11 v8 ARM状态局部变量存放器8,R12,ip,子程序内部调用暂时(scratch)存放器,R13 sp 数据栈指针存放器,R14 lr 链接存放器,R15 PC 程序计数器,44/49,重点:汇编程序调用C程序方法,汇编程序调用C程序方法为:首先在汇编程序中使用,IMPORT或EXTERN伪指令,事先申明将要调用C语言函数;然后经过,BL,指令来调用C函数。.,比如在一个C源文件中定义了以下求和函数:,int add(int x,int y),return(x+y);,调用add()函数汇编程序结构以下:,IMPORT,add,;申明要调用C函数,MOV r0,1,;ATPCS要求子程序之间经过存放器r0r3来传递参数,MOV r1,2,BL,add,;调用C函数add,45/49,C程序调用汇编程序方法,C程序调用汇编子程序方法为:首先在汇编程序中使用,EXPORT或GLOBAL伪指令,申明被调用子程序,表示该子程序将在其它文件中被调用;然后在C程序中使用,extern关键字,申明要调用汇编子程序为外部函数。,比如在一个汇编源文件中定义了以下求和函数:,EXPORT,add,;,申明,add,子程序将被外部函数调用,add,;,求和子程序,add,ADD r0,r0,r1,MOV pc,lr,在一个,C,程序,main(),函数中对,add,汇编子程序进行了调用:,extern,int add(int x,int y);,/,申明,add,为外部函数,void main(),int a=1,b=2,c;,c=add(a,b);,/,调用,add,子程序,46/49,S3C2440存放空间分配:,S3C2440芯片采取是ARM920T核,地址空间总共为4G,B,。其中,1GB地址空间用于支持外部存放器链接,此部分被分成8个存放块,每块128MB。,第四章 ARM硬件系统,47/49,存放器控制器:,支持小/大端(经过软件选择),地址空间:每,bank(,组,块,),有128,M,字节(总共有8个,banks,,,共1,G,字节),除,bank0,(,只能是16/32位宽数据存放)之外,其它,bank,都含有可编程访问大小(能够是8/16/32位宽数据存放),总共有8个存放器,banks,(,bank0-bank7,),其中6个,banks,用于,ROM,,,SRAM,等,.,(,bank0-bank5,),剩下2个,banks,用于,ROM,,,SRAM,,,SDRAM,等,.,(,bank6-bank7,),7,个固定存放器,bank,(,bank0-bank6,),起始地址,最终一个,bank,(,bank7,),起始地址是可调整,最终两个,bank,(,bank6,-,bank7,),大小是可编程,且大小必须相等,48/49,在嵌入式系统存放结构中,存取速度最快是()。,A.内存 B.存放器组 C.Flash D.Cache,S3C2440芯片外部寻址空间是_,被分成_个存放块,每块_MB。,49/49,- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 复习 公开 获奖 课件 名师 优质课 一等奖
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文