嵌入式软件常用面试题汇总之 ARM 平台开发相关(1)
ARM架构之常考基础知识汇总
这部分还是有可能会问到的,但基本上只要有了解就足够了。
1.ARM内核主要分为哪几类?他们之间有什么区别?
ARM内核主要分为三类,Cortex-A,Cortex-R,Cortex-M三种。
- 特点:支持复杂操作系统(如Linux、Android),提供强大的处理能力和高级功能(如虚拟化、NEON高级SIMD指令集)。
- 特点:强调低延迟和高可靠性,具有较高的确定性和实时性能。
- 特点:低功耗、低成本,设计简洁,适合实时应用和简单控制任务。
2.ARM的工作模式有哪些?特权模式有哪些?异常模式有哪些?
具体的工作模式可能会因ARM架构的版本而有所变化。以下是基于ARMv7-A架构(常用于Cortex-A系列)的工作模式:
- User(用户模式)
- 用途:运行普通应用程序。
- 特点:权限最低,不能直接访问某些系统资源,避免应用程序对系统的破坏。
- FIQ(快速中断模式)
- 用途:处理快速中断请求。
- 特点:比IRQ模式优先级更高,专用寄存器使中断处理更快。
- IRQ(普通中断模式)
- 用途:处理普通中断请求。
- 特点:用于大多数中断处理,相对于FIQ有较低的优先级。
- Supervisor(特权模式)
- 用途:操作系统的内核态运行。
- 特点:具有较高权限,可以访问所有系统资源,通常用于操作系统核心代码。
- Abort(数据访问中止异常)
- 用途:处理数据或指令访问异常。
- 特点:当发生预取中止或数据中止异常时进入该模式,用于异常处理。
- Undefined(未定义指令异常模式)
- 用途:处理未定义的指令。
- 特点:当处理器遇到未定义的指令时进入该模式,用于异常处理。
- System(系统模式)
- 用途:操作系统的内核态运行(和Supervisor模式类似)。
- 特点:与用户模式类似,但具有更高的权限,允许访问更多的系统资源,通常用于操作系统内核中的一些特定任务。
- Monitor(监控模式 安全模式)
- 用途:用于安全扩展(TrustZone)。
- 特点:在安全状态下运行,处理安全相关的任务和管理非安全模式的切换。
- Hyp(虚拟化模式)(ARMv7 Virtualization Extensions引入)
- 用途:虚拟化管理程序(Hypervisor)运行。
- 特点:专用于虚拟化环境,管理多个虚拟机。
除了用户模式都属于特权模式,其中安全模式级别更高一些。
除了用户、系统、安全模式都属于异常模式。
而比较新的ARMv8-A架构则引入了AArch64(64位)模式,同时简化了模式管理:
- EL0(Exception Level 0):等同于User模式,运行用户应用程序。
- EL1(Exception Level 1):等同于Supervisor模式,运行操作系统内核。
- EL2(Exception Level 2):等同于Hyp模式,运行虚拟化管理程序。
- EL3(Exception Level 3):等同于Monitor模式,处理安全相关任务。
3.介绍下ARM架构常用的寄存器
对于ARMv7架构:
有16个通用寄存器(R0-R15):
- R0-R12:一般用途寄存器,用于存储临时数据和操作数。
- R13 (SP, Stack Pointer):栈指针,用于指向当前栈顶。在函数调用和中断处理中非常重要。
- R14 (LR, Link Register):链接寄存器,用于存储函数调用的返回地址。在函数调用时保存返回地址,函数返回时跳转到该地址。
- R15 (PC, Program Counter):程序计数器,用于指示下一条指令的地址。用来控制指令的顺序执行。
还有一些专用寄存器,主要用于控制和状态管理:
- CPSR(Current Program Status Register):当前程序状态寄存器。包含条件标志、控制位和当前模式信息。
- N(Negative):结果为负数时设置。
- Z(Zero):结果为零时设置。
- C(Carry):运算产生进位或借位时设置。
- V(Overflow):运算产生溢出时设置。
- I(IRQ Disable):禁用普通中断。
- F(FIQ Disable):禁用快速中断。
- T(Thumb State):指示处理器在Thumb状态。
- SPSR(Saved Program Status Register):保存程序状态寄存器。在异常处理时保存被中断的CPSR内容,以便在异常处理完成后恢复。
对于Armv8架构,引入了AArch64模式,增加了一些新的寄存器:
ARM处理器还有一些用于特定功能的寄存器:
- VFP/NEON寄存器:用于浮点和SIMD运算,提供高性能的浮点和向量处理能力。
- 控制寄存器(Control Registers):配置处理器的工作模式和特性,包括系统控制寄存器、辅助控制寄存器等。
4.你了解Neon指令吗?
NEON是ARM架构中的一个扩展,NEON扩展提供了用于向量运算的专用寄存器,用于并行处理多个数据元素,提供高效的向量运算能力,用于高性能的多媒体和信号处理应用。 (关键字:SIMD编程,并行计算)
5.ARM架构和x86架构有什么区别?
ARM架构主要是强调低功耗和高能效,适合移动设备、嵌入式系统和物联网设备。近年来,ARM架构也在服务器和高性能计算领域取得进展。
x86架构强调高性能和复杂指令集,适合桌面计算机、服务器和高性能计算应用,拥有成熟的生态系统和广泛的硬件支持。
- 设计理念&指令集
- ARM采用RISC(精简指令集),指令简单且长度固定,旨在提高每条指令的执行效率和处理器的能效,设计目标是低功耗和高能效,非常适合移动设备和嵌入式系统。
- x86架构采用CISC(复杂指令集计算机),指令长度可变,功能强大,适合广泛的计算任务。设计目标是高性能,适合桌面计算机、服务器和高性能计算应用。
- 应用领域
- ARM架构:
- 移动设备:智能手机、平板电脑。
- 嵌入式系统:物联网设备、家电、汽车电子。
- 低功耗设备:智能手表、医疗设备。
- 服务器和高性能计算(最近几年也在进入这些领域)。
- x86架构:
- 桌面计算机:个人电脑、笔记本。
- 服务器:数据中心、高性能服务器。
- 工作站:专业计算和图形处理工作站。
- 游戏和图形处理:高性能游戏机和图形处理设备。
两种架构各有优劣,适用于不同的应用场景。随着技术的发展,ARM和x86架构在各自的领域内不断创新和优化,以满足不断变化的市场需求。
6.一个32位字0x12345678,在采用bigEndian存储,在内存的排列正确的是?
在大端(Big Endian)存储方式中,高位字节存储在内存的低地址处,而低位字节存储在内存的高地址处。
所以答案是0x12345678。
(采用小端的话则是0x78563412)
7.ARM对异常中断的响应过程?
- 保存处理器当前状态、中断屏蔽位以及各条件标志位;
- 设置当前程序状态寄存器CPSR中的相应位;
- 将寄存器lr_mode设置成返回地址;
- 将程序计数器值PC,设置成该异常中断的中断向量地址,跳转到相应 异常中断处执行。
该专栏是我整理的一些嵌入式软件笔面试常见的题目,在有一定计算机基础上,再过一遍该专栏的内容,对应届生校招来说基本上笔面试就没什么问题了! 有任何疑问可随时与我联系,一起交流一起进步。