1、嵌入式处理器底子
典型的微处理器由控制单元、程序计数器(PC)、指令寄存器(IR)、数据通道、存储器等构成 。
指令执行过程一样平常分为:
取指:
从存储器中得到下一条执行的指令读入指令寄存器;
PC: 程序计数器, 总是指向下一条将要执行的指令;
IR: 指令寄存器,用于保持已取得指令;如图:
译码:
表明指令,决定指令的执行意义;如图:
执行:
从存储器向数据通道寄存器移动数据;
通过算术逻辑单元ALU举行数据操纵;如图:
存储:
从寄存器向存储器写数据。如图:
在一些微处理器上,如ARM系列处理器、DSP等,指令实现流水线作业,指令过程按流水线的数量来举行分别。如5级流水线的处理器将指令分5个阶段执行。
(1)按存储布局分:冯·诺依曼体系布局和哈佛体系布局
冯·诺伊曼布局也称普林斯顿布局,是一种将程序指令存储器和数据存储器归并在一起的存储器布局。
处理器,经过同一个总线传输来访问程序和数据存储器,程序指令和数据的宽度相同。如X86系列、ARM7等,如图:
哈佛布局是一种将程序指令存储和数据存储分开的存储器布局,目的是为了减轻程序运行时的访存瓶颈。哈佛布局的微处理器通常具有较高的执行效率。
Microchip公司的PIC系列芯片,摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11
等。如图:
按指令范例可分为:复杂指令集(CISC)处理器和精简指令集(RISC)处理器 。
CISC:复杂指令集(Complex Instru
ction Set Computer);
具有大量的指令和寻址方式,那么就需要更多的表明器。
8/2原则:80%的程序只使用20%的指令;
大多数程序只使用少量的指令就能够运行。
CISC具有如下明显特点:
(1) 指令格式不固定,指令长度不同等,操纵数可多可少;
(2) 寻址方式复杂多样,以利于程序的编写;
(3) 接纳微程序布局,执行每条指令均需完成一个微指令序列;
(4) 每条指令需要若干个呆板周期才气完成,指令越复杂,花费的呆板周期越多。
RISC:精简指令集(Reduced Instruction Set Computer):指令数量少,在通道中只包罗最有效的指令;执行时间短,确保数据通道快速执行每一条指令;使CPU硬件布局设计变得更为简单;每条指令都接纳标准字长。
资料直通车:Linux内核源码技能学习路线+视频教程内核源码
学习直通车:Linuxc/c++高级开发【直播公开课】
零声白金VIP体验卡:零声白金VIP体验卡(含底子架构/高性能存储/golang/QT/音视频/Linux内核)
2、ARM处理器体系架构
ARM即Advanced RISC Machines的缩写。
1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生。
20世纪80年代后期,ARM很快开发成Acorn的台式机产物,形成英国的计算机教诲底子。
1990年成立了Advanced RISC Machines Limited。
20世纪90年代,ARM32位嵌人式RISC(Reduced Instruction Set Computer)处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式体系应用领域的领先地位。
目前己经占有75%以上的32位嵌入式产物市场。
32位RISC处理器受到青睐,领先的是ARM嵌入式微处理器系列。
ARM公司虽然只成立20多年,但在1999年因移动电话火爆市场,其32位RISC处理器占市场份额凌驾了50%,2001年初,ARM公司的32位RISC处理器市场占有率凌驾了75%。ARM公司是知识产权供应商,是设计公司。由互助同伴公司来生产各具特色的芯片。
ARM处理器特点:
(1)ARM指令是32位定长的(除AArch64架构部分增长指令为64位外)
(2)寄存器数量丰富(37个寄存器)
(3)平凡的Load/Store指令
(4)多寄存器的Load/Store指令
(5)指令的条件执行
(6)单时钟周期中的单条指令完成数据移位操纵和ALU操纵
(7)通过变种和协处理器来扩展ARM处理器的功能
(8)扩展了16位的Thumb指令来进步代码密度
ARM的命名规则, 大致分成两类类:
基于ARM Architecture版本的“处理器系列”命名规则;
基于ARM Architecture版本的“处理器型号”命名规则。
ARMv6 架构,引进了包括单指令多数据(SIMD)运算在内的一系列新功能。
ARMv6-M 架构,为低成本、高性能装备而设计,向以前由8位装备占主导地位的市场提供32位功能强大的办理方案。如Cortex™-M0和Cortex-M1。
ARMv7架构,所有ARMv7架构处理器都实现了Thumb-2 技能(一个经过优化的16/32位混淆指令集),此架构分为3类处理器:Cortex-A -应用处理器、Cortex-R - 及时处理器、Cortex-M - 微控制器。
ARMv8架构,ARMv8-A将64位体系布局支持引入ARM体系布局中,其中包括:64位通用寄存器、SP(堆栈指针)和 PC(程序计数器),64位数据处理和扩展的虚拟寻址,兼容32位处理。
ARMv9架构,最重大的升级在于AI和安全,在兼容ARMv8的底子上,提升了安全性,增长了矢量计算、呆板学习和数据信号处理等多方面能力,性能体现也将得到极大幅度的提升。
1)ARM数据范例
(1)双字节(Double-Word):64位
(2)字(Word):在ARM体系布局中,字的长度为32位。
(3)半字(Half-Word):在ARM体系布局中,半字的长度为16位。
(4)字节(Byte):在ARM体系布局中,字节的长度为8位。
2)ARM处理器存储格式
作为32位的微处理器,ARM体系布局所支持的最大寻址空间为4GB。
ARM体系布局可以用两种方法存储字数据,分别为大端模式和小端模式。
大端模式(高地高低):字的高字节存储在低地址字节单元中,字的低字节存储在高地址字节单元中。
3)ARM处理器工作状态
从编程的角度来看,ARM微处理器的工作状态一样平常ARM和Thumb有两种,并可在两种状态之间切换。
(1)ARM状态:此时处理器执行32位的字对齐ARM指令,绝大部分工作在此状态。
(2)Thumb状态:此时处理器执行16位的半字对齐的Thumb指令。
THUMB指令的特点:
THUMB代码所需空间为ARM代码的70%;
THUMB代码所使用的指令数比ARM代码多40%;
用32位存储器,ARM代码比THUMB代码快40%;
用16位存储器,THUMB代码比ARM代码快45%;
使用THUMB代码,外部存储器功耗比ARM代码少30%
4)ARM处理器工作模式
5)ARM Cortex-A处理器工作模式
6) Cortex-A寄存器组
34个通用寄存器,包括各种模式下的R0-R14和共用的R15程序计数器(PC),这些寄存器都是32位的。8个状态寄存器,Hyp模式独有一个ELR_Hyp寄存器。
7)程序状态寄存器CPSR和SPSR
和其他处理器一样,ARM有程序状态存储器来配置处理器工作模式和表现工作状态。ARM处理器有两个程序状态寄存器CPSR (Current Program Status Register,当前程序状态寄存器)和SPSR (Saved Program Status Register,备份的程序状态寄存器)。
CPSR可在任何运行模式下被访问,它包括条件标志位、中断克制位、当前处理器模式标志位以及其他一些相干的控制和状态位。
每一种运行模式下都有一个专用的物理状态寄存器,称为SPSR为状态寄存器。
(1)N(Negative):当用两个补码体现的带符号数举行运算时,N=1体现结果为负,N=0体现结果为正数或零
(2)Z(Zero):Z=1体现运算结果为0,Z=0体现运算结果非零
(3)C(Carry):有4种方法可以设置C的值:
1)加法指令(包括比较指令CMP)
2)当运算产生进位时(无符号数溢出),C=1,否则C=0
3)减法运算(包括比较指令CMP)
4)当运算产生了借位(无符号数溢出),C=0,否则C=1
对于包罗移位操纵的非加/减运算指令,C为移出值的最后一位。对于其他的非加/减运算指令,C的值通常不变。
(4)V(Overflow):有2种方法设置V的值:
1)对于加/减法运算指令,当操纵数和运算结果为二进制的补码体现的带符号数时,V=1体现符号位溢出。
2)对于其他的非加减法运算指令,V的值通常不变。
(5)I(Interrupt Request):I=1体现克制响应irq,I=0体现答应响应
(6)F(Fast Interrupt Request):F=1体现克制响应fiq,F=0体现答应响应
(7)T(Thumb):T=0体现当前状态位ARM状态,T=1体现为Thumb状态
(8)M4-M0:体现当前处理器的工作模式
8)工作模式的切换条件
(1)执行软中断(SWI)或复位命令(Reset)指令。假如在用户模式下执行SWI指令,CPU就进入管理(Supervisor)模式。
(2)有外部中断发生。假如发生了外部中断,CPU就会进入IRQ或FIQ模式。
(3)CPU执行过程中产生非常。最典型的非常是由于MMU掩护所引起的内存访问非常,此时CPU会切换到Abort模式。假如是无效指令,则会进入Undefined模式。
(4)有一种模式是CPU无法自动进入的,这种模式就是System模式,要进入System模式必须由程序员编写指令来实现。要进入System模式只需改变CPSR的模式位为System模式对应的模式位即可。
(5)在任何特权模式下,都可以通过修改CPSR的MODE域来进入其他模式。不过需要留意的是由于修改的CPSR是该模式下的影子CPSR,即SPSR,因此并不是实际的CPSR,所以一样平常的做法是修改影子CPSR,然后执行一个MOVS指令来规复执行某个断点并切换到新模式。
3、ARM处理器内存管理
1)什么是内存映射
内存映射指的是在ARM存储体系中,使用内存管理单元(MMU)实现虚拟地址到实际物理地址的映射,如图所示。
2)为什么要内存映射
A32架构的ARM的地址总线为32位,故CPU可寻址范围为0x00000000~0xffffffff寻址空间为4GB,所有的内部和外部存储或者外设单元都需要通过对应的地址来操纵,不同芯片外设的种类数量寻址空间都不一样,为了能让内核更方便的管理不同的芯片设计,ARM内核会先给出预定义的存储映射。
芯片设计公司需要根据内核提供的预定义的存储器映射来定义芯片内部外设和外部的保留接口,这样做的好处是极大地减少了同一内核不同芯片间地址转化的麻烦(CPU操纵统一的虚拟地址,实际物理地址交由MMU管理)。
3)位带操纵
(1)什么是位带操纵
举个简单的例子,在使用51单片机操纵P1.0为低电平常我们知道这背后实际上就是往某个寄存器某个比特位中写1或0的过程,但在CPU操纵的过程中每一个地址所对应的都是一个8位字节,怎么实现对其中某一位的直接操纵,这就需要位带操纵的资助。
(2)哪些地址可以举行位带操纵
上图中有两个区中实现了位带。其中一个是 SRAM 区的最低 1MB 范围(Bit band region),第二个则是片表里设区的最低 1MB 范围。
4)寄存器的地址计算
在ARM中所有的外设地址基本都是挂载在AHB或者APBx总线上,因此我们往往接纳基地址+偏移地址+布局体的方式,来快速明了计算某一外设具体寄存器的地址,如图所示。
5)集成外设寄存器访问方法
原文作者:面包板社区
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |