ARM架构面试题

1.ARM是什么?

ARM是一种低功耗、高性能的芯片架构,由ARM公司推出广泛应用于移动设备、数字家庭、嵌入式系统等领域。 ARM架构的特点是指令集精简、指令执行速度快、功耗低等,可 以满足不同领域对于处理器的不同需求。

2.精简指令集和复杂指令集各有什么特点?

CISC 复杂指令集它更加注重指令的功能,指令的周期和指令的宽度不固定。

什么是时钟周期:执行一条汇编指令,需要的时钟周期的个数。

时钟周期:时钟的周期跟CPU的主频有关,周期和频率成倒数关系。

指令宽度:一条汇编指令编译生成的机器码,占用代码段空间的大小。

X86-64架构是基于复杂指令集进行设计的。

RISC精简指令集,它相对更加简单,容易理解,指令的周期和指令的宽度固定。

ARM架构、RISC-V架构、MIPS架构、PowerPC架构都是基于RISC指令集设计的。

3.ARM  A系列CPU有几种工作模式,M系列有几种工作模式?

ARM A系列CPU有7种工作模式,分别是:
1. 用户模式(Usr)            用于正常执行程序

2. 快速中断模式(FIQ)    用于高速数据传输

3. 外部中断模式(IRQ)   用于通常的中断处理

4. 管理模式(SVC)          操作系统使用的保护模式(高权限),复位和软件中断进入

5. 数据访问终止模式(abt)   当数据或指令预取终止时进入该模式,可用于虚拟内存及存储保护

6. 系统模式(sys)            运行均有特权的操作系统任务

7. 未定义指令终止模式(und)   用于支持硬件协处理器的软件仿真(浮点、微量运算)

其中除了用户模式以外,其余所有6种模式称之为非用户模式(特权模式,权限比用户模式高)


ARM M系列CPU通常有2种工作模式,分别是:
    特权模式(Privileged Mode):用于操作系统内核执行特权指令和管理系统资源。
    用户模式(User Mode):用于执行应用程序,具有最低的权限级别。
需要注意的是,具体的ARM A系列CPU和M系列CPU支持的工作模式可能会略有不同,但一般都会包含上述的基本工作模式。

4.ARM对异常处理流程是什么?

注意:

(1)User和System模式是不可通过异常进入的两种模式,即要进入这两种模式,必须要编程设置CPSR的模式状态。

(2)ARM处理器中Corte-A中不支持中断嵌套,因为ARM处理器的中断处理速度较快。

(3)Corte-M系列支持中断嵌套 er:stm32.

ARM异常处理:处理器对特定的异常事件进行的处理流程,(CPU指导硬件自动完成:四大步三小步)

1.打断main函数的执行
2.保存现场(四大步)(CPU自动完成)

(1)保存CPSR程序的状态模式到SPSR中

(2)设置CPSR对应功能位(三小步)

        1.切换处理器进入ARM状态

        2.根据需要,禁止中断位

        3.根据异常切换到对应的异常模式

(3)保存返回地址:把当前PC指向的地址保存到LR寄存器中

(4)设置PC寄存器存放跳转到对应的异常向量表的固定首地址

3.恢复现场(必须手动恢复)

(1)恢复SPSR_mode到CPSR

(2)恢复LR寄存到到PC中

5.ARM中对栈的使用方式有哪几种?

栈有四种类型:空增(EA)、空减(ED)、满增(FA)、满减(FD)对于ARM处理器一般使用满减栈

6.ARM哪种工作模式优先级最高?

管理模式(SVC)操作系统使用的保护模式(高权限),复位和软件中断进入

7.ARM中CPSR  和  SPSR的作用是什么?

CPSR (Current Processor Status Register) 寄存器是当前运行模式的程序状态寄存器,主要用于保存 CPU 的状态,比如运行模式、中断使能等等。

SPSR (Saved Processor Status Register) 寄存器则用于保存当前运行模式下的 CPSR 寄存器内容,在发生中断或异常时,当前模式的 CPSR 将被保存到 SPSR 寄存器中。 这样,当异常处理完成后,CPU 可以从 SPSR 寄存器中恢复之前的 CPSR 状态

8.ARM中 各种工作模式对 SPSR寄存器是共用的么?CPSR呢?

各种工作模式对SPSR不是共用的,而是他们都有自己单独的SPSR寄存器。

CPSR是共用的。

9.简述UART 

什么是总线?

总线就是各个部件之间进行数据传输的总线;总线分为芯片内部总线和芯片的外部总线。
    
    芯片内部总线:AHB4,AHB3,AHB2,AHB1,APB1,APB2,APB3,APB4
            AHB4总线(Cortex-A7 - GPIOE/GPIF/RCC)
    
    芯片外部总线:UART,IIC,SPI,485,CAN,USB
                UART(开发板和PC之间的通信 / 开发板和开发板之间通信)
                IIC(SOC和温湿度传感器之间的通信 / SOC和心率脉搏传感器之间的通信)

串行通信和并行同行的区别?

串行通信:指的是同一时刻只能收或发一个bit位信息,因此只用1根信号线即可。 
    -串行传输:数据按位顺序传输。 
    -优点:占用引脚资源少 
    -缺点:速度相对较慢 

    
并行通信:指的是同一时刻可以收或发多个bit位的信息,因此需要多根信号线才行。
    -并行传输:数据各个位同时传输。 
    -优点:速度快 
    -缺点:占用引脚资源多 

全双工、半双工、单工通信?

根据数据通信的方向,通信分为全双工、半双工、及单工通信。

单工:只支持数据在一个方向上传输

半双工:允许数据在两个方向上传输,但不能同时进行,在某一时刻只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信。

全双工:允许数据同时在两个方向上传输,因此全双工通信时两个单工通信的结合,它要求发送设备和接收设备都有独立的接收和发送能力。

仍以公路来类比,全双工通信就是一个双向车道,两个方向上的车流互不相干;

             

半双工通信则像乡间小道,同一时刻只能让一辆小车通过,另一方向来的车只能等待道路空出来时才能通过; 

       

单工通信则像单行道,完全禁止另一方向的车辆通行。  

同步通信与异步通信?

根据通信中的数据同步方式,分为同步和异步两种,可以根据通信过程中是否使用时钟信号进行简单的区分。

在同步通信中,收发设备双方会使用一根信号线表示时钟信号,在时钟信号的驱动下,双方进行协调,同步数据,通信中通常双方会统一规定在时钟信号的上升沿或下降沿对数据进行采样。

在异步通信中,不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些同步用的信号位,或者把主体数据进行打包,以数据帧的格式传输数据,某些通信中还需要双方约定数据的传输速率,以便更好地同步。

同步通信中,数据信号所传输的内容绝大部分都是有效数据,而异步通信中会包含帧的各种标识符,所以同步通信的效率更高。但是同步通信中双方的时钟允许误差较小,而异步通信双方的时钟允许误差较大。

通信速率?

1. 比特率:Bitrate,每秒传输的二进制位数,单位为比特每秒(bit/s)。

2. 波特率:baudrate,每秒传输的码元数。

码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。如常见的通讯传输中,用0V 表示数字0,5V 表示数字1,那么一个码元可以表示两种状态0 和1,所以一个码元等于一个二进制比特位,此时波特率的大小与比特率一致;如果在通讯传输中,有0V、2V、4V 以及6V 分别表示二进制数00、01、10、11,那么每个码元可以表示四种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的一半。因为很多常见的通讯中一个码元都是表示两种状态,人们常常直接以波特率来表示比特率,虽然严格来说没什么错误,但希望您能了解它们的区别。

(1)UART

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种异步、全双工、串行的通信总线,仅用一根数据接收线和一根数据发送线就能实现全双工通信。典型的串口通信使用3根线完成,分别是:发送线(TXD)、接收线(RXD)和地线(GND),通信时必须将双方的TXD和RXD交叉连接并且GND相连才可正常通信,如下图所示:

image-20240304094633898

 UART通信协议:

所有的串口都遵循串口的通信协议

image-20240304104409077

当不传输数据时, UART 数据传输线通常保持高电压电平。若要开始数据传输,发送UART 会将传输线从高电平拉到低电平并保持1 个时钟周期

当接收 UART 检测到高到低电压跃迁时,便开始以波特率对应的频率读取数据帧中的位

image-20240304104424346

常用的串口协议:8N1
        8N1含义:8位数据位,没有校验位,1个停止位

串口的波特率(单位:bps) : 每s时间数据传输的bit位数。
        常用的串口的波特率为:115200bps,  9600bps

10.简述IIC

I2C总线是PHLIPS公司在八十年代初推出的一种同步串行的半双工总线,主要用于连接整体电路。

总线

描述

通信距离

通信速度

通信双方

UART

异步串行全双工总线

10米

115200bps

两个设备之间的通信

IIC/I2C

同步串行半双工总线

厘米级

100-400K之间

整体电路

SPI

同步串行全双工总线

厘米级

几兆到几十兆之间

整体电路

485总线

异步串行半双工总线

10K米

115200pbs

两个设备之间的通信

CAN总线

异步串行半双工总线

1000米

115200pbs

两个设备之间的通信

 I2C总线为两线制,只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL

image-20240308092552821

I2C硬件结构简单,接口连接方便,成本较低。因此在各个领域得到了广泛的应用。

I2C是具备多主机 多从机系统所需的包括总线裁决功能的高性能串行总线。 当时在同一时刻只能由一个主机和一个从机进行通信,主机通过总线的裁决功能选择使用哪个主机占用总线,每个从机都有一个唯一的从机地址,通过从机地址主机识别和哪个从机进行通信

IIC总线的时序

image-20240308100454039

1. SCL(时钟线)为高电平期间,SDA(数据线)由高电平向低电平的变化表示起始信号

2. SCL(时钟线)为高电平期间,SDA(数据线)由低电平向高电平的变化表示终止信号

3. 起始和终止信号都是---由主机发出---起始信号产生后,总线就处于占用的态;终止信号产生后,总线就处于空闲态。

数据传输时序:

image-20240308101150361

1. I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定;
    只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。

2. 时钟线在低电平期间,发送器向数据线上写入数据,因此数据线上的数据可以改变;
    时钟线在高电平期间,接收器从数据线上读取数据,因此保持数据线上的数据稳定。
    1个时钟周期内完成1个bit位的数据的传输。

字节传输和应答信号:

image-20240308101946674

1. 每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),
    每一个被传送的字节后面都必须跟随一位     应答位(即一帧共有9位)。

    
2. 发送器给接收器发送8位数据之后,接收器需要在第九个时钟周期时,
    给发送器返回一个应答信号或者非应答信号。
    在第9个周期的时钟的低电平期间,接收器向数据线上写入数据,
    在第9个周期的时钟的高电平期间,发送器从数据线上读取数据,
    如果读到的是低电平信号,表示应答信号;
    如果读到的是高电平信号,表示非应答信号。

IIC的寻址:

image-20240308104045743

1. I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。

2. 主机在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/W),
    用“0”表示主机发送数据(W),“1”表示主机接收数据(R)。
    总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己被主机寻址,
    根据R/W位将自己定为发送器或接收器。

主机给从机发送一个字节的通信协议:

image-20240308112104986

 主机设备先发送一个起始信号,然后开始发送数据,首先发送一个8位的从机地址然后第八位是0表示主机设备是写端,然后所有从机和自己的从机地址对比如果和自己的地址相同说明被主机选择了,然后开始通讯,选中的从机设备给主机设备一个应答信号,然后开始主机开始向从机设备发送8位的寄存器地址信息,从机收到后然后给一个ACK,然后主机开始向从机中的设备信息发送数据信息(8-data),从机收到后给主机一个ACK。主机设备然后发送一个停止信号然后通信结束,IIC总线现在处于空闲状态了就。

主机给从机发送连续的多个字节的通信协议:

image-20240308112346336

从机给主机发送一个字节的通信协议:

image-20240308112947727

 主机设备发送起始信号然后开始发送7位的从机地址和1位的W位,然后从机设备开始和主机发出的从机地址比对,和自己的地址相同的就是被主机设备选中的从机设备,然后从机设备给主机设备一个ACK说明自己收到了主机设备的请求,然后主机设备开始发送8位的寄存器地址然后从机设备回复一个ACK,然后主机重新发送一个起始信号然后在发送一个7位的从机地址和一个R位,然后从机给主机一个ACK,然后从机开始向主机发送数据(8-data)然后主机回复一个NACK表示通信结束,然后主机在发送一个停止位,告诉其他设备我不占用总线通信了。

从机给主机发送连续多个字节的通信协议

image-20240308113044705

从机给主机发送数据时,为什么主机接收最后一个字节数据之后,给从机返回非应答信号?
    
    从机只能被动的进行数据的收发,当从机给主机发送一个字节数据之后,
    主机如果给从机返回的是应答信号,则从机会发送下一个字节的数据给主机,
    如果主机给从机返回的是非应答信号,则从机不会发送下一个字节的数据给主机。

11.简述SPI

SPI接口是Motorola 首先提出的同步串行全双工四线外围接口;

SPI接口有<u>2根单向数据线</u>,为全双工通信,目前应用中的数据速率可达几Mbps到几十Mbps的水平。

SPI接口共有4根信号线,分别是:
    设备选择线:片选线,有主机发出,选择和哪个从设备进行通信的,低电平有效
                __   __
                CS   SS   NCS   NSS
    时钟线:同步时钟线,由主机发出。
                SCK   CLK   SCLK 
    串行输出数据线:主机输出数据线, 主机输出从机输入数据线
                MOSI
    串行输入数据线:主机输入数据线,主机输入从机输出数据线
                MISO

image-20240311093543978

四线制SPI总线(单主机多从机)

image-20240311092609363

三线制SPI总线(单主机单从机)

image-20240311093813686

 SPI总线的通信协议:

image-20240311094103817

1. 起始信号: NSS信号线由高变低,是SPI通讯的起始信号
2. 结束信号:NSS信号线由低变高,是SPI通讯的停止信号

3. 数据传输: SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。
    MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出是同时进行的。 
    SPI每次数据传输可以 8 位或 16 位为单位,每次传输的单位数不受限制。
    
    在SCK时钟为上升沿时,主机向MOSI线上写入数据,从机向MISO线上写入数据,
    因此数据线上的数据可以改变;在SCK时钟为下降沿时,主机从MISO线上读取数据,
    从机从MOSI线上读取数据,因此数据线上的数据必须保持稳定。

SPI总线的4种通信模式:

image-20240311100039558

image-20240311100245276

image-20240311100409049

12.简述PWM

PWM全称Pulse Width Modulation:脉冲宽度调制。

13.UART 地线的作用是什么?

14.IIC总线的仲裁机制有哪些?

IIC总线仲裁主要遵循三个机制:
“线与”
    多主机时,总线具有“线与”的逻辑功能,即只要有一个节点发送低电平时,总线上就表现为低电平。
SDA回读
    总线被启动后,多个主机在每发送一个数据位时都要对自己的输出电平进行检测,只要检测的电平与自己发出的电平一致,
    就会继续占用总线。
低电平优先
    由于线与的存在,当多主机发送时,谁先发送低电平谁就会掌握对总线的控制权。

15.SPI通讯物理上最少几根线?

SPI(Serial Peripheral Interface)通信物理上最少需要四根线,分别是:
    MOSI:Master Out Slave In,主设备数据输出,从设备数据输入;
    MISO:Master In Slave Out,主设备数据输入,从设备数据输出;
    SCLK:Serial Clock,时钟线,用于同步主从设备;
    SS:Slave Select,从设备片选信号,用于选择需要与主设备通信的从设备。

16.传输总线时钟的作用是什么?

传输总线通常用于将数据和指令从一个硬件组件传输到另一个硬件组件。
时钟线是一种控制信号,它用于同步总线上的传输操作。
时钟信号的发生使总线上的所有硬件设备能够在同一时刻进行传输操作,这样可以保证数据和指令的传输是准确的和可靠的。
时钟线的频率也是非常关键的,因为它可以限制总线上的传输速度。
如果时钟频率太低,总线上的传输速度就会受到限制,从而导致计算机性能下降。
因此,在设计计算机系统时,总线的带宽和时钟频率通常是需要考虑的重要因素。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值