ARM7TDMI体系结构详解 各个后缀字母的含义
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体系结构详解 各个后缀字母的含义相关推荐
- java异常体系结构详解
java异常体系结构详解 参考文章: (1)java异常体系结构详解 (2)https://www.cnblogs.com/hainange/p/6334042.html 备忘一下.
- Spring 体系结构详解
Spring 体系结构详解 核心容器(Core Container) Core和Beans模块提供了Spring最基础的功能,提供IOC和依赖注入特性.这里的基础概念是BeanFactory,它提供对 ...
- java异常体系_JAVA异常体系结构详解
一.什么是异常 异常:程序在运行过程中发生由于硬件设备问题.软件设计错误等导致的程序异常事件.(在Java等面向对象的编程语言中)异常本身是一个对象,产生异常就是产生了一个异常对象. --百 ...
- oracle有哪两种内存结构,Oracle体系结构详解(物理构造,内存结构和逻辑结构)...
当前位置:我的异常网» 数据库 » Oracle体系结构详解(物理构造,内存结构和逻辑结构 Oracle体系结构详解(物理构造,内存结构和逻辑结构) www.myexceptions.net 网友分 ...
- 计算机网络体系结构详解(7层、5层、4层的区别)
计算机网络体系结构详解(7层.5层.4层的区别) 前言: 在学习计算机网络体系结构模型的时候,相信大家经常会有这样的疑惑?计算机网络体系结构到底是多少层模型?其实,无论是说7层.5层还是4层都是可以的 ...
- Oracle 体系结构详解
Oracle 体系结构详解 什么是Orcale数据库? Orcale数据库(Oracle DateBase)是一款关系型数据库(这里就不多做介绍了),通常情况下,我们会把承载我们核心数据的系统通称为数 ...
- DM8达梦数据库体系结构详解
DM8达梦数据库体系结构详解 1.逻辑结构 1.1 表空间 1.2 段 1.3 簇 1.4 页 2.物理结构 2.1 数据文件 2.2 控制文件 2.3 重做日志文件 2.4 归档日志文件 2.5 配 ...
- 冯·诺依曼体系结构详解(内附讲解视频)
冯·诺依曼体系结构(Von Neumann Architecture ) 简介 体系结构 特点 作用 冯诺依曼体系结构视频详解 ( 如果您觉得文字描述过于枯燥,可点击此处观看视频讲解) 简介 1946 ...
- css详解background八大属性及其含义
background(背景) 以前笔者在css盒模型以及如何计算盒子的宽度一文中提到过盒模型可以看成由 元素外边距(margin).元素边框(border).元素内边距(padding)和元素内容(c ...
最新文章
- SAP行列转换的一个方法
- wxWidgets学习 (1) -- Hello World 详解
- 基于 ida 的反汇编转换 Obj 的可行性 笔记(2)
- css-net 中华版,使用C#代码选择CSS样式(ASP.net)
- robotframework调用python类方法_RobotFramework-调用.py文件
- leetcode1253. 重构 2 行二进制矩阵(贪心算法)
- python3.7.1使用_在不影响使用python3.7.1的功能的情况下,是否可以从python代码中删除所有的ufuture_uu语句?...
- Python实现二叉树的遍历
- 面试 | 你说你熟悉MySql,那你就来谈谈InnoDB如何解决幻读的?
- python常用代码大全-大神整理的python资源大全
- python模块导入及属性:import
- 如何从UCI获取数据集?
- 树莓派4B + darknet-yolov4-tiny + 英特尔第二代神经计算棒
- php小写转大写,php怎么实现英文小写转大写
- 谷俊丽分享之基于深度学习的大数据挖掘
- 小米电视屏蔽开机广告的方法
- kafka的安装及基本使用
- ARM通用中断控制器GIC之中断处理状态机 Interrupt handling state machine
- oracle 按旬统计并且每月小计 行转列 PIVOT函数 与分组小计 ROLLUP 函数
- npm -g, npm -s, npm -d 的区别