当前位置: 首页 > news >正文

【GD32】存储器架构介绍

🗺️ 1. 存储器映射概述

GD32 基于 ARM Cortex-M 内核,遵循其规定的存储器映射结构。整个 4GB 的地址空间被划分为多个预定义区域,用于不同的存储器和外设。

地址范围区域类型说明
0x0000 0000 - 0x1FFF FFFF代码区用于存放程序代码,通常映射到内部 Flash 或系统存储器。
0x2000 0000 - 0x3FFF FFFFSRAM 区用于存放运行时的数据(变量、栈、堆),直接对应芯片的物理 RAM。
0x4000 0000 - 0x5FFF FFFF外设区所有片上外设(如 GPIO、USART、定时器等)的寄存器都映射到此区域。
0x6000 0000 - 0xDFFF FFFF外部存储器用于连接外部存储设备(如 SDRAM、NOR Flash),通过 EXMC(外部存储器控制器)访问。
0xE000 0000 - 0xFFFF FFFFCortex-M 内核外设包括 NVIC、SysTick、调试组件等。

💾 2. 内部存储器

GD32 芯片内部集成了两种主要的存储器:Flash 和 SRAM。

片上 Flash 存储器
  • 功能:主要用于存储程序代码和只读数据(如常量字符串)。
  • 地址:通常起始于 0x0800 0000
  • 结构:通常分为几个部分:
    • 主存储块 (Main Memory):用户程序的主要存放区域。按页(Page)组织,不同型号的页大小可能不同(例如 1KB 或 2KB)。在写入前需要先擦除。
    • 信息块 (Information Block)
      • 系统存储器 (System Memory):存储芯片厂商预置的 Bootloader(串口下载程序),用户不可修改。
      • 选项字节 (Option Bytes):用于配置芯片的读写保护、看门狗、复位电平等功能。
片上 SRAM 存储器
  • 功能:用于程序运行时的数据存储,如全局变量、局部变量、堆栈等。
  • 地址:起始于 0x2000 0000
  • 特性易失性存储器,断电后数据丢失。支持字节、半字(16位)和字(32位)访问。

下表对比了 GD32 内部两种主要存储器的特性:

特性片上 Flash片上 SRAM
用途存储程序代码、常量数据存储运行时变量、堆栈
起始地址0x0800 00000x2000 0000
易失性非易失性 (断电数据不丢失)易失性 (断电数据丢失)
写入方式需先擦除页(Page)再写入可直接按字节/半字/字写入
寿命擦写次数有限 (通常 1万-10万次)几乎无限次读写
速度读取较快,写入和擦除较慢读写速度都非常快

🔄 3. 启动配置

GD32 的启动模式通过 BOOT0BOOT1 引脚的电平组合在复位时选择,决定了芯片上电后从哪个存储器开始执行程序。

BOOT1 PinBOOT0 Pin启动模式启动地址 (示例)典型应用场景
00主闪存启动0x0800 0000最常用模式,从用户 Flash 程序启动
01系统存储器启动0x1FFF F000 (F1系列)通过串口下载程序 (ISP)
11SRAM 启动0x2000 0000调试程序,减少对 Flash 的擦写磨损

关键点

  • 芯片复位后,Cortex-M 内核总是从 0x0000 0000 地址获取主堆栈指针 (MSP),并从 0x0000 0004 地址获取复位向量,开始执行程序。
  • 上述的启动地址(如 0x0800 0000)会被硬件自动映射到 0x0000 0000 开始的空间,以便内核访问。

🧠 4. 外部存储器控制器 (EXMC)

对于需要扩展存储空间的场景,GD32 提供了 EXMC(External Memory Controller)。

  • 功能:EXMC 可以连接各种外部存储器,如 SRAM, ROM, NOR Flash, NAND Flash, PC CardSDRAM
  • 地址映射:外部存储器的地址被映射到 GD32 的地址空间中(例如 0x6000 0000 - 0xDFFF FFFF),CPU 可以像访问内部内存一样直接访问它们。
  • 配置:使用 EXMC 需要初始化相关的时序参数和控制寄存器,以匹配所连接存储器的规格。

🛡️ 5. 存储保护

GD32 提供了存储器保护机制,增强安全性:

  • 读保护 (RDP):防止通过调试接口(如 SWD/JTAG)读取 Flash 中的程序代码,保护知识产权。
  • 写保护 (WRP):可以保护特定的 Flash 页免受误写或擦除,提高可靠性。

💡 6. 编程提示

  • 代码优化:对于性能关键的代码,尽量将其放在 0x0800 0000 开始的前 256KB Flash 中,因为这部分空间CPU执行指令是零等待的,访问速度最快。
  • 数据存放
    • 常量、只读数据可存放在 Flash 中(使用 const 关键字)。
    • 频繁读写的数据、堆栈应放在 SRAM 中。
  • 选项字节:修改选项字节(如读保护)需谨慎,错误的配置可能导致芯片无法正常下载或运行程序。

💎 总结

GD32 的存储架构清晰且强大,涵盖了从内部 Flash 和 SRAM 到丰富的外部存储器扩展能力。理解其存储器映射、启动模式以及各类存储器的特性和用途,是进行高效GD32开发的基础。


文章转载自:

http://J3Oawf4r.qmwzr.cn
http://iUIdnGC1.qmwzr.cn
http://2qaBfECA.qmwzr.cn
http://tG6r2CrH.qmwzr.cn
http://6rXWdnSK.qmwzr.cn
http://TQsgXMWo.qmwzr.cn
http://ZPRYrI1k.qmwzr.cn
http://yvEOVud1.qmwzr.cn
http://y9Q0fuxJ.qmwzr.cn
http://0xiPeL4O.qmwzr.cn
http://GmW7m44L.qmwzr.cn
http://y1lRtTFi.qmwzr.cn
http://xD0e980J.qmwzr.cn
http://fsLFoaGx.qmwzr.cn
http://TFujsOBY.qmwzr.cn
http://WxW90Rtj.qmwzr.cn
http://riiqwnfV.qmwzr.cn
http://04hkrOt5.qmwzr.cn
http://xy5PgKND.qmwzr.cn
http://Ojso7013.qmwzr.cn
http://OQv0fl4p.qmwzr.cn
http://Z9vHC5H6.qmwzr.cn
http://OduBM1Vm.qmwzr.cn
http://cvDyprpS.qmwzr.cn
http://NvZj9lEi.qmwzr.cn
http://LN7XrbBg.qmwzr.cn
http://gARlyRn1.qmwzr.cn
http://PLRhhJOw.qmwzr.cn
http://PTd8V733.qmwzr.cn
http://JXIvkVmX.qmwzr.cn
http://www.dtcms.com/a/374506.html

相关文章:

  • 3.HTTP/HTTPS:报文格式、方法、状态码、缓存、SSLTLS握手
  • 【Leetcode hot 100】146.LRU缓存
  • Android 图片 OOM 防护机制设计:大图加载、内存复用与多级缓存
  • Kubernetes 实战练习指南
  • 滴滴二面准备(一)
  • 机器人控制器开发(部署——软件打包备份更新)
  • 企业级CI/CD全流程实战指南
  • VMware与cpolar:虚拟机跨网络协作的无缝解决方案
  • 【深度学习计算机视觉】03:目标检测和边界框
  • IP 访问限制选型指南(含实现示例与存储策略)
  • 思瑞浦 3PEAK ASN:高效率低成本多路音频传输方案,车规级音频芯片国产突破
  • c primer plus 第四章复习题和练习题
  • ES+MySQL实时搜索架构实战解析
  • ​人脸表情识别检测数据集​:近4k图像,8类,yolo标注
  • 【智能协同云图库】基于统一接口架构构建多维度分析功能、结合 ECharts 可视化与权限校验实现用户 / 管理员图库统计、通过 SQL 优化与流式处理提升数据
  • Linux使用-MySQL的使用
  • Linux grep 命令使用说明
  • 双引擎驱动!中新赛克AI安全方案入选网安创新大赛优胜榜单
  • Day42 PHP(mysql注入、跨库读取)
  • 开源 C++ QT Widget 开发(十四)多媒体--录音机
  • 小白成长之路-jenkins使用pipline部署
  • Elasticsearch面试精讲 Day 15:索引别名与零停机更新
  • vscode中使用git、githup的基操
  • Elasticsearch面试精讲 Day 12:数据建模与字段类型选择
  • 【Visual Studio 2017 和 2019下载】
  • 领码方案·AI狂潮:3天极速塑造高可用电商核心架构——从需求到上线,用智能驱动架构革新,打造可扩展、可维护、可复用的电商系统新范式
  • SpringCloud gateway配置predicates的匹配规则
  • Win系统下配置PCL库第一步之下载Visual Studio和Qt 5.15.2(超详细)
  • 腾讯云负载均衡增加访问策略后访问失败
  • 【Java EE进阶 --- SpringBoot】Spring DI详解