说明:
- 面试群,群号: 228447240
- 面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);
- 文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但在这里博主希望每一个题目,大家都要经过认真思考,答案不重要,重要的是通过题目理解所考知识点,好应对题目更多的变化;
- 博主与大家一起学习,一起刷题,共同进步;
- 写文不易,麻烦给个三连!!!
目录
1.SPI总线有四种工作模式
答案:
极性和相位------>确定了是上升沿发数据还是收数据
SPI总线有四种工作模式,取决于极性CPOL和相位CPHA
1) CPOL表示空闲时的状态
CPOL=0,空闲时SCLK为低电平
CPOL=1,空闲时SCLK为高电平
2)CPHA表示采样时刻
CPHA=0,每个周期的第一个时钟沿采样--->读取数据
CPHA=1,每个周期的第二个时钟沿采样----->读取数据
2.IIC和SPI、串口区别
答案:
相同点
均采用同步,串行
均采用TTL电平
均采用主从方式
不同点
IIC为半双工,SPI为全双工
IIC有应答机制,信号,SPI无
IIC的时钟和极性是固定的(空闲时高电平,SCL为高电平时读取数据),SPI是可以变化设置的
寻址方式不同,IIC是发送一个字节去寻址,SPI通过片选位选择
串口:异步全双工串行,低--->高
3.CAN总线是什么
答案:
CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信协议。在北美和西欧,CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以 CAN 为底层协议专为大型货车和重工机械车辆设计的 J1939 协议。
CAN协议经过ISO标准化后有两个标准ISO11898标准和IS011519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准(闭环),而IS011519-2是针对通信速率为125Kbps以下的低速通信标准(开环)。
CAN的组成一般有两种方式:
- CPU与CAN控制器集成到一起、再外接CAN收发器;
- 另一种是CPU与CAN控制器分开的,使用的时候需要配置CAN接口电路,比较麻烦。
4.CAN总线通讯方式
答案:
CAN总线通信系统是串行通信的一种,要优于RS485总线,是目前比较常用的一种工业总线,如汽车的电气部分就采用CAN总线实现通信。
与I2C、SPI等具有时钟信号的同步通讯方式不同,CAN通讯并不是以时钟信号来进行同步的,它是一种异步半双工通讯。(同步即在同一个时钟驱动下数据通信,半双工即接受与发送不能同时进行)
5.CAN的5种数据帧
答案:
数据帧:数据帧以一个显性位(逻辑 0)开始,以 7 个连续的隐性位(逻辑 1)结束,在它们之间,分别有仲裁段、控制段、数据段、 CRC 段和 ACK 段。
帧起始,以显性电平开始,用于通知各个节点将有数据传输;
仲裁段:通过仲裁ID来决定优先级,优先级高的ID先把数据发出去,利用隐性和显性电平作为仲裁,谁先出现隐性电平,谁就先失去对总线的占有权。标准格式ID是11位,扩展格式ID为29位。
6.CPU、内存、虚拟内存、硬盘的关系
答案:
1.cpu: cpu是从内存或者缓存中拿到指令,放入寄存器,并对指令译码分解成一系列微操作,然后发出控制命令,执行微操作
2.问题1:CPU并不能直接调用存储在硬盘上的系统、程序和数据,所以必须先将硬盘上的数据、内容存储在内存中,这样才能被CPU读取,所以内存是硬盘和CPU的中转站
3.问题2:内存一般是比较小的,当内存超出额度之后,就会把硬盘上的部分空间模拟成内存----->虚拟内存,将暂时不用的数据或程序保存到虚拟内存,等到需要的时候再调用
总结:CPU是工厂,内存是中转站,硬盘是仓库,虚拟内存是临时中转站
7.ARM结构处理器分类
答案:
1.嵌入式微处理器 ------>具有32位以上的处理器
2.嵌入式微控制器 -------->单片机,以某种微处理器内核为核心,芯片内部集成ROM,RAM等功能
3.嵌入式DSP处理器------>擅长数字信号处理
8.嵌入式微处理器和嵌入式DSP有什么区别?
答案:
偏重的方向不一样,微处理器偏向于界面的操作,他的速度和,计算能力一般,一般使用在消费电子方面。
DSP的计算能力较强,对于数据的处理能力极好,所以一般用作计算,比如军用,伺服电机。
9.嵌入式设备的存储
答案:
通用计算机采用了Cache(高级缓冲存储器)、主存储器(RAM,内存)、外部存储器组成的三级存储体系;
速度:寄存器>Cache > 内存 (RAM > ROM)> 硬盘
嵌入式存储器类型
10.RAM和ROM
答案:
RAM
RAM叫做随机存储器,是直接和CPU进行交互的内存(主存),通常作为正在运行程序和临时数据的存储煤质。
RAM分类:
静态SRAM: SRAM,速度比DRAM快,不需要时钟同步
动态DRAM:同步动态RAM ,需要周期性刷新,密度比SRAM高,需要时钟同步
片内ram集成在CPU芯片内部,它是在CPU设计时就加上的,它使用和CPU几乎一样的制作工艺和材料,而且增加了芯片的大小,所以成本比较高,一般也就只有几十K字节,好钢当然要用在刀刃上,片内ram用来存放中断处理handler、RTOS调度器、任务上下文切换、内存分配释放等使用频率最高的代码和中断堆栈这种读写频率极高的内存区,如果有多余的部分也可以放一些经常被引用到的全局变量
片外RAM一般就是采购的市面上的成品,如Samsung,Hynix,Apmemory等,价格相对便宜,其容量的可选范围也较为宽松,从几M到几G的都有,它可以用来存储全局变量,bss,以及我们常用到的malloc所分配的堆空间等。
ROM
只读存储器,RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存
ROM一般是有两种,
一种是指集成在CPU芯片内部的一块只读存储区域,一般是几K到几十K字节大小,用来存储系统刚上电时对cpu和一些核心外设(如时钟,串口,MMU、DRAM、Flash等)进行初始化的代码,它在程序运行中也是不可写的,要对它执行写操作只能使用硬件烧写器进行,也就是一般所说的下载程序,这部分的代码在芯片测试阶段可以进行编程器下载更新,量产后一般就会固化,不能做任何修改的;
ROM另一种指的就是flash,它和硬盘有一个显著的区别:flash里存放的代码是可以由CPU直接取指并执行的,而PC上硬盘里的程序都需要加载到内存里才能运行,
falsh和RAM对比
flash的写操作要比RAM麻烦的多了,flash在写之前需要发送多个命令字来握手,还要先对即将要写的地址所在的扇区进行整体擦除,就是把该扇区里的内容全设为1,所谓写flash就是把其中的一些bit设为0;更要命的是,flash的每个独立bit位的写次数是有上限的,市面上大部分的产品都只能写10~100万次。多说一句,每个bit位的寿命是独立的,如果一个bit位在擦除和写的动作中,它的值始终为1,则不会有影响;例如反复对一个地址写0xF0,则不会影响高4bit的寿命,而低4bit每次都要先擦成1,再写入0,这样就会降低其寿命
思考:
引导程序(系统的初始化代码)就必须放到ROM里。在CPU刚上电时,只能去一个默认的地址去取第一条指令,开始干活,这个地址都是映射到片内的ROM里,原因很简单,此时,作为外设的flash和DDR等都还没有初始化,CPU根本无法从它们那里读写数据,片内ROM里的这些代码就需要完成这些模块的初始化。另外,一个项目的处理器和主要外设确定了以后,这部分初始化代码在很长的时间里,都不需要做任何修改的。