T:高密度16位Thumb指令集扩展

D:支持片上调试

M:64位乘法指令

I:Embedded ICE硬件仿真功能模块

冯·诺依曼(Von Neumann)结构,指令和数据共用一条32位总线。ARM7TDMI为V4版本,直接支持的数据类型字节(8位),半字(16位),字(32位)。(V4版本之后都支持这三种形式。)所有数据操作都以字为单位。装载和保存指令可以对字节、半字和字进行操作。ARM7TDMI处理器内核使用V4T版本的ARM结构,该结构包含32位ARM指令集和16位Thumb指令集。ARM指令的长度刚好是1个字(分配为占用4个字节),Thumb指令的长度刚好是半字(占用2个字节)。两个状态之间的切换并不影响处理器模式或寄存器内容。

ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。快中断模式、中断模式、管理模式、中止模式、未定义模式这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。

ARM7TDMI处理器内部有37个用户可见的寄存器,分成两大类:31个通用32位寄存器和6个状态寄存器。在汇编语言中寄存器R0~R7为保存数据或地址值的通用寄存器。对于任何处理器模式,它们中的每一个都对应于相同的32位物理寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊的用途,并且可用于任何使用通用寄存器的指令。堆栈指针SP对应ARM状态的寄存器R13。每个异常模式都有其自身的SP分组版本,SP通常指向各异常模式所专用的堆栈。(注意:在发生异常时,处理器自动进入ARM状态。)

ARM7TDMI内核包含1个CPSR和5个供异常处理程序使用的SPSR。CPSR反映了当前处理器的状态,其包含:

4个条件代码标志(负(N)、零(Z)、进位(C)和溢出(V) );

2个中断禁止位,分别控制一种类型的中断;

5个对当前处理器模式进行编码的位;

1个用于指示当前执行指令(ARM还是Thumb)的位。

每个异常模式还带有一个程序状态保存寄存器(SPSR),它用于保存在异常事件发生之前的CPSR。CPSR和SPSR通过特殊指令进行访问。

异常模式:只要正常的程序流被暂时中止,处理器就进入异常模式。例如响应一个来自外设的中断。异常总是在ARM状态中进行处理。当处理器处于Thumb状态时发生了异常,在异常向量地址装入PC时,会自动切换到ARM状态。中止发生在对存储器的访问不能完成时,中止包含两种类型:预取中止 发生在指令预取过程中数据中止 发生在对数据访问时。使用软件中断(SWI)指令可以进入管理模式,通常用于请求一个特定的管理函数。当ARM7TDMI处理器遇到一条自己和系统内任何协处理器都无法处理的指令时,ARM7TDMI内核执行未定义指令陷阱。

在复位后,除PC和CPSR之外的所有寄存器的值都不确定。

当nRESET信号再次变为高电平时,ARM处理器执行下列操作:

1.强制M[4:0]变为b10011(管理模式);

2.置位CPSR中的I和F位;

3.清零CPSR中的T位;

4.强制PC从地址0x00开始对下一条指令进行取指;

5.返回到ARM状态并恢复执行 。

基于ARM内核的芯片具有许多的外设,这些外设访问的标准方法是使用存储器映射的I/O,为外设的每个寄存器都分配一个地址。通常,从这些地址装载数据用于读入,向这些地址保存数据用于输出。有些地址的装载和保存用于外设的控制功能,而不是输入或输出功能。存储器映射的I/O位置的操作不同于正常的存储器位置的操作。通常,存储器映射的I/O位置没有高速缓存和无缓冲区。

ARM7TDMI体系结构详解 各个后缀字母的含义相关推荐

  1. java异常体系结构详解

    java异常体系结构详解 参考文章: (1)java异常体系结构详解 (2)https://www.cnblogs.com/hainange/p/6334042.html 备忘一下.

  2. Spring 体系结构详解

    Spring 体系结构详解 核心容器(Core Container) Core和Beans模块提供了Spring最基础的功能,提供IOC和依赖注入特性.这里的基础概念是BeanFactory,它提供对 ...

  3. java异常体系_JAVA异常体系结构详解

    一.什么是异常 异常:程序在运行过程中发生由于硬件设备问题.软件设计错误等导致的程序异常事件.(在Java等面向对象的编程语言中)异常本身是一个对象,产生异常就是产生了一个异常对象.      --百 ...

  4. oracle有哪两种内存结构,Oracle体系结构详解(物理构造,内存结构和逻辑结构)...

    当前位置:我的异常网» 数据库 » Oracle体系结构详解(物理构造,内存结构和逻辑结构 Oracle体系结构详解(物理构造,内存结构和逻辑结构) www.myexceptions.net  网友分 ...

  5. 计算机网络体系结构详解(7层、5层、4层的区别)

    计算机网络体系结构详解(7层.5层.4层的区别) 前言: 在学习计算机网络体系结构模型的时候,相信大家经常会有这样的疑惑?计算机网络体系结构到底是多少层模型?其实,无论是说7层.5层还是4层都是可以的 ...

  6. Oracle 体系结构详解

    Oracle 体系结构详解 什么是Orcale数据库? Orcale数据库(Oracle DateBase)是一款关系型数据库(这里就不多做介绍了),通常情况下,我们会把承载我们核心数据的系统通称为数 ...

  7. DM8达梦数据库体系结构详解

    DM8达梦数据库体系结构详解 1.逻辑结构 1.1 表空间 1.2 段 1.3 簇 1.4 页 2.物理结构 2.1 数据文件 2.2 控制文件 2.3 重做日志文件 2.4 归档日志文件 2.5 配 ...

  8. 冯·诺依曼体系结构详解(内附讲解视频)

    冯·诺依曼体系结构(Von Neumann Architecture ) 简介 体系结构 特点 作用 冯诺依曼体系结构视频详解 ( 如果您觉得文字描述过于枯燥,可点击此处观看视频讲解) 简介 1946 ...

  9. css详解background八大属性及其含义

    background(背景) 以前笔者在css盒模型以及如何计算盒子的宽度一文中提到过盒模型可以看成由 元素外边距(margin).元素边框(border).元素内边距(padding)和元素内容(c ...

最新文章

  1. SAP行列转换的一个方法
  2. wxWidgets学习 (1) -- Hello World 详解
  3. 基于 ida 的反汇编转换 Obj 的可行性 笔记(2)
  4. css-net 中华版,使用C#代码选择CSS样式(ASP.net)
  5. robotframework调用python类方法_RobotFramework-调用.py文件
  6. leetcode1253. 重构 2 行二进制矩阵(贪心算法)
  7. python3.7.1使用_在不影响使用python3.7.1的功能的情况下,是否可以从python代码中删除所有的ufuture_uu语句?...
  8. Python实现二叉树的遍历
  9. 面试 | 你说你熟悉MySql,那你就来谈谈InnoDB如何解决幻读的?
  10. python常用代码大全-大神整理的python资源大全
  11. python模块导入及属性:import
  12. 如何从UCI获取数据集?
  13. 树莓派4B + darknet-yolov4-tiny + 英特尔第二代神经计算棒
  14. php小写转大写,php怎么实现英文小写转大写
  15. 谷俊丽分享之基于深度学习的大数据挖掘
  16. 小米电视屏蔽开机广告的方法
  17. kafka的安装及基本使用
  18. ARM通用中断控制器GIC之中断处理状态机 Interrupt handling state machine
  19. oracle 按旬统计并且每月小计 行转列 PIVOT函数 与分组小计 ROLLUP 函数
  20. npm -g, npm -s, npm -d 的区别

热门文章

  1. bzoj 3262: 陌上花开
  2. fpga的jtag接口扫不到器件_FPGA相关知识点9——JTAG接口的教训
  3. 阿里年薪50w+的顶尖p7专家:辞职回家当公务员,看各方表态!!!
  4. c语言中1u1是什么意思,C语言U1的.ppt
  5. 一、什么是数据结构与算法?
  6. 【天草VS黑鹰】动画教程
  7. 鼠标猫html,游标猫(鼠标特效插件)
  8. vhdl语言入门——全加器实现
  9. Activity学习日记(九)
  10. 今天的爸爸急中生智的蜡笔小新