嵌入式合集

参考博客:https://blog.csdn.net/W546556/article/details/126247965

1. CPU、MPU、MCU、SOC、SPOC区别

  • CPU 是指运算和控制核心,CPU由运算器、控制器、寄存器和总线组成,CPU的运作原理可以分为四个阶段,提取,解码,执行,写回;CPU从存储器或高速缓冲存储器中提取指令,放入指令寄存器解码,并执行指令;
  • MPU是微处理器,通常代表一个功能强大的CPU
  • MCU是指微控制器,是由CPU和RAM,ROM,定时器,计数器和多个IO接口集成在一个芯片上,比如51
  • MCU和MPU的区别在于能否直接执行代码,MCU可以,MPU需要外接RAM、ROM;
  • SOC是指片上系统,也就是系统级芯片,可以运行操作系统
  • SPOC是指硬件配置和软件配置都可以进行修改的芯片,就像FPGA

2. 交叉编译

  在一种计算机环境中能够运行的编译程序,也能够在另一种环境下运行的代码;

交叉编译:
          在一个平台上生成另一个平台上的可执行代码;

为什么需要交叉编译
  因为有一些目的平台上不允许或者不能安装我们需要的编译器,而我们又需要这个编译器的编译特征;有时是因为目的平台上资源匮乏,无法运行我们需要的编译器等;

3. 嵌入式基于ROM和基于RAM的运行方式的区别

RAM:随机存取存储器(英语:Random Access Memory,缩写:RAM),也叫主存,是与CPU直接交换数据的内部存储器。掉电消失

ROM:(只读内存(Read-Only Memory)简称)英文简称ROM。ROM所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。掉电不消失。
 

基于RAM:
1、需要先把硬盘和其他介质的代码先加载到ram中,加载过程一般有重定位的操作

2、速度比基于ROM快,可用的RAM比ROM少,所有的代码和数据必须放在RAM中;

基于ROM
1、速度比较慢,因为会有一个把变量、部分代码从存储器(硬盘、flash)搬移到RAM的过程

2、可用的资源比RAM多;

4. 哈弗结构和冯诺依曼结构

定义:

  冯诺依曼结构是指采用指令和数据统一编址,使用同条总线传输,CPU读取指令和数据的操作没法重叠

  哈佛结构是采用指令和数据独立编址,使用两条独立的总线传输,CPU读取指令和数据的操作可以同时进行

利弊:

  冯诺依曼结构主要用在通用计算机领域,需要对存储器中的代码和数据频繁的进行修改,统一编址有利于节约资源;

  哈佛结构主要用于嵌入式计算机,程序固化在硬件中,有较高的可靠性、运算速度和较大的吞吐

5. arm流水线技术

  流水线技术就是通过多个功能部件并行工作来缩短程序执行时间,提高处理器核的运算效率和吞吐量(就是相当于1、取指(指令),2、译码(识别将要被执行的指令)3、执行(处理指令并将结果写回寄存器));

6. arm有多少32位寄存器

  ARM处理器有37个寄存器,它包含31个通用寄存器和6个状态寄存器

7. ARM指令集分为几类

  两类,Thumb指令集和ARM指令集,ARM指令长度为32位,Thmub指令集长度为16位;所以使得arm处理器可以执行16位指令又能执行32位指令,从而增强了ARM内核功能

8. ARM处理器有几种工作状态

  一般有ARM和Thmub两种状态,并且可以在两者之间相互切换

  1、ARM状态:此时处理器执行32位对齐ARM指令,大部分工作在此状态

  2、Thmub状态:此时处理器执行16位的半字对齐的Thmub指令;

9. ARM体系中函数调用时的参数是怎么传递的?

  当参数小于等于4的时候通过r0-r3寄存器来进行传递的,当参数大于4的时候,通过压栈的方式进行传递;

10. 锁相环

  功能就是产生分频倍频时钟

11. 中断和异常的区别

  中断是指外部硬件产生一个电信号从CPU中断引脚进入,打断CPU运行;

  异常是指软件运行过程中发生一些必须要处理的事情,CPU自动产生一个陷入来打断CPU运行。异常在处理的时候必须考虑到处理器的时钟同步,比如在处理器执行到因编译错误而导致的错误指令时,处理器就给一个异常;

12. 中断和DMA的区别

  DMA:是一种无须CPU参与的,就可以让外设和内存之间进行数据双向传递的硬件机制,使用DMA乐意不借助CPU就实现数据传输,增大系统的吞吐量

  中断:是指在CPU执行程序过程中,出现了某一些突发事件,CPU必须暂停当前执行的程序,转去处理突发事件,处理完毕以后,CPU又返回源程序被中断的位置并继续执行

  所以DMA和中断最主要的区别就是DMA不需要CPU参与,但是中断是需要CPU参与的。

13. 中断的响应执行流程

  中断的响应流程:CPU接受中断->保护中断上下文跳转中断处理程序->执行中断处理程序->恢复中断现场。

14. 中断和轮询

中断是指CPU在被动状态下接受设备的信号,而轮询则是CPU主动去查询该设备是否有请求;

15. 同步传输和异步传输

同步传输是指,需要外界的时钟信号,把数据字节组合起来一起发送,速度快

异步传输是指,数据每次按照一个字节进行传输,速度慢

16. GCC指令

1、预处理
gcc -E test.c -o test.i    //把预处理的结果导出到test.i文件中

2、编译
gcc -S test.c -o test.s    //编译器将test.i翻译成汇编语言,将结果保存在test.s中
 
3、汇编
gcc -c test.s -o test.o    //将汇编代码编译为目标文件,但不链接
 
4、链接
gcc test.o -o test    //将生成的目标文件test.o生成最终的可执行文件test
 
一步编译到位
gcc test.c -o test
 
多文件编译
gcc test1.c test2.c -o test

 17. 硬中断和软中断的区别

硬中断:
1、硬中断是由硬件产生的,每个设备都有自己的中断请求

2、硬中断可以直接中断CPU

软中断:
1、软中断是由当前正在运行的进程产生的

2、软中断通常是对一些IO的请求,这些请求会调用内核中可以调度IO发生的程序,对于某些设备,IO请求需要被立即处理

3、软中断并不会直接中断CPU,只有当前正在运行的代码才会产生软中断

区别:
1、软中断是执行中断指令产生的,硬中断是外设引发的

2、软中断的中断号是由指令直接发出的,无需中断控制器控制,硬中断的中断号是由中断控制器提供的

3、硬中断是可以屏蔽的,软中断不可以屏蔽

4、硬中断处理程序要保证可以快速的完成任务,这样程序的执行才不会等待太长时间,称为上半部

5、软中断处理中断未完成的工作,属于下半部;

18. 中断为什么要分上半部和下半部

  Linux中断分为硬件中断和异常(内部中断),调用过程为,外部中断产生->发送中断信号到中断控制器->通知处理器产生中断的中断号;

  将中断处理一分为二,上半部登记新的中断,快速的处理简单的任务,剩下耗时的处理留给下半部处理,下半部处理可以被中断,上半部处理不可以被中断;

 

posted @ 2023-08-09 20:31  莫莫君不恋爱  阅读(18)  评论(0编辑  收藏  举报