打印
[应用相关]

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

[复制链接]
1403|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
secretuniverse|  楼主 | 2016-3-20 08:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前几天在社区QQ群里有个小伙伴在找使用RAM进行debug的设置,论坛有很多这样的例子和教程,我写了个demo在NUCLEO-L476RG上测试下,给需要的同学。之所以要选择在ram中调试,很重要的原因是考虑到Flash的寿命问题,因为每次下载程序都要进行Flash的擦除,如果次数多了可能会导致Flash有问题,但是MCU内的Flash的擦写次数普遍可以达到上万次,所以说几乎不可能因为调试程序次数太多把Flash搞坏掉,如果真能把Flash擦除坏,那肯定能成为高手了。   L476RG内部有2个SRAM,一个是SARM1,我们用作flash,一个是SRAM2,我们用作sarm。

根据上面的内存分配,相应的keil的设置如下:

然后从keil的安装目录下复制Dbg_RAM.ini文件用于初始化调试信息及设置中断向量表,内容如下:
/*----------------------------------------------------------------------------
  Setup()  configure PC & SP for RAM Debug
*----------------------------------------------------------------------------*/
FUNC void Setup (void) {
  SP = _RDWORD(0x20000000);          // Setup Stack Pointer
  PC = _RDWORD(0x20000004);          // Setup Program Counter
  _WDWORD(0xE000ED08, 0x20000000);   // Setup Vector Table Offset Register
}

LOAD %L INCREMENTAL                                  // load the application

Setup();                                             // Setup for Running

g, main


沙发
secretuniverse|  楼主 | 2016-3-20 08:03 | 只看该作者
上面的LOAD %L INCREMENTAL的用作 linker output file 来debug当前工程,具体可参考:load命令用法
因为上面的设置我们要去掉Load Application at Startup并选中该初始化文件Dbg_RAM.ini,设置如下:

设置下载的debug模式:

编译后直接点debug后全速运行就可以了,led闪烁串口输出信息,如果这个时候退出debug模式,程序会继续运行,但是复位后RAM内容就会清除程序不再存在,可以预先清除FLASH内容用于观察现象。因为RAM大小的限制,这个方法也只仅限于比较小的程序。
main如下:
//creep
//2015-11-09

int main(void)
{
        uint8_t sta = ON;
        HAL_Init();
        SystemClock_Config();
        USART2_Init();
        LED_Init();
        while(1)
        {
                LED(sta);
                sta = !sta;
                HAL_Delay(500);
                printf("Hi,I am creep!!\r\n");
        }
}


RAM_Debug.rar

966.73 KB

使用特权

评论回复
板凳
dongnanxibei| | 2016-3-20 13:29 | 只看该作者
东西都是很好学,如何使用工具实现有时候也是很费劲的,就好比你学会了C语言,可是你不知道如何在VC里开发个界面的程序

使用特权

评论回复
地板
643757107| | 2016-3-20 19:51 | 只看该作者
这两部分的大小是固定的吗,还是可以通过KEIL配置的大小。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

55

帖子

1

粉丝