专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
嵌入式
嵌入式Linux ARM汇编(一)——ARM体系结构
2019-07-12 16:27
发布
生成海报
站内文章
/
嵌入式Linux
9860
0
1377
嵌入式
Linux ARM
汇编(一)——
ARM
体系结构
一、
ARM
简介
ARM
是全球领先的半导体知识产权 (IP) 提供商
Advanced RISC Machine,是专门从事基于
RISC 技术芯片设计开发的公司,ARM 的商业模式主要涉及 IP 的设计和许可,而非生产和销售实际的半导体芯片。作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特 {MOD}的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM 微处理器芯片进入市场。在全世界有几十家大的半导体公司都使用ARM 公司的授权,因此既使得ARM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。
ARM
设计了大量高性价比、耗能低的
RISC处理器、
相关技术及软件,技术具有性能高、成本低和能耗省的特点,智能机、平板电脑、嵌入控制、多媒体数字等处理器领域拥有主导地位。全世界超过
95%
的智能手机和平板电脑都采用
ARM
架构
。
2014
年基于
ARM
技术的全年全球出货量是
120
亿颗,从诞生到现在为止基于
ARM
技术的芯片有
600
亿颗。
ARM体系结构的基本版本:
版本
版本变种
系列号
处理器核
V1
V1
ARM1
ARM1
V2
V2
ARM2
ARM2
V2a
ARM2aS
ARM3
ARM3
V3
V3
ARM6
ARM6
、
ARM600
、
ARM610
ARM7
ARM7
、
ARM700
、
ARM710
V4
V4T
ARM7TDMI
、
ARM710T
、
ARM720T
、
ARM740T
V4T
ARM9
ARM9TDMI
、
ARM920T
、
ARM940T
V5
V5TE
ARM9E-S
V6
V6
ARM11
ARM11
、
ARM11562-S
、
ARM1156T2F-S
、
ARM11JZF-S
V7
V7
ARM Cotex
ARM Cotex-A8
、
ARM Cotex-R4
、
ARM Cotex-M3
二、
计算机体系结构
1
、
冯
.
诺依曼体系
结构
冯.诺依曼体系结构的特点:
A、处理器使用同一个存储器,经由同一个总线传输
B、
完成一条指令需要
3
个步骤:即取指令
->
指令译码
->
执行指令
C、
指令和数据共享同一总线的结构
2、
哈佛体系结构
哈佛体系结构的特点:
A、将程序指令存储和数据存储分开
B、
中央处理器首先到程序指令存储器中读取程序指令。解码后到数据地址,再到相应的数据存储器读取数据,然后执行指令
C、
程序指令存储与数据存储分开,可以使指令和数据有不同的数据宽度。
ARM7
采用冯
.
诺依曼体系结构,
ARM9
采用哈佛体系结构
三、
复杂指令集与精简指令集
1
、
CISC
复杂指令集
CISC
复杂指令集:采用冯
.
诺依曼体系结构,数据线和指令线分时复用。
存储器操作指令多,汇编程序相对简单,指令结束后响应中断
,
CPU
电路设计复杂,面积大,功耗大。
2
、
RISC
精简指令集
RISC 精简指令集:采用哈佛体系结构。数据线和指令线分离。对存储器操作有限,汇编程序占空间大,在适当地方响应中断, CPU电路较少,体积小功耗低。ARM采用RISC精简指令集 。
四、
ARM
处理器模式
为了和操作系统更好地适配,
ARM Cortex A-8
处理器有九种工作模式。
ARMV7
体系结构支持的
9
种处理器模式分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式,监视模式,软中断模式。
1
、
ARM
的指令集
ARM
有三种指令集:ARM、
Thumb
、
Thumb
32。
Thumb
是
ARM
体系结构中一种
16
位的指令集。
从ARMv4T
之后的
ARM
处理器有一种
16-bit
指令模式,叫做
Thumb
,较短的指令码提供整体更佳的编码密度,更有效地使用有限的内存带宽。所有
ARM9
和后来的家族,包括
XScale
都纳入了
Thumb
技术。
Thumb
32
兼容
16
位和
32
位指令。
ARM
为
32
位指令。
在不牺牲性能的同时,尽量简化处理器。同时从体系结构上灵活支持处理器扩展。采用RISC
结构。
RISC
处理器简化了处理器结构,减少复杂功能指令的同时,提高了处理器速度。
2
、
ARM
的流水线结构
ARM处理器使用流水线来增加处理器指令流的速度,这样可以使几个操作同时进行。并使处理和存储器系统连续操作。
arm
处理器分为三级:取指
->
译码
->
执行
取指:指令从存储器中取出
译码:对指令使用的寄存器进行译码
执行:从寄存器组中读取寄存器,执行移位和
ALU
操作,寄存器被写回到寄存器组中
3
、
ARM
处理器支持的类型
字节
8
位
半字
16
位
字
32
位
ARM
处理器的
所有数据操作都以字为单位,
ARM
指令的长度刚好是一个字,
Thumb
指令长度刚好是半个字。
4
、
ARM
处理器状态
ARM
处理器内核使用
ARM
结构,该结构包含
32
位的
ARM
指令集和
16
位
Thumb
指令集,因此
ARM
有两种操作状态
ARM
状态:
32
位
Thumb
状态:
16
位
5
、
ARM
处理器的寄存器
寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和
程序计数器
(PC)
,在中央处理器的算术及逻辑部件中,包含的寄存器有累加器
(ACC)
。
IR
用于存储指令
PC
用于存储程序运行的地址(即当前指令在内存中的位置)
寄存器是由一个指令的输出或输入可以直接索引到的暂存器群组。所有的计算机指令都是进入寄存器后被直接读取
。
ARM
的汇编编程,本质上就是针对
CPU
寄存器的编程。
ARM
寄存器分为
2
类:普通寄存器和状态寄存器
ARM A-8
处理器各工作模式下的寄存器:
ARM A-8
处理器共有
43
个寄存器。普通寄存器
34
个,状态寄存器
9
个。
USR/SYS
共用一组寄存器。
R13(SP)
栈指针寄存器用于存放堆栈的栈顶地址。
SP
相当于指针变量,保存的是栈顶的地址,出栈时,从
SP
指向的内存中取出数据,入栈时将新的内存地址
压入栈顶
,
而SP
相当于链表的头指针
(head)
。
R14(LR)
链接寄存器存放子程序的返回地址。
例如:在主函数内,如果调用子函数,程序会进入到子函数内执行。当子函数执行完毕后,需要回到主函数内,所以在子函数调用前需要将这个地址先保存起来,否则无法找到这个地址。
LR
用于保存这个地址,这个地址也称为子程序返回地址。当子函数结束后,再将
LR
内的地址赋给
PC
即可。
R15(PC)
程序计数器
它的值是当前正在执行的指令在内存中的位置。
当指令执行结束后
,CPU
会自动将
PC
值加上一个单位,
PC
值指向下一条即将执行的指令的地址。
如果通过汇编指令对PC
寄存器赋值,就会完成一次程序的跳转(如从子函数跳转回主函数内)。
寄存器R16用作CPSR
(当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(备份的程序状态寄存器),异常发生时,SPSR用于保存CPSR的值,从异常退出时则可由SPSR来恢复CPSR。由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。
程序状态寄存器CPSR:
各bit代表的意义如下:
M[4:0]
:处理器模式
T bit
:是否支持Thumb
指令
F bit
:是否禁止FIQ
I bit:是否禁止
IRQ
A bit:是否禁止异步中止
E bit:存储顺序
IT bit:是否在支持
Thumb-2
指令集中的
if...then
条件执行
GE bit:用于某些
SIMD
指令
J bit:是否支持
Jazelle
Q bit:是否运算溢出
V bit:
ALU
是否溢出
C bit:
ALU
是否进位
Z bit:
ALU
结果是否为
0
N bit:
ALU
结果是否为负
M0
至
M4
表示处理器工作模式(控制位内的模式位)
0b10000 User
用户模式
0b10001 FIQ
快速中断模式
0b10010 IRQ
外部设备产生的中断模式
0b10011 Supervisor
管理模式
0b10111 Abort
异常模式
0b11011 Undefined
未定义模式
0b11111 System
系统模式
6、
SoC
的特殊功能寄存器
SoC
中的寄存器包括
ARM CPU
处理器内的寄存器和特殊功能寄存器,特殊功能寄存器不在
CPU
中,而是存在于
CPU
的外设中,通过访问外设的
SFR
来编程控制外设是硬件编程控制的方法。
7、
S5PV210
的内存映射
以下三张图为S5PV210的内存映射图
IRAM和IROM:
本文出自 “
生命不息,奋斗不止
” 博客,请务必保留此出处
http://9291927.blog.51cto.com/9281927/1785897
Ta的文章
更多
>>
VCC、VDD、VDDA、VSS、VSSA
0 个评论
OMAP3530资料
0 个评论
嵌入式Linux ARM汇编(一)——ARM体系结构
0 个评论
食品类电商系统,该如何建设和布局?
0 个评论
手把手实战:利用LM神经网络算法自动识别窃电用户(附代码)
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮