- Cortex-M 功耗强、耗电少、RISC结构,但不是多周期操作
- 素有处理器都有三种状态:
- ARM状态
- Thumb状态
- Thumb-2状态
7.
- FIQ:用来处理高速中断
- IRQ:用来普通中断处理
- ABT:中止模式
- SYS:特权级的操作系统任务
- ARM处理器的优点:指令流水线技术,单周期操作
- 存储机制(内核):冯诺依曼结构和哈佛结构
- 体系结构(指令集结构):RISC和CISC
12.
- ARM处理器内部的总线标准是AMBA
- ARM处理器的指令编码不全为32位,ARM处理器本身是32位设计,但也配备16位指令集
- Cortex-M是microcontroller,故控制
- ARM处理器都是RISC结构
- Cortex-A最适合高端应用
- R13为堆栈指针
- R14为链接寄存器
- R15为PC使用
- CPSR为当前程序状态寄存器(备份程序状态寄存器SPSR)
- ARM采用RISC指令集架构!!!!!!!!!!!!!
- SBC:算数运算指令,不属于逻辑运算助记符
- Cortex-M 功耗低,体积小
- Cortex-A工作效率高,性能好
- Cortex-R 响应速度快,成本低,功耗低
- 高端ARM处理器有Cache
- Cortex-M0内部的WIC为唤醒中断控制器
- 成本低和功耗低:Cortex-R
- 处理器有三种状态:
- ARM状态
- Thumb/Thumb-2状态
- 调试状态
- 基址加变址寻址是将基址寄存器的内容与变址寄存器的内容相加,形成操作数的有效地址。在 ARM 指令系统中,数据传送指令并不支持基址加变址寻址方式,一般像存储器访问指令(如 LDR、STR 等)会使用基址加变址寻址,所以该选项错误。
- A53-A57都是64位ARM处理器
- MPU:存储器保护单元,对存储器进行保护的可选组件
MMU:
- 虚拟地址到物理地址的映射
- 存储器访问权限控制
- 对Flash、SRAM、SDRAM、ROM等不同类型的存储器进行统一管理
- ARM 体系结构中,CP15 协处理器的控制寄存器(Control Register)在很多 ARM 内核中被用于控制数据的字节序(即大端或小端模式)。
- CPSR的条件码标志含义:
- N为符号标志,N=1代表为负数;
- Z为全零标志,z=0表示运算的结果非零
- C为进借位标志,加法有进位时C=1;减法与加法相反
- Q为DSP运算是否溢出标志
- V为溢出标志
- I为中断禁止控制位
- F为禁止中断FIQ控制位
- T为ARM与Thumb指令切换,T=1时ARM处理器进入Thumb状态
- M0内部的WIC为唤醒中断控制器
- VFP是ARM处理器用于浮点数运算的部件
- BIC:bit clear也就是清除指令
- 读:LDR
写:STR - 异常向量地址一般在异常发生时写入程序计数器(PC),而不是从异常中断返回时写入 PC 。
- 未定义指令和软件中断是最低级,外部中断高一点,快速中断更高一点
- 数据访问种植DABT,指令预取终止PABT。
- LDRB和LDRH的区别:
- 数据宽度:LDRB用于从内存中加载一个字节(8 位)的数据;LDRH用于从内存中加载一个半字(16 位,即两个字节)的数据。
- 数据扩展方式:LDRB将从内存读取的 8 位字节数据加载到寄存器时,会将寄存器的高 24 位用零扩展,也就是将其填充为 0;LDRH将从内存读取的 16 位半字数据加载到寄存器时,会将寄存器的高 16 位用零扩展。
这里面R1是地址,R0是数值!
- Cortex-M系列内部没有MMU部件
- C 选项:BIC R7,R7,#0xFFFFFFDC
指令功能:BIC是位清除指令。按照BIC指令的规则,会根据立即数0xFFFFFFDC中为 1 的位,将R7中对应的位清除为 0。
D 选项:XOR R7,R7,#0xFFFFFFDC
指令功能:XOR是逻辑异或指令。逻辑异或操作是当对应位不同时结果位为 1,相同时结果位为 0。
SPI也是串行,一个一个发数据 - M0内部的WIC为唤醒中断控制器,NVIC是嵌套向量中断控制器
- 系统复位后默认用的是小端模式
- 中断控制器保存了发生中断时的中断向量,不是CPSR
- CPSR可以读也可以写,可以控制是否允许外部中断,决定ARM工作模式
- 数据类型有字节、半字和字等
- 存储格式包括大端模式和小端模式
- 一个字32位,必须以4字节对齐,即低2位地址始终为0????????
194.
- ADC:带进位加法
- BIC:清零指令
- ORR:逻辑或指令
- MVN:数据取反指令
- TST:位测试指令
- MPU、MMU、Cache与存储器直接相关
- SUBCC 指令:
功能:在无进位(Carry Flag 为0)的条件下执行减法操作。
操作:如果进位标志(Carry Flag)为0,则执行减法操作;否则,不执行。
- 立即寻址:把数据直接端上来,代替R1等寄存器
- 寄存器间接寻址:【R1】
- 寄存器寻址:R1,R2等
图中的感叹号意思是数据回写,如果没有感叹号,R4里面的值是不会改变的- 数据处理指令分为:
- 数据传送指令
- 算数逻辑指令
- 比较指令
(所以不难发现加载指令不包含在这里,所以LDR和LDL不属于数据处理指令)
- 注意顺序:
- 内存和外设的数据有可能改变(因为R0和R1对应的值可能相同,可能不同)
- LDRD R0, R1, [R2, #8] ; 从地址 R2 + 8 处加载两个 32 位数据到 R0 和 R1
- DCD:在内存区域分配一个连续的字节内存空间
- CODE 16伪指令通知编译器,其后的指令序列为16位的Thumb指令
- EQU伪指令用于为程序中的常量、标号等定义以一个等效的字符名称
- STR是把右边的数据放到左边
- 存放多少倍地址的问题:应该从左移还是右移开始看