嵌入式软件常用面试题汇总之 ARM 平台开发相关(1)

ARM架构之常考基础知识汇总

这部分还是有可能会问到的,但基本上只要有了解就足够了。

1.ARM内核主要分为哪几类?他们之间有什么区别?

ARM内核主要分为三类,Cortex-A,Cortex-R,Cortex-M三种。

  • ARM Cortex-A系列[A代表Applications]:
  • 用途:主要用于高性能应用,如智能手机、平板电脑和高端嵌入式系统。
    • 特点:支持复杂操作系统(如Linux、Android),提供强大的处理能力和高级功能(如虚拟化、NEON高级SIMD指令集)。
  • ARM Cortex-R系列[R代表Real-Time Embedded]:
  • 用途:主要用于实时系统,如汽车电子、工业控制、存储控制器。
    • 特点:强调低延迟和高可靠性,具有较高的确定性和实时性能。
  • ARM Cortex-M系列[M代表Microcontroller]:
  • 用途:主要用于微控制器应用,如物联网设备、家电、传感器和嵌入式系统。
    • 特点:低功耗、低成本,设计简洁,适合实时应用和简单控制任务。

    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模式,增加了一些新的寄存器:

  • X0-X30:64位通用寄存器,其中X30用作链接寄存器(LR)。
  • SP(Stack Pointer):栈指针,用于指向当前栈顶。
  • PC(Program Counter):程序计数器,指示下一条即将执行指令的地址。
  • NZCV(Negative, Zero, Carry, Overflow flags):条件标志,与CPSR中的条件标志类似。
  • ELR_ELn(Exception Link Register for Exception Level n):异常链接寄存器,保存异常发生时的返回地址。
  • SPSR_ELn(Saved Program Status Register for Exception Level n):保存程序状态寄存器,在异常处理时保存被中断的状态。
  • 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,设置成该异常中断的中断向量地址,跳转到相应 异常中断处执行。
    #牛客在线求职答疑中心##牛客解忧铺##面试题##嵌入式开发工程师##嵌入式#

    该专栏是我整理的一些嵌入式软件笔面试常见的题目,在有一定计算机基础上,再过一遍该专栏的内容,对应届生校招来说基本上笔面试就没什么问题了! 有任何疑问可随时与我联系,一起交流一起进步。

    全部评论
    觉得本文有用的话,给博主点个赞吧!!谢谢大家!!
    2 回复 分享
    发布于 2024-06-16 17:58 广东
    都一个月了,生产队的驴都不敢这么歇
    1 回复 分享
    发布于 2024-07-29 11:49 福建

    相关推荐

    2024-12-18 12:05
    华东师范大学 golang
    点赞 评论 收藏
    分享
    评论
    2
    12
    分享

    创作者周榜

    更多
    牛客网
    牛客企业服务