☆嵌入式硬件的学习:ARM 裸机 知识点总结
什么是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有几种工作方式?分别是什么?
- User:非特权模式,大部分任务执行在这种模式
- FIQ:当一个高优先级中断产生时会进入这种模式
- IRQ:当一个低优先级中断产生时会进入这种模式
- Supervisor:当复位或软中断指令执行时会进入这种模式
- Abort:当存取异常时会进入这种模式
- Undef:当执行未定义指令时会进入这种模式
- 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停止当前的工作去处理这个紧急请求,处理完之后再回到之前被打断的地方,继续进行原来的工作
中断处理流程
- 中断源发出中断请求
- CPU检查是否响应中断以及该中断是否被屏蔽
- 比较中断优先级
- 保护现场
- 执行中断服务函数
- 恢复现场
什么是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,模数转换器)的核心作用是:把连续的模拟电压信号,转换成离散的数字量。
核心原理 逐次逼近型
- 采样保持:先采样输入的模拟电压,并用保持电路锁定这个值,避免转换过程中电压变化。
- 逐次比较:从最高位到最低位,依次用 DAC 生成的参考电压和输入电压比较,确定每一位是 0 还是 1。
- 量化编码:把比较结果组合成一个二进制数字量,就是最终的 ADC 采样值。
- 结果输出:把数字量存储到寄存器,供 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 时钟系统吗?
更多推荐



所有评论(0)