收藏 分享(赏)

ARM基础知识.doc

上传人:精品资料 文档编号:8397596 上传时间:2019-06-24 格式:DOC 页数:14 大小:208.43KB
下载 相关 举报
ARM基础知识.doc_第1页
第1页 / 共14页
ARM基础知识.doc_第2页
第2页 / 共14页
ARM基础知识.doc_第3页
第3页 / 共14页
ARM基础知识.doc_第4页
第4页 / 共14页
ARM基础知识.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、复习问题提纲第一讲 基础知识1. 什么是嵌入式系统(IEEE 定义和国内普遍认同的定义分别是什么)?IEEE(国际电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置” 国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。更简单的讲:就是嵌入到对象体中的专用计算机系统。三要素:嵌入、专用、计算机嵌入性:嵌入到对象体系中,有对象环境要求专用性:软、硬件按对象要求裁减计算机:实现对象的智能化功能2. 嵌入式系统的特点?1、专用软、硬件可剪裁可配置;2、低功耗、高可靠

2、性、高稳定性;3、软件代码短小精悍;4、代码可固化;5、实时性;6、弱交互性7、嵌入式系统软件开发通常需要专门的开发工具和开发环境;8、要求开发、设计人员有较高的技能。3. 嵌入式系统的组成?嵌入式系统总体上是由硬件和软件组成的,硬件是其基础,软件是其核心和灵魂。第二讲 ARM 技术概述(以下指的 arm 处理器都是指 ARM920T)1. arm 处理器是 32 位架构,它支持的基本数据类有哪 3 个(提示:字节、?、?)?(1)Byte:字节,8bit (2)Halfword:半字,16bit(半字必须与 2 字节边界对齐) (3)word:字,32bit(字必须与 4 字节边界对齐)2.

3、 什么是存储大小端模式?所谓的大端模式,是指高位字节存放在低地址单元中,而低位字节存放在高地址单元中。所谓的小端模式,是指低位字节存放在低地址单元中,而高位字节存放在高地址单元中。3. arm 处理器有哪 7 种工作模式,每种工作模式下通用工作寄存器有多少个、作用是什么、各个模式间哪些模式下有自己专有的寄存器,哪些寄存器是各个模式彼此公用的,哪些寄存器一般有固定的用途是什么?哪两种模式寄存器完全相同,哪种模式它的专有寄存器最多?(1)ARM 微处理器支持 7 种运行模式,分别为: 用户模式(usr):ARM 处理器正常的程序执行状态。 (大部分任务执行时) 快速中断模式(fiq):用于高速数据

4、传输或通道处理。 (当高优先级中断产生时) 外部中断模式(irq):用于通用的中断处理。 (当低优先级中断产生时) 特权模式(svc):操作系统使用的保护模式。 (当复位或软中断指令执行时) 数据访问中止模式(abt):可用于虚拟存储及存储保护。 (当存取异常时) 未定义指令中止模式(und):可用于支持硬件协处理器的软件仿真。 (当未定义的指令执行时)系统模式(sys):运行具有特权的操作系统任务。 (和 User 模式相同寄存器集的模式)(2)每种工作模式下通用工作寄存器有:(共 15 个) (ARM 处理器共有 37 个寄存器,被分为若干个组(BANK) ,这些寄存器包括 30 个通用寄

5、存器和 6 个状态寄存器,1 个程序计数器(PC 指针)及所有寄存器(均为 32 位) 。 未分组寄存器:包括 R0R7。 分组寄存器:包括 R8R14 (3) 未分组寄存器(R0-R7)指的都是同一个物理寄存器,但是在异常中断切换时,由于使用相同的物理寄存器,所以和容易使寄存器中的数据被破坏。 对于分组寄存器(R8R14) ,他们每一次所访问的物理寄存器与处理器当前的运行模式有关,除 FIQ 模式外其他寄存器是公用的(R0-R12) 。 分组寄存器R13 和 R14 来说,每个寄存器对应 6 个不同的物理寄存器。其中的一个是用户模式和系统模式公用的,而另外 5 个分别用于 5 种异常模式。

6、R15 用作程序计数器(PC) ,用来保存读取指令的地址。(4)R13,R14,CPSR 是各个模式专有的,FIQ 模式除此之外 还有 R8-R12.(5) R0R7 是所用模式公用的; R8R12 对于快速中断 FIQ 模式之外的其他模式都是 公用的,而FIQ 模式另外有一套自己寄存器 R8_fiqR12_fiq,FIQ 处理程序在保存和恢复现场时可以少保存和恢复几个寄存器(R8-R12) ,从而提高中断处理迅速(6)R13 通常用作栈指针寄存器(SP) ,每一种模式有自己的 R13,所以允许每一种异常都有自己的栈指针。R14 用作连接或返回地址寄存器(LR) ,每一种模式有自己的 R14。

7、R15 用作程序计数器(PC) ,用来保存读取指令的地址。程序状态寄存器(CPSR)存储 ARM 微处理器当前的状态和模式标志。备份状态寄存器(SPSR)异常模式下的 CPSR 的备份寄存器,当一个异常发生时保存当前的CPSR 值。结合连接寄存器可使处理器返回先前的状态。(7)用户模式(user)和系统模式(sys)寄存器完全相同且这两种模式不能由异常进入(8)快速中断(FIQ)模式最多4. arm 处理器有哪 2 种工作状态,上电复位后进入的是什么状态?(1)第一种为 ARM 状态,此时处理器执行 32 位的字对齐的 ARM 指令,对应 ARM 指令集;第二种为 Thumb 状态,此时处理器

8、执行 16 位的、半字对齐的 Thumb 指令,对应 Thumb 指令集。(2) 上电复位后,处于 ARM 状态5. 理解流水线是如何提高处理器处理速度的,如假设某嵌入式处理器有 3级流水线,每级流水线所耗时间均为为 2ms,则执行 25 条指令需要耗费时间?流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术 T=执行一条指令的时间+(指令的条数 1)*流水线周期 6+(25-1)*2=546. 充分掌握 arm 处理器 CPSR 寄存器每一位的作用。寄存器 R16 用作程序状态寄存器 CPSR(Current Program Status Regist

9、er,当前程序状态寄存器) 。在所有处理器模式下都可以访问 CPSR。CPSR 包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。每种异常模式都有一个程序状态保存寄存器 SPSR(Saved Program Status Register) 。当异常出现 SPSR 用于保留 CPSR 的状态。CPSR 和 SPSR 的格式如下:(1)条件码标志N、Z 、C、V(Negative、Zero、Carry、oVerflow )均为条件码标志位( Condition Code Flags) ,它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。CPSR 中的条件码

10、标志可由大多数指令检测以决定指令是否执行。在 ARM 状态下,绝大多数的指令都是有条件执行的。在 Thumb状态下,仅有分支指令是有条件执行的。通常条件码标志通过执行比较指令(CMN、CMP、TEQ、TST) 、一些算术运算、逻辑运算和传送指令进行修改。条件码标志的通常含义如下:N:如果结果是带符号二进制补码,那么,若结果为负数,则 N=1;若结果为正数或 0,则 N0。Z:若指令的结果为 0,则置 1(通常表示比较的结果为“相等” ) ,否则置 0。C:可用如下 4 种方法之一设置:加法(包括比较指令 CMN) 。若加法产生进位(即无符号溢出) ,则 C 置 1;否则置 0。减法(包括比较指

11、令 CMP) 。若减法产生借位(即无符号溢出) ,则 C 置 0;否则置 1。对于结合移位操作的非加法减法指令,C 置为移出值的最后 1 位。对于其他非加法减法指令,C 通常不改变。V:可用如下两种方法设置,即对于加法或减法指令,当发生带符号溢出时,V 置 1,认为操作数和结果是补码形式的带符号整数。对于非加法减法指令,V 通常不改变。Q 标志位:在带 DSP 指令扩展的 ARM v5 及更高版,bit27被指定用于指示增强的 DAP 指令是否发生了溢出,因此被称为 Q 标志位。同样,在 SPSR 中 bit27也被称为 Q 标志位,用于在异常中断发生时保存和恢复 CPSR 中的 Q 标志位(

12、3)控制位程序状态寄存器 PSR(Program Status Register)的最低 8 位 I、F、T 和 M4:0用作控制位。当异常出现时改变控制位。处理器在特权模式下时也可由软件改变。a中断禁止位I:置1,则禁止 IRQ 中断;F:置 1,则禁止 FIQ 中断。bT 位T=0 指示 ARM 执行(即正在执行32位的 ARM 指令) ;T=1 指示 Thumb 执行(即正在执行16位的 Thumb 指令) 。c模式控制位M4、 M3、M2、Ml 和 M0(M4:0)是模式位,决定处理器的工作模式,如表所列。M4:0 处理器工作模式 可访问的寄存器10000 用户模式 PC,CPSR,R

13、14R010001 FIQ 模式 PC,R7R0,CPSR, SPSR_fiq,R14_fiqR8_fiq10010 IRQ 模式 PC,R12R0,CPSR, SPSR_irq,R14_irq,R13_irq10011 管理模式 PC,R12R0, CPSR, SPSR_svc,R14_svc,R13_svc10111 中止模式 PC,R12R0, CPSR, SPSR_abt,R14_abt,R13_abt11011 未定义模式 PC,R12R0, CPSR, SPSR_und,R14_und ,R13_und11111 系统模式 PC,R14R0,CPSR(ARM v4及以上版本)并非所

14、有的模式位组合都能定义一种有效的处理器模式。其他组合的结果不可预知。(4)其他位程序状态寄存器的其他位保留,用做以后的扩展。7. arm 处理器有哪两个中断?快速中断(FIQ)和标准中断(IRQ)8. 掌握 s3c2410X 单片机他的内核是什么处理器,该单片机有哪两类总线,两类总线分别挂接了哪些接口控制器?(1)S3c2410X 单片机的内核 ARM920T 处理器;S3C2410 处理器支持大/小端模式存储字数据,a) 其寻址空间可达 1GB,b) 对于外部 I/O 设备的数据宽度c) 可以是 8/16/32 位,d) 所有的存储器 Bank(共有 8 个)都具有可编程的操作周期,e) 而

15、且支持各种 ROM 引导方式(NOR/Nand Flash、EEPROM 等)(2)两类总线分别为:AHB 和 APB;(3)AHB 挂接了 LCD、USB 主控制、NAND Flash、中断控制、总线控制、内存APB 挂接了 串口、usb 从设备、看门狗定时器、总线控制、SPI、I2C、I2S、GPIO、RTC、ADC、 PWM 定时器第三讲 ARM 指令系统1. 掌握 ARM 处理器指令的几种寻址方式和分类,哪两类指令是专门用来访问内存的?哪类指令或伪指令会导致流水线情况(提示:那些会使PC 值发生跳变的指令)(1)指令有七种寻址方式:1、立即寻址:ADD R0,R0,1 ;R0R01 M

16、OV R0,0xff00 ;R00xff00 在以上两条指令中,第二个源操作数即为立即数,要求以“”为前缀,对于以十六进制表示的立即数,还要求在“”后加上“0x” 。2、寄存器寻址 :操作数放在寄存器当中,在指令当中只需要给出存放操作数寄存器的名字就可以了,这也是一种执行效率较高寻址方式。举例:MOV R0,R1 ; R0R1SUB R0,R1,R2 ;R0R0-R2 3、寄存器间接寻址:寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。ADD R0,R1,R2 ;R0R1R2在第一条指令中,以寄存器 R2 的值作为操作数的地址,在存储器中取得一个操作数后与 R1

17、相加,结果存入寄存器 R0 中。 LDR R0,R1 ; R0R1 第 2 条指令将以 R1 的值为地址的存储器中的数据传送到 R0 中。4、基址变址寻址: 基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。LDR R0,R1,4 ;R0R14 在第一条指令中,将寄存器 R1 的内容加上 4 形成操作数的有效地址,从而取得操作数存入寄存器 R0 中。5、多寄存器寻址: 6、相对寻址:7、堆栈寻址:0指令有六类:1、跳转指令 2、数据处理指令 3、程序状态寄存器(PSR)传输指令

18、4、加载/存储(load/store)指令 5、协处理指令 6、异常中断产生指令根据使用的指令类型不同,指令的寻址方式分为数据处理指令寻址方式和内存访问指令寻址方式。 (2)加载/存储(load/store)指令 和 跳转指令 访问内存的指令:str 和 ldr(3)a、互锁指令:在典型的程序处理过程中,经常会遇到这样的情形,即一条指令的结果被用作下一条指令 的操作数,如:有如下指令序列:LDR R0,R0,#0ADD R0,R0,R1 ;在 5 级流水线上产生互锁从例子中可以看出,流水线的操作产生中断,因为第 1 条指令的结果在第 2 条指令取数时还没有产生。第 2 条指令必须停止,直到结果

19、产生为止。b、跳转指令:跳转指令也会破坏流水线的行为,因为后续指令的取指步骤受到跳转目标计算的影响,因而必须推迟。第四讲 ARM 程序设计语言1. 掌握 ARM 一些常用伪指令的作用及含义?如 ldr r0,=label(含义) 、entry、end 、import、export 、dcb 100 等。ldr r0,=label:把 lable(程序开始地址)写到 r0 寄存器中 Entry: ENTRY 伪指令用于指定汇编程序的入口点。在一个完整的汇编程序中至少要有一个 ENTRY (也可以有多个,当有多个 ENTRY 时,程序的真正入口点由链接器指定) ,但在一个源文件里最多只能有一个 E

20、NTRY (可以没有) 。 End:作用:用于通知编译器已经到了源程序的结尾。 含义:指定应用程序的结尾 Import: 伪指令用于通知编译器要使用的标号在其他的源文件中定义,但要在当前源文件中引用,而且无论当前源文件是否引用该标号,该标号均会被加入到当前源文件的符号表中。 Export:用于在程序中声明一个全局的标号,该标号可在其他的文件中引用。 Dcb 100: 用于分配一片连续的字节存储单元并用伪指令中指定的表达式初始化。 2. 掌握 ATPCS 规则,如汇编与 C 语言间参数是如何传递的(C 语言函数的形参对应哪些通用寄存器、返回参数又对应哪些通用寄存器)?1. 子程序通过寄存器 R0

21、R3 来传递参数 . 这时寄存器可以记作: A1A4 , 被调用的子程序在返回前无需恢复寄存器 R0R3 的内容. 2.在子程序中,使用 R4R11 来保存局部变量.这时寄存器 R4R11 可以记作: V1V8 .如果在子程序中使用到 V1V8 的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值,对于子程序中没有用到的寄存器则不必执行这些操作.在 THUMB 程序中,通常只能使用寄存器 R4R7 来保存局部变量. 3.寄存器 R12 用作子程序间 scratch 寄存器,记作 ip; 在子程序的连接代码段中经常会有这种使用规则. 4. 寄存器 R13 用作数据栈指

22、针,记做 SP,在子程序中寄存器 R13 不能用做其他用途. 寄存器 SP在进入子程序时的值和退出子程序时的值必须相等. 5. 寄存器 R14 用作连接寄存器,记作 lr ; 它用于保存子程序的返回地址,如果在子程序中保存了返回地址,则 R14 可用作其它的用途. 6. 寄存器 R15 是程序计数器,记作 PC ; 它不能用作其他用途. 7. ATPCS 中的各寄存器在 ARM 编译器和汇编器中都是预定义的.3. 理解加载地址和运行地址的含义,以及在程序加载时和运行时分别分成了哪几个段(提示 RO 子读、RW 可读可写、ZI 存储)第 5 讲 GPIO 编程1掌握 S3C2410 GPIO 端

23、口的设置方法,如现在需要把通用端口 F 组的第2 管脚口设置为输出且输出低电平(即 0) ,现在要其 F 组其他管脚口保持不变,应如何设置他的相关寄存器?rGPFCON = (rGPFCON rGPFDAT=(rGPFDAT);2掌握实验板 4 个 LED 灯的编程控制#define rGPFCON (*(volatile unsigned *)0x56000050) /端口 F 的控制寄存器#define rGPFDAT (*(volatile unsigned *)0x56000054) /端口 F 的数据寄存器#define rGPFUP (*(volatile unsigned *)0

24、x56000058) /端口 F 的上拉控制寄存器#define uchar unsigned char#define uint unsigned intconst uchar led_table=0x3f,0x9f,0xcf; /单灯点亮编码void delay(uint); /延时函数void flow_led(void); /4 盏单灯流动点亮一次void led_port_init(void);/初始化 LED 所接的端口int Main(void)led_port_init();while(1)flow_led();void led_port_init(void)rGPFCON =

25、(rGPFCONi-)for(j=2400;j0;j-);void flow_led(void)uchar i;for(i=0;iTp。 在程序运行一周期后,修改定时器的计数值,只要程序正常运行,定时器就不会溢出。 若由于干扰等原因使系统不能在 Tp 时刻修改定时器的计数值,定时器将在 Ti 时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控作用。4. 看门狗定时器溢出会可能产生哪两路输出?如何设置定时器定时器初值(如 PCLK 时钟频率为 60MHz,看门狗控制寄存器中的预分频因子设为 99、再分频因子设为 32,若要产生 0.75 秒钟的看门狗定时中断,则 WTDAT 中的计数初值为

26、?)a) 产生中断 和 复位信号 两大功能是:定时功能和复位功能b) T_watchdog=1/(PCLK/Precaler value+1)/Division_factor=1/(60000000/100)/32=0.00005s WTDAT=0.75/0.00005=15000;5. PWM 定时器的工作原理,其相关寄存器的作用(如用哪个寄存器设置计数器和比较器初值,计数器寄存器能直接读写吗?如果不能我么又是如何来读的?) ,以及产生 PWM 信号占空比是由哪两个寄存器来确定的?如何编程产生不同频率和占空比的 PWM 信号 ,定时器的输出脉冲(PWM)的周期如何计算,脉宽如何计算?a)b)

27、 计数器寄存器不能直接读写,因为计数器 TCNT 没有地址,不能对其操作。定时器值可以被写入定时器计数缓冲寄存器(TCNTBn),当 TCNTn 的值等于 0 时,自动重载操作把 TCNTBn 的值装入 TCNTn,只有当自动重载功能被使能并且 TCNTn 的值等于 0 的时候才会重载。c) PWM 信号占空比是由 TCNTn 和 TCMPn 两个寄存器来确定的d) rTCFG0 = 158异步)初始化存储控制器:设置存储器控制寄存器的值 初始化数据区:内核映像开始总是在 Flash 里面的,其中 RO 部分可以在 Flash 中执行,也可以转移到 RAM 中执行,而 RW 和 ZI 必须转移到 RAM 中执行。数据区初始化就是完成必要的部分从Flash 到 RAM 的数据传输和内容清零。 跳转到 C 程序的 Main()函数:是改变处理器模式,转入到 C 程序的人口操作。 2. s3c2410 存储空间有多大,分成了几个组,每组空间有多大,最大能挂接多大 SDRAM?存储空间有 1GB;分成了 8 组;每组空间 128M;最大能挂接 256M 的 SDRAM,就是 bank6 和bank7。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报