IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> stm32程序flash下载和sram运行 -> 正文阅读

[嵌入式]stm32程序flash下载和sram运行

1. 前言

在stm32新建工程(参照stm32栏目的stm32新建工程)后,需要下载写好的程序运行。
有两种方式验证你程序的正确性,一种是直接下载到flash中,一种是在sram中跑。程序在sram中运行掉电会消失,不过避免了每次擦写flash,毕竟flash的擦写次数是有限的,在sram中验证程序没有问题后,可以再烧录在flash中。

烧录工具:st-link

2. 程序下载到flash中

在编译完程序后,在烧录程序前需要进行一些设置。首先连接上st-link。然后进行下面的步骤。
1)点击界面魔法棒
在这里插入图片描述
2)勾选ROM/RAM空间(一般都默认勾选)
在这里插入图片描述
3)选择调试器。这里选择st-link。勾选启动时加载应用程序和自动进入main函数。
在这里插入图片描述
4)设置st-link debugger settings。port选择SW,选择调试速率。设置flash擦除扇区,添加flash。
在这里插入图片描述

在这里插入图片描述
5)选择下面两项
在这里插入图片描述
6)下载程序,点击load按钮。
在这里插入图片描述

3. 程序在sram中运行

由于flash的擦除次数有限,而手上的开发板又是一代代传承下来的,为避免啥也没学会,stm32就报废了,想掌握一种在线编程的方法,即将程序不烧录进flash,而是放在sram中运行。
1)给sram分区
M4处理器的flash初始地址为0x80000000,而sram起始地址为0x20000000。首先将sram空间均分,一部分为构造的rom,一部分为ram。注意rom的地址是紧跟着rom的。这里构造的目的是假装从rom启动,这样不需要在硬件上变更boot0、boot1的值,这个我验证了不变更硬件,即不需要boot0/1选择1,1进入sram启动,只维持0、0,也可工作。
在这里插入图片描述
2)增加sram向量表
在这里插入图片描述
对应的要在main函数中加
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0)
;,这样才能找到sram的入口地址。否则入口地址总是在0x00000000(当代码有警告如语法错误时,也是显示0).
在这里插入图片描述
3)增加初始化文件
增加ini同时,load application at startup注意也不要勾选,否则先从flash启动。这一步很重要。

在这里插入图片描述
增加的ini文档,在安装包里,一定要增加ini,否则还是在flash地址跑

地址:PACK\Keil\STM32F4xx_DFP\2.15.0\MDK\Boards\ST\32F469IDISCOVERY\Blinky\Debug_RAM.ini
文档的内容如下:
FUNC void Setup (void) {
SP = _RDWORD(0x20000000); // Setup Stack Pointer
PC = _RDWORD(0x20000004); // Setup Program Counter
XPSR = 0x01000000; // Set Thumb bit
_WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register
}

LOAD %L INCREMENTAL // Download to RAM
Setup();

g, main
有看到说需要把LOAD %L INCREMENTAL 的%L改为 …\obj\template20211206.axf ,即改为输出执行文件所在的地址。我调试了两种,发现没必要,用官方的就好,不过要注意SP/PC的地址是不是sram的地址。
4)选择不擦除flash,因为现在是在sram空间里
在这里插入图片描述
在这里插入图片描述
5)不要勾选update target before debugging,意思是在线调试时,不下载到flash中,否则在进入debug时,会显示flash download失败。这个很重要。
在这里插入图片描述
6)最后就进入sram运行了
先选stop/start debug,即右上角图标,再选左上角图标run,就可进入sram中运行程序了,然后再退出debug的界面,跑的程序依旧是sram的程序。当然重新上电后还是原来flash里的程序,在sram中验证程序的目标达到了,完美。
在这里插入图片描述

参考文献

《STM32F4开发指南-库函数版本-V1.2》

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 12:59:30  更:2021-12-13 13:01:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/29 12:53:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码