STM32在SRAMFLASH中调试代码的配置方法文档格式.docx

上传人:b****6 文档编号:19569058 上传时间:2023-01-07 格式:DOCX 页数:13 大小:2.59MB
下载 相关 举报
STM32在SRAMFLASH中调试代码的配置方法文档格式.docx_第1页
第1页 / 共13页
STM32在SRAMFLASH中调试代码的配置方法文档格式.docx_第2页
第2页 / 共13页
STM32在SRAMFLASH中调试代码的配置方法文档格式.docx_第3页
第3页 / 共13页
STM32在SRAMFLASH中调试代码的配置方法文档格式.docx_第4页
第4页 / 共13页
STM32在SRAMFLASH中调试代码的配置方法文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

STM32在SRAMFLASH中调试代码的配置方法文档格式.docx

《STM32在SRAMFLASH中调试代码的配置方法文档格式.docx》由会员分享,可在线阅读,更多相关《STM32在SRAMFLASH中调试代码的配置方法文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

STM32在SRAMFLASH中调试代码的配置方法文档格式.docx

FLASH基地址为0x08000000,SRAM基地址为0x20000000。

在STM32F10XXX里,可以通过BOOT1、BOOT0引脚来选择三种不同的模式:

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

在FLASH中进行硬件仿真调试

1、硬件设置

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

2、keil设置

本文以keil5为例。

步骤如下:

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

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

(2)点击Project->

OptionsforTargetFlash...(也可以点击魔术棒那个图标)进行配置。

首先对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中的配置要麻烦一点~

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

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

(2)切换至SRAMTarget:

(3)点击Project->

OptionsforTargetSRAM...(也可以点击魔术棒那个图标)Target选项卡设置:

设置IROM1的起始地址为0x2000000,大小为0x8000(32KB);

设置IRAM1的起始地址为0x2008000,大小为0x8000(32KB)。

即把64KB的SRAM分为32KB的FLASH(当然这是SRAM虚拟出来的FLASH,掉电易失)和32KB的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,并进行如下设置:

图中我们需要勾选VerifyCodeDownload及DownloadtoFLASH选项,也就是说点击调试按钮后,本工程的程序会被下载到内部SRAM中,只有勾选了这两个选项才能正常仿真。

(至于为什么FLASH版本的程序不需要勾选,不太清楚)。

DownloadFunction中的擦除选项配置为DonotErase。

这是因为数据写入到内部SRAM中不需要像FLASH那样先擦除后写入。

ProgrammingAlgorithm 

的地址要与我们Target选项卡里设置的地址一致,否则可能会出现如下错误:

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

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

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

切换方法:

在RAM中调试的优缺点

优点:

1、载程序非常快。

RAM存储器的写入速度比在内部FLASH中要快得多,且没有擦除过程,因此在RAM上调试程序时程序几乎是秒下的,对于需要频繁改动代码的调试过程,能节约很多时间,省去了烦人的擦除与写入FLASH过程。

另外,STM32的内部FLASH可擦除次数为1万次,虽然一般的调试过程都不会擦除这么多次导致FLASH失效,但这确实也是一个考虑使用RAM的因素。

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

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

缺点:

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

2、SRAM空间较小。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1