您的当前位置:首页4 磨刀不误砍柴工

4 磨刀不误砍柴工

2024-12-14 来源:哗拓教育

发现我做事情磨刀可能有点误砍柴工了,不过前面3个星期磨刀,积累出的经验让我很有底气去应对程序出现的异常了,极大地节约了以后程序开发的调试成本。
这一篇是我新发现的一个功能,使用vs code 编译下载iar工程。目前只调试出了基本的编译下载功能,但是已经算是很实用了。 实在是不喜欢iar粗俗的界面和不健全的跳转,然后又受不住切换到vs code编写,再到iar调试这样的奇怪模式。

1 安装相关插件

在vs code中搜索安装以下插件:


插件

vs code的使用就不多说了,用vscode打开iar工程的文件夹,它会初始化出来一个.vscode文件夹,这个后面会用到。
安装好插件之后重新加载一下程序,最好重启一下vs code。

2 编译配置

在IAR Embedded Workbench插件的介绍页面可以看到相关内容,这里讲解一下。


IAR

(这个只是使用IAR的功能,所以还是要安装IAR的)

2.1 创建iar.json

在vs的资源管理器中,找到.vscode,新建文件iar.json ,

iar.json

输入以下内容:

{
    "version": 1,
    "path": "C:\\Program Files (x486)\\IAR Systems\\Embedded Workbench 8.0\\",
    "project": "C:\\Projects\\TEST\\TEST.ewp",
    "config": "Debug"
}

"version"可以随便写
"path"就是iar的路径,可以在电脑的资源管理器里搜索Embedded Workbench找到它
"project"工程位置,就是要编译的iar工程的位置。
以上需要注意的是\需要进行转义,所以是两个反斜杠。
"config"其实就是iar顶部这个:

config

2.2 使能

打开vscode的settings.json:


set

在搜索栏搜索iar.enabled,移动鼠标获取会出现一个笔,点击就会在右侧生成true,就配置好了。


true

2.3 build

快捷键ctrl+shift+b 开始调试,可以把搜狗输入法同一个快捷键取消掉(很烦)。

3 debug

这一步就是使用jlink下载调试了。
点击左侧的调试按钮,再点击小齿轮,就会打开launch.json.


debug

需要做的修改示例如下:

{
    "version": "0.2.1",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "E:\\demo.out",
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "E:\\arm-none-eabi-gdb.exe",
            "debugServerPath": "C:\\Program Files (x86)\\SEGGER\\JLink_V600i\\JLinkGDBServerCL.exe",
            "debugServerArgs": "-if swd -singlerun -strict -endian little -speed auto -port 3333 -device STM32FXXXXX -vd -strict -halt",
            "serverStarted": "Connected\\ to\\ target",
            "serverLaunchTimeout": 5000,
            "filterStderr": false,
            "filterStdout": true,
            "setupCommands": [
                
                    {"text": "target remote localhost:3333"},
                    {"text": "monitor flash breakpoints = 1"},
                    {"text": "monitor flash download = 1"},
                    {"text": "monitor reset"},
                    {"text": "load E:/demo.out"},
                    {"text": "monitor reset"}
            ]
        }
    ]
}

需要修改的是以下几条:
"program":输出的demo.out路径,注意双反斜杠
"miDebuggerPath":在工程中搜索arm-none-eabi-gdb.exe的位置
"debugServerPath":在系统中搜索JLinkGDBServerCL.exe的位置
"debugServerArgs":STM32FXXXX改成对应的具体型号,在这里可以看到:


STM32

"setupCommands": 的{"text": "load后面的路径要改,注意斜杠方向。
最后在左侧顶部点击绿色箭头就可以调试了。


调试
显示全文