ARM体系与架构

ARM体系与架构

硬件基础

ARM处理器

什么是哈佛结构和冯诺依曼结构?

冯诺依曼结构采用指令和数据统一编址,使用同条总线传输,CPU读取指令和数据的操作无法重叠。

哈佛结构采用指令和数据独立编址,使用两条独立的总线传输,CPU读取指令和数据的操作可以重叠。

利弊

冯诺依曼结构主要用于通用计算机领域,需要对存储器中的代码和数据频繁的进行修改,统一编址有利于节约资源

哈佛结构主要用于嵌入式计算机,程序固化在硬件中,有较高的可靠性、运算速度和较大的吞吐。

什么是ARM流水线技术

流水线技术通过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐量,从而称为微处理器设计中最为重要的技术之一。ARM7处理器核使用了典型三级流水线的冯诺依曼结构,ARM9系列则采用了基于五级流水线的哈佛结构。通过增加流水线级数简化了流水线各级的逻辑,进一步提高了处理器的性能。

PC代表程序计数器,流水线使用三个阶段,因此指令分为三个阶段执行:1.取指(从存储器装载一条指令);2.译码(识别将要被执行的指令);3.执行(处理指令并将结果写回寄存器)。而R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC总是指向第三条指令。当ARM状态时,每条指令为4字节长,所以PC始终指向该指令地址加8字节的地址,即:PC值=当前程序执行位置+8

ARM指令是三级流水线,取指,译指、执行,同时执行的,现在PC指向的是正在取指的地址(下一条指令),那么cpu正在译指的指令地址是PC-4(假设在ARM状态下,一个指令占4个字节),cpu正在执行的指令地址是PC-8,也就是说PC所指向的地址和现在所执行的指令地址相差8。

当突然发生中断的时候,保存的是PC的地址(PC-8+4 = PC-4 下一条指令的地址)

如果返回的时候返回PC,那么中间就有一个指令没有执行,所以用SUB pc lr-irq #4。

ARM有几种工作模式

1.用户模式(USR)

用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限去操作其它硬件资源。只能执行处理自己的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软中断或产生异常。

2.系统模式(SYS)

系统模式是特权模式,不受用户模式的限制。用户模式和系统模式共用一套寄存器,操作系统在该模式下可以方便的访问用户模式的寄存器,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源

3.一般中断模式(IRQ)

一般中断模式也叫普通中断模式,用于处理一般的中断请求,通常在硬件产生中断信号之后自动进入该模式,该模式为特权模式,可以自由访问系统硬件资源。

4.快速中断模式(FIQ)

快速中断模式是相对一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中。

5.管理模式(SVC)

管理模式是CPU上电后默认模式,因此,在该模式下主要用来做系统的初始化,软中断处理也在该模式下。当用户模式下的用户程序请求使用硬件资源时,通过软件中断进入该模式。

6.终止模式(ABT)

中止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式,Linux下编程时经常出现的segment fault通常都是在该模式下抛出返回的。

7.未定义模式(UND)

未定义模式用于支持硬件协处理器的软件仿真,CPU在指令的译码阶段不能识别该指令操作时,会进入未定义模式。

Arm有多少32位寄存器?

ARM处理器共有37个寄存器。它包含31个通用寄存器和6个状态寄存器。

Arm2440和6410有什么区别?

1.主频不同。2440是400M的。6410是533、667M的;

2.处理器版本不一样:2440是arm920T内核,6410是arm1176ZJF内核;

3.6410在视频处理方面比2440要强很多。内部视频解码器,包括MPEG4等视频格式;

4.6410支持WMV9、xvid、mpeg4、h264等格式的硬解码和编码;

5.6410多和很多扩展接口比如:tv-out、CF卡和S-Video输出等;

6.spi、串口、sd接口也比那两个要丰富;

7.6410采用的是DDR内存控制器;2440采用的是SDRam内存控制器;

8.6410为双总线架构,一路用于内存总线、一路用于Flash总线;

9.6410的启动方式更加灵活:主要包括SD、Nand Flash、Nor Flash和OneFlash等设备启动;

10.6410的Nand Flash支持SLC和MLC两种架构,从而大大扩大存储空间;

11.6410具备8路DMA通道,包括LCD、UART、Camera等专用DMA通道;

12.6410还支持2D和3D的图片加速;

Arm指令集分为几类

2类,分别为Thumb指令集,ARM指令集。ARM指令长度为32位,Thumb指令长度为16位。这种特点使得ARM既能执行16位指令,又能执行32位指令,从而增强了ARM内核的功能。

通用寄存器包括R0~R15,可以分为具体哪三类?

通用寄存器包括R0-R15,可以分为3类:

1.未分组寄存器R0-R7

在所有运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途。因此在中断或异常处理进行异常模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,所以可能造成寄存器中数据的破坏

2.分组寄存器R8-R14

对于分组寄存器,他们每次所访问的物理寄存器都与当前的处理器运行模式相关。

R13常用作存放堆栈指针,用户也可以使用其他寄存器存放堆栈指针,但在Thumb指令集下,某些指令强制要求使用R13存放堆栈指针。

3.程序计数器PC(R15)

寄存器R15用作程序计数器(PC),在ARM状态下,位[1:0]为0,位[31:2]用于保存PC;在Thumb状态下,位[0]为0,位[31:1]用于保存PC。

Arm处理器有几种工作状态?

从编程的角度来看,Arm微处理器的工作状态一般ARM和Thumb有两种,并可在两种状态之间切换。

  • ARM状态:此时处理器执行32位的字对齐ARM指令,绝大部分工作在此状态。

  • Thumb状态:此时处理器执行16位的半字对齐的Thumb指令。

Arm系统中,在函数调用的时候,参数是通过哪种方式传递的?

当参数小于等于4的时候是通过r0-r3寄存器来进行传递的,当参数大于4的时候是通过压栈的方式进行传递。

ARM协处理器指令包括哪3类,请描述它们的功能。

ARM协处理器指令包括以下3类:

  1. 用于ARM处理器初始化ARM协处理器的数据处理操作。
  2. 用于ARM处理器的寄存器和ARM协处理器的寄存器间的数据传送操作。
  3. 用于在ARM协处理器的寄存器和内存单元之间传送数据。

什么是PLL(锁相环)?

简单来说,输入时钟的存在是作为“参考源”。锁相环不是为了单纯产生同频同相信号,而是一般集成进某种“频率综合电路”,产生一个不同频,但锁相的信号

中断与异常

中断与异常有何区别

中断是指外部硬件产生的一个电信号从CPU的中断引脚进入,打断CPU的运行。

异常是指软件运行过程中发生了一些必须做出处理的事情,CPU自动产生一个陷入来打断CPU的运行。

异常在处理的时候必须考虑与处理器的时钟同步,实际上异常也称为同步中断,在处理器执行到因编译错误而导致的错误指令时,或者在执行期间出现特殊错误,必须靠内核处理的时候,处理器就会产生一个异常。

中断和DMA有何区别

DMA:是一种无须CPU的参与,就可以让外设与系统内存之间进行双向数据传输的硬件机制,使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐率。

中断:是指CPU在执行程序的过程中,出现了某些突发事件时,CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回源程序被中断的位置并继续执行。

所以中断和DMA的区别就是:DMA不需CPU参与,而中断时是需要CPU参与的

通信协议

什么是异步传输和同步传输?

异步传输:是一种典型的基于字节的输入输出,数据按每次一个字节进行传输,其传输速度低。

同步传输:需要外界的时钟信号进行通信,是把数据字节组合起来一起发送,这种组合称之为帧,其传输速度比异步传输快。

SPI协议

SPI的应用

SPI协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速全双工的通信总线。SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI总线可直接与各个厂家生产的多种标准外围器件相连,包括FLASH、RAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。

接口
1.MOSI
2.MISO
3.CLK
4.CS

IIC协议

IIC协议使由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据,是一个多主机的半双工通信方式每个挂接在总线上的器件都有个唯一的地址。位速在标准模式下可达100kbit/s,在快速模式下可达400kbit/s,在高速模式下可待3.4Mbit/s。

编程

嵌入式编程中,什么是大端?什么是小端?

大端模式:低位字节存在高地址上,高位字节存放在低地址上。

小端模式:高位字节存在高地址上,低位字节存在低地址上。

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值