zoukankan      html  css  js  c++  java
  • 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)

    作者 : 韩曙亮

    博客地址 http://blog.csdn.net/shulianghan/article/details/42375701

    相关资源下载

    -- 三星 ARM Architecture Reference Manual 文档http://download.csdn.net/detail/han1202012/8324641




    一. ARM 芯片类型


    1. ARM 分类



    (1) ARM 分类类型(芯片 | 核 | 指令架构)


    ARM 分类

    -- ARM 芯片类型 : 6410, 2440, 210;

    -- ARM 核类型 : arm11, arm9, CortexA9;

    -- 指令架构 : armv7, armv6;



    (2) ARM芯片 与 ARM核 关系


    芯片 和 核关系 : 芯片包含核; 

    -- 2440 芯片 : 包含 arm9 核; 

    -- 6410 芯片 : 包含 arm11 核; 

    -- 210 芯片 : 包含 CortexA8 核;



    (3) ARM核 与 指令架构 关系


    ARM 核 与 指令架构 关系

    -- ARM9 : armv4 指令架构;

    -- ARM11 : armv6 指令架构;

    -- CortextA8 : armv7 指令架构;



    2. ARM 演化变迁



    (1) 经典阵营


    发展历程 : ARM7 --> ARM9 --> ARM11, ARM11 性能最高, ARM7 性能最低;



    (2) Cortex 阵营


    Cortext 系列

    -- Cortex-M 系列 : 没有操作系统, 面向工控领域, 与单片机差不多;

    -- Cortex-R 系列 : 面向实时应用, 强调实时性, 可以运行操作系统;

    -- Cortex-A 系列 : 主要面向多媒体应用, 目前多数的智能手机属于该系列;


    性能递推 : Cortex-M0 --> Cortex-M1 --> Cortex-M3 --> Cortex-M4 --> Cortex-R4 --> Cortex-A5 --> Cortex-A8 --> Cortex-A9 ;


    (3) Cortex 与 ARM 对比


    ARM 与 Cortext 对比

    -- ARM7 :  ARM 7 与 Cortext-M3 类似, 都没有操作系统, 性能上 Cortex-M3 略高, 但是高的有限;

    -- ARM9 和 ARM11 : ARM9 和 ARM11 与 Cortex-R4 性能类似, ARM11 不如 Cortex-A5, 远远比不上 Cortex-A8 和 Cortex-A9;



    3. 芯片性能对比(处理速度 | 缓存 | 内存接口 | OS)


    (1) 处理速度对比

    芯片处理速度对比 : 去芯片对应的芯片手册中查找 Clock&Power Management 章节, 查看时钟相关参数;

    -- 6410 : 533MHz ~ 667MHz;

    -- 2440 : 12MHz 晶振 对应 405 ~ 532 MHz 处理速度;

    -- 210 : 800MHz ~ 1GHz;



    (2) 缓存对比


    芯片缓存对比 : 去芯片对应的芯片手册;

    -- 6410 16K 指令缓存, 16K 数据缓存;

    -- 244016K 指令缓存, 16K 数据缓存;

    -- 210 : 32KB 指令缓存, 32KB 数据缓存;



    (3) 内存接口对比


    芯片内存接口对比 : SDRAM 已经淘汰掉了;

    -- 2440 : 提供 SDRAM 内存接口;

    -- 6410 : 提供了 SDRAM, 也提供了 DDR 内存接口;

    -- 210 : 提供了 DDR1 和 DDR2 两种内存接口;



    (4) 支持的操作系统

    芯片支持操作系统对比 : 去芯片对应的芯片手册中查找;

    -- 6410 : WinCE | Linux | Android;

    -- 2440 : WinCE | Linux;

    -- 210 : WinCE | Linux | Android;



    (5) 其它商业信息


    芯片商业对比 : 

    -- 6410 : 继续使用;

    -- 2440 : 三星宣布停产;

    -- 210 : 继续使用;




    二. ARM 工作模式


    对应手册ARM Architecture Reference Manual.pdf 手册, 在本博客中提供下载;

    -- 章节内容 : Programmers’ Model, A2.2 Page 41;

    -- 手册下载地址http://download.csdn.net/detail/han1202012/8324641



    1. 处理器工作模式



    (1) ARM 工作模式图例


    工作模式图示 : 图片截图自 ARM Architecture Reference Manual.pdf 手册, Page 41, A2.2 章节;




    (2) ARM 工作模式介绍


    工作模式介绍

    -- User 模式 (usr) : 普通应用程序运行的模式; 

    -- FIQ 模式 (fiq) : 快速中断模式; 

    -- IRQ 模式 (irq) : 普通中断模式; 

    -- Supervisor 模式 (svc) : 为操作系统提供的保护模式; 

    -- Abort 模式 (abt) : 访问虚拟内存导致异常的模式; 

    -- Undefined 模式 (und) : 未定义指令模式; 

    -- System 模式 (sys) : armv4 以上版本才有该模式; 


    Linux 系统工作模式 : 系统运行在 usr 模式, 内核运行在 svc 模式;




    三. ARM 寄存器


    对应手册 : ARM Architecture Reference Manual.pdf 手册, 在本博客中提供下载;

    -- 章节内容 : Programmers’ Model, A2.3 Page 42;

    -- 手册下载地址 : http://download.csdn.net/detail/han1202012/8324641



    1. 寄存器简介


    寄存器简介

    -- 寄存器个数 : ARM 有 37 个寄存器;

    -- 通用寄存器 : 31 个通用寄存器, 程序计数器 也是一个通用寄存器;

    -- 状态寄存器 : 6 个状态寄存器;

    -- 图示


    -- 寄存器图示 : 截图自 Page 43;





    2. 通用寄存器



    (1) 通用寄存器分类


    通用寄存器分类

    -- 不分组寄存器 : R0 ~ R7;

    -- 分组寄存器 : R8 ~ R14, 不同模式下使用的寄存器都不相同;

    -- 程序计数器 : PC 指针, 是 R15;



    (2) 常用通用寄存器解析


    R13 寄存器 : 通常用来做 SP 堆栈指针;


    R14 寄存器 : 通常用来做 链接寄存器;

    -- 作用一 : 保存函数返回地址;

    -- 作用二 : 异常发生时, 主要用于记录函数返回地址;


    R15 寄存器 : PC 指针, 程序计数器;




    3. 状态寄存器



    (1) 对应各个模式的状态寄存器出现原因


    状态寄存器

    -- 图示


    -- 对应各个模式的状态寄存器 : 当出现中断后, 执行中断程序, 需要将对应的 CPRS 保存到对应模式的 SPRS_xxx 寄存器中, 如当前在 scv 模式中断, 将状态寄存器保存到 SPSR_svc 寄存器中, 中断执行完后, 将状态从 SPSR_svc 中写回到 CPRS 寄存器中;



    (2) CPSR 寄存器位简介



    CRSR 寄存器简介

    -- 图示


    -- N 位 : 两个数a 和 b比较, 即做减法 (a-b), 如果 a < b, 减法结果是负数, N = 1; 如果 a >= b, 减法结果是正数或0, N = 0; 

    -- Z 位 : 两个数进行比较, 只有两个数相等时 Z = 1;

    -- I 位 : I = 1 时不能产生中断;

    -- F 位 : F = 1 时不能产生快速中断;

    -- M 位 : 占了 5 个位 0 ~ 4, 主要用于标明处理器模式, 可以读取模式 和 设置模式, 如下图 : 






    四. ARM 寻址方式


    对应手册 : ARM Architecture Reference Manual.pdf 手册, 在本博客中提供下载;

    -- 章节内容 : Programmers’ Model, A2.3 Page 42;

    -- 手册下载地址 : http://download.csdn.net/detail/han1202012/8324641


    寻址方式 : 处理器根据指令给出的信息找到指令的操作数;



    1. 立即数寻址


    立即数寻址简介

    -- 寻址过程 : 操作数本身就在指令中给出, 取出指令同时也可以获取操作数; 

    -- 操作数 : 指令中取出的操作数就是立即数;

    -- 寻址方式 : 这种从指令中取出立即数的方式就是立即数寻址;


    立即数寻址示例

    -- 示例 : ADD R0, R0, #0x3F; 

    -- 解析 : 将 R0 + #0x3F 相加, 结果放入到 R0 中;


    立即数寻址要求 : 第二个源操作数以 "#" 为后缀;



    2. 寄存器寻址


    寄存器寻址简介 : 利用寄存器中的数值作为操作数;

    -- 示例 : ADD R0, R1, R2;

    -- 示例解析 : 将 R1 和 R2 寄存器中的数字相加, 结果存放到 R0 中;



    3. 寄存器间接寻址


    寄存器间接寻址简介 : 寄存器中存放的操作数在内存中, 寄存器存放内存的地址;

    -- 示例 : LDR R0, [R2];

    -- 示例解析 : 寄存器 R2 中存放的是 操作数的内存地址, 从内存中取出操作数存入 R0 中;



    4. 基址变址寻址


    基址变址寻址简介

    -- 基址寄存器 : 寄存器中存放一个基地址;

    -- 偏移量 : 指令中给出一个偏移量, 与基址寄存器放在一个中括号号中;

    -- 示例 : LDR R0, [R1. #4];

    -- 示例解析 : 从 R1 中取出地址, 然后 该地址 加上 4, 从 相加后的地址中取出数据;



    5. 相对寻址


    相对寻址简介 : PC 指针当前值为基地址, 指令中地址标号是偏移量, 两者相加后是有效地址;

    -- 示例 : BL NEXT 时会跳转到 NEXT 处执行, 执行完后会返回到原程序处;

    BL NEXT ;跳转到 NEXT 处执行

    ... ...

    NEXT

    ... ...

    MOV PC, LR ;从子程序返回



    作者 : 韩曙亮

    博客地址 http://blog.csdn.net/shulianghan/article/details/42375701

    相关资源下载 : 

    -- 三星 ARM Architecture Reference Manual 文档 : http://download.csdn.net/detail/han1202012/8324641

  • 相关阅读:
    python里面的xlrd模块详解以及样例
    关于DOM的事件操作
    python正则表达式去除文本中间的换行符
    文本分类问题汇总
    pip安装问题
    3NF的无损连接和保持函数依赖的分解、BCNF的无损连接的分解
    Pyhton基本图形绘制
    软件过程模型
    常见算法的时间与空间复杂度
    随笔
  • 原文地址:https://www.cnblogs.com/hanshuliang/p/4215376.html
Copyright © 2011-2022 走看看