ARM处理器的体系结构

ARM7TDMI处理器架构与Thumb指令集详解 ARM7TDMI作为经典的32位RISC处理器,采用冯诺依曼架构,是嵌入式系统开发的重要基础。其核心创新在于Thumb指令集,通过16位指令压缩技术显著提升代码密度,特别适合资源受限的嵌入式场景。处理器采用三级流水线设计,在20-100MHz时钟频率下实现低功耗运行。Thumb指令集通过状态切换机制与ARM指令集协同工作,开发者需要掌握BX指令实现状态转换,并了解不同状态下的寄存器访问差异。在异常处理方面,ARM7TDMI提供包括FIQ、IRQ在内的多种中断类型,其中FIQ通过独立寄存器组实现快速响应。理解 阅读详情

ARM体系结构

ARM处理器为RISC芯片,其简单的结构使ARM内核非常小这使得器件的功耗也非常低。它具有经典RISC的特点:

① 大的、统一的寄存器;
② 装载/保存结构,数据处理操作只针对寄存器的内容,而不直接对存储器进行操作;
③ 简单的寻址模式;
④ 统一和固定长度的指令域,简化了指令的译码。


ARM7TDMI基于ARM体系结构V4T版本,是目前低端的ARM核

注意:“ARM核”并不是芯片,ARM核与其它部件如RAM、ROM、片内外设组合在一起才能构成现实的芯片。

ARM7TDMI处理器使用流水线来增加处理器指令流的速度。ARM7TDMI的流水线分3级,分别为:取指、译码、执行

对于存储器的访问,ARM7TDMI处理器使用了冯·诺依曼(Von Neumann)结构,指令和数据共用一条32位总线。只有装载、存储和交换指令可以对存储器中的数据进行访问。


体系结构支持的数据类型

ARM处理器支持下列数据类型:

字节 8位

半字 16位

字 32位

所有的数据操作都是以字为单位

装载和保存指令可以对字节、半字和字进行操作

ARM指令的长度刚好是1个字(分配为占用4个字节),Thumb指令的长度刚好是半字(占用2个字节)。


处理器状态

ARM7TDMI处理器有两种操作状态:

ARM状态:32位,这种状态下执行的是字方式的ARM指令;

Thumb状态:16位,这种状态下执行半字方式的Thumb指令。

(两个状态之间的切换并不影响处理器模式或寄存器内容。)

从Arm状态切换到Thumb状态

LDR  R0, = Lable+1  地址最低位为1,表示切换到Thumb状态

BX R0

从Thumb状态切换到ARM状态

LDR R0,=Lable     地址最低位为0表示切换到ARM状态
BX R0


为何需要两种状态的切换:

Thumb指令在某些特殊情况下具有比ARM指令更为出色的表现,主要是在代码长度和窄带宽存储器系统性能两方面。但是因为下面一些原因,Thumb又不可能独立
地组成一个应用系统。

Thumb指令集在功能上只是ARM指令集的一个子集,某些功能只能在ARM状态下执行,如CPSR和协处理器的访问。

进行异常响应时,处理器会自动进入ARM状态。

从系统优化考虑,在宽带存储器上不应该放置Thumb代码,很多窄带系统具有宽带的内部存储器。

即使是一个单纯的Thumb应用系统,也必须加一个汇编的交互头程序,因为系统总是自动从ARM 开始启动。


处理器模式 

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

用户(usr)      正常程序工作模式                                    不能直接切换到其它模式

系统(sys)     用于支持操作系统的特权任务等            与用户模式类似,但具有可以直接切换到其它模式等特权

快中断(fiq)   支持高速数据传输及通道处理                 FIQ异常响应时进入此模式

中断(irq)       用于通用中断处理                                     IRQ异常响应时进入此模式

管理(svc)      操作系统保护代码                                     系统复位和软件中断响应时进入此模式

中止(abt)      用于支持虚拟内存和/或存储器保护         在ARM7TDMI没有大用处

未定义(und) 支持硬件协处理器的软件仿真                  未定义指令异常响应时进入此模式

说明:

除用户模式外其他模式均为特权模式,ARM内部寄存器和一些片内外设在硬件设计上只允许特权模式下访问。此外特权模式可以自由切换处理器模式而用户模式不能自由切换到别的模式。

除了用户模式和系统模式,其他的五种模式被称为异常模式。他们除了可以通过程序切换进入外,也可以由特定的异常进入。每种异常模式都由一些独立的寄存器以避免异常退出时用户模式状态不可靠

用户模式和系统模式都不能由异常进入,而且他们使用相同的寄存器组。系统模式是特权模式,不受用户模式限制,操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。


寄存器名称 用户 系统 管理 中止 未定义 中断 快中断
R0 R0 R0 R0 R0 R0 R0 R0
R1 R1 R1 R1 R1 R1 R1
ARM 处理器系列命名规则以及 ARM 体系结构命名规则 ARM 处理器系列命名规则 命名格式:ARM {x} {y} {z} {T} {D} {M} {I} {E} {J} {F} {-S} 12 个字段 x:处理器系列,是共享相同硬件特性的一组处理器的具体实现,例如 ARM7TDMI、ARM740T 和 ARM720T 都属于 ARM7 系列。 y:存储管理 / 保护单元。 2:Cache+MMU 3:改良型 MMU 4:Cache+MP... 阅读详情

相关推荐

浅谈ARM体系结构中的微处理器及其特性: 掌握核心指令集架构

作者:禅与计算机程序设计艺术 1.简介 ARM(Advanced RISC Machines)是一个非常知名的开源、开放的基于RISC(Reduced Instruction Set Computer)指令集架构的微处理器家族。ARM既可以兼容多种系统架构、体系结构、指令集架构等,又可以实现高性能计算、

AI天才研究院 3005

arm7tdmi芯片详细材料

介绍了 arm7tdmi芯片详细材料,详细参数,能够很好的了解微处理器的应用原理~~

RV1126双摄IMX577驱动移植避坑:从RK3588到RV1126的dts配置与内存崩溃解决实录

本文详细记录了在RV1126平台上移植RK3588的IMX577双摄驱动的完整过程,重点解决了dts配置与内存崩溃问题。通过分析硬件架构差异、驱动移植关键点及CMA内存越界问题,提供了两种有效解决方案,并分享了双摄同步优化与网络调试的实战经验,为嵌入式视觉系统开发提供实用参考。

weixin_42641741的博客 405

codesys【modbusRTU】主站

【代码】modbusRTU【codesys】

cfqq1989的博客 4375

kali破解wifi之airmon-ng 工具利用

......

qq_42378173的博客 1万+

风力发电机并网模型建立及仿真验证

传统能源日益匮乏,环境污染日趋严重,全球向安全、可靠和环保的可持续能源体系转型迫在眉睫,风电迎来了重要的发展契机。近年来,全球风电迅猛发展,我国已成为世界风电新增装机容量第一的国家。然而,随着风电规模的不断增大,风电场接入对系统影响不容忽视。随着变速恒频风力发电系统优越的性能突出和大容量电力电子技术的成熟,风速随机性引起的功率波动及故障情况下的动态响应,对电能质量,系统电压、频率的稳定性产生的影响需要深入研究。因而,本文结合实际项目,针对变速恒频风力发电系统建模,端口动态特性及对电网电能质量、运行稳定性的影

毕业设计区博客 1639

逆向工程视角:MFI芯片通信协议在Linux环境下的行为分析

本文从逆向工程角度深入分析了MFI芯片在Linux环境下的通信协议行为,重点探讨了树莓派与MFI芯片通过I2C接口交互的技术细节。文章详细介绍了信号捕获、协议栈逆向、动态调试技巧以及安全机制分析,为开发者提供了在Linux驱动层面实现MFI认证的实用方法。

time3的博客 176

全桥 LLC 谐振变换器详细解析:结构 + 控制 + 工作原理全搞懂!

在现代高效率电源系统中,LLC 谐振变换器🔥早已成为降损利器。尤其是全桥 LLC 拓扑结构,由于其在、副边整流管的 ZCS(零电流关断),再加上优秀的效率表现,已经成为服务器电源、电动汽车 OBC、光伏逆变等场景的首选。那么,全桥 LLC 到底长啥样?它的控制方式是怎么回事?具体工作波形又是如何呢?今天我们就来一篇讲清楚、讲透彻的文章!🚗💨。

weixin_43199439的博客 3522

Qoder Work vs Lobster AI:办公AI工具深度对比(2026年2月更新)

Qoder Work = 本地安全的“文件管家”Lobster AI = 混合智能的“办公全能助手”选择逻辑:隐私优先→选Qoder Work;效率优先→选Lobster AI。

lpfasd123的博客 1045

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: C 预处理
下一篇: ARM处理器的指令系统一 ARM处理器寻址方式
LemonMi
博客等级 码龄15年 11粉丝 15原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值