vscode嵌入式开发
<h3>参考</h3>
<p><a href="http://openocd.org/doc/pdf/openocd.pdf">http://openocd.org/doc/pdf/openocd.pdf</a></p>
<p><a href="https://zhuanlan.zhihu.com/p/41517198">https://zhuanlan.zhihu.com/p/41517198</a></p>
<p><a href="http://www.wujique.com/2018/03/15/可替代jlink的stm32轻量级调试器-cmsis-dap/">http://www.wujique.com/2018/03/15/可替代jlink的stm32轻量级调试器-cmsis-dap/</a></p>
<p><a href="https://mcuoneclipse.com/2015/03/22/openocdcmsis-dap-debugging-with-eclipse-and-without-an-ide/">https://mcuoneclipse.com/2015/03/22/openocdcmsis-dap-debugging-with-eclipse-and-without-an-ide/</a></p>
<h3>工具下载</h3>
<p><a href="http://gnutoolchains.com/arm-eabi/openocd/">http://gnutoolchains.com/arm-eabi/openocd/</a></p>
<p><a href="https://www.cnblogs.com/shangdawei/p/4751111.html">https://www.cnblogs.com/shangdawei/p/4751111.html</a></p>
<h3>安装</h3>
<h4>macos</h4>
<p><a href="https://www.jianshu.com/p/ed7203324ac6">https://www.jianshu.com/p/ed7203324ac6</a></p>
<ul>
<li><code>brew cask install gcc-arm-embedded</code></li>
<li><code>brew install openocd</code></li>
<li><code>brew install stlink</code></li>
</ul>
<h4>windows</h4>
<p><a href="https://zhuanlan.zhihu.com/p/61519415">https://zhuanlan.zhihu.com/p/61519415</a></p>
<p>brew install homebrew/cask-drivers/segger-jlink</p>
<h4>openocd配置文件</h4>
<ul>
<li>openocd.cfg</li>
</ul>
<pre><code>
set FLASH_SIZE  0x20000
# 选择jlink
source [find interface/cmsis-dap.cfg]
# swd
transport select swd
# 选择目标芯片
source [find target/stm32f1x.cfg]</code></pre>
<p>stm32f4</p>
<pre><code># Configuration for EFM32 boards with on-board SEGGER J-Link
#
# Tested with Tiny, Giant and Zero Gecko Starter Kit.
#
source [find interface/stlink-v2.cfg]
transport select hla_swd
adapter_khz 1000
source [find target/stm32f4x.cfg]</code></pre>
<h3>vscode环境配置</h3>
<ul>
<li>配置task
按F1后选择configure task,修改tasks.json内容</li>
</ul>
<pre><code>{
    // See https://go.microsoft.com/fwlink/?LinkId=733558 
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "build",
            "command": "mbed.exe",
            "args": [
                "compile",
                "--source",
                "../mbed-os",
                "--source",
                "."
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "type": "shell",
            "label": "openocd",
            "command": "openocd"
        }
    ]
}</code></pre>
<p><strong><code>c_cpp_properties.json</code></strong></p>
<pre><code>{
    "configurations": [
        {
            "includePath": [
                "../mbed-os"
            ],
            "cStandard": "c99",
            "cppStandard": "c++11"
        }
    ],
    "version": 4
}</code></pre>
<ul>
<li>配置调试</li>
</ul>
<pre><code>{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/BUILD/NUCLEO_F103RB/GCC_ARM/mbed-os.elf",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\Program Files (x86)\\GNU Tools ARM Embedded\\8 2018-q4-major\\bin\\arm-none-eabi-gdb.exe",
            "setupCommands": [
                {
                    "description": "选择调试文件(.elf)到gdb",
                    "text": "file D:/projects/blink-test/BUILD/NUCLEO_F103RB/GCC_ARM/mbed-os.elf", //此处不能使用${workspaceFolder},因为windows下分隔符是'\\',gdb识别不出来
                    "ignoreFailures": false
                },
                {
                    "description": "连接GDB Server",
                    "text": "target remote localhost:3333",                                 
                    "ignoreFailures": false
                },
                {
                    "description": "Reset MCU",
                    "text": "monitor reset",                                              
                    "ignoreFailures": false
                },
                {
                    "description": "Halt",
                    "text": "monitor halt",                                                  
                    "ignoreFailures": false
                },
                {
                    "description":"下载代码到MCU",
                    "text": "load" ,              
                    "ignoreFailures": false                                      
                }
            ],
            "preLaunchTask": "build", 
        }
    ]
}</code></pre>