首页 » 互联网 » STM32在SRAM、FLASH中调试代码的设备方法(附具体步骤)_法式_代码

STM32在SRAM、FLASH中调试代码的设备方法(附具体步骤)_法式_代码

少女玫瑰心 2024-12-07 01:19:40 0

扫一扫用手机浏览

文章目录 [+]

以是我们很有必要建立两个版本的工程配置,在SRAM中调试程序完毕后,再把代码下载到FLASH中即可。
这篇条记紧张分享在keil5中配置FLASH调试与SRAM调试的详细配置方法及如何切换两种配置。

本篇条记以STM32F103ZET6为例。
其FLASH大小为512KB,SRAM的大小为64KB。
FLASH基地址为0x08000000,SRAM基地址为0x20000000。
在STM32F10XXX里,可以通过BOOT1、BOOT0引脚来选择三种不同的模式:

STM32在SRAM、FLASH中调试代码的设备方法(附具体步骤)_法式_代码 STM32在SRAM、FLASH中调试代码的设备方法(附具体步骤)_法式_代码 互联网

我们要在FLASH中进行硬件仿真调试还是在RAM中进行硬件仿真调试须要对这两个boot脚进行对应的设置以及程序下载的地址进行设置。

STM32在SRAM、FLASH中调试代码的设备方法(附具体步骤)_法式_代码 STM32在SRAM、FLASH中调试代码的设备方法(附具体步骤)_法式_代码 互联网
(图片来自网络侵删)

在FLASH中进行硬件仿真调试

1、硬件设置

BOOT0配置为0,BOOT1随意设置。

2、keil设置

本文以keil5为例。
步骤如下:

(1)点击如下按钮,修正target的名称:

target的名称是可以随意变动的,我们这里改为FLASH。

(2)点击Project->Options for Target Flash...(也可以点击魔术棒那个图标)进行配置。
首先对Target选项卡设置:

设置IROM1的起始地址为0x8000000,大小为0x80000,即FLASH的基地址与大小。
设置IRAM1为0x20000000,大小为0x10000,即SRAM的基地址与大小。

(3)Debug选项设置:

调试器根据实际进行选择,我们这里利用的调试器是ULINK2。
其它的按默认设置即可,然后点击Settings:

(4)编译,然后按Ctrl+F5进入调试界面:

然后点击全速运行:

在Disassembly窗口中可看到地址为0x0800xxxx,解释代码烧进了FLASH中,这时候就可以像利用其他C措辞IDE调试C措辞程序一样打断点、单步运行我们的STM32程序啦。

在SRAM中进行硬件仿真调试

在SRAM的仿真调试配置比FLASH中的配置要麻烦一点,我配置的时候碰着不少问题~

1、硬件设置

BOOT0配置为1,BOOT1配置为1。

2、keil设置

(1)新建一个target,并修正名称为SRAM:

(2)切换至SRAM Target:

(3)点击Project->Options for Target SRAM ...(也可以点击魔术棒那个图标)Target选项卡设置:

设置IROM1的起始地址为0x2000000,大小为0x8000(32KB);设置IRAM1的起始地址为0x2008000,大小为0x8000(32KB)。
即把64KB的SRAM分为32KB的FLASH(当然这是SRAM虚拟出来的FLASH,掉电易失落)和16KB的RAM。

(4)C/C++选项设置:

为什么在RAM中调试要设置这个宏而在FLASH中调试却不须要?这是由于我们的中断向量表默认位于FLASH中,而此时我们要在RAM中进行调试,以是须要把中断向量表拷贝到RAM中,干系代码在system_stm32f10x.c的SystemInit函数中:

实在system_stm32f10x.c文件中也有宏VECT_TAB_SRAM干系的代码:

把这行代码打开即可把中断向量表拷贝到RAM中。
但是这里选择在C/C++选项选项里添加宏,由于这样可以担保SRAM版本与FLASH版本代码的同等性。

(5)Debug设置:

与在FLASH中调试不同的是,这里须要加入.ini文件:

这个.ini可以自己创建(也可以在芯片支持包里找到),这里我们建为Dbg_RAM.ini。
文件里的内容如下:

个中这里的第11行是须要根据实际进行修正的,须要把工程编译得出的.axf格式文件的路径及其文件名填到这里。
这里由于我们这里的的.ini文件在.axf的上一级目录:

以是此处以./Objects来表示。
如果以为麻烦的话,可以把.axf文件与.ini放在同一个目录下。

其它的按默认设置即可,然后点击Settings,并进行如下设置:

图中我们须要勾选Verify Code Download及Download to FLASH选项,也便是说点击调试按钮后,本工程的程序会被下载到内部 SRAM 中,只有勾选了这两个选项才能正常仿真。
(至于为什么 FLASH 版本的程序不须要勾选,不太清楚) 。

Download Function中的擦除选项配置为Do not Erase。
这是由于数据写入到内部 SRAM 中不须要像 FLASH 那样先擦除后写入。
Programming Algorithm 的地址要与我们Target选项卡里设置的地址同等,否则可能会涌现如下缺点:

(6)编译,然后按Ctrl+F5进入调试界面,然后点击全速运行:

在Disassembly窗口中可看到地址为0x2000xxxx,解释代码烧进了SRAM中,这时候就可以像利用其他C措辞IDE调试C措辞程序一样打断点、单步运行我们的STM32程序啦。

以上便是在FLASH中调试与在SRAM中调试的设置方法,调试代码时可以选择SRAM版本的配置,调试完成再切换回FLASH版本的配置,把程序下载到FLASH中。
切换方法:

在RAM中调试的优缺陷

以下来自《【野火】零去世角玩转STM32—F429寻衅者V2》。

优点:

1、载程序非常快。
RAM 存储器的写入速率比在内部 FLASH 中要快得多,且没有擦除过程,因此在 RAM 上调试程序时程序险些是秒下的,对付须要频繁改动代码的调试过程,能节约很多韶光,省去了烦人的擦除与写入 FLASH 过程。
其余,STM32 的内部 FLASH 可擦除次数为 1 万次,虽然一样平常的调试过程都不会擦除这么多次导致 FLASH 失落效,但这确实也是一个考虑利用 RAM 的成分。

2、不改写内部 FLASH 的原有程序。

3、对付内部 FLASH 被锁定的芯片,可以把解锁程序下载到 RAM 上,进行解锁。

缺陷:

1、存储在 RAM 上的程序掉电后会丢失,不能像 FLASH 那样保存。

2、SRAM空间较小。

以上便是本次分享的关于RAM调试与FLASH调试的条记。
如有缺点欢迎指出!
感激

标签:

相关文章

灰色产业的阴影,IT领域的暗流涌动

随着互联网技术的飞速发展,IT行业在我国经济中的地位日益重要。在光鲜亮丽的背后,却存在着一个名为“灰色产业”的暗流涌动。灰色产业,...

互联网 2024-12-28 阅读0 评论0

爱立信引领IT变革,构建数字化未来

在当今这个信息爆炸的时代,IT行业正以前所未有的速度发展。作为全球通信解决方案的领导者,爱立信始终走在技术创新的前沿。本文将从爱立...

互联网 2024-12-28 阅读0 评论0

LED显示屏关键技能指标_显示屏_灰度

失落控的像素数占全屏像素总数之比,我们称之为“整屏像素失落控率”。其余,为避免失落控像素集中于某一个区域,我们提出“区域像素失落控...

互联网 2024-12-28 阅读0 评论0

理科生转行IT,跨界挑战与未来展望

随着互联网技术的飞速发展,IT行业在我国经济社会发展中的地位日益凸显。越来越多的理科生开始关注并投身于这个充满机遇和挑战的行业。本...

互联网 2024-12-28 阅读0 评论0