嵌入式基础(二)ARM基础
1.精简指令集和复杂指令集的区别⭐⭐⭐
精简指令集 (RISC)
- 精简指令集 (Reduced Instruction Set Computing) 具有简洁、精简的指令集,每条指令执行的操作都很基础,使得处理器设计更简单。
- RISC 处理器通常需要更多的指令来完成复杂的操作,但每条指令执行的时间相对较短。
- 采用固定长度的指令格式,简化了指令译码的工作,提高了流水线执行效率。
- RISC 处理器倾向于通过增加寄存器数量来加速运算,以减少内存访问的频率。
复杂指令集 (CISC)
- 复杂指令集 (Complex Instruction Set Computing) 包含大量复杂的指令,每条指令可以完成更多的工作,包括访存、运算等。
- CISC 处理器的指令通常更多样化,能够在一条指令内完成复杂的操作,因此每次执行的指令数较少。
- 具有可变长度的指令格式,使得指令译码较为复杂,执行速度可能会受到影响。
- CISC 处理器在设计上倾向于通过多种复杂的指令来减少内存访问次数,以提高程序的执行效率。
精简指令集和复杂指令集对比:
指令数量 |
较多 |
较少 |
指令复杂度 |
简单 |
复杂 |
指令执行时间 |
短 |
长 |
指令格式 |
固定长度 |
可变长度 |
寄存器的作用 |
重要,减少内存访问 |
相对不太重要 |
2.什么是DMA⭐⭐⭐⭐
什么是DMA
DMA(Direct Memory Access,直接存储器访问) 提供在外设与内存、存储器和存储器、外设 与外设之间的高速数据传输使用。它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU,在这个时间中,CPU对于内存的工作来说就无法使用。简单来说就是一个数据搬运工。
DMA的意义主要体现在以下几个方面:
- 代替CPU搬运数据,为CPU减负:数据搬运是一个耗时的任务,如果由CPU来执行数据传输操作,会占据CPU的大量时间和计算资源。通过利用DMA机制,外部设备可以直接与内存进行数据传输,无需CPU的参与,从而减轻了CPU的负担,使其能够专注于执行其他更重要的任务。
- 数据搬运工作时效要求高:某些场景下,数据的及时传输非常重要,例如实时流媒体、快速数据采集等应用。DMA能够以高效率和高速度进行数据传输,满足对数据及时性的要求。
- 数据搬运任务缺乏技术含量:相比于其他计算任务,数据搬运任务相对简单,缺乏复杂的计算和逻辑操作。通过将数据搬运任务交给DMA执行,CPU可以节省出宝贵的时间和资源,用于执行更具技术含量的计算和处理任务。
DMA搬运数据
1.搬运什么数据
搬运存储器、外设的数据:
外设指的是spi、usart、iic、adc 等基于APB1 、APB2或AHB时钟的外设。
存储器包括自身的闪存(flash)或者内存(SRAM)以及外设的存储设备都可以作为访问地源或者目的。
2.从哪里搬到哪里
1.存储器→存储器(例如:复制某特别大的数据buf)
2.存储器→外设 (例如:将某数据buf写入串口TDR寄存器)
3.外设→存储器 (例如:将串口RDR寄存器写入某数据buf)
3.说说你了解有哪些存储器类型⭐⭐⭐
存储器类型 |
描述 |
内存 (RAM) |
临时存储数据和程序的主要存储器类型。包括DRAM和SRAM。 |
只读存储器(ROM) |
存储固定数据,如固件和BIOS。 |
快闪存储器(Flash Memory) |
在断电的情况下可以存储数据。常用于SSD和便携设备。 |
磁盘存储器(Disk Storage) |
长期数据存储,包括硬盘驱动器(HDD)和固态硬盘(SSD)。 |
Cache 存储器 |
加速访问主存储器中的数据的存储器,包括CPU缓存和磁盘缓存等。 |
存储介质 |
长期数据备份和存档,包括磁带、光盘等。 |
4.FreeRTOS、uCOS的区别⭐⭐
FreeRTOS和uC/OS是两种实时操作系统(RTOS),用于嵌入式系统开发。它们有一些显著的区别,包括以下方面:
FreeRTOS:
- 具有免费开源的版本,可自由使用和定制。
- 任务调度:FreeRTOS使用基于优先级的抢占式调度策略,具有较低的上下文切换开销。
- 内核对象:FreeRTOS提供一些基本的内核对象,如任务、队列和定时器等,具有相对简单的功能。
- 内存管理:可以选择静态内存分配或动态内存分配,可根据需求进行配置。
- 社区支持:具有活跃的社区支持,频繁进行更新和改进。
uC/OS:
- 提供免费和商业版本,商业版本提供额外的功能和支持。
- 任务调度:可配置为抢占式或协作式调度,灵活适应不同应用需求。
- 内核对象:提供丰富的内核对象,例如任务、信号量、邮箱、互斥锁等,功能更为全面。
- 内存管理:需要使用外部内存管理功能,用户可以根据需求选择适当的内存管理机制。
- 社区支持:社区相对
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本人2022年毕业于山东大学,目前就职intel。打算把之前校招时做的笔记通过专栏发出来,本专栏适合于C/C++、嵌入式方向就业的同学,本篇面经总结数千篇面经的知识集合,实时更新全网最新的嵌入式/C++最新内容,囊括了C语言、C++、操作系统、计算机网络、嵌入式、算法与数据结构、数据库等一系列知识点,在我看来这些是求职者在面试中必须掌握的知识点。最后呢祝各位能找到自己合适的工作。