GD32F30x系列系统及存储器架构

  • 1. 系统及存储器架构
    • 1.1. Arm® Cortex®-M4 处理器
    • 1.2. 系统架构
    • 1.3. 存储器映射
      • 1.3.1. 位带操作
      • 1.3.2. 片上 SRAM 存储器
      • 1.3.3. 片上 FLASH 存储器概述
    • 1.4. 引导配置
    • 1.5. 设备电子签名
      • 1.5.1. 存储器容量信息
      • 1.5.2. 设备唯一 ID(96 位)
    • 1.6. 系统配置寄存器

1. 系统及存储器架构

GD32F30x系列器件是基于Arm® Cortex®-M4处理器的32位通用微控制器。
Arm® Cortex®-M4处理器包括三条AHB总线分别称为I-CODE总线、D-Code总线和系统总线。
Cortex®-M4处理器的所有存储访问,根据不同的目的和目标存储空间,都会在这三条总线上执行。存储器的组织采用了哈佛结构,预先定义的存储器映射和高达4 GB的存储空间,充分保证了系统的灵活性和可扩展性。


1.1. Arm® Cortex®-M4 处理器

Cortex®-M4处理器是一个具有低中断延迟时间低成本调试特性的32位处理器。高集成度和 增强的特性使Cortex®-M4处理器适合于那些需要高性能低功耗微控制器的市场领域。
Cortex®-M4处理器基于Armv7架构,并且支持一个强大且可扩展的指令集,包括通用数据处理I/O控制任务、增强的数据处理位域操作、DSP(数字信号处理)和浮点运算指令。

下面列出由Cortex®-M4提供的一些系统外设:
内部总线矩阵,用于实现I-Code总线、D-Code总线、系统总线、专用总线(PPB)以及调试专用总线(AHB-AP)的互联;
 嵌套式向量型中断控制器 (NVIC);
 闪存地址重载及断点单元 (FPB);
 数据观测点及跟踪单元 (DWT);
 指令跟踪宏单元 (ITM);
 串行线和JTAG调试接口 (SWJ-DP);
 跟踪端口接口单元 (TPIU);
 内存保护单元 (MPU);
 浮点运算单元 (FPU)。


1.2. 系统架构

GD32F30x系列器件采用32位多层总线结构,该结构可使系统中的多个主机和从机之间并行通信成为可能。
多层总线结构包括一个AHB互联矩阵、一个AHB总线两个APB总线。AHB互 联矩阵的互联关系接下来将进行说明。在表1-1. AHB互联矩阵的互联关系列表中,”1”表示相 应的主机可以通过AHB互联矩阵访问对应的从机,空白的单元格表示相应的主机不可以通过 AHB互联矩阵访问对应的从机。



如表1-1. AHB互联矩阵的互联关系列表所示,AHB互联矩阵连接了几个主机,分别为:
IBUS、DBUS、SBUS、DMA0、DMA1和ENET。
【1】IBUS是Cortex®-M4内核的指令总线,用于从代码区 域(0x0000
0000〜0x1FFF FFFF)中取指令和向量。
【2】DBUS是Cortex®-M4内核的数据总线,用
于加载和存储数据,以及代码区域的调试访问。
【3】同样,SBUS是Cortex®-M4内核的系统总线
用于指令和向量获取、数据加载和存储以及系统区域的调试访问。
系统区域包括内部SRAM区 域和外设区域。
【4】DMA0和DMA1分别是DMA0和DMA1的存储器总线。
【5】ENET是以太网。


AHB互联矩阵也连接了几个从机,分别为:
FMC-I、FMC-D、SRAM、EXMC、AHB、APB1和 APB2。
【1】FMC-I是闪存存储器控制器的指令总线,而FMC-D是闪存存储器的数据总线
【2】SRAM是片上静态随机存取存储器。
【3】 EXMC是外部存储器控制器。
【4】AHB是连接所有AHB从机的AHB总线
【5】而APB1和APB2是连接所有APB从机的两条APB总线。两条APB总线连接所有的APB外设。
APB1操作速度限制在60MHz,APB2操作于全速(这取决于设备,可高达120MHz)。


互联的多层AHB总线架构如下图所示。


1.3. 存储器映射

Arm® Cortex®-M4处理器采用哈佛结构,可以使用相互独立的总线来读取指令和加载/存储数据
指令代码和数据都位于相同的存储器地址空间,但在不同的地址范围。
程序存储器,数据存储器,寄存器和I/O端口都在同一个线性的4GB的地址空间之内。
这是Cortex®-M4的最大地址范围,因为它的地址总线宽度是32位。此外,为了降低不同器件供应商重复应用的软件复杂度,Cortex®-M4处理器提供预先定义的存储器映射
存储器映射表中,一部分地址空间由Arm® Cortex®-M4的系统外设所占用,且不可更改。此外,其余部分地址空间可由芯片供应商 定义使用
表1-2. GD32F30x系列器件的存储器映射表显示了GD32F30x系列器件的存储器映 射,包括代码、SRAM、外设和其他预先定义的区域。几乎每个外设都分配了1KB的地址空间, 这样可以简化每个外设的地址译码









1.3.1. 位带操作

为了减少“读-改-写”操作的次数,Cortex®-M4处理器提供了一个可以执行单原子比特操作的位带功能。存储器映射包含了两个支持位带操作的区域,分别位于SRAM和外设中位带区域将 存储器别名区的每个字映射到存储器位带区的某个位上。

1.3.2. 片上 SRAM 存储器

GD32F30x系列微控制器的片上SRAM起始地址是0x2000 0000,最大容量可达96KB。它支持 字节、半字(16位)以及字(32位)访问

1.3.3. 片上 FLASH 存储器概述

GD32F30x系列微控制器提供高密度片上FLASH存储器,按以下分类进行组织:
 高达3072KB主FLASH存储器;
 高达18KB引导装载程序(boot loader)信息块存储器;
 器件配置的选项字节。
【1】GD32F303xx 的闪存 存 储 器 容 量 256K 到 512K 字节之间 的产品 称 作 高 密 度 产 品(GD32F30X_HD)。
【2】GD32F303xx的闪存存储器容量大于512K字节的产品称作超高密度产品 (GD32F30X_XD)。
GD32F305xx和GD32F307xx微控制器称作互联型产品(GD32F30X_CL)。


1.4. 引导配置

GD32F30x系列微控制器提供了三种引导源,可以通过BOOT0和BOOT1引脚来进行选择,详 细说明见表1-3. 引导模式。
该两个引脚的电平状态会在复位后的第四个CK_SYS(系统时钟)的 上升沿进行锁存。
用户可自行选择所需要的引导源,通过设置上电复位系统复位后的BOOT0 和BOOT1的引脚电平。一旦这两个引脚电平被采样,它们可以被释放并用于其他用途。

上电序列或系统复位后,Arm®Cortex®-M4处理器先从0x0000 0000地址获取栈顶值,再从 0x0000 0004地址获得引导代码的基地址,然后从引导代码的基地址开始执行程序。


根据所选择的引导源,主FLASH存储器(开始于0x0800 0000的原始存储空间)或系统存储器 (HD系列开始于0x1FFF F000的原始存储空间,其它系列地址请参考表2-1. GD32F30x_CL和 GD32F30x_HD,GD32F30x_XD闪存基地址和构成)被映射到引导存储空间(起始于0x0000 0000)。
片上SRAM存储空间的起始地址是0x2000 0000,当它被选择为引导源时,在应用初始化代码中,你必须使用NVIC异常表和偏移寄存器来将向量表重定向到SRAM中。

嵌入式的Bootloader存放在系统存储空间,用于对FLASH存储器进行重新编程。

GD32F30x芯片支持嵌入式引导程序通过多种接口方式来更新Flash。可以有1或2个USART端 口和标准USB端口用于GD32F30x系列产品。如下表所示。



1.5. 设备电子签名

设备的电子签名中包含的存储容量信息和96位的唯一设备ID,它位于Flash存储器的信息块中。
96位设备唯一ID对任何设备来说都是独一无二的,可以用作序列号,或秘钥的一部分,等等。

1.5.1. 存储器容量信息

基地址:0x1FFF F7E0
其值出厂已设置,不可由用户更改。

1.5.2. 设备唯一 ID(96 位)

基地址:0x1FFF F7E8
其值出厂已设置,不可由用户更改。



1.6. 系统配置寄存器