想学单片机的同学可以关注,给我发私信,或者在评论区回复。在嵌入式领域ARM可谓一家独大,要学习嵌入式开发,必须了解ARM系统,只有理解ARM只有在系统的基础上才能理解ARM汇编(GNU汇编),很多学生对ARM了解还是一知半解,今天我们就来看看。
首先梳理一下ARM与处理器相关的名词
流水线:
底层架构设计术语。 CPU先fetch(取指令),然后decode(译码),然后excute(执行),称为基础F D E三步操作,CPU为了完成操作,我们称之为三级流水。
DSP:
数字信号处理可以理解为一个单独的芯片或协同处理器来处理数字信号,如多媒体信号(由于对任务的要求较高,使用主要信号)CPU如果要处理,其他任务可能无法兼顾)。
Jazelle:
arm中针对Java基本不使用编程模型
半字:默认情况下int占四个字节,单个字节存储容易损坏数据,所以有时四个字节一起存储,称为单词,半字代表两个字节一起操作
Thumb:
即Thumb指令,辅助arm32位机器上的处理指令arm指令占32位,即四个字节,但有时为了减少指令占用的空间,引入了指令thumb(拇指)指令是16位的精简指令,后来推出Thumb2是16位和32位混合的指令。
VFP:
Vector Floating-Point矢量浮点运算机制
QEMU:
它实际上是一个模拟不同架构系统的软件模拟器(例如x86 arm),调试bootloader可以使用裸机程序或裸机程序
GNU工具链:
可开发内核或应用程序包括以下组件:
GNU make
GNU Compiler Collection (GCC)
GNU binutils linker, assembler and other object/library manipulation tools
GNU Debugger (GDB)
GNU build system (autotools)
GNU C Library (glibc or eglibc)
gnueabi的含义:
e表示 embedded嵌入式 a表示 application应用程序 b表示 binary二进制 i表示 interface接口全称嵌入式应用程序二进制接口,因此其功能是编译和生成嵌入式二进制程序。
UEFI:
Unified Extensible Firmware Interface统一可扩展的零件接口相当于适应硬件和操作系统的标准。操作系统可以扩展哪些硬件接口,但我们正在做arm硬件在开发过程中可能不是很规范,所以可以用这个标准模拟符合标准的硬件,绕过它。
TrustZone:
安全架构
LPAE:
Large Physical Address Extension(大物理地址扩展)类似于虚拟化技术 按理说,32只能找到4个地址G但是使用内存后,内存可以虚拟到特别大,一个T也没关系(硬件层)
big LITTLE:
大小处理器可能需要主处理器和协处理器。例如,主处理器A15和协处理器A8当任务量要求不大时,切换到协处理器会降低功耗,主要针对手持设备,解决耗电问题。官方声称,使用这种方法可以比完全使用主处理器节省70%的电力。
CPU组成:
ALU单元(逻辑操作单元)
可用于切换控制器CPU状态
寄存器(小存储器)
CPU内部总线最重要的是前三个,但我们最关心的是编写程序CPU状态切换和寄存器
arm处理器模式
例如,不同系列的处理器可能有不同的处理模式arm7与arm9有7种处理器模式,但A系列有9种处理器模式
处理器模式是指在系统运行过程中崩溃时切换CPU模式,完成安全、效率、节能控制。因为当系统崩溃时cpu工作毫无意义,所以此时为了节能等考虑,必须切换处理器模式。
下面以cotex A介绍了九种处理器模式,
非特权模式,8种特权模式
模式编码也将存储在指令(即32位占5位)的某个区域
USR用户模式,大多数程序操作模式,普通模式
FIQ为fast interrupt,快速中断模式,
SVC对于超级管理员模式,当启动时cpu最高权限,按下reset按键时,系统将停止所有工作并执行reset,权限很大,一般不会随便使用。
MON是cotex A该系列被称为监控模式,相当于后台服务ABT退出模式,通常当用户程序出现异常时,cpu停止代码运行,然后退出。
HYP是超级监视器,比超级管理员低一点,一般不常用
SYS当系统本身出现异常时,其中一个特点是与用户模式寄存器共享模式基本上用大写简写表示
USR FIQ IRQ SVC MON ABT HYP UND SYS
因为内存不稳定,访问速度慢,所以在cpu需要寄存器。
USR寄存器在模式下
r1到r都是通用寄存器
r13为sp,即stack pointer栈指针。存储栈地址,程序跳转时,保存程序跳转的目标地址标志
r14为lr,即link register链接寄存器。存储子程序的返回地址。
r15为pc,即program count程序计数器。
APSR/CPSR, PSR即program status register程序状态寄存器,A即apilication应用,C即current因此,全称为应用/当前程序状态寄存器。
SPSR中 S即saved已保存,因此全称已保存的程序状态寄存器,更好地称为存储状态寄存器或备份状态寄存器。
举例说明CPSR/APSR与SPSR寄存器:当前程序状态假设normal这种状态首先保存到这种状态CPSR,但突然出现异常(exception),这时候exception会存到CPSR寄存器,但在处理异常后想要返回normal状态,此时原来normal状态已被冲走,所以就需要SPSR寄存器保存原状态,确保能够恢复原状态。正是因为我们的需求,处理器 USR模式下没有SPSR因为 USR模式是正常的模式,所以不需要记录异常模式或其他状态模式,这样知识就会联系起来,更容易理解。
本期首先在这里分享。想加入小组学习单片机编程的同学可以给我发私信,回复我回复我想开始,和我们一起成长可以表扬关注我们!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至827202335@qq.com 举报,一经查实,本站将立刻删除。文章链接:https://www.eztwang.com/dongtai/50247.html