Vscode开发/调试ARM单片机最新教程

工具链下载

之前的很多教程都因为自己学习的也不够深入写的很不规范,最近在开发汇顶的GR5525又遇到了不少新的问题,但这次有另外一位同事和我一起研究,所以现在也在不断完善中。

初学者请先按照这篇笔记配置C语言开发环境:

GCC+Clangd+CMake+Ninja环境搭建最新教程_windows 上搭建 c++ ninja + clang-CSDN博客

我们除了要改用arm-gnu编译单片机代码之外,其他完全是相通的。

arm-gnu下载地址:

Arm GNU Toolchain Downloads -- Arm Developer

进入页面后,Windows用户下载下面这个版本,不要忘记把路径添加到环境变量之中后重启电脑。

最后在终端里面检查所有组件的版本,arm_gnu检查:

bash 复制代码
 arm-none-eabi-gcc --version

正确结果展示:

cmake构建工具检查:

bash 复制代码
cmake --version

正确结果展示:

ninja构建工具检查:

bash 复制代码
ninja --version

正确结果展示:

clangd语法检查工具:

bash 复制代码
clangd --version

正确结果展示:

Vscode插件安装与全局配置

直接倒入下面这个仓库里的ARM分支存储着的配置文件就OK了:

传送门:

bash 复制代码
git clone https://gitee.com/jumayusi/vscode-config-file.git

插件大致浏览展示:

clangd需要点击插件设置小齿轮修改绝对路径:

同理cortex-debug里面也需要更改,帮助VScode找到arm-none-eabi-gdb调试器:

调试操作

调试配置文件分享(.vscode/launch.json):

bash 复制代码
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "cwd": "${workspaceFolder}",
            "executable": "${workspaceFolder}/build/GRX_APP.elf",
            "name": "Debug",
            
            "gdbPath" : "D:/VSCode/ToolChain/Arm_Gnu/bin/arm-none-eabi-gdb.exe",
            "request": "attach",
            "type": "cortex-debug",
            "servertype" : "external",
            "gdbTarget": "127.0.0.1:3331",
            "rtos": "FreeRTOS",
            "showDevDebugOutput": "parsed",
            "liveWatch": {
                "enabled": true,
                "refreshRate": 250
            },
            "overrideResetCommands": [
                /* RCURST1: reset core system */
                "monitor reset halt",
                "load",
                "monitor reset init",
            ],
            "overrideRestartCommands": [
                "monitor reset 1",
            ]
        }
    ]
}

powershell命令:

bash 复制代码
JLinkGDBServerCL.exe ^
  -select USB ^
  -device GR5525 ^
  -endian little ^
  -if SWD ^
  -speed 4000 ^
  -noir ^
  -noLocalhostOnly ^
  -nologtofile ^
  -port 3331 ^
  -SWOPort 3332 ^
  -TelnetPort 3333 ^
  -rtos GDBServer\RTOSPlugin_FreeRTOS

注意命令需要黏贴为1行输入,设备名称和使用的RTOS名称还请自行调整。

调试操作流程:

①插上Jlink;

②PowerShell输入上面的命令;

③点击Debug按钮开始烧录调试。

如果遇到cortex-debug解决不了的问题,也可以考虑试试segger-rtt与Ozone。

SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace

Ozone -- The Performance Analyzer

相关推荐
Brilliantwxx1 小时前
【STM32】 通用定时器:输入捕获与输出比较详解 测脉宽、测频率
stm32·单片机·嵌入式硬件·mcu
iotxiaohu2 小时前
用 cflow 查看 C 函数调用关系
c语言·开发语言·cflow
意法半导体STM322 小时前
【官方原创】LAT1703 STM32C5 LL Cordic例程
stm32·单片机·嵌入式硬件·stm32c5·ll cordic
kyle~2 小时前
Linux --- Socket 用户进程与内核网络协议栈之间的统一接口
linux·arm开发·网络协议
zjxtxdy3 小时前
STM32hal库开发-中断与串口和通信协议
stm32·单片机·嵌入式硬件
wuyk5553 小时前
27.LeetCode 2265. 统计值等于子树平均值的节点数 —— 后序遍历实战
stm32·单片机·嵌入式硬件·算法
糖糖单片机设计3 小时前
基于 STM32 的配网变压器涌流抑制器设计与实现
人工智能·stm32·嵌入式硬件·51单片机·语音识别
iCxhust4 小时前
51单片机电力载波应用开发(九)51产品化
c语言·数据库·嵌入式硬件·mysql·51单片机·软件工程·c51
Logic1014 小时前
C语言/数据结构字符串题解:统计“chhc“子串权值总和——一次遍历模式匹配
c语言·数据结构·算法·字符串·时间复杂度·空间复杂度·ascii
zhangzhangkeji5 小时前
用正点原子的 HAL 程序,跑在江科大103C8T6 上时的程序配置
stm32