抚尘part2. 2025-05-25 14:50 采纳率: 0%
浏览 173

vscode+gcc+jlink无法识别并下载天猛星mspm0g3507

**vscode+gcc+jlink无法识别并下载天猛星mspm0g3507

编译通过**

img


下载无法识别

img


选择M0+

img


无法下载

img


我用keil可以成功烧录,换了这个就不行,然后我把vscode的.lds换成keil的,编译通过但是还是无法下载

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-05-25 14:51
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题解答

    你遇到了一个问题,在使用 VSCode、GCC 和 JLink 时无法识别和下载天猛星 M0G3507 微控制器。编译通过,但是下载失败。

    问题的症状是:

    • 使用 Keil IDE 可以成功烧录
    • 在 VSCode 中选择 M0+ 下载失败
    • 将 VSCode 的 .lds 文件换成 Keil 的 .lds 文件后,问题仍然存在

    解决方案:

    1. 检查 VSCode 的配置文件,确保 launch.json 文件中的 executableprogrammer 配置正确。
    2. 检查 GCC 编译器的配置,确保使用正确的编译器和链接器。
    3. 检查 JLink 的配置,确保连接正确的板子和端口。
    4. 尝试使用 Keil 的 .lds 文件来编译和下载,检查是否有任何错误或警告。
    5. 如果以上步骤都无法解决问题,可以尝试使用其他 IDE 或编译器来编译和下载。

    核心代码:

    # launch.json
    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "M0G3507",
                "type": "cppdbg",
                "request": "launch",
                "program": "${workspaceFolder}/path/to/your/program.elf",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": false,
                "MIMode": "gdb",
                "miDebuggerPath": "/path/to/gdb",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ],
                "preLaunchTask": "build",
                "postLaunchTimeout": 10000
            }
        ]
    }
    
    # Makefile
    CC=gcc
    CFLAGS=-mcpu=cortex-m0 -mthumb -Og -Wall -Wextra
    LDFLAGS=-mcpu=cortex-m0 -mthumb -T linker_script.lds
    
    all: program.elf
    
    program.elf: main.c
        $(CC) $(CFLAGS) -c main.c
        $(CC) $(LDFLAGS) -o program.elf main.o
    
    // main.c
    #include <stdint.h>
    #include <stdbool.h>
    
    int main(void) {
        // Your code here
        return 0;
    }
    
    // linker_script.lds
    MEMORY
    {
        FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000
        SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000
    }
    
    SECTIONS
    {
        .text : { *(.text) }
        .data : { *(.data) }
        .bss : { *(.bss) }
    }
    

    请注意,这只是一个基本的解决方案,可能需要根据你的具体情况进行调整。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月25日