| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 【MDK】- STM32内部 SRAM 调试详细配置 -> 正文阅读 |
|
[嵌入式]【MDK】- STM32内部 SRAM 调试详细配置 |
STM32 Keil 内部 SRAM 中在线调试配置七步配置就可以实现在内部SRAM中调试代码。 一、创建工程的调试版本SRAM 中运行的代码只是用于调试,调试完毕后,实际仍然使用在内部 FLASH 中运行的代码,因此在调试版和发布版代码之间切换。 MDK的“Manage Project Items”可实现这样的功能,使用它可管理多个不同配置的工程,使用Manage_Project_Items 添加一个工程配置 ,点“Manage Project Items”按钮,在弹出对话框左侧的“Project Target”一栏包含了原工程的名字。 为了便于调试,我们在左侧的“Project Target”一栏添加一个工程名,如图中输入“SRAM_ 调试”,输入后点击 OK 即可,这个“SRAM_ 调试”版本的工程会复制原工程的配置。在下面我们将切换到“SRAM_ 调试”版本的工程,配置出一个代码会被存储到 SRAM的多彩流水灯工程。
但如果两个工程共用了同一个文件,对该文件的修改会同时影响两个工程,如果两个工程都使用同一个 main 文件,我们在 main 文件修改代码,两个工程都会被修改。 二、 配置分散加载文件本工程的分散加载使用手动编辑的 sct 文件配置,不使用 MDK 的对话框选项配置,在“Options for Target->linker”的选项见图使用新建的 SRAM_ 调试 sct 文件。
在分散加载文件配置中,把原本分配到内部 FLASH 空间的加载域和执行域改到了以地址0x20000000 开始的 64KB(0x00010000) 空间,而 RW data 空间改到了以地址 0x20010000 开始的64KB 空间 (0x00010000)。 也就是说,它把 STM32 的内部 SRAM 分成了虚拟 ROM 区域以及 RW 三、配置中断向量表startup_stm32f40xx.s 文件中的启动代码不是指定到绝对地址的,经过它由链接器决定应存储到内部 FLASH 还是 SRAM,所以 SRAM 版本工程中的启动文件不需要作任何修改。 重点在于启动文件定义的中断向量表被存储到内部 FLASH 和内部 SRAM 时,这两种情况对内核的影响是不同的,内核会根据它的“向量表偏移寄存器 VTOR”配置来获取向量表,即中断服务函数的入口。 VTOR 寄存器是由启动文件中 Reset_Handle 中调用的库函数 SystemInit 配置的,根据是否存储宏定义 VECT_TAB_SRAM 来决定 VTOR 的配置,默认情况下代码中没有定义宏 VECT_TAB_SRAM,所以 VTOR 默认情况下指示向量表是存储在内部 FLASH 空间的。 由于本工程的分散加载文件配置,在启动文件中定义的中断向量表会被分配到 SRAM 空间,所以我们要定义这个宏,使得 SystemInit 函数修改 VTOR 寄存器,向内核指示向量表被存储到内部SRAM 空间。 编译选项中加入宏 ** VECT_TAB_SRAM** ,在“Options for Target-> c/c+±>Define”框中输入宏 ** VECT_TAB_SRAM ** ,注意它与其它宏之间要使用英文逗号分隔开。配置完成后重新编译工程,即可生成存储到 SRAM 空间地址的代码指令。 四、修改 FLASH 下载配置得到 SRAM 版本的代码指令后,为了把它下载到芯片的 SRAM 中,还需要修改下载器的配置 ,修改“Options forTarget->Utilities->Settings”中选项。 这个配置对话框原本是用于设置芯片内部 FLASH 信息的,正常我们点击 MDK 的下载(LOAD)或(调试)按钮时,它会从此处加载配置然后下载程序到 FLASH 中,而在上图中我们把它的配置修改成下载到内部 SRAM 了,各个配置的解释如下: ? “Download Function”中的擦除选项配置为“Do not Erase”。 ?“RAM for Algorithm”一栏是指“编程算法” (Programming Algorithm) 可使用的 RAM 空间, SRAM调试时RAM 空间是从地址 0x20000000 开始的0x20010000 下载程序到 FLASH 时运行的编程算法需要使用 RAM 空间,在默认配置中它的首地址为0x20000000,即内部 SRAM 的首地址,但由于我们的分散加载文件配置, 0x20000000 地址开始的 64KB 实际为虚拟 ROM 空间,实际的 RAM 空间是从地址 0x20010000 开始的,所以这里把算法 RAM 首地址更改为本工程中实际作为 RAM 使用的地址。 ?“Programming Algorithm”一栏中是设置内部 FLASH 的编程算法,编程算法主要描述了FLASH 的地址、大小以及扇区等信息,SRAM调试时RAM 空间是从地址 0x20000000 开始的 MDK 根据这些信息把程序下载到芯片的 FLASH中,不同的控制器芯片一般会有不同的编程算法。由于 MDK 没有内置 SRAM 的编程算法,所以我们直接在原来的基础上修改它的基地址和空间大小,把它改成虚拟 ROM 的空间信息。 五、仿真器配置上面的下载配置使得程序能够加载到 SRAM 中全速运行,但作为 SRAM 版本的程序,其功能更着重于调试,也就是说我们希望它能支持平时使用按钮 (调试、 debug) 时进行的硬件在线调试、单步运行等功能。要实现调试功能,还要在“Options for Target->Debug->Settings”中进行配置,见图设置仿真前检查代码并下载程序到 FLASH 中 。 经过这样的配置后,硬件仿真时与平时内部 FLASH 版本的程序无异,支持软件复位、单步运行、全速运行以及查看各种变量值等。 六、BOOT启动设置在SRAM调试的时候,需要将MUC的boot模式设置成RAM启动,这里有两种设置方法,一种是软件强制设置SP 指针 (即 MSP) 和 PC 指针。第二是用物理跳线设置从RAM启动,这里选择一种即可。 6-1 软件BOOT设置在“Options for Target->Debug”对话框中取消勾选“Load Application at startup”选项。点击“Initialization File”文本框右侧的文件浏览按钮,在弹出的对话框中新建一个名为“Debug_RAM.ini”的文件;
上述配置过程是控制 MDK 执行仿真器的脚本文件 Debug_RAM.ini,而该脚本文件在下载了程序到 SRAM 后,初始化了 SP 指针 (即 MSP) 和 PC 指针分别指向了 0x20000000 和 0x20000004,这样的操作等效于从 SRAM 复位。 有了这样的配置,即使 BOOT0 和 BOOT1 引脚不设置为 SRAM 启动也能正常仿真了 上述 Debug_RAM.ini 文件是从 STM32F4 的 MDK 芯片包里复制过来的,若您感兴趣可到 MDK安装目录搜索该文件名,该文件的语法可以从 MDK 的帮助手册的“μVision User’ s Guide->Debug Commands”章节学习。 6-1 硬件BOOT设置SRAM 调试相关的硬件配置。在 SRAM 上调试程序,需要修改 STM32 芯片的启动方式, 七、下载调试配置完成后点击 MDK 的debug按钮,程序会被下载到 STM32的内部 SRAM 中。这时候需要点击全速运行,程序运行。 如果想要程序复位的话,需要退出debug,然后重新点击debug按钮。SRAM调试中软件复位和物理复位都不可以使用,只能是重新debug复位后程序会复位 。 此外芯片掉电后这个存储在 SRAM 的程序会丢失,想恢复的话必须要重新下载程序。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/26 2:20:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |