你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-L476RG开发】在RAM中进行Debug

[复制链接]
creep 提问时间:2015-11-9 23:55 /
     前几天在社区QQ群里有个小伙伴在找使用RAM进行debug的设置,论坛有很多这样的例子和教程,我写了个demo在NUCLEO-L476RG上测试下,给需要的同学。之所以要选择在ram中调试,很重要的原因是考虑到Flash的寿命问题,因为每次下载程序都要进行Flash的擦除,如果次数多了可能会导致Flash有问题,但是MCU内的Flash的擦写次数普遍可以达到上万次,所以说几乎不可能因为调试程序次数太多把Flash搞坏掉,如果真能把Flash擦除坏,那肯定能成为高手了。   L476RG内部有2个SRAM,一个是SARM1,我们用作flash,一个是SRAM2,我们用作sarm。
QQ拼音截图未命名.png
根据上面的内存分配,相应的keil的设置如下:
QQ拼音截图未命名.png
然后从keil的安装目录下复制Dbg_RAM.ini文件用于初始化调试信息及设置中断向量表,内容如下:
  1. /*----------------------------------------------------------------------------
  2.   Setup()  configure PC & SP for RAM Debug
  3. *----------------------------------------------------------------------------*/
  4. FUNC void Setup (void) {
  5.   SP = _RDWORD(0x20000000);          // Setup Stack Pointer
  6.   PC = _RDWORD(0x20000004);          // Setup Program Counter
  7.   _WDWORD(0xE000ED08, 0x20000000);   // Setup Vector Table Offset Register
  8. }

  9. LOAD %L INCREMENTAL                                  // load the application

  10. Setup();                                             // Setup for Running

  11. g, main
复制代码
上面的LOAD %L INCREMENTAL的用作 linker output file 来debug当前工程,具体可参考:load 命令用法
因为上面的设置我们要去掉Load Application at Startup并选中该初始化文件Dbg_RAM.ini,设置如下:
QQ拼音截图未命名.png
设置下载的debug模式:
QQ拼音截图未命名.png
编译后直接点debug后全速运行就可以了,led闪烁串口输出信息,如果这个时候退出debug模式,程序会继续运行,但是复位后RAM内容就会清除程序不再存在,可以预先清除FLASH内容用于观察现象。因为RAM大小的限制,这个方法也只仅限于比较小的程序。
main如下:
  1. //creep
  2. //2015-11-09

  3. int main(void)
  4. {
  5.         uint8_t sta = ON;
  6.         HAL_Init();
  7.         SystemClock_Config();
  8.         USART2_Init();
  9.         LED_Init();
  10.         while(1)
  11.         {
  12.                 LED(sta);
  13.                 sta = !sta;
  14.                 HAL_Delay(500);
  15.                 printf("Hi,I am creep!!\r\n");
  16.         }
  17. }

复制代码
测试demo:
RAM_Debug.rar (966.73 KB, 下载次数: 18)
收藏 3 评论26 发布时间:2015-11-9 23:55

举报

26个回答
creep 回答时间:2015-11-13 17:23:45
haiguanguan 发表于 2015-11-13 17:20
“复位后RAM内容就会清除程序不再存在 ” 是不是就是这个原因?

是的                        
creep 回答时间:2015-11-10 09:05:29
风子 发表于 2015-11-10 09:00
感谢橙子分享,嘿嘿,原来那个ini文件可以在keil里面找到,,,我都是在网上找了一个一直用 ...

keil自己提供的一些程序比ST的好用多了,虽然不怎么开源,但是稳定性很好!
creep 回答时间:2015-11-13 16:38:32
haiguanguan 发表于 2015-11-13 16:03
为什么我的就只能debug一次  重启debug就不行了?

重启ram内容被清空置位了啊。关掉debug模式不重启可以继续运行!
安少89 回答时间:2015-11-10 08:09:02
高手啊,顶一个
yanhaijian 回答时间:2015-11-10 08:39:16
研究的比较细。
creep 回答时间:2015-11-10 08:47:53

这都是别人玩剩下的
yanhaijian 回答时间:2015-11-10 08:49:46
creep 发表于 2015-11-10 08:47
这都是别人玩剩下的

我知道,这个论坛毕竟新手很多,能研究到这个地步的人论坛里面不多。
风子 回答时间:2015-11-10 09:00:02
感谢橙子分享,嘿嘿,原来那个ini文件可以在keil里面找到,,,我都是在网上找了一个一直用
stary666 回答时间:2015-11-10 09:33:06
看看,,,,,,,,,,,,,,
安臣 回答时间:2015-11-10 11:31:19
橙子大神
creep 回答时间:2015-11-10 11:42:41

整的都不好意思了,安臣大哥!!
肽宰1 回答时间:2015-11-10 12:35:36
感谢橙子分享,嘿嘿
aabird 回答时间:2015-11-10 14:04:25
这个厉害,虽然我没用过。但是很厉害的样子
creep 回答时间:2015-11-10 14:26:09
aabird 发表于 2015-11-10 14:04
这个厉害,虽然我没用过。但是很厉害的样子

哈哈,这个真的很一般!
netlhx 回答时间:2015-11-10 17:09:34
学习了,原来还可以这样啊,谢谢!
foxglove 回答时间:2015-11-10 17:24:58
在RAM中进行Debug
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版