嵌入式八股 - ARM体系结构一
1、嵌入式中的大端、小端
大端模式:高位字节存放在低地址,低位字节存放在高地址。
小端模式:低位字节存放在低地址,高位字节存放在高地址。
0x12345678在内存中的存储方式如下:
内存地址 | 0x00 (低地址) | 0x01 | 0x02 | 0x03 (高地址) |
大端模式 | 12 (高位) | 34 | 56 | 78 (低位) |
小端模式 | 78 (低位) | 56 | 34 | 12 (高位) |
由此看,大端模式符合人类阅读习惯。
2、x86、ARM架构中都是大端、还是小端
x86架构往往是小端模式。
ARM要根据情况,支持大端模式和小端模式。大多时候运行在小端模式。
3、递归在单片机中使用会有什么问题
- 栈空间耗尽:每次函数调用都需要在栈上分配一块内存,用来保存局部变量、参数和返回地址。而单片机内存一般很小,很容易耗尽。
- 实时性差:因为递归运行,无法明确调用路径以及结束时间点,不符合实时系统需求。
4、前台模式和后台模式
单片机中后台模式指的是主程序的while循环,前台模式则是指中断服务程序。
5、什么是交叉编译?为什么需要交叉编译?
交叉编译指在一种计算环境中编译出能够在另一种技术环境下执行的代码的过程。
交叉编译原因:
- 目标平台资源受限,比如在使用STM32F103x时,需要在电脑上编译烧录。
- 目标平台环境缺乏,比如新购买的板子,其上编译环境还没有搭建好,无法在其上直接编译
- 开发效率问题,通常来说电脑性能更加强大,修改方便、编译更快
6、ARM工作模式?
ARM主要有7中工作模式,包括用户模式、系统模式、管理模式、普通中断模式、快速中断模式、数据访问中止模式、未定义模式。除用户模式外的其他处理器模式皆为为特权模式。
用户模式 | USR | 非特权 | 程序正常执行状态,权限最低,无法直接访问硬件。 |
系统模式 | SYS | 特权 | 运行特权级操作系统任务,使用与用户模式相同的寄存器。 |
管理模式 | SVC | 特权 | 系统复位或执行软中断指令(SWI/SVC)时进入,是 OS 内核的核心模式。 |
快速中断模式 | FIQ | 特权 | 处理高速数据传输或高优先级中断,拥有独立寄存器组以减少上下文切换开销。 |
普通中断模式 | IRQ | 特权 | 处理通用的低优先级中断。 |
中止模式 | ABT | 特权 | 内存访问异常(如缺页、权限错误)时进入,用于实现虚拟内存。 |
未定义模式 | UND | 特权 | 执行未定义指令时进入,常用于硬件协处理器的软件仿真。 |
其他可能还会有监控模式(MON)和虚拟化监控模式(HYP)。
7、ARM流水线
处理器在执行一条指令的时候通常需要下列几个步骤:取址、译码、取操作数、执行、访存以及写回。
处理器如果在执行一条指令的时候都是执行完一条指令,再去取下一条指令执行,这种执行方式会浪费许多时间,会有很多模块处于等待状态。因此,如果能在当前一条指令结束之前就开始下一条指令的操作,那么就会减少一些模块的等待时间,这个就是流水线技术。
常用的流水线比如三级、五级流水线等,三级流水线将一条指令分为取指、译码、执行;而五级流水线将一条指令分为取指、译码、执行、访存、写回。
8、ARM指令集分为哪几类?
按照功能进行分类:数据处理指令、加载/存储指令、分支指令、程序状态寄存器处理指令、协处理器指令、异常产生指令。
按编码格式(即指令长度)分为三种状态:ARM 指令集,32位固定长度指令;Thumb 指令集,16位固定长度指令;Thumb-2 指令集,16位和32位混合编码。
9、Arm处理器工作状态分为几种?
ARM 处理器的工作状态主要取决于其指令集架构的演进。有ARM 状态、Thumb 状态、Thumb-2 状态。
10、指令集、CPU核心、CPU、SoC的区别
指令集通常是指ARMv7指令、ARMv8指令等这些指令集架构,这部分定义了整体的架构,比如定义了ARM的工作模式、中断的处理方法。CPU核心是指令集的具体实现,例如Cortex-A7就是依据ARMv7指令集来实现的CPU核心。而STM32MP157则是意法半导体公司根据Cortex-A7的CPU核心设计出来的一款SoC,SoC就是一个芯片内部除了有CPU外,还集成了很多控制器单元,例如LCD控制器单元和USART控制器单元等等。
#嵌入式##嵌入式面试##嵌入式八股##嵌入式笔面经分享##我的求职进度条#涉及嵌入式全方面知识。根据个人学习以及面试所得,并且加上自己见解、理解记忆方法。 大致内容:C、C++、ARM、QT、Linux驱动、FreeRTOS、Linux应用编程、数据结构、操作系统、计算机网络、算法以及其他嵌入式相关内容。
