STM32在IAR环境下怎样实现RAM里调试程序

STM32在IAR环境下怎样实现RAM里调试程序,第1张

1、Project ->Options ->C++ Compiler ->Preprcessor选项卡下 defined symbols加入:芦盯 VECT_TAB_SRAM ;

2、Project ->Options ->Linker, 修改链接文件为RAM方式,比如修改为 $PROJ_DIR$\stm32f2xx_sram.icf;陵伍

3、Project ->Options ->Debugger ->download 选项卡,把use falsh loader前面的勾去掉;

4、把板子上的BOOT0和BOOT1跳线到RAM启动方式(全高),网上有人说这个不影响调试,根据在GCC下的经验,这个貌似影响会SP指针,有的启动文件开始没有对SP指针初始化,而是自动从0地址读取,为了保险起见还是跳线到RAM方尺哗或式。

所以把代码存储器拷贝到RAM中,变告运成了bootloader的工作之一。一般的,嵌入式系统的存储器以Flash应用最广敬友差,Flash分为两种:norFlash和nandFlash,打个不恰当的比方,norFlash相当于ROM,程序可以直接在其上运行,nandFlash相亮皮当于硬盘

Flash调试就是通常意义下的普通调试,即将编译链接之后的code下载到单片机的ROM区,数据放到RAM区,然后进行调试;

而RAM调试则是将数据放到RAM区的同时再从RAM区中额外开辟出一段空间存放可执行code,这样就是code和数据同时运行在RAM区里面。

相比于Flash调试,RAM调试则与生俱来的带来两个最大的先天优森橡势,一个是RAM的可擦写的次数理论上是无限的,在调试代码的期间往往是需要不断下载更新的,而Flash的擦写次数是有限的,因此在调试期间可以选择RAM调试;

另一个方面,盯扰在RAM区的代码执行速率和效率远高凯春旦于需要不断地读写Flash区代码的,这点毋庸置疑,所以在当今智能手机比拼硬件的时代,选择一款强大的CPU是应该的,但是要想让系统运行的更流畅,足够大的机载RAM是必须的。

当然RAM调试的缺点是掉电丢失,在RAM区运行的代码在掉电的情况下是不会被保存的,下次上电单片机仍然会执行Flash区内部的老的代码,


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12244212.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存