ARM Cortex-M3微处理器由ARM Cortex-M3内核和调试系统构成。
将CPU(Cortex-M3内核)、存储器、定时器/计数器、I/O等集成在一个芯片上。
存储器是用来存储二进制数据的,实际是一个时序逻辑电路,一个触发器可以存储一位二进制数据,触发器由多个与非门等基本门电路构成。
ARM Cortex-M3系列微处理器采用存储器与I/O设备(外设)统一编址的方式,设置部分存储器地址范围用于外设的访问,将这种通过存储器地址访问外设的方式,称为存储器地址映射。(也可以通过访问不同的存储器地址来区分内存单元和I/O口。)
存储器映射,就是将芯片中或芯片外的FLASH、RAM和外设接口等进行统一编址,用于程序存储、数据存储、寄存器和外设。
uARM Cortex-M3能够寻址的最大空间是4GB,寻址范围为 0x00000000~0xFFFFFFFF。
打断程序正常执行顺序的事件,都被称为异常。
中断一般指来自外部的片上外设或外扩的外设的中断请求事件。
Cortex-M3内核集成了一个外设——NVIC用于专门负责中断。
可嵌套中断支持,即高优先级的中断可以打断低优先级的中断。
向量中断支持,缩短中断延迟时间。
动态优先级调整支持。软件可以在运行期间更改中断的优先级。
引入新特长新技术,中断延迟大大缩短。
中断可屏蔽。
保存现场:处理器将相关的寄存器xPSR、PC、LR、R12及R0~R3压入堆栈中。如果当前使用的是PSP,则压入进程堆栈,否则压入主堆栈。
取向量:从中断向量表中找到相应的中断服务程序的入口地址。
更新寄存器:将堆栈指针进行更新,在向量取出后,程序寄存器指针(PC)指向中断服务程序的入口地址,更新程序寄存器指针(PC)以及更新链接寄存器(LR)。
计算机由运算器、控制器、存储器、输入设备和输出设备五大部件组成,早期的计算机多是以运算器为中心的冯·诺依曼结构计算机。随着微电子技术和集成电路的发展,将运算器和控制器集成在一块芯片上,统称为CPU,现代计算机则以存储器为中心,采用总线技术进行各部件间的信息传输。
冯·诺依曼结构也称普林斯顿结构,十一周指令和数据采用二进制表示,且存储在同一个存储器中,并经同一条总线传输的存储器结构。
指令地址和数据地址指向同一个存储器的不同物理位置,统一编址,宽度相同。
由于指令和数据放在同一个存储器中,因此冯诺依曼结构的计算机不能同时既取指令又取数据
计算机的存储器是以字节为单位进行划分的,每个地址单元都对应着一个字节,一个字节占8位(bit)。
当数据由多个字节组成时,数据在内存中的存储方式有两种:大端模式和小端模式。
大端模式:数据的高字节存放在内存低地址处,数据的低字节存放在内存高地址处。
小端模式:数据的低字节存放在内存低地址处,数据的高字节存放在内存高地址处
现有一个32位的数据0x12345678,存放在内存地址为0x4000~0x4003处,若按小端模式进行存放,则其最低字节数据0x78存放在内存地址_____处;若以大端模式存储,则最高字节数据0x12存放在内存_____处。
内存地址 | 0x4000 | 0x4001 | 0x4002 | 0x4003 | |
数据(十六进制数) | 小端 | 0x78 | 0x56 | 0x34 | 0x12 |
大端 | 0x12 | 0x34 | 0x56 | 0x78 |
CISC既有简单指令也有复杂指令,后来人们发现典型程序中80%的语句都是使用计算机中20%的指令,而这20%的指令都属于简单指令;因此花再多时间去研究复杂指令,也仅仅只有20%的使用概率,并且复杂指令会影响计算机的执行速度。既然典型程序的80%都是使用简单指令完成,那剩下的20%语句用简单语句来重新组合一下模拟这些复杂指令就行了,而不需要使用这些复杂指令,于是RISC就出现了。
全称Reduced Instruction Set Compute,精简指令集计算机。
选用使用频度较高的一些简单指令 。
指令的指令长度固定。
指令格式和寻址方式的种类较少。
便于指令的流水线操作。
绝大部分指令的操作均在运行速度最快的寄存器内完成。
采用优化的编译程序来生成高效的目标代码。
CISC全称Complex Instruction Set Computers,复杂指令集计算机。
指令字长不固定。
指令格式较多。
寻址方式多。
绝大多数指令需要多个时钟周期才能执行完毕。
更多地应用于桌面、高性能计算机领域
指标 | CISC | RISC |
价格 | 硬件结构复杂,芯片成本高 |
硬件结构较简单,芯片成本低 |
流水线 | 减少代码尺寸,增加指令的执行周期数,注重硬件执行指令的功能性 |
使用流水线降低指令的执行周期数,增加代码密度 |
指令集 | 指令长度不固定,大量的混杂型指令集,有专用指令完成特殊功能 |
指令长度固定,简单的单周期指令,不常用的功能由多个简单指令组合完成 |
功耗与体积 | 含有丰富的电路单元,功能强,体积大,功耗大 |
处理器结构简单,体积小,功耗小 |
设计周期 | 长 |
短 |
应用范围 | 通用桌面机、高性能计算机 |
嵌入式领域、移动设备 |
每条指令分解为多步,并让各步操作重叠,从而实现几条指令并行处理的技术,称为流水线技术。
ARM Cortex-M3微控制器采用的三级流水线:取指—译码—执行。
1 . 取指(FI):将指令从存储器中取出。
2 . 译码(DI):对所取到的指令进行翻译。
3 . 执行(EI):执行指令。
流水线的技术指标通常用吞吐率、加速比和效率三项指标来衡量。
单位时间内流水线所完成的指令数或输出结果的数量。
流水线执行n条指令所需时间:所需时间=完成一条指令所需时间 +(指令条数n-1)× 时间最长的指令段。
吞吐率表示为:吞吐率=指令条数/指令流水线所需时间
现有一个三级指令流水线分为取指、分析和执行三个部分,其中,取指周期为1ns,分析指令周期为3ns,执行指令周期为2ns,则完成100条指令其吞吐率为多少?
完成第一条指令需要1+3+2=6ns,即若不采用指令流水操作,完成一条指令需6ns。由于分析指令所用时间最长为3ns,那么从第二条指令开始,每隔3ns就能完成一条指令,完成100条指令所需要的流水时间为:
6ns+(100-1)×3ns=303ns,
则吞吐率为:
100/303ns。
ARM专门从事基于RISC技术芯片的设计开发,不直接生产芯片,而是转让技术设计许可,由合作公司生产各具特色的芯片。
ARM是一家公司,在全球半导体行业技术领先,其主要业务是设计16位和32位嵌入式处理器。
ARM是一种技术的名称,是一个Advanced RISC Machines 32位RISC处理器体系结构。
ARM是一类微处理器芯片或产品的统称,是采用ARM技术开发的RISC处理器的通称。
由于STM32的外设时钟复杂,因此需要有一套完整的时钟系统来进行时钟管理,这就是STM32的时钟系统。STM32的时钟系统由RCC(Reset and Clock Control,复位与时钟控制器)产生,用来为系统和各种外设提供所需的时钟频率,以确定各外设的工作速度。
其具有5个时钟源:
0xFFFFFFFF | 内部外设 |
0xE0000000 | |
0xDFFFFFFF | Not Used |
0xC0000000 | |
0xBFFFFFFF | FSMC Register |
0xA0000000 | |
0x9FFFFFFF | FSMC Bank3-Bank4 |
0x80000000 | |
0x7FFFFFFF | FSMC Bank1-Bank2 |
0x60000000 | |
0x5FFFFFFF | 片上外设 |
0x40000000 | |
0x3FFFFFFF | SRAM区 |
0x20000000 | |
0x1FFFFFFF | Flash代码区 |
0x00000000 |