嵌入式Linux驱动学习_简单了解Cortex-A7 MPCore架构

本文详细介绍了Cortex-A7MPCore处理器,包括其支持的核数选项、L1和L2缓存配置,重点讲解了ARMv7-A架构的特点,如SIMD扩展、浮点运算和内存支持,并阐述了Cortex-A处理器的九种运行模式及其寄存器使用情况。
摘要由CSDN通过智能技术生成

Cortex-A7 MPcore 处理器支持 1~4 核,通常是和 Cortex-A15 组成 big.LITTLE 架构的,
Cortex-A15 作为大核负责高性能运算,比如玩游戏啥的, Cortex-A7 负责普通应用,因为 CortexA7 省电。 
Cortex-A7 本身性能也不弱,不要看它叫做 Cortex-A7 但是它可是比 Cortex-A8 性能要强大,而且更省电。

Cortex-A7 MPCore支持在一个处理器上选配1~4个内核,
L1 可选择 8KB、16KB、32KB、64KB,L2 Cache 可以不配,也可以选择 128KB、256KB、512KB、1024KB。 
I.MX6UL 配置了 32KB 的 L1 指令 Cache 和 32KB 的L1 数据 Cache,以及 128KB 的 L2 Cache。

Cortex-A7 MPCore使用了ARMv7-A的架构主要特性如下:
1.SIMDv2扩展整形和浮点向量操作。
2.提供了与ARM VFPv4 体系结构兼容的高性能的单双精度浮点指令,支持全功能的IEEE754。
3.支持大物理扩展LPAE,最高可以访问40位存储地址,也就是最高可以支持1TB的内存
4.支持硬件虚拟化
5.支持GIC V2.0
6.支持NEON,可以加速多媒体和信号处理算法

————————————
Cortex-A处理器运行模型
   以前的ARM处理器有7种运行模型,而新的Cortex-A架构加入了Monitor和Hyp,所以有9种处理模式:
User(USR)        用户模式,非特权模式,大部分程序运行的时候处于此模式
FIQ        快速中断模式,进入FIQ中断异常
IRQ        一般中断模式
Supervisor        超级管理员模式,特权模式,供操作系统使用
Monitor        监视模式,用于安全扩展模式
Abort        数据访问终止模式,用于虚拟存储以及存储保护
Hyp        超级监视模式,用于虚拟化扩展
Undef        未定义指令终止模式
System        系统模式,用于运行特权级的操作系统任务

用户模式是不能直接进行切换的,用户模式下需要借助
异常来完成模式切换,当要切换模式的时候,应用程序可以产生异常,在异常的处理过程中完
成处理器模式切换。当中断或异常发生以后,处理器就会进入到相应的异常模式种,每一种模式
都有一组寄存器供异常处理程序使用,这样的目的就是为了保证在进入异常模式以后,用户模式
下的寄存器不会被破坏。
STM32只有特权模式和非特权模式两种模式,而Cortex-A就有9种运行模式。

———————————————
Cortex-A寄存器组
   接下来介绍Cortex-A的内核寄存器组,注意不是芯片的外设寄存器,主要参考《ARM Cortex-A编程手册》
的第3章。
   ARM 架构提供了 16 个 32 位的通用寄存器(R0~R15)供软件使用,前 15 个(R0~R14)可以用
作通用的数据存储,R15 是程序计数器 PC,用来保存将要执行的指令。ARM 还提供了一个当
前程序状态寄存器 CPSR 和一个备份程序状态寄存器 SPSR,SPSR 寄存器就是 CPSR 寄存器的备份。
   Cortex-A寄存器:
    R0~R7低寄存器组,R8~R15高寄存器组
    其中堆栈指针指向->R13(SP)、链接寄存器R14(LR)、程序计数器R15(PC),
    之后还有:当前程序状态寄存器CPSR,备份程序状态寄存器SPSR

九种模式对应的寄存器的选择都不一样,接下来我们来详细了解一下:
一、通用寄存器
   R0~R15就是通用寄存器,可以分为三类:未备份寄存器R0~R7、备份寄存器R8~R14和程序寄存器PC即R15
未备份寄存器
    因为在所有处理器模式下这8个寄存器都是同一个物理寄存器,在不同模式下这8个寄存器中的
    数据就会被破坏。所以这8个寄存器并没有被用作特殊用途
备份寄存器
       R8~R12有俩种寄存器,FIQ模式下它们对应Rx_irq物理寄存器,其他模式对应Rx物理寄存器。
    FIQ是快速中断模式,看名字就知道这个中断要求快速执行!FIQ模式下中断处理程序可以使用
    R8~R12,因为FIQ模式下R8~R12是独立的,因此中断处理程序可以不用执行保存和恢复中断
    现场的指令,从而加速中断的执行过程。
       R13一共有8个物理寄存器,其中一个是User和Sys模式共用的,剩下7个对应7种不同模式。
    R13也叫做SP,用来作为栈指针。基本上每种模式都有一个自己的R13物理寄存器,应用程序
    会初始化R13执行各模式专用的栈地址。
    这就是常说的初始化SP指针。
       R14共有7个物理寄存器,其中一个是User、Sys和Hyp共有的。R14也成为连接寄存器LR,
    LR在ARM中主要有两种用途:
    1.每种处理器模式使用LR来存放当前子程序的返回地址,如果使用BL或者BLX来调用子函数的话,
    LR被设置成该子函数的返回地址,在子函数中,将LR中的值赋给PC(R15)即可完成子函数返回。
    2.当异常发生以后,该异常模式对应的R14寄存器被设置成该异常模式将要返回的地址,R14也
    可以当作普通寄存器使用。
程序计数器R15
       也叫做PC,保存着当前执行的指令地址值加8个字节,这是因为ARM的流水线机制导致的。
    ARM处理器3级流水线:取指->译码->执行,循环执行,比如当前正在执行第一条指令的同时
    也对第二条指令进行译码,第三条指令也同时被取出存放在PC中。
    我们喜欢以正在执行的指令为参考点,所以R15总是指向当前正在执行的指令地址再加上2条
    指令的地址,然后对于32位的ARM处理器,每条指令是4个字节,所以PC=执行程序地址+8个字节。

二、程序状态寄存器
       所有的处理器模式都共用一个 CPSR 物理寄存器,因此 CPSR 可以在任何模式下被访问。
    CPSR 是当前程序状态寄存器,该寄存器包含了条件标志位、中断禁止位、当前处理器模式标志
    等一些状态位以及一些控制位。所有的处理器模式都共用一个 CPSR 必然会导致冲突,为此,
    除了 User 和 Sys 这两个模式以外,其他 7 个模式每个都配备了一个专用的物理状态寄存器,叫
    做 SPSR(备份程序状态寄存器),当特定的异常中断发生时, SPSR 寄存器用来保存当前程序状
    态寄存器(CPSR)的值,当异常退出以后可以用 SPSR 中保存的值来恢复 CPSR。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值