0%

  1. Cortex-M 功耗强、耗电少、RISC结构,但不是多周期操作
  2. 素有处理器都有三种状态:
  • ARM状态
  • Thumb状态
  • Thumb-2状态

7.

  • FIQ:用来处理高速中断
  • IRQ:用来普通中断处理
  • ABT:中止模式
  • SYS:特权级的操作系统任务
  1. alt text
  2. ARM处理器的优点:指令流水线技术,单周期操作
  • 存储机制(内核):冯诺依曼结构和哈佛结构
  • 体系结构(指令集结构):RISC和CISC

12.

  • ARM处理器内部的总线标准是AMBA
  • ARM处理器的指令编码不全为32位,ARM处理器本身是32位设计,但也配备16位指令集
  • Cortex-M是microcontroller,故控制
  • ARM处理器都是RISC结构
  1. Cortex-A最适合高端应用
  • R13为堆栈指针
  • R14为链接寄存器
  • R15为PC使用
  • CPSR为当前程序状态寄存器(备份程序状态寄存器SPSR)
  1. ARM采用RISC指令集架构!!!!!!!!!!!!!
  2. SBC:算数运算指令,不属于逻辑运算助记符
  3. alt text
  4. alt text
  • Cortex-M 功耗低,体积小
  • Cortex-A工作效率高,性能好
  • Cortex-R 响应速度快,成本低,功耗低
  • 高端ARM处理器有Cache
  • Cortex-M0内部的WIC为唤醒中断控制器
    alt text
  1. 成本低和功耗低:Cortex-R
  2. 处理器有三种状态:
  • ARM状态
  • Thumb/Thumb-2状态
  • 调试状态
  1. 基址加变址寻址是将基址寄存器的内容与变址寄存器的内容相加,形成操作数的有效地址。在 ARM 指令系统中,数据传送指令并不支持基址加变址寻址方式,一般像存储器访问指令(如 LDR、STR 等)会使用基址加变址寻址,所以该选项错误。
  2. A53-A57都是64位ARM处理器
  3. alt text
    alt text
  4. MPU:存储器保护单元,对存储器进行保护的可选组件
    MMU:
  • 虚拟地址到物理地址的映射
  • 存储器访问权限控制
  • 对Flash、SRAM、SDRAM、ROM等不同类型的存储器进行统一管理
  1. alt text
  2. ARM 体系结构中,CP15 协处理器的控制寄存器(Control Register)在很多 ARM 内核中被用于控制数据的字节序(即大端或小端模式)。
  3. CPSR的条件码标志含义:
  • N为符号标志,N=1代表为负数;
  • Z为全零标志,z=0表示运算的结果非零
  • C为进借位标志,加法有进位时C=1;减法与加法相反
  • Q为DSP运算是否溢出标志
  • V为溢出标志
  • I为中断禁止控制位
  • F为禁止中断FIQ控制位
  • T为ARM与Thumb指令切换,T=1时ARM处理器进入Thumb状态
  1. M0内部的WIC为唤醒中断控制器
  2. alt text
  3. VFP是ARM处理器用于浮点数运算的部件
  4. BIC:bit clear也就是清除指令
  5. 读:LDR
    写:STR
  6. alt text
  7. alt text
  8. 异常向量地址一般在异常发生时写入程序计数器(PC),而不是从异常中断返回时写入 PC 。
  9. 未定义指令和软件中断是最低级,外部中断高一点,快速中断更高一点
  10. 数据访问种植DABT,指令预取终止PABT。
  11. LDRB和LDRH的区别:
  • 数据宽度:LDRB用于从内存中加载一个字节(8 位)的数据;LDRH用于从内存中加载一个半字(16 位,即两个字节)的数据。
  • 数据扩展方式:LDRB将从内存读取的 8 位字节数据加载到寄存器时,会将寄存器的高 24 位用零扩展,也就是将其填充为 0;LDRH将从内存读取的 16 位半字数据加载到寄存器时,会将寄存器的高 16 位用零扩展。
    alt text
    这里面R1是地址,R0是数值!
  1. Cortex-M系列内部没有MMU部件
  2. C 选项:BIC R7,R7,#0xFFFFFFDC
    指令功能:BIC是位清除指令。按照BIC指令的规则,会根据立即数0xFFFFFFDC中为 1 的位,将R7中对应的位清除为 0。
    D 选项:XOR R7,R7,#0xFFFFFFDC
    指令功能:XOR是逻辑异或指令。逻辑异或操作是当对应位不同时结果位为 1,相同时结果位为 0。
    SPI也是串行,一个一个发数据
  3. alt text
  4. M0内部的WIC为唤醒中断控制器,NVIC是嵌套向量中断控制器
  5. 系统复位后默认用的是小端模式
  6. 中断控制器保存了发生中断时的中断向量,不是CPSR
  • CPSR可以读也可以写,可以控制是否允许外部中断,决定ARM工作模式
    • 数据类型有字节、半字和字等
  • 存储格式包括大端模式和小端模式
  • 一个字32位,必须以4字节对齐,即低2位地址始终为0????????

194.

  • ADC:带进位加法
  • BIC:清零指令
  • ORR:逻辑或指令
  • MVN:数据取反指令
  • TST:位测试指令
  1. MPU、MMU、Cache与存储器直接相关
  2. SUBCC 指令:
    功能:在无进位(Carry Flag 为0)的条件下执行减法操作。

操作:如果进位标志(Carry Flag)为0,则执行减法操作;否则,不执行。

  • 立即寻址:把数据直接端上来,代替R1等寄存器
  • 寄存器间接寻址:【R1】
  • 寄存器寻址:R1,R2等
  1. alt text
    图中的感叹号意思是数据回写,如果没有感叹号,R4里面的值是不会改变的
  2. 数据处理指令分为:
  • 数据传送指令
  • 算数逻辑指令
  • 比较指令
    (所以不难发现加载指令不包含在这里,所以LDR和LDL不属于数据处理指令)
  1. 注意顺序:
    alt text
  2. alt text
  3. alt text
  4. alt text
  5. 内存和外设的数据有可能改变(因为R0和R1对应的值可能相同,可能不同)
  6. LDRD R0, R1, [R2, #8] ; 从地址 R2 + 8 处加载两个 32 位数据到 R0 和 R1
    • DCD:在内存区域分配一个连续的字节内存空间
  • CODE 16伪指令通知编译器,其后的指令序列为16位的Thumb指令
  • EQU伪指令用于为程序中的常量、标号等定义以一个等效的字符名称
  1. STR是把右边的数据放到左边
  2. alt text
  3. 存放多少倍地址的问题:应该从左移还是右移开始看