什么是RISC、CISC?

RISC 精简指令集计算机  

CISC 复杂指令集计算机

pc,lr,sp,cpsr,spsr寄存器的作用

  • pc寄存器   指向当前代码执行指令的下一条指令
  • lr寄存器    保存函数的返回地址
  • sp寄存器    管理栈区空间
  • cpsr寄存器    保存程序进行到某一步的状态
  • spsr寄存器    保存异常发生时cpsr寄存器的状态

什么是MMU?

内存管理单元 ,用于管理虚拟内存到物理内存的映射,从而达到提高物理内存的利用率。

什么是CACHE,ICACHE,DCACHE?

Cache  高速数据缓存,直接从Cache访问数据,提高CPU访问数据的效率

  • icache   指令缓存,用于指令            
  • dcache    数据缓存,用于数据

单总线和多总线通信区别

单总线通信与一个外设进行通信时,其他外设无法连接

AHB总线和APB总线区别

  • AHB总线,先进高速总线,连接通信速率较快的外设
  • APB总线,先进外设总线,连接通信速率较慢的外设

编译程序经历哪些阶段

  • 预处理:(1) 展开头文件(2)宏定义替换(3)条件编译
  • 编译:将c语言编译程汇编语言
  • 汇编:将汇编语言编译为二进制计算机语言
  • 链接:链接成为一个可执行的文件

imx6ull的处理器内核及其指令集版本?

单核ARM    Cortex-A7,指令集为ARMv7-A

ARM有几种工作方式?分别是什么?

  1. User:非特权模式,大部分任务执行在这种模式
  2. FIQ:当一个高优先级中断产生时会进入这种模式
  3. IRQ:当一个低优先级中断产生时会进入这种模式
  4. Supervisor:当复位或软中断指令执行时会进入这种模式
  5. Abort:当存取异常时会进入这种模式
  6. Undef:当执行未定义指令时会进入这种模式
  7. System;使用与user模式相同寄存器集的特权模式

异常处理流程

1、当异常产生时, ARM core:

拷贝 CPSR 到 SPSR_ <mode>

2、设置适当的 CPSR 位:

改变处理器状态进入 ARM 态

改变处理器模式进入相应的异常模式

设置中断禁止位禁止相应中断 (如果需要)

保存返回地址到 LR_ <mode>

设置 PC 为相应的异常向量

3、返回时, 异常处理需要:

从SPSR_<mode>   恢复CPSR

从LR_<mode>   恢复PC

Note:这些操作只能在 ARM 态执行。

ARM9和CortexA内核中分别有多少个寄存器?

ARM9内核中有37个处理器,CortexA内核中有40个处理器

什么是立即数?12位立即数判断规则?

b,bl,bx指令的区别

栈的分类及特性

ARM内核中使用的是哪种栈?

ARM中汇编调用c函数,c调用汇编函数有什么规则?

GNU工具链中的gcc,ld,objcopy,objdump都是什么?各自有什么作用?

链接脚本文件Imx6ull.lds中都设置了什么?

什么是单工、半双工、全双工?

单工:收发双方固定,方向只有一个

半双工:收发双方不固定,但同一时刻只有一个方向

全双工:收发双方不固定,同一时刻可以存在两个方向

什么是串行通信,什么是并行通信?

串行:一条信号通道,一位一位发送

并行:一组信号通道,多位同时发送,一般配备时钟线

什么是异步通信,什么是同步通信?

异步:没有统一时钟来约束通信双方

同步:有统一的时钟线约束

串行通信属于哪一类?

全双工异步串行

串口通信的电气表达有哪些?

  • 物理层(接口):

TTL:晶体管电平,0-3.3V或者0-5V,距离:厘米级

RS232:负逻辑,逻辑高电平:(-3 ~ -15),有一定抗干扰能力,距离:米级

RS485:差分信号,抗干扰能力强, 电平不定,距离:百米级

  • 引脚:

TXD / TX:发送数据(Transmit Data)

RXD / RX:接收数据(Receive Data)

GND:地(必须共地)

  • 参数:

波特率:9600、115200 bps

数据位:8 bit(最常用)

停止位:1 bit(常用)

校验位:None / Even / Odd

流控:None / RTS/CTS

什么是中断

CPU在处理某件事情的时候,来了一个紧急事件请求,要求CPU停止当前的工作去处理这个紧急请求,处理完之后再回到之前被打断的地方,继续进行原来的工作

中断处理流程

  1. 中断源发出中断请求 
  2. CPU检查是否响应中断以及该中断是否被屏蔽
  3. 比较中断优先级
  4. 保护现场
  5. 执行中断服务函数
  6. 恢复现场

什么是PLL,Prescaler,FPD,他们各自有什么作用?

PLL:锁相环电路,升频

Prescaler:预分频器,降频

PFD:相位分数分频,

imx6ull中有几个PLL,几个PFD?

7个PLL

8个PFD

简述ARM PLL的配置过程

1、先选择osc_clk,让step_clk为24Mhz

2、将PLL1的输出改为step_clk让ARM暂时工作在24Mhz

3、设置PLL之后的二分频,避免ARM内核故障

4、配置PLL为1056

5、最后改为pll1_main_clk

imx6ull中的EPIT和GPT的工作原理是什么?

EPIT:增强型周期中断定时器,专注高精度周期定时与延时,是 “设置即忘” 型定时器。利用计数器向下递减计数,当减为设定值时产生中断,利用中断进行需要执行的操作

GPT:通用目的定时器,利用计数器向上递增计数,每次测量新值与旧值进行比较,当新值和旧值的差值达到设定值时,满足定时条件。

IIC通信的时序理解(很重要

1、总线空闲时

时钟线SCL和数据线SDA都为高电平,谁先在数据线上产生一个低电平0,谁就赢得了总线的控制权(总线抢占),即认为发送了一个start信号,通信开始,作为主机(发送方);

2、主机发送数据时:遵循MSB优先原则

SCL为低电平时,只能发送方改变SDA,接收方不能采样SDA

SCL为高电平时,只能接收方采样SDA,发送方需保证SDA稳定

每一次通信都是先发送从机地址(7位)+数据流向位(0:主发从接;1:从发主接)

发送完8位数据时,在第9个时钟周期必须发送应答类型(ACK/NACK)

3、数据传输

(都先要主机发送从机地址+数据流向位(0:主发从接)+要写、读的寄存器地址)

4、写时序(主机发送,从机应答)

主机发送一字节数据,从机回复一个应答类型,从机接收到ACK就继续向从机发送数据,直到收到NACK应答类型

5、读时序(从机发送,主机应答)

重新发送start信号;再次发送从机地址,主机切换数据流向位(1:从发主接),开始连续读取数据(先应答,再读取数据,发ACK告诉从机我开始读了,你发送数据),直到主机读到倒数第二个数据时,发给从机NACK,告诉从机,下一个数据是最后一个了,你不用再发送数据了),读取结束发送stop。

6、stop停止

SCL保持高电平时,SDA从低到高,并保持稳定,视为通信停止

什么是ADC?

ADC:模拟到数字转换器

它是一种电子设备或模块,用于将连续变化的模拟信号转换为离散的数字信号,以便数字系统(如微处理器,微控制器等)能够对其进行处理和分析。

这里的模拟信号是狭义的模拟信号,一般指的是模拟电压信号转换为数字信号

什么是ADC的基准电压?

基准电压(Vref) 是 ADC 进行模数转换的参考标尺,代表 ADC 能测量的最大输入电压。

ADC的工作原理是什么?

ADC(Analog-to-Digital Converter,模数转换器)的核心作用是:把连续的模拟电压信号,转换成离散的数字量。

核心原理  逐次逼近型

  1. 采样保持:先采样输入的模拟电压,并用保持电路锁定这个值,避免转换过程中电压变化。
  2. 逐次比较:从最高位到最低位,依次用 DAC 生成的参考电压和输入电压比较,确定每一位是 0 还是 1。
  3. 量化编码:把比较结果组合成一个二进制数字量,就是最终的 ADC 采样值。
  4. 结果输出:把数字量存储到寄存器,供 CPU 读取。

简单说:ADC 就是用基准电压做尺子,把模拟电压 “量” 成数字。

什么是ADC的分辨率?常见的分辨率有哪些?

分辨率是 ADC 能区分的最小电压变化量,由 ADC 的 ** 位数(bit)** 决定,代表 ADC 能输出的数字量的位数。

  • 位数越多,能区分的电压越小,测量越精细。
  • 公式:分辨率 = 基准电压 / (2^ 位数)

常见的分辨率有8位,10为,12位,16位

假设采用12位分辨率,基准电压为3.3V,量化结果为n时的实际电压应该如何计算?

实际电压 V = n × (基准电压 Vref / 2^ 分辨率)

量化结果n 基准电压Vref 分辨率 实际电压V
0 3.3 12 0
1 3.3 12 0.8mv
2 3.3 12 1.6mv
n 3.3 12 V = 3.3/4096*n

ARM的启动流程

你了解IMX6ULL 时钟系统吗?

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐