ARM7的体系结构

原创 2011年01月10日 15:18:00

ARM7体系结构

Update-Time   : 2011224日星期四

一.存储器的字与半字

1.从偶数地址开始的连续的两个字节构成一个半字

2.能被4整除的地址的连续4个字阶构成一个

ARM指令的长度刚好是一个字,Thumb指令的长度刚好是一个半字

二.存储器的存储方式(半字对齐,字对齐)

1.半字对齐:存放一个数据的地址如果能被二整除,则它是半字对齐。反之,则是非半字对齐。

2.字对齐:存放一个数据的地址如果能被四整除,则它是字对齐。否则,它是非字对齐。

 

 

三.ARM处理器状态:

ARM有两种处理器状态:ARM状态,Thumb状态。

1.    ARM状态:32位。处理器执行字方式的ARM指令。

2.    Thumb状态:16位。处理器执行半字方式的Thumb指令。

注:两个状态之间的切换是不会影响处理器的模式或寄存器的内容。

它们之间是如何进行切换的。

使用BX指令在ARMThumb状态之间进行切换。

(但是,所有的异常处理都是在ARM状态中执行。如果异常发生在Thumb状态中,处理器会切换到ARM状态。在异常处理返回时,自动切换回Thumb状态。)

ARM状态切换到Thumb状态的程序代码:

 

 

 

 

具体程序来说明处理器状态:

程序1

 

 

 

 

ADR  R0,TST+1

注:伪指令ADR将寄存器内容的地址存入寄存器中。这里将地址TST+1存入R0中,这样就加载了转移地址并且设置了最近有效位。

BX   R0

注:此时,R0中数值的第0位是1,所以该语句执行完处理器切换进入Thumb状态,开始执行Thumb指令

(我们可以在AXD下看到此时状态寄存器的T位被置1.

CODE16

注:

A汇编器需要知道什么时候产生ARM代码,什么时候产生Thumb 代码。

B伪指令CODE16定义一下的程序被编译成Thumb模式,即后面的就是16位的Thumb指令了。

C.伪指令CODE32定义一下的程序将被编译成ARM模式,即后面的就是32位的ARM指令。

D伪指令CODE16CODE32只是指示汇编器后面指令的类型,并不产生任何代码,也不进行程序状态的切换。

程序2

 

注:

Thumb状态下,调用软中断:SWI 0XAB

ARM  状态下,调用软中断:SWI 0X123456

四.ARM处理器模式:

ARM体系结构支持7中处理器模式:用户模式,快中断模式,中断模式,管理模式,中止模式,未定义模式和系统模式。

 

 

 

1.快中断模式,中断模式,管理模式,中止模式和未定义模式。它们称为异常模式。

A.异常模式既可以通过程序切换进入外,也可以有特定的异常进入。

B.当特定的异常出现时,处理器进入相应饿模式。每种模式都有某些附加的寄存器。

2.系统模式和用户模式,它们不能由异常进入。并且使用与用户模式相同的寄存器。

A.系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器比较方便。

 

.ARM体系的存储系统

1.ARM7存储系统概要:

1>.ARM7处理器采用冯.诺依曼结构,指令和数据共用一条32位数据总线(采用指令,数据和I/O统一编址)。

只有装载,保存和交换指令可访问存储器中的数据。

Tiger 补充:

计算机结构说明:

1>  冯诺依曼结构:把代码作为一中特殊的数据来操作。指令总线和数据总线及其存储区域是统一的。

2>   哈佛结构:指令总线和数据总线及其存储区域是分开独立的。

2>ARM芯片一般在处理器核和外部存储器之间有

一个存储器管理部件。

存储器管理部件的作用是将局部总线的信号和时序转换为现实的外部总线信号和时序。

 

 

 

 

注:各芯片生产商制定了自己的外部总线的信号和时序。

3.    地址空间

1>  ARM地址空间有2328位字节的地址空间。也可以看作是23032位字或23116位半字。

2>  如果在取指操作时地址发生溢出,只要没有执行预取的无效指令,就不会导致异常。

4.    存储器格式:

1>  地址空间的规则要求一个字或半字要求连续存储。

Eg:位于地址0x02处的字,它所包含的字节位于地址0x02,0x03,0x04,0x5

  同理位于地址0x02处的半字,它所包含的字节位于地址0x02,0x03.

2>  存储器系统有两种映射机制:

A.        小端存储器系统:

数据的高字节存放在高地址中。

B.        大端存储器系统:

数据的高字节存放在低地址中。

 

 

 

 

3>非对齐的存储器访问

A.    ARM结构希望所有存储器访问时都对齐。即字访问的地址是字对齐的,或半字访问使用的地址是半字对齐的。若不满足上述条件的即为非对齐的存储器访问。

B.    把一个非字对齐(或非半字对齐)的地址写入ARM状态(或Thumb状态的)R15寄存器中,将会引起非对齐的指令取指。

C.    在一个非字对齐(或非半字对齐)的地址处读写一个字或半字会引起非对齐的数据访问。

注:编程时应该注意的问题:

ARM处理器直接支持对齐存放的半字或字数据的存取,也就是可以使用一条相应的指令来实现对应操作。如果访问非对齐的半字或字数据,将需要多条指令组合才能实现对应操作,这对程序的执行效率影响较大。因此,在C语言编程中,定义的多字节变量或结构体,最好使其为对齐存放。

 

相关文章推荐

ARM7体系结构

ARM7体系结构之前有提到嵌入式系统的目标就是将计算机芯片化,集成为单片微型计算机,满足对象体系的控制要求。为了实现这一轻便的性能,提供更大的灵活性和更高的智能化,ARM内核采用精简指令集计算机体系结...

第2章 ARM7体系结构

  • 2014年01月07日 21:24
  • 1.16MB
  • 下载

嵌入式\ARM7体系结构.ppt

  • 2011年04月07日 12:56
  • 1.71MB
  • 下载

ARM体系结构与编程学习(十二)

9.4 SWI异常中断处理程序在实时操作系统中,通常使用SWI异常中断为用户程序提供系统功能调用。通常SWI异常中断处理程序分为两级:第1级SWI异常中断处理程序为汇编程序,用于确定SWI指令中的24...
  • glorin
  • glorin
  • 2011年05月01日 17:17
  • 1334

ARM7体系结构

  • 2011年12月11日 20:29
  • 770KB
  • 下载

ARM微处理器的体系结构

这里概述的都是一些传统意义上ARM处理器的一些方面,提醒自己看了之后会想起相关知识,或是对ARM有一个总体上的概念,其实都是些简述性的总结,很多都来自网上资料或教学课件,贴在这里,方便以后随时随地的复...
  • csshuke
  • csshuke
  • 2015年01月28日 14:19
  • 371

ARM7与ARM9的区别及ARM体系结构

  • 2010年06月22日 10:28
  • 21.85MB
  • 下载

信庭嵌入式工作室-ARM应用技术之体系结构应用(下)

ARM应用技术是抛去操作系统,面向ARM自身的应用技术,总的来讲可以分为三部分:ARM体系结构应用、ARM最小系统应用和ARM外设(外围接口)应用。ARM体系结构应用包含比较多的模块,下面逐个解析。 ...
  • fqheda
  • fqheda
  • 2015年12月12日 12:29
  • 10775

嵌入式系统原理及接口技术 ARM9体系结构

一、ARM微处理器系列介绍1.1 ARM的版本号含义不同的体系结构对应着不同的指令集,ARM公司给这些在不同阶段体系结构中使用的指令集定义了版本号,版本号的名称为ARMvx(符号x代表数字,即1,2,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ARM7的体系结构
举报原因:
原因补充:

(最多只允许输入30个字)