cortex-m3的体系结构:
cortex-m3:微处理器的内核
1.CM3微处理器内核的结构
一整块处理器的结构:
CM3 + 调试模块(睡眠模式,低功耗运行状态) =合起来为cpu
内部总线
外设 存储器
时钟和复位 I/O
cm3内核:
跟踪调试的接口
控制的逻辑部件 thumb解码器 thumb-2解码器
运算器—— 32位的ALU:乘法器和除法器
NVIC接口:数据传输的接口,提供中断信息的控制器端口
总线接口:
CM3微处理器的特点:
功耗低,价格低(具有的门数),调试的成本比较低(调试的手段非常的多:先进),中断的延迟比较低(响应速度比较快)(即时性),支持多级中断的嵌套,可裁剪的存储器保护单元(MPU)
采用的是armv7-m架构:thumb-2子集(包含所有的基本16位和32位thumb-2指令,只有SP(堆栈指针)是单独分组的,寄存器集比arm7简单的多,硬件自带乘除法器,乘除法指令集(thumb-2)
工作模式:线程模式和处理模式
可中断可继续的push/pop指令(对于系统栈的指令,内存分区):低中断的延迟(中断时可以自动保存进度和恢复处理器的状态)
多种访问方式(8位,16,32)(非对齐访问)
中断数量:加上外部中段:1-240个,设置1-8个中断优先级(随时的进行动态重新配置),优先级也是分组的:占先中断等级和非占先中断多级
内核存储器:8个存储单元
SRD(子区禁止功能):能对存储器区进行管理实现有效使用
MPU可裁剪
APB外设总线接口和其他的总线接口
存储器的对齐访问(结构体的存储对齐)
2.处理器的工作模式和状态:
工作的访问级别:特权级和用户级
特权级:类似于管理员权限:有些文件只有管理员才有权进行操作(所有的资源都可以访问)
用户级:普通用户权限:只能在自己的用户目录和公共目录下进行操作(对系统控制空间的访问和部分重要的系统指针不允许访问)
好处:出于数据安全性的考虑,防止意外,恶意的访问破坏了重要数据
工作模式:处理模式和线程模式
处理模式:处理异常和中断(一定在特权状态下的)
1.是在异常处理出现的时候进入处理模式
2.在处理模式中,所有的代码都只能由特权级别进行访问
线程模式:按照正常的程序逻辑进行运行的程序(特权和用户状态下)
1.在复位的时候,处理器自动进入线程模式reset
2.在异常处理返回之后,会正常进入线程模式,所有的代码对特权用户和普通用户都开放
工作状态:thumb状态和调试状态
thumb状态:指令集,指令执行的正常状态
调试状态:处理器停止运行并且进行调试的状态
control:控制cm3工作模式的切换的
control[0]=0进入复位后的特权模式
control[0]=1进入正常运行的线程模式
control[1]编程模式:堆栈的切换
MSR指令控制寄存器:用来控制进程堆栈和主堆栈之间的来回切换
寄存器和总线的接口:
通用寄存器:R0-R7:低寄存器,对所有想使用通用寄存器的指令都开放访问
R8-R12:高寄存器,只能被32位的指令访问,不能被16位的指令访问
堆栈指针SP:(R13):
MSP主堆栈指针:处理模式,线程模式
PSP进程堆栈指针:只用在线程模式下
链接寄存器(R14) LR:用来保存pc的返回地址
程序计数器PC:(R15)将要执行的下一条指令:正在取指的指令
程序状态寄存器(APSR,IPSR,EPSR):XPSR:用于指示程序运行的状态
APSR:应用状态寄存器
31:N:负数或小于标志位:1:结果为负数或者小于 0:结果为正数或者大于
30:Z:零标志位:1:结果为0 0:非0
29:进位或者借位标志位:1:有进位或者借位 0:无进位或者无借位
28:V:溢出标志位:1:溢出 0:无溢出
27:Q:饱和标志位:1:饱和 0:不饱和
0-26:保留位
IPSR:中断状态寄存器:当前被响应(正在执行的)程序的ISR编号
0-8:中断号
9-31:保留位
ISR数据:基础级别=0 RESET=1 NMI=2
EPSR:执行状态寄存器
当多周期指令被执行的时候,进行程序的现场保护
特殊功能寄存器:异常中断寄存器(PRIMASK,FAULTMASK,BASEPRI)
primask:中断屏蔽寄存器:32位,最低位有效:中断总开关:1:中断全屏蔽 0:中断正常响应
faultmask:错误屏蔽寄存器
basepri:可屏蔽等于和低于某个优先级的中断
控制寄存器(control):0 1
0:主堆栈 特权机
1:进程堆栈 用户级
3.寄存器和总线的接口
总线接口:
ARM微控制器:使用的是AMBA总线体系结构
AMBA:3种总线:1.AHB总线:用于连接高性能的模块(支持突发的数据传输:不间断的连续传输)以及单个的数据传输(一个时钟沿)2.ASB总线:用于连接高性能系统模块,只支持突发的数据传输3.APB总线:用于低性能的外围设备接口
总线结构:指令存储器总线(0x00000000=0x1fffffff,两条AHB)
IC:指令传送
DC:数据传送
系统总线(AHB):访问存储区,片上设备和片外设备(0x200000000-0xd00000000)
内部专用外设总线:访问cm3的内部组件(AHB)
外部专用外设总线:访问cm3的外部组件(APB)
4.存储器的组织和映射
Arm的数据类型:
字节byte:8位有符号和8位无符号;
半字(双字节):16位有符号,无符号;
字:32位有符号,无符号;
存储形式:大端方式和小端模式
大端:高位存在低地址中(网络传输)
小端:低位存在低地址中
存储器的层次结构:
寄存器组:访问时间最快,几个ns纳秒
片上cache:8-32kb,十几个ns
主存储器:小到只有几M,大到几个G动态存储器,访问时间大概是50ns
NORFLASH:几M字节,随机读存运行代码
nandflash:几M,几十个G都是可能的,用来当磁盘使用
位绑定:(指针)是把绑定区的每一位,分别映射到别名区的一个字,那我们对于位绑定的操作,就是对别名区的操作
位绑定别区名的字,仅有最低位有效,是映射的位值,没有其他的意义
对于位绑定区的字,可以直接进行读写操作
5.指令集和流水线和异常中断
6.存储器的保护单元