微机原理第五章笔记整理

ARM特点
  • 定长操作码,简化译码,便于流水线设计
  • 多个通用寄存器,指令不局限于某个特定寄存器
  • 操作数地址由寄存器或指令指定,地址自动增减
  • 每条数据指令可对算数逻辑单元和位移器控制
  • 多寄存器加载存储指令
  • 所有指令都可条件执行
  • 支持Thumb指令集
ARM7

具备MPU,将内存空间划分为不同域,实现特权等级访问控制

具备MMU,支持虚拟内存

Cortex-A

面向移动计算等的高性能处理器

Cortex-R

面向高性能实时应用

Cortex-M

关注低成本,低功耗应用

Corte-M3/M4

带SysTick,可为OS提供定时中断

具备两个堆栈指针

  • OS与异常使用主栈指针MSP

  • 用户进程使用进程栈指针PSP

支持独立特权/非特权访问等级

CPU

32位RISC,三级(取址,译码,执行)流水线,哈佛结构

NVIC

6个优先等级

FPU
总线交换矩阵

面向各种存储器,片上片外不同类型设备及调试组件提供多条总线,可让数据和指令在不同总线并行传输。

带写缓冲

可配MPU

调试组件

调试指通过调试接口读取/修改处理器内部寄存器/存储器内容,发布调试命令

跟踪指运行期间在不停止处理器正常运行的情况下搜集信息

存储器管理
  • 4GB线性地址空间
  • 确定的存储器映射关系
  • 支持大小端
  • 位带操作
  • 带写缓存
  • 可选MPU
  • 非对准传送
存储器映射
  • 代码访问区
  • 数据存储区
  • 外设端口区
  • 处理器内部控制调试部件区域
总线系统
  • I-Code总线

    AHB-Lite32位总线,访问CODE区,取址以字为单位,对16位Thumb指令,一次取址取出两条

  • D-Code总线

    AHB-Lite32位总线,访问区域同上,取数据

两总线物理独立,彼此之间有仲裁器,D-Code优先,为避免冲突可将将代码数据分开存储。代码存在flash中,数据存在SRAM中

  • System总线

    32位APB总线,有时成AHB总线

  • APB/PPB总线

    32位APB总线,负责外部私有外设

NVIC

包括240个外部中断,一个不可屏蔽中断NMI多个系统异常其中0~15分配给系统异常(实际用了11个,包括NMI)

其中

  • 除复位&NMI,都可屏蔽
  • 除复位,NMI,硬件错误,都可单独禁止/使能
  • 除复位,NMI,硬件错误,固定高优先级外,中断有256级优先级,最多128可抢占优先级
  • 响应时自动给出处理程序入口
  • 中断和多种异常可由软件触发
  • 自动保存/恢复现场
  • 可选配唤醒中断控制器
SysTick

内核设备,包含24位,周期性触发中断,

中断向量表

为服务程序入口,每个入口4字节

默认位于存储空间最开始的位置

中断向量表可改变位置,称为重定位

Cortex-M3/M4编程模型

支持16位32位并存的Thumb-2技术,没有ARM和Thunmb之分

操作状态
  • Thumb

  • 调试

    调试状态下调试器可读写寄存器

    两种状态下调试器可访问系统存储器

进入调试状态有两种方式

  • 调试器发起暂停请求
  • 处理器中调试部件产生调试状态
操作模式
  • 处理模式

    执行中断服务程序

  • 线程模式

访问等级
  • 处理模式

    处于特权级,可访问所有资源

  • 线程模式

    • 特权线程
    • 非特权线程

    特权线程模式下可写CONTROL寄存器切到非特权模式,非特权模式不行,只能借助异常

    特权/非特权差异

    • 几条指令只能由特权模式执行否则异常
    • 非特权不能访问大部分内核
    • 非特权无法访问部分MPU区域

线程模式可选PSP/MSP,处理模式只能使用MSP,这使得应用栈和系统栈分离,更可靠。

系统复位后处于特权线程模式

常规寄存器

共16个,13个为32位通用,其余为堆栈指针MSP/PSP,链接寄存器LR和程序计数器PC

R0-R12为通用,R0-R7称低位,其余高位

许多16位Thumb只能访问低位寄存器,高位寄存器用于32位指令和少数16位指令

其中R0R3用于参数传递,R4R11用于局部变量,R12为子程序调用中间寄存器

R13栈指针

双堆栈只有一个可见,MSP是默认的

复位后PSP未定义,MSP在存储空间第一个字中

MSP和PSP后两位必为00,无法写

R14链接寄存器

用于函数返回地址

返回地址末尾必为0,可写为1标识处于Thumb状态

R15程序计数器

可读可写,读指令返回当前值加4

最低位为0,写入时最低位为1,否则被视为试图转入ARM,高级编程语言自动置1

特殊寄存器

用于标识处理器状态,处理器操作状态及设置中断屏蔽

高级语言不需要

  • 程序状态寄存器

    • CPSR

      当前程序状态

    • SPSR

      用于异常处理时保存CPSR状态

      中断嵌套时用堆栈保存

    后用PSR代替CPSR,取消SPSR,异常时用LR保存PSR

    PSR含有

    • APSR

      应用程序状态寄存器

    • EPSR

      执行程序状态寄存器

    • IPSR

      中断程序状态寄存器

  • 基于优先级的中断屏蔽

    • PRIMASK

      只有一位起作用

      若为1,屏蔽除复位,NMI,硬件错误外中断

      结束后需清0

    • FAULMASK

      同一位起作用

      若为1,硬件错误也屏蔽,用于处理硬件错误,处理完自动清0

    • BASEPRI

      可按数值屏蔽中断

      8位可伸缩,取决于制造商

      屏蔽中断号大于寄存器值的

  • CONTROL

    • nPRIV

      设置线程模式下特权访问级

      0为特权,1为非特权

    • SPSEL

      用于切换栈指针类型

      为0只有MSP,1为PSP

      处理模式复位默认为0

    • FPCA

      处理FPU

  • SCB系统控制块

    多寄存器数据结构

堆栈结构

用于

  • 中断响应时保存下一指令地址,状态寄存器内容
  • 保存现场,使用的寄存器
  • 用于主程序和子程序参数传递
  • 局部变量

分为递增/减栈,递增栈指向高地址生长

满/空堆栈,满堆栈栈顶指针指向栈顶元素,空堆栈指向下一个

Cortex-M满递减

Cortex-M存储系统

存储器映射

共4G

区域用途
00000000~1FFFFFFF512M,Icode指令,Dcode数据,放程序代码,中断向量表,数据
20000000~3FFFFFFF512M,片上SRAM,数据或代码,第1M支持位段操作
40000000~5FFFFFFF512M,片上外设,系统总线,第1M位段
60000000~9FFFFFFF两个512M,片外存储
A0000000~DFFFFFFF片外外设/其他存储
E0000000~FFFFFFFF系统。内部私有外设总线E0000000E003FFFF,用于NVIC,SysTick,MPU,多数在特权级。外部私有外设总线E0040000E00FFFFF,其他调试,特权。自定义E0100000~FFFFFFFF

程序一般放在代码区,否则需要额外周期,程序不允许在外设区和系统存储区执行

连接存储器与外设

主要使用AHB Lite,适用于单主控设备,需要总线矩阵仲裁

私有外设使用APB

位段操作

或位带

一次存储器操作访问一个位,位段区域中每一个字被映射为一个位段别名区域,一个位段别名区域对应位段区域某字的某位

位段区域可普通访问,也可通过位段别名访问

可保证操作原子性

存储器访问权限

属性

  • 可缓冲
  • 可缓存
  • 可执行
  • 可共享

总线接口可写缓冲

多处理器需要共享属性确保在各缓存单元是一致的

排他访问

使用信号量

bootloader

Cortex-M异常处理

异常状态

  • 非激活状态

  • 挂起状态

    发出服务请求正等待处理

  • 激活状态

    正接受处理

  • 激活并挂起状态

    正接受处理相同异常源又产生

优先级寄存器

3~8位,优先使用高位

中断优先级分组

可设置SCB划分优先级分组

异常流程

  • 接受请求

    如果满足

    • 处理器运行
    • 异常使能
    • 异常优先级高于当前
    • 异常未被屏蔽
  • 进入异常

    • 多个寄存器和返回地址压栈
    • 取异常向量
    • 取异常处理程序指令
    • 更新NVIC寄存器和内核寄存器(PSR,LR,PC)
  • 执行异常处理

  • 异常返回

设置中断挂起和清楚中断挂起

需要两个寄存器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值