| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> ARM的工作模式以及寄存器组织(回顾复习) -> 正文阅读 |
|
[嵌入式]ARM的工作模式以及寄存器组织(回顾复习) |
一、ARM处理器主要分为A系列处理器以及M系列处理器,不同的处理器工作模式也不相同,现在就A系类以及M系列的工作模式来做一下总结。 1、关于cortex-A系列工作模式 2.关于cortex-M系列工作模式 ?总结:对于不同的处理器,都是在特定的模式下执行特定的代码,完成特定的功能。 二、ARM的寄存器组织(ARM-v7) 1、在了解寄存器的组织之前,先来了解一下ARM处理器的大致框图 ? icache:高速指令缓存 dcache:高速数据缓存 控制器:负责控制程序的运行 运算器:处理数据运算以及将运行的结果写回寄存器中 寄存器:存储数据(注:空间有限,只有100多字节,而且不能取地址操作(后面介绍为什么不能取地址)) 对于他们读写数据的快慢来说,内核中的寄存器是速度最快的,其次就是缓存,然后就是内存,最后是硬盘 2、ARM-v7寄存器组织 1、寄存器是没有地址的,只能通过编号进行访问,对于ARM-v7架构来说,每个寄存器都是32位的(一条汇编指令首先被编译生成32位的机器码,这个机器码中需要包含指令中的信息,如果在加上地址信息就存不上了(采用压缩可以吗?答案:不可以,如果采用压缩的方式,岂不是更加麻烦了))。 2、banked(灰底)是属于对应模式私有的寄存器,其他的都属于公有的寄存器,如果对应的模式下,有私有的寄存器,那么它就不能访问公有的寄存器(比如说在FIQ模式下,不能访问公有r8寄存器,只能访问自己私有的r8_fiq寄存器),浅色字体代表只能访问到用户模式下的寄存器(比如说在IRQ模式下只能访问用户模式下的r0寄存器) 3、用户模式和系统模式公用一套寄存器组织 4、特殊寄存器介绍: ? ? ? ? sp寄存器(r13寄存器):栈指针寄存器--->用来压栈保存现场的 ? ? ? ? lr寄存器(r14寄存器):链接寄存器--->用来保存返回地址的 ? ? ? ? pc寄存器(r15寄存器):程序计数寄存器--->存放当前指令的地址(完成取指操作,pc的值? ? ? ? ? ? ? 会自动加4指向下一条指令) ? ? ? ? cpsr寄存器:当前程序状态寄存器--->保存当前程序的运行状态 ????????(1)N[31]位 ----> 指令的运算结果为负数,N位被自动置1, 否则清0. ????????(2)Z[30]位 ----> 指令的运算结果为零,Z位被自动置1,否则清0. ????????(3)C[29]位 ---->加法:进行加法运算时,如果产生进位,C位被自动置1,否则清0. ?? ? ? ? ? ? ? ? ? ? ?进位:低32位向高32位进位(溢出的标志位)。 ?? ? ? ? ? ? ? ? ? ? ?减法: 进行减法运算时,如果产生借位,C位被自动清0,否则置1. ?? ? ? ? ? ? ? ? ? ? ?借位:低32位向高32位借位。 ????????(4)V[28]位 ----> 如果符号位发生变化,V位被自动置1,否则清0. ????????(5)I[7]位 ----> IRQ的屏蔽位;I = 1表示屏蔽IRQ类型的中断;I = 0表示不屏蔽IRQ类型的中断 ????????(6)F[6]位 ----> FIQ的屏蔽位;F = 1表示屏蔽FIQ类型的中断;F = 0表示不屏蔽FIQ类型的中断 ????????(7)T[5]位 ----> 状态位;T = 0:?ARM状态,执行的是ARM指令集,ARM指令的宽度是4个字节。 ?? ? ? ? ? ? ? ? ? ? ? ? ? T = 1:Thumb状态,执行的是Thumb指令集,Thumb指令的宽度是2个字节。 ????????(8)M[4:0]位 ---> 模式位 ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?10000 User mode; ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?10001 FIQ mode; ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?10011 SVC mode; ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?10111 Abort mode; ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?11011 Undfined mode; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 11111 System mode; ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?10110 Monitor mode; ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?10010 IRQ mode; ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?注:其他的值保留。 ? ? ? ? spsr寄存器:保存程序状态寄存器--->主要对cpsr寄存器进行备份 三、ARM的寄存器组织(ARM-v8) ? ? |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 16:59:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |