自学内容网 自学内容网

删除keil!VSvode+eide+jlink(stlink)配置keil工程,调试使用cortex-debug+openocd

目的

提示:这里可以添加技术概要

vscode代替keil进行程序烧写,主要依赖eide插件烧写,实时调试使用cortex-debug插件+openocd

代替keil有几个好处

1费用减轻,对于企业来说,不需要购买keil软件,一般来说keil都是需要购买,而且软件非常昂贵,我所在的单位甚至开出14万一年的高价。因此脱离keil就是脱离经济讹诈
2调试方便。最初配置整个开发环境可能是困难的,相比于keil来说,初始vsccode+eide的配置肯定是困难的,但是配置完成后,由于vscode有着众多的插件,实际调试可以使用AI进行代码补全,可以更加便捷的查看变量,因此总体来说,调试更加简单。
3进阶学习,使用keil配置中很多配置你都不需要管,实际上来说是傻瓜式的,无论是芯片的选择,仿真器的配置,以及底层的汇编向量表,你基本都不需要考虑。但是对于vscode来说就需要考虑了。当然,现在vscode资料多,你完全也可以直接上手用。不过vscode确实提供了一个不同的环境。能够让开发者更好的修改这些底层。因此学习这种配置方式,能更好的理解嵌入式系统的编译和烧写。

前期准备

1.软件安装

需要安装以下软件
1VScode安装
主要的IDE,基本所有配置都在IDE中完成,安装傻瓜式,官网下载即可
2 GNU Arm Embedded Toolchain:
arm用的GNU工具链,包括编译器(gcc),调试器(gdb),链接器(ld)和其它工具。
3VScode插件Embedded IDE (EIDE)
主要的编译运行插件,方便导入
4VScode插件Cortex-Debug
实时调试运行芯片
5 jlink驱动SEGGER (可选)
如果你使用jlink烧写,那么自然需要安装 jlink仿真器驱动软件
6stlink驱动ST-LINK Utility(可选)
如果你使用stlink烧写,那么自然需要安装 stlink仿真器驱动软件
7openocd(可选)
如果你使用stlink实时仿真,那么可能需要openocd在线调试

2.VScode安装

vscode安装链接

https://code.visualstudio.com/
在这里插入图片描述

安装后默认可能是英文,可安装语言包切换为中文
打开左侧插件栏(Extensions),在搜索框中输入chinese。
在这里插入图片描述

选择Chinese(Simplified) 点击右下角的install按钮。
安装完毕后,自行重启VScode,或者点击右下角的提示的restart按钮重启VScode。
在这里插入图片描述

重启后VScode界面语言已经更改为简体中文。

3.VScode插件安装

首先在最左侧栏找到扩展进行安装插件
在这里插入图片描述
1C/C++ for Visual Studio Code
来自微软官方的 C/C++ 插件,必备的插件,如果不安装,代码无法跳转,也没有自动补全。
2C/C++ Extension Pack
对官方工具的补充,对以下工具功能增强
跳转到定义;代码自动补全;查找代码引用;列举 symbols;
实际上基本和C/C++ 插件绑定一起使用
在这里插入图片描述
3 Cortex_Debug
实时在线调试插件
在这里插入图片描述
4Embedded IDE
在这里插入图片描述
安装后重启vscode,左侧会出现EIDE标志
在这里插入图片描述

VScode+插件安装完成

注,这只是必须要安装的,实际上还可以安装很多其他的
例如
1makefile插件,方便你写makefile
2md插件,方便查看md文件
3codegeex Ai自动代码补全
4project manager 项目管理插件

4.安装ARM-GCC交叉编译器

arm用的GNU工具链,包括编译器(gcc),调试器(gdb),链接器(ld)和其它工具。 程序在线调试需要这个
进入arm开发者官网,往下滑动选择下载解压可用的ZIP压缩包文件
在这里插入图片描述

请下载ZIP版本。然后系统变量添加路径
在这里插入图片描述
系统变量需要添加具体路径,路径添加可能重启电脑才能完全生效(不一定),添加成功后,验证方法是vscode终端后中运行命令
arm-none-eabi-gcc –version
显示正常版本号说明路径正常
在这里插入图片描述

工程导入

具体可参考EIDE指导手册

在这里插入图片描述
选择导入项目,导入功能支持keil,IAR和Eclipse,选择MDK

在这里插入图片描述
可以选择是否于keil共存于同一目录下,选择Yes
在这里插入图片描述
点击确定,切换工作区
在这里插入图片描述
自动跳转,工程已经打开,如果keil中工程配置已经正常情况下,那么能够看到6项,包括项目名称,项目资源,芯片支持包,构建配置,烧录配置,项目属性

在这里插入图片描述

1.项目名称

项目名称为实际工程的名称
2.项目资源
包括你原先的.C和.h文件
3.芯片支持包
目前EIDE插件可以不配置,因为目前插件只支持Coretx-M核心。
4.构建配置
AC5:代表ARMC5这个如果未破解仍然编译32KB代码
CPU类:Coretx-M4
浮点类型:单精度双精度等
链接脚本路径: 一个带有存储器布局的描述文件,我们称之为 链接器脚本文件,比如: xxx.sct, xxx.lds, xxx.ld,它将被传递给链接器
在这里插入图片描述
5.烧录配置
在这里插入图片描述
程序文件为烧写hex文件
芯片名称为硬件具体型号
接口类型是JTAG还是SWD

6.项目属性
包含目录:代表keil中配置的.h文件路径
在这里插入图片描述
在这里插入图片描述
库目录: lib文件路径
宏定义:keil中对应宏定义
在这里插入图片描述
在这里插入图片描述

程序编译

在这里插入图片描述
如上图所示,从最左到最右分别为,build编译、rebuild重新编译、烧录、清理,用法和keil就类似

点击构建过后,能够在下方面板栏显示, build successfully意味着变成成功,可以下载
在这里插入图片描述
如果之前keil文件种关于烧写的仿真器和接口已经配置好,可以直接flash烧写,成功的话会有如下类似于keil的代码内存地址显示,还有烧写器例如jlink口的连接情况和芯片的复位情况。这些都能正常显示,那么烧写就意味着成功。
在这里插入图片描述
更新:编译过程后,keil可以进行删除,但删除keil自然会同时删除ARMCC编译器,那么可以参考压缩包ARMCC里面,提前复制ARMCC编译器防止删除后异常

jlink在线调试

如果程序能够烧写,那么就应该进行下一步,也就是在线的仿真调试
安装好cortex-debug插件后点击F5进入调试界面,但是一般情况下会报错
在这里插入图片描述
这是由于运行的launch.json文件没有进行配置,需要配置一下相关调试参数
在运行与调试窗口左侧选择创建launch.json文件
在这里插入图片描述
选择生成工作区
选择插件coretx-dug会自动生成一个launch.json文件,但是缺失一些关键信息,需要修改
在这里插入图片描述
下图给出已经配置好的launch.json文件进行说明

 // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Cortex Debug",
            "cwd": "${workspaceFolder}",
            "executable": "./build/Target 1/YH_Power.elf",
            "request": "launch",
            "type": "cortex-debug",
            "runToEntryPoint": "main",
            "servertype": "jlink",
            "device": "GD32F103RE", // 确保这里的设备名称与SEGGER支持的名称匹配
            "gdbPath": "C:/SysGCC/arm-eabi/bin/arm-none-eabi-gdb.exe",
            "svdFile": "D:/software/keil/pack/GigaDevice/GD32F10x_DFP/2.0.3/SVD/GD32F10x/GD32F10x_HD.svd",
            "liveWatch": {
                "enabled": true,
                "samplesPerSecond": 1
            }
        }
    ]
}

关键项
“executable”:编译出的二进制文件,也就是最终烧录到单片机中的,这里是elf文件。根据芯片的不同,可能产生不同的名称和后缀
“request”:可以选launch或attach。launch是指启动调试时同时开始执行程序;attcah是指程序已经在运行了,然后开始调试。
“type”:调试的类型,选cortex-debug,这是我们装的插件。
device": “GD32F103RE” 需要按照你实际调试的芯片填写具体型号,由于使用的就是J-LINK GDB Server,所以必须添加详细
“gdbPath”: “C:/SysGCC/arm-eabi/bin/arm-none-eabi-gdb.exe”,具体你之前安装GNU Arm Embedded Toolchain的地址
svdFile”:svd文件的路径。这是用来查看芯片寄存器参数的,如果你不需要也可以不配置
“liveWatch”: 数据实时刷新时间,最小就是1s

如果配置得当且不报错,那么点击F5能够进入调试界面,如下图所示
在这里插入图片描述
具体调试操作与keil类似
左侧变量窗口运行到具体函数时自动显示内部变量
左侧监视窗口可以添加你想查看的变量
断点就是目前添加的所有断点位置,可以在代码左端直接点击增加断点
Cortex live watch窗口列表中可以添加自动刷新的变量,这个想要持续刷新只能是全局变量。
由于编译成功,所以函数的链接都已经完成,右键具体变量或者函数,能够进行跳转和查找
在这里插入图片描述

部分常见问题

问题1:点击F5运行时出现问题
需要添加launch.json文件,与之相关联就可以,调试过程中可能会报故。大多数都是launch.json配置不正常产生的。
问题2:部分编译异常
注意系统变量是否正确添加。
问题3:右键函数跳转定义和声明异常
编译存在问题,或者存在相同函数明的文件在你的目录路径里,即使不参与编译仍然影响跳转。
问题4:KEIL删除后ARMV5 编译异常
删除keil后 arm编译器一并删除,需要同时

更改为GCC 编译器

在这里插入图片描述
.ld文件为官方gcc例程,而gcc编译工具在安装插件的时候已经安装完成。
并且目录下需要添加makefile文件,具体makefile如何编写需要参考gnu文档。
除此之外,文件中GD32_startup.s启动文件需要更新为GCC的startup启动文件文件
官网下载EmbeddedBuilder
在这里插入图片描述
EmbeddedBuilder_v1.3.10.22890\EmbeddedBuilder_v1.3.10.22890\EmbeddedBuilder\plugins\com.gigadevice.templatefwlib.arm.gd32e10x_1.0.0.202404240945\Firmware\gcc_startup 里面有对应GD32E103的startup.s文件,其他类型同类,

Makefile文件的编写有一定难度,可以先不更换编译器。后续此章节会进行更新

更改为stlink+opencd

仿真器更改还是相对简单的
在这里插入图片描述
opencd 需要下载,在github或者opencd 官网都可以
在这里插入图片描述
下载后,需要在系统变量中添加openocd变量,然后cmd中使用openocd -v
出现以下就认为安装正常了

在这里插入图片描述

lanunch.json修改,需要修改

“servertype”: “openocd”,
“configFiles”: [
“interface/stlink.cfg”,
“target/stm32f3x.cfg” // 使用新的配置文件
],

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "Cortex Debug",
            "cwd": "${workspaceFolder}",
            "executable": "./build/Target 1/GD32.elf",
            "request": "launch",
            "type": "cortex-debug",
            "runToEntryPoint": "main",
            "servertype": "openocd",
            "device": "GD32F303RC", // 确保这里的设备名称与SEGGER支持的名称匹配
            "gdbServerPath": "C:/Path/To/OpenOCD/bin/openocd.exe",  // 替换为实际的OpenOCD路径
            "configFiles": [
                "interface/stlink.cfg",
                "target/stm32f3x.cfg"  // 使用新的配置文件
            ],
      
            "liveWatch": {
                "enabled": true,
                "samplesPerSecond": 1
            }
        }
    ]
}

一些tips

调试变量查看

1调试变量后加,h能够16进制显示,默认是10进制显示
2实时调试窗口是CORTEX LIVE WATCH,最快刷新只能是1s了,调试前需要在launch.json增加配置才行。

在这里插入图片描述

            "liveWatch": {
                "enabled": true,
                "samplesPerSecond": 1
            }

构建器选项配置

在这里插入图片描述
选择后能够出现界面,能够选择构建器是否生成hex文件,代码优化orC99模式 等等
在这里插入图片描述
在这里插入图片描述


原文地址:https://blog.csdn.net/watch361/article/details/140154586

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!