记录下一下如何在windows,如何使用gcc+vscode对MCU进行开发
使用vscode + gcc编译MCU
安装vscode 以及各种插件
双击安装程序,自己选择喜欢的安装路径

然后一直下一步,
此处强烈建议勾选(win10 用户安装后可以右键文件夹,使用vscosd打开)

进入vscode 选择插件市场,安装中文(安装后会提示重启vscode),C++插件(Microsoft 系列), python插件(Microsoft 系列), Makefile插件, Git Graph插件






关闭vscode
安装 arm none eabi gcc 配置环境变量
- 进入arm none eabi gcc官网下载最新windows版本gcc工具链, 也可以从这里下载

- 点击安装,选择自己喜欢的路径(记录下来后面要用),一直下一步直到安装完成

- 进入windows编辑环境变量,在当前用户PATH 添加arm none eabi gcc安装路径的bin路径.
(路径要到bin文件夹,添加环境后需要重启所有终端) 

安装mingw-w64 配置环境变量
- 进入mingw-w64 github选择最新w64devkit-x64,也可以从这里下载

- 解压文件,将解压出来的文件放到自己喜欢的路径(记录下来后面要用)


- 进入windows编辑环境变量,在当前用户PATH 添加w64devkit安装路径的bin路径.
(路径要到bin文件夹,添加环境后需要重启所有终端) 
测试是否可以正常编译
- 可以从这里下载一份使用gcc编译的工程
- 选择文件夹,右键使用vscode打开

- 进入vscode 使用快捷键 “ctrl + `”打开终端,终端尽量选择git bash.
(git bash 需要安装git) 
- 使用make clean;make -j命令进行编译,看到输出了elf代表gcc + vscode编译环境搭建成功

使用vscode + gcc + pyocd调试, 烧录MCU
安装python环境
- 关闭梯子打开Microsoft Store,搜索python,安装python3.12

安装pycod, 以及安装pack包
- 在终端中使用pip 安装pyocd
1 | pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyocd |

- 如果需要更新pip 则运行,然后重新运行上面安装pyocd命令
1 | pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip |


步骤一提示不在环境便令,则添加到环境变量

检查pyocd是否安装成功,输出版本号则安装成功.
(添加环境后需要重启所有终端)
1 | pyocd -V |

- 创建一个pack包的文件夹,我这里放在了~/AppData/Local/cmsis-pack-manager
1 | mkdir -p ~/AppData/Local/cmsis-pack-manager |

- 将网络下载的pack包放进我们指定的文件夹.一般pack包命名为,芯片厂家+芯片型号+版本号.pack,我们把pack放进指定文件夹时应遵循~/AppData/Local/cmsis-pack-manager/芯片厂家/芯片型号/版本号.pack.下图我举例了2个pack包应该如何放置
(放置规则并非强制,而是遵循pyocd 自带包管理的风格) 
使用pyocd擦除,烧录,读取,
- 擦除flash.c表示全片擦除.-t 后面跟着芯片型号(可以通过Keil 魔术棒中的targer查看,也可以通过解压pack,查看pdsc文件). –pack 后面跟着本地pack包路径
1 | pyocd erase -c -t lcm32f067 --pack ~/AppData/Local/cmsis-pack-manager/Keil/LCM32F0xx_DFP/0.4.70.pack |

- 烧录指定.hex文件.-t 后面跟着芯片型号(可以通过Keil 魔术棒中的targer查看,也可以通过解压pack,查看pdsc文件). –pack 后面跟着本地pack包路径. 直接跟.hex路径
1 | pyocd flash -t lcm32f067 --pack ~/AppData/Local/cmsis-pack-manager/Keil/LCM32F0xx_DFP/0.4.70.pack build/lcp067-gcc-bl.hex |

- 从MCU读取指定位置(0x08000000)指定长度(0x10000)的flash,保存成.bin(flash.bin),然后通过工具链转换成.hex
1 | ## pyocd 读取flash保存成.bin(可以根据需要修改,芯片名,芯片pack地址,要读取的地址,要读取的长度,要保存的文件名) |

- 统一简单的烧录脚本,在工程文件夹下创建一个flash.sh的脚本,脚本内容如下.需要烧录时运行.flash命令即可
1 | #可以根据需要修改,芯片名,芯片pack地址,烧录app时不建议加入这条指令 |

vocode 安装调试插件
- 安装Arm CMSIS Solution, Arm CMSIS Debuger, Arm Keil Studio

配置调试环境
- 在项目工程.vsocde文件夹下创建 launch.json文件,文件内容如下
1 | { |
- pyocd支持J-Link, ST-Link, Dap-Link等,进行调试前需先插入自己的Link,可运行pyocd命令查看Link是否被正常识别
1 | pyocd list -p |
- 连接好调试线,打开供电.在vscode 选择调试,选择CMSIS Debugger: pyOCD进行调试

使用vscode + gcc + pyocd实现live watch调试,仍然无法在运行时修改变量
vscode 安装Cortex—Debug

配置调试环境
- 在项目工程.vsocde文件夹下创建 launch.json文件,文件内容如下(pyocd + cortex-debug配置)
1 | { |
- 在项目工程.vsocde文件夹下创建 tasks.json文件,文件内容如下(pyocd + cortex-debug配置)
1 | { |
- pyocd支持J-Link, ST-Link, Dap-Link等,进行调试前需先插入自己的Link,可运行pyocd命令查看Link是否被正常识别
1 | pyocd list -p |
- 连接好调试线,打开供电.在vscode 选择调试,选择cortex-debug + LiveWatch进行调试
