【stm32应用】SRAM调试


由于stm32的flash擦写的次数是有限的,所以为了保护我们的flash,延长mcu的使用时间,我们可以在SRAM上进行调试,SRAM是暂存器,掉电后里面的内容会丢失的,他跟我们PC上的内存条有同样的功能。

1、建立双工程

为了方便我们的使用,针对同一个项目和源代码,我们可以建立flash调试和SRAM调试两个工程,通过点击按钮,可以进行如下配置:

图1

点击target options按钮可以进入SRAM工程 配置界面。

2、SRAM内存分配

你可以根据自己的需要分配内存,我这里把内存分16k用做FLASH,32K用做内存使用

图23、定义中断向量宏
图34、输出选项
图45、建立ini脚本

新建RAM.ini脚本文件,放在工程目录下,具体位置自定,脚本内容如下:

FUNC void Setup (void) 

{

SP = _RDWORD(0x20000000);          // 堆栈指针

PC = _RDWORD(0x20000004);          // PC

_WDWORD(0xE000ED08, 0x20000000);   // 中断向量偏移地址

}

LOAD .\basic.axf INCREMENTAL      

// Download,.axf 根据自己的文件名和目录修改

Setup();                             // 调用Setup();

g, main                             //跳转到main

图56、jlink的配置jlink的配置大家应该都知道吧:
图67、flash down load设置
图78、调试运行

我这里每次下载到ram上都要重新编译,注意是完全重新编译,否则就会出错误,具体原因不知道,所以建议大家也完全重新编译,然后下载调试。这个不能使用download to flash按钮,只能使用debug按钮。

PS:

1.     不能下断点

解决:主要是afx文件没有加载,所以没有调试符号,LOAD .\basic.axf INCREMENTAL这句脚本一定要根据自己的文件夹和路径修改,比如工程放在user文件夹下,但是afx放在与user平行的list文件夹下,所以需要修改为LOAD ..\list\test.axf INCREMENTAL

2.     每次调试需要编译一次

解决:有两个选项没选上,选上即可


蓝桥杯-嵌入式交流群  147520657

智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告