1.1 sram启动介绍
sram启动多用于程序调试阶段,将MCU内部自带的sram划分为两个范围,一个作为code区,一个作为数据堆栈区 ,code区和堆栈区大小的划分要结合mcu内部sram大小、code及数据堆栈区的大小划分。本文介绍基于GD32F350芯片在keil工程中的sram配置方法。
1.2 keil工程中sram启动配置
通过查看GD32F350芯片用户手册可知内部sram大小为20k,在keil工程中将code区划分为12k,堆栈区为8k,如下图所示。

在debug->setting->flash download界面中将flash烧写算法移除,注意选择Do not Erase,否则会一直出现flash擦除错误,具体如下图所示:

编译整个工程,点击查看.map文件信息可以看到code的加载地址和运行地址都在sram地址范围区间,如下图所示。

由启动文件可知,程序启动首先执行Reset_Handler函数,GDmcu sram启动硬件强制将PC指针赋值为0x200001e0,PC指针加1开始执行启动文件,故Reset_Handler函数的运行地址需为0x200001e1才行,否则程序就会跑飞。由上图.map文件可知Reset_Handler函数的运行地址为0x20000165,并非0x200001e1,那我们需修改启动文件,使Reset_Handler函数的运行地址为0x200001e1。具体修改如下图所示。

通过在中断向量表的末尾添加SPACE 0x7C(开辟一段连续空间)使Reset_Handler函数的运行地址为0x200001e1,同时在Reset_Handler函数中,调用系统时钟配置前,添加LDR SP,=_initial_sp,将实际的栈顶指针地址赋值给SP,而不是默认的,这样做的目的是避免默认的栈顶指针指向code区,可能会造成程序跑飞。配置完成后,我们再编译工程,可以看到Reset_Handler函数的地址为0x200001e1。如下图所示。

至此sram启动的所有配置都已完成(还需将boot0、boot1引脚接高),我们点击keil工程中的debug按钮就可以愉快的调试工程了哈。

GD32 mcu sram启动配置方法相关推荐

  1. win7 多个tomcat启动配置方法

    1.配置电脑"环境变量" 单个Tomcat的配置步骤不再重述,直接从配置第二个Tomcat开始.对电脑"环境变量"做调整,增加环境变量CATALINA_HOME ...

  2. Stm32 SRAM 启动方法

    1.什么情况需要SRAM启动?? 调试阶段,需要频繁更新程序,可以SRAM启动,加快调试,减少flash擦写损耗 程序SWD/JTAG接口已经配置为普通端口,程序启动后无法程序更新,可在SRAM中启动 ...

  3. redis 集群目标、集群查看、配置方法及过程、哨兵配置启动

    集群目标 主从复制,读写分离:故障切换(通过哨兵实现) 查看集群状态 info replication 配置方法 只设置从数据库就可以了:最佳实践,在主数据库配置masterauth <mast ...

  4. ASP.NET Core启动地址配置方法及优先级顺序 | .NET 6 版本

    前言 上次,我们讨论了如何通过配置或代码方式修改启动地址:<ASP.NET Core启动地址配置方法及优先级顺序>.不过是基于 .NET 5 版本的. 由于 .NET 6 使用了最小 WE ...

  5. stm32 内部sram大小_在SRAM、FLASH中调试代码的配置方法(附详细步骤)

    聊天界面发送嵌入式大杂烩获取1TB大杂烩资料包 STM32的FLASH擦写次数有限(大概为1万次),所以为了延长FLASH的使用时间,我们平时调试时可以选择在SRAM中进行硬件调试.除此之外,SRAM ...

  6. linux 启动网络服务,Linux下网络启动服务器安装和配置方法(pxe+tftp+dhcpd)

    背景: 在大规模安装服务器时,需要批量自动化方法来安装服务器,来减少日常的工作量,但是批量自动化安装服务器的基础是网络启动服务器(bootserver),下面就是网络启动服务器的安装和配置方法,供大家 ...

  7. 5加载stm32 keil_STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

    因为STM32的FLASH擦写次数有限(大概为1万次),所以为了延长FLASH的使用时间,我们平时调试时可以选择在SRAM中进行硬件调试.除此之外,SRAM 存储器的写入速度比在内部 FLASH 中要 ...

  8. VS代码-安装包应用程序因为并行配置不正确无法启动问题解决方法

    VS代码-安装包应用程序因为并行配置不正确无法启动问题解决方法 解决方法参照以下链接:http://www.cnblogs.com/wuhanhoutao/archive/2008/01/09/103 ...

  9. 华为交换机关机方法_华为交换机启动配置命令详解大全

    华为交换机启动配置命令详解大全 1.自动保存配置 [Huawei]set save-configuration ? backup-to-server  Back up the configuratio ...

最新文章

  1. android的log.d不显示结果
  2. jQuery多库共存问题解决方法
  3. HTML5 Web SQL
  4. vsc系统是什么意思_crm系统什么意思
  5. mysql自连接分组查询最新_MySQL 自连接分组取每组最大N条记录
  6. 如何远程访问服务器的 Jupyter notebook
  7. hbuilderx写Ajax,Hbuilder怎么使用ajax?求指教啊
  8. @getMapping与@postMapping
  9. lxde 的安装和卸载以及注意事项,lubuntu
  10. 前台和后台是要写两个工程吗_如何判断一个Bug属于前台还是后台
  11. 本周论文推荐 -- 对抗生成网络、知识图谱补全、对话系统、文本生成
  12. 人工智能——皇帝的新脑还是人类的终结(学习笔记)
  13. Azure云平台学习之路(一)——Azure简介
  14. cocos2d-lua 3x 基础概念(包括场景、导演、在屏幕上显示自定义对象等)
  15. Java生成PDF文件(转)
  16. python安装出错0x80072ee7_python3.6.4安装错误0x80072efd
  17. RDLC报表金额数字转大写
  18. win7连接xp共享打印机方法
  19. Numpy 相关函数详解
  20. 用SQL语句更改数据库名

热门文章

  1. mpvue+mpvueWeUI搭建小程序
  2. 程序员给孩子买什么保险好,要注意避免什么坑呢?
  3. discus 怎么添加门户功能
  4. 离散对数和椭圆曲线加密原理
  5. C#摄像头拍照及帧预览
  6. 2022深圳国际自有品牌展正式启动,谱写自有品牌供应链新篇章
  7. double类型大小比较的方法
  8. (LeetCode)Java 求解正则表达式匹配
  9. qq2007bate3协议分析
  10. 2021年JAVA面试~初识集合Map(二)