使用环境

<!-- 必须 告知插件运行的环境,帮助开发者定位问题 -->

  • 操作系统版本:win10
  • 操作系统平台(x86/x64):x64
  • VsCode 版本:1.82
  • EIDE 插件版本:最新
  • C/C++ 插件版本:最新
  • 何种编译器(keil_c51/sdcc/armcc5/armgcc/...):armgcc
  • 编译器版本(非编译问题可忽略):

板子是F767的

描述问题

<!-- 使用简明清晰的语言描述您的问题 -->
想要把程序下载到RAM中进行执行和调试,而不是先烧录到FLASH。
已经切换了链接脚本为RAM的,并且也定义了相关宏
但是在烧录时报了如下的错:

ST-LINK SN : 002600393331511434333834
ST-LINK FW : V3J13M4B5S1
Board : STLINK-V3SET
Voltage : 3.25V
JTAG freq : 1777 KHz
Connect mode: Normal
Reset mode : Software reset
Device ID : 0x451
Revision ID : Rev Z
Device name : STM32F76x/STM32F77x
Flash size : 1 MBytes
Device type : MCU
Device CPU : Cortex-M7
BL Version : 0x__

Memory Programming ...
Opening and parsing file: F767IG_Test1.hex
File : F767IG_Test1.hex
Size : 85760 Bytes
Address : 0x20000000

Erasing memory corresponding to segment 0:
Download in Progress:
圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹 100%

File download complete
Time elapsed during download operation: 00:00:00.769

Verifying ...

Read progress:
圹圹圹圹圹圹圹圹北北北北北北北北北北北北北北北北北 100%

Download verified successfully

RUNNING Program ...
Address: : 0x8000000
Warning: failed to run application!
Warning: The core is kept under Reset!
Error: Start operation failed

我知道这是必然会出现的,因为如果单独使用stm32programmer也需要单独填写如下部分:

但是我不知道如何在vscode中添加它。
并且如果我想用Cortex-Debug来进行调试,我又应该如何添加json中的选项呢?
{
"cwd": "${workspaceFolder}",
"executable": "build\Debug\F767IG_Test1.elf",
"name": "Debug ST-Link",
"request": "launch",
"type": "cortex-debug",
"runToEntryPoint": "main",
"showDevDebugOutput": "none",
"servertype": "stlink",
"interface": "jtag",
"toolchainPrefix": "arm-none-eabi",
"svdFile": ".pack/STMicroelectronics/STM32F7xx_DFP.1.0.3/CMSIS/SVD/STM32F7x7_v1r2.svd"
}
也就是说,在此基础上,我应该添加什么东西才能让程序从ram中启动并且调试
添加“启动地址”一类?

屏幕截图

<!--使用一些截图能够更好地展现问题 -->
链接脚本:

宏:

期望现象

<!--您期望应该产生的,但实际上却没有发生的结果-->

    4 months later

    我也蓬奡这个问题了,目前还没解决

      admin
      感谢,回复我目前的解决方案,经过实验,需要利用两个调试配置,一个用于启动调试时设置,一个是点击复位设备时调用,放在launch.json文件内:
      "postRestartCommands": [
      "set $sp = *(unsigned int *)0x20000000",
      "set $pc = *(unsigned int *)0x20000004"
      ],
      "postLaunchCommands": [
      "set $sp = *(unsigned int *)0x20000000",
      "set $pc = *(unsigned int *)0x20000004"
      ]

        a month later
        3 months later
        5 months later

        同问,怎么在cortex-debug中调试ram? admin 看这个 Marus/cortex-debug#891 也没看出所以然来。试了这个hzm476172557 "postRestartCommands": [
        "set $sp = *(unsigned int *)0x20000000",
        "set $pc = *(unsigned int *)0x20000004"
        ],
        "postLaunchCommands": [
        "set $sp = *(unsigned int *)0x20000000",
        "set $pc = *(unsigned int *)0x20000004"
        ]
        也不行 。

        Write a Reply...