• ARM:ARM技术和体系结构(哈弗、冯氏结构、总线和IO访问、处理器状态和处理机模式、ARM内部寄存器及SFR、异常处理、中断向量表、异常返回、存储系统)


    第一部分

    1、哈弗结构与冯氏结构

    (1)区别:

    是否有独立的存储架构和信号通道。

    (2)举例:

    8086:冯氏结构(相同的存储相同的通道)

    STM32F103:哈弗结构(不同的存储、通道)

    8051:改进的哈弗结构(不同的存储,相同的通道)

    ARM9:改进的冯氏结构(相同的存储不同的通道)

    高性能:单片机(冯氏结构)因为数据和程序都存储在cache中

    单片机:哈弗结构,性能较低

    2、总线和IO访问

    总线:计算机各部件之间传递信息的公共干线,根据传递的信息的种类可以分为数据总线、控制总线、地址总线。

    统一编址:从存储器地址空间中划出地址给IO端口

    独立编址:IO端口地址空间和存储器的地址空间独立

    3、处理机的状态

    (1)ARM状态:

    执行效率高。

    (2)THUMB状态:

    代码密度好(同一段代码,对于不同的单片机,编译之后占用的空间是不同)

    4、处理机模式

    (1)模式类型:

    User(usr):一般的执行状态,不能切换到其他模式(只能通过中断和异常)

    FIQ(fiq):快速中断,优先级较高

    IRQ(irq):中断

    Supervisor(svc):保护模式

    Abort mode(abt):发生异常时进入

    System(sys):用户安全模式

    Undefined(und):未定义的指令

    (2)目的:

    提高响应速度

    (3)ARM流水线

    指令执行过程:

    每条指令包括五个步骤:取指、译码、执行、访存、回写

    单流水:

     ARM9(五级流水):

    第二部分

    1、ARM内部寄存器:设计在CPU内部

    (1)特点:速度快

    (2)数量:一共有37个:

    6个状态寄存器;

    31个通用寄存器(R0-R12)

    R13(SP):栈指针,不同模式下栈空间是不一样的

    R14(LR):链接寄存器(存放断点),硬件自动完成

    R15(PC):程序指针,取指令的位置

    在FIQ模式下是独立的与其他模式不同

    R16  PSR--CPSR(当前状态寄存器) 

    SPSR:程序状态寄存器

    条件状态(NZCV)保留字 I  F  T 模式位(M4-M0)

    SFR(Special Function Register)特殊功能寄存器

    IO端口/寄存器,它属于外设的组成部分,ARM是采用与寄存器统一编址的方式

    使用软件编程控制某一硬件,其实就是编程读写该硬件的寄存器

    2、ARM异常处理

    (1)模式与异常

    异常的类型:

    Reset:复位

    undefined instruction:未定义

    swi:软中断

    prefect/bort

    data/abort

    Reserved

    IRQ:中断

    FIQ:快速中断

    处理器的模式:每一个异常对应一种模式,但不是一一对应关系

    (2)ARM异常处理的过程:

    进入异常硬件完成下面动作:

    (1)断点:放到LR里面,

    (2)CPSR的值放到SPSR

    (3)修改CPSR中的模式位

    (4)PC跳到中断向量(异常向量)

    软件完成下面的动作:

    (1)中断散转,二级中断(由硬件完成,不需要手动代码)

    (2)保护现场

    (3)中断服务程序

    (4)恢复现场(LR赋给PC,SPSR的值返回CPSR)

    3、中断向量表

    4、异常返回

    (1) PC在不同的情况下含义不一样,例如:PC(excute执行地址)=PC(fetch取址地址)-8,程序进入异常时LR的值(LR=PC-4)

    (2)异常会清除处理器的流水线

    (3)每种异常发生的时期不一样,对于中断而言,指令还未被执行就产生了,对于BL/SWI/UNEF而言,指令是执行过了的,当发生预言终止,将预取的指令标记为无效,在指令达到流水线执行阶段执行才进入异常,如果指令在流水线中因为分支而没有执行,异常不会发生。

    (4)PATH和DABT常结合MMU和OS来使用,abort的处理程序就必须找出异常的原因,使要求的数据可用,并重试被终止掉的指令

    5、存储系统

    (1)存储器与存储控制器

    存储器单元:存放数据的位置,地址是挂在系统总线

    存储控制器:初始化存储器器件,有对应的寄存器配置,寄存器是挂在系统总线上

    (2)存储器存储数据格式

    大端格式:8051 ARM处理器将最高位字节保存在最低地址,最低字节保存在最高地址

    小端格式:ARM,X86 一个字当中最低地址的字节被看做是最低位字节,最高地址的字节被看做是最高位字节

    (3)对齐访问与非对齐访问

    PC中的bit[1:0]为0

    0x4000 0000    0x4000 0001   0x4000 0002   0x4000 0003   0x3322 1100

    0x00                 0x11                0x22                0x33

    非对齐访问处理:

    (1)不可预测

    (2)忽略造成访问不对齐的低地址位

    (3)先忽略最低两位,然后使用最低两位地址位控制装载数据循环右移(0x0033 2211)

    知识点总结:

    (1)PC(program counter:程序计数器):用于存放下一条指令所在单元的地址。

    (2)LR(Link Register:连接寄存器)

    作用有两种:

    用来保存子程序返回地址;

    当异常发生时,LR中保存的值等于异常发生时PC的值减4(或者减2),因此在各种异常模式下可以根据LR的值返回到异常发生前的相应位置继续执行。

  • 相关阅读:
    DataGridView中DataGridViewComDaboBoxColumn控件点击一次即可显示下拉菜单
    Django2.X报错-------ModuleNotFoundError: No module named 'django.core.urlresolvers'
    C#控件——批量化隐藏或显示同类型控件
    Python——Django运行问题
    关于VS2010 在设计窗口时控件消失问题
    DataGridView操作小记(1)
    c#_生成图片式验证码
    日常杂记——C#验证码
    DataGridView添加的数据最后一步无法生效的问题。
    request.getRequestDispatcher().forward(request,response)和response.sendRedirect()的区别
  • 原文地址:https://www.cnblogs.com/zhai1997/p/12426520.html
Copyright © 2020-2023  润新知