arm gnu linux系统,ARM处理器的基本原则

这一篇的知识来源全部来自《ARM System Developer's Guide》

从编程人员的视角来看,arm核是由数据总线连接的功能单元组成,如下图所示:

ca19b69141a717bb3f7778340c4bf1e2.png

数据通过数据总线流向处理器核心,这里的数据可以是将要执行的指令,也可以是数据项.上面的图是Von Neumann体系的arm核,数据项和指令共用同一总线.而h哈佛结构体系的arm核就会用两个不同的总线.

就像所有的RISC处理器,arm采用load-store体系结构.也就是说它含有两条不同的指令类型来出入处理器.loar指令将数据从内存拷贝到寄存器,store指令是将数据从寄存器拷贝到内存.没有直接操作内存中数据的数据处理指令.数据的处理离不开寄存器.

ARM指令一般有两个源寄存器,Rn和Rm,和一个目的寄存器,Rd.ARM的一个重要特性是Rm可以在送入ALU之前被桶型移位器做预处理,这样就会有很多形式的表达式和寻址方式.

下面介绍ARM处理器的几个关键分量:寄存器,当前程序状态寄存器和流水线

寄存器:

通用目的寄存器可以保存数据或者地址.由字母r和编号数字来表示.所有的寄存器都是32bit大小.

一共有18个活动的寄存器:16个数据寄存器和两个程序状态寄存器.数据寄存器由r0--r15表示.

ARM处理器有3个寄存器分配为特殊的功能:r13,r14,r15

r13通常用作栈指针(sp),存储当前处理器工作模式下的栈顶;

r14被称作链接寄存器(lr),当发生调用时存放调用子程序的返回地址;

r15被称作程序计数器(pc),保存被处理器预取的下一条指令的地址.

除了这16个数据寄存器,还有来年各个程序状态寄存器:cpsr和spsr.处理器的当前工作模式决定了哪些寄存器是可见的.

当前程序状态寄存器:

ARM核使用cpsr来显示和控制内部的操作.通用程序状态寄存器的内部如下:

59580ec4789f57a0c87810fa058cbc2a.png

cpsr分为四个域,每个域有8位的宽度:flags,status,extension和control.control域包含处理器模式和状态以及中断屏蔽位.flags域包含condition flags.

处理器模式:

处理器模式决定了当前哪些寄存器是可用的以及cpsr本身的访问权限.处理器模式分为特权模式和非特权模式:特权模式对cpsr有完全的读写控制.而非特权模式

只能读cpsr的control域但是仍可以读写condition flags.

一共有7中处理器模式:六种特权模式(abort,fiq,irq,svc,system和undefined)和一种非特权模式(user).

当试图访问内存失败时处理器会进入abort模式,fiq和irq对应ARM处理器的两种中断级别.svc是系统reset后进入的模式,也是os kernel工作的模式.

system模式是user模式的特殊版本,它有对cpsr的读写控制.undefined模式在处理器遇到未定以的指令或者不支持的操作时使用.

user模式在应用程序下使用.

Banked registers:

c4eaeb04d495c9dc1d893d6a41d1f02f.png

除了user模式,其它模式都可以通过直接写cpsr的模式位来改变处理器模式.当然,在异常或者中断到来时,硬件会自动切换模式.下类异常和中断会引起模式切换:

reset,irq,fiq,swi,data abort,prefetch abort和undefined instruction.

处理器模式:

93c2f3f7299b1a07cebcb7abc0df3874.png

需要注意的是:通过直接写cpsr来改变模式的方法不会将cpsr拷贝到spsr.只有在异常或中断发生时cpsr的值才会保存.

当ARM核上电时,处于svc特权模式.从特权模式开始是有用的:初始化代码完全控制cpsr来建立其他模式的堆栈.

cpsr中的bit T是表明指令簇用的是ARM指令集还是thumb指令集.T为1表示thumb指令集,T为0表示ARM指令集.

ARM指令集和thumb指令集的特性:

[img]https://img-my.csdn.net/uploads/201205/06/1336293271_8461.png[/img]

中断屏蔽位:

中断屏蔽位用来屏蔽处理器的特殊中断请求.在ARM核中有两种级别的中断请求:irq和fiq.

cpsr中的中断屏蔽位是第7位和第6位(I和F),当I或F设为1时irq或fiq就被屏蔽了.

condtion flags:

condition flags可以被比较操作和带S后缀的ALU操作来更新.

d88920a9dcf276159f937f92b8175fe5.png

条件执行:

条件执行控制指令是否被ARM核执行.处理器会比较指令的条件属性和cpsr中的condition flags,如果匹配,该指令执行;否则该指令被忽略.

[img]https://img-my.csdn.net/uploads/201205/06/1336293322_2051.png[/img]

流水线:

RISC处理器用流水线机制来执行指令.ARM流水线中的指令只有在完全通过执行阶段才被处理.

90a405a10b50cc2bba0f73c2a120faab.png

上面这张图标明了流水线的使用和程序计数器pc.在执行阶段,pc总是指向该指令地址加上8字节.也就是说pc总是指向当前指令的下下条指令.当用pc来计算

相对偏移量时这点是很重要的,并且它也是所有流水线的特征.

异常 中断和向量表

当异常或中断发生时,处理器会将pc指向一个特殊的内存地址.该地址所在的地址范围称为向量表.向量表的入口是跳转指令,跳转到专门处理某个异常或中断的

子程序.

存储器映射地址0x00000000是为向量表预留的.在某些处理器中向量表可以放在更高的地址,从0xffff0000开始.linux等操作系统可以利用这个特性.

当异常或者中断发生时,处理器挂起正常的处理然后从向量表中加载指令.每个向量表的入口都包含指向特殊处理例程的跳转指令.

55a2c288816b30ab03727097c664a569.png

reset向量是处理器上电后执行的第一条指令,这条指令跳转到初始化代码处.

undefined instruction向量是当处理器不能对指令译码时使用的.

software interrupt向量执行SWI指令时使用的.SWI可以用来系统调用的实现.

prefetch abort向量发生在当没有访问权限的条件下试图获取该地址的指令时,异常发生在译码阶段.

data abort向量与prefetch abort类似,只不过是访问数据发生的异常.

interrupt request向量被外部硬件用来中断处理器的正常执行.只有在cpsr的相应位为0时才能发生.

fast interrupt request向量与irq类似,是为要求更短的中断响应时间的硬件保留的.只有在cpsr的相应位为0时才能发生.0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在线阅读本书, , Over the last ten years, the ARM architecture has become one of the most pervasive architectures in the world, with more than 2 billion ARM-based processors embedded in products ranging from cell phones to automotive braking systems. A world-wide community of ARM developers in semiconductor and product design companies includes software developers, system designers and hardware engineers. To date no book has directly addressed their need to develop the system and software for an ARM-based system. This text fills that gap. This book provides a comprehensive description of the operation of the ARM core from a developer's perspective with a clear emphasis on software. It demonstrates not only how to write efficient ARM software in C and assembly but also how to optimize code. Example code throughout the book can be integrated into commercial products or used as templates to enable quick creation of productive software. The book covers both the ARM and Thumb instruction sets, covers Intel's XScale Processors, outlines distinctions among the versions of the ARM architecture, demonstrates how to implement DSP algorithms, explains exception and interrupt handling, describes the cache technologies that surround the ARM cores as well as the most efficient memory management techniques. A final chapter looks forward to the future of the ARM architecture considering ARMv6, the latest change to the instruction set, which has been designed to improve the DSP and media processing capabilities of the architecture., , * No other book describes the ARM core from a system and software perspective. * Author team combines extensive ARM software engineering experience with an in-depth knowledge of ARM developer needs. * Practical, executable code is fully explained in the book and available on the publisher's Website. * Includes a simple embedded operating system.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值