如何独自搭建一个CM0系统
在用keil调试开发时我们会见到如下界面
下面则是一些具体含义
处理器模式
Thread mode模式用于执行应用软件。当复位结束时,处理器进入线程模式。
Handler mode异常处理模式。处理器在完成所有异常处理后返回到Thread模式。
Stack
处理器使用完整的降序堆栈。这意味着堆栈指针指示堆栈内存中最后一个堆叠项。当处理器将一个新项压入堆栈时,它会减少堆栈指针,然后将该项写入新的内存位置。处理器实现了两个栈,主栈和进程栈,它们有独立的栈指针副本
核心寄存器
Name | Description |
---|---|
R0-R12 | R0-R12是用于数据操作的通用寄存器 |
MSP (R13) PSP (R13) | 堆栈指针(SP)是寄存器R13。在线程模式下,控制寄存器指示要使用的堆栈指针,主堆栈指针(MSP)或进程堆栈指针(PSP) |
LR (R14) | 链路寄存器(LR)是寄存器R14。它存储子例程、函数调用和异常的返回信息 |
PC (R15) | 程序计数器(PC)是寄存器R15。它包含当前程序地址 |
PSR | 程序状态寄存器(PSR)包括:应用程序状态寄存器(APSR) •中断程序状态寄存器(IPSR)•执行程序状态寄存器(EPSR) |
CONTROL | 当处理器处于线程模式时,控制寄存器控制使用的堆栈 |
AHB-Lite 部分接口
AHB-Lite实现了高性能、高时钟频率系统所需的功能,包括
•突发传输
•单时钟边缘操作
•非三态实现
•宽数据总线配置,64、128、256、512和1024位。
最常见的AHB-Lite从机是内部内存设备、外部内存接口和高带宽外设。
虽然低带宽外设可以作为AHB-Lite从设备,但由于系统性能的原因,它们通常位于AMBA高级外设总线(APB)上。
这个高级总线和APB之间的桥接是通过一个AHB-Lite从机完成的,这个从机被称为APB桥接。
因为AHB-Lite是一个单一的主总线接口,所以如果需要一个多主系统,系统设计者必须包含一个组件来隔离所有主系统。为了实现这个隔离功能,可以将每个主服务器视为在自己的层上,因此组件必须创建一个多层互连,其中所有主服务器彼此隔离,但可以共享对从服务器的访问。从仲裁必须由多层互连组件执行
Memory model
介绍Cortex-M0设备的内存映射和内存访问行为。处理器有一个固定的内存映射,提供高达4GB的可寻址内存。内存映射是:
内存区域、类型和属性
内存映射被分割成多个区域。
每个区域都有一个已定义的内存类型,有些区域还有额外的内存属性。
内存类型和属性决定了访问该区域的行为。
内存类型有:
Normal
为了提高效率,处理器可以对事务重新排序,或者执行投机读操作
Device
处理器相对于设备或强顺序内存的其他事务保持事务顺序。
Strongly-ordered
处理器保持相对于所有其他事务的事务顺序。
地址区域参数确定到主接口的布线。
当定义了多组地址区域参数时,每个主接口可以有多个非连续地址区域。然而,不同主机的地址区域接口不得重叠。mem_lo参数定义下限地址和mem_hi参数定义主接口的上限地址。
<slave_interface name="SI1">
<address_region interface="MI0" mem_lo="40000000" mem_hi="4fffffff" remapping="move"/>
<address_region interface="MI0" mem_lo="70000000" mem_hi="7fffffff" remapping="alias"/>
<address_region interface="MI1" mem_lo="80000000" mem_hi="9fffffff" remapping="none"/>
<address_region interface="MI2" mem_lo="a0000000" mem_hi="bfffffff" remapping="move"/>
<address_region interface="MI3" mem_lo="00000000" mem_hi="1fffffff" remapping="move"/>
<remap_region interface="MI0" mem_lo="00000000" mem_hi="1fffffff" bit="0"/>
<remap_region interface="MI1" mem_lo="50000000" mem_hi="5fffffff" bit="0"/>
<remap_region interface="MI2" mem_lo="60000000" mem_hi="6fffffff" bit="1"/>
<remap_region interface="MI3" mem_lo="c0000000" mem_hi="dfffffff" bit="0"/>
</slave_interface>
重映射配置参数定义了支持地址重映射的主接口的行为。当相关的REMAP信号被设置时,它就会被激活。有两种类型的地址重映射行为:
•如果将重映射参数设置为alias或none,则在新地址空间中创建该区域的别名。
•如果将remapping参数设置为move,地址区域将从原地址空间中移除,主接口将出现在新地址空间中由remap区域定义的位置上
传输类型编码
传输一次即为NONSEQ
突发编码
突发传输,一般也称为数据突发,其在通信领域中一般指在短时间内进行相对高带宽的数据传输
在cortexm0ds_logic中有如下关系
即在传输和突发关系中有
空闲和非连续传输
突发传输只为单一传输
响应
HREADY
HREADY信号用来扩展一次AHB传输的数据部分。当HREADY信号为低时表示传输将被扩展而当其为高时表示传输完成。
在官方的AHB-Lite中多为如下关系
连续读写操作时序图↓