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

news2024/10/7 8:21:45

文章目录

  • 目的
  • 前期准备
    • 1.软件安装
    • 2.VScode安装
    • 3.VScode插件安装
    • 4.安装ARM-GCC交叉编译器
  • 工程导入
  • 程序编译
  • jlink在线调试
  • 部分常见问题
  • 更改为GCC 编译器
  • 更改为stlink+opencd
  • 一些tips
    • 调试变量查看
    • 构建器选项配置

目的

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

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模式 等等
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1889553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

时间序列预测实战——Transformer模型实现长期预测并可视化结果(附代码+数据集+原理介绍)

论文地址->Transformer官方论文地址 官方代码地址->暂时还没有找到有官方的Transformer用于时间序列预测的代码地址 一、本文介绍 这篇文章给大家带来是Transformer在时间序列预测上的应用,这种模型最初是为了处理自然语言处理(NLP)…

多微信运营管理方案

微信作为一款社交通讯软件,已经成为人们日常生活中不可缺少的工具。不仅个人,很多企业都用微信来联系客户、维护客户和营销,这自然而然就会有很多微信账号、手机也多,那管理起来就会带来很多的不便,而多微信私域管理系…

CS2黑屏、闪退、掉线的解决方法一览

历时近一年,V社终于针对CS2进行了实质性更新,而不是做一些华而不实的升级。本次更新V社带来了五张全新地图,让各位可以在游戏内尽情享受混战和新地图带来的新乐趣。不过有很多玩家吐槽,自己在游玩CS2时,老遇到黑屏、闪…

wasm的逆向之旅一

目录 概要 技术名词解释 1、WebAssembly 指令集概览 1)基本结构 2)数据类型 3)模块和函数 4)指令概览 1.i32 整数运算 2.i32 浮点数运算(用法同整数运算) 3.逻辑运算和位移(用法同整数运算) 4.内存访问指令 6.控制流指令 7.模块和导出指令 8.其他常…

计组_机器指令

2024.06.13:计算机组成原理机器指令学习笔记 第13节 机器指令 3.1 指令的作用3.2 指令的格式3.2.1 操作码字段(用户要干什么)3.2.2 (操作数)地址码字段(对谁进行操作)3.2.3 格式分类*(一步步优化&#xff0…

FDL专题:如何在工作中对Kettle任务进行迁移?可以直接调用吗?

IT团队历史数据同步任务过去都用的Kettle来开发,但kettle的定时调度不方便,维护成本高,遇到报错不知道怎么办。苦寻CSDN无果,只得在公司留下一个个深夜加班的背影...... IT经理想到:是否能将任务一步步迁移到一个统一…

易保全推动区块链应用与AI融合创新发展

数字化时代,区块链和人工智能技术作为当下两大“黑科技”,两者的深度结合,正在为企业数字化转型带来前所未有的机遇。 易保全作为国内权威的电子数据存证保全机构,积极探索两者的融合之道,将区块链的去中心化、不可篡…

解锁科研新动力,QtiPlot for Mac——您的数据可视化与分析首选工具!

QtiPlot for Mac,一款专为科研工作者和数据分析爱好者打造的数据可视化与分析神器,它如同科研道路上的得力助手,让复杂的数据分析变得简单直观。🔬📈 这款软件拥有强大的数据导入与处理能力,支持多种数据格…

电脑本机ip地址怎么查?介绍几种简单快捷方法

在数字时代,无论是网络连接、远程操作还是设备识别,IP地址都扮演着至关重要的角色。然而,对于许多电脑用户来说,如何快速准确地查找本机IP地址仍然是一个挑战。虎观代理小二将为您详细介绍几种简单快捷的IP地址查询方法&#xff0…

openssh9.8p1的rpm包

openssh9.8p1的rpm包 centos7下的openssh9.8p1rpm包 安装环境:centos7全系列 已经集成所有依赖到rpm包中,直接安装即可 rpm包下载链接 (免积分下载) 安装命令 tar -zxvf centos7_openssh-9.8.tar cd centos7_openssh-9.8 rpm -Uvh --force --nodeps *…

快速了解GPT-4o和GPT-4区别

GPT-4o简介 在5月14日的OpenAI举行春季发布会上,OpenAI在活动中发布了新旗舰模型“GPT-4o”!据OpenAI首席技术官穆里穆拉蒂(Muri Murati)介绍,GPT-4o在继承GPT-4强大智能的同时,进一步提升了文本、图像及语…

VS开发QT程序图标修改

VS开发QT程序图标修改 1.双击打开UI界面 2.选择编辑资源 3.添加文件 4.选择ico文件 5.ok确定 6.点击保存 7.选择windowsIcon,倒三角图标 8.选择资源 9.选择图标,点击ok 10.保存 编译运行: 任务栏:

电脑免费压缩软件app哪个好?Top15压缩软件良心测评,图文详解!

你是否在寻找一款能够帮助你释放电脑存储空间的免费压缩软件app呢?在当今数字化生活中,文件和媒体内容日益增多,而硬盘空间却总是显得不够用。优秀的压缩工具不仅能节省空间,还能提升系统效率,让你的电脑运行更加流畅。…

Arthas实战(2)- OOM问题排查

一、 准备测试应用 新建一个 SpringBoot应用&#xff0c;写一段有 OOM bug 的代码&#xff1a; RestController RequestMapping public class JvmThreadController {List<TestWrapper> memoryList new ArrayList<>();GetMapping("/test")public Strin…

年份与产地:解锁红酒的秘密密码

在红酒的世界里&#xff0c;年份与产地如同两把神秘的钥匙&#xff0c;它们背后隐藏着红酒不同的魅力与秘密。今天&#xff0c;就让我们一起揭开这层神秘的面纱&#xff0c;探寻年份与产地如何为红酒赋予不同的灵魂&#xff0c;特别是以雷盛红酒为例&#xff0c;感受那份从岁月…

十 .pfc,bus纹波分析与抑制方法

以apfc为例 在分析时用 uin 和 iin 表示输入电压和输入电流&#xff0c;uo 和 io&#xff0c;表示输出电压和输出电流&#xff0c;Uin 和 Iin 表示输入电压和输入电流的幅值&#xff0c;则输入电压和输入电流可以分别表示为&#xff1a; 从式&#xff08;3-3&#xff09;可以…

Python28-1 机器学习算法之决策树

决策树&#xff08;Decision Tree&#xff09; 决策树算法是一种常用的机器学习算法&#xff0c;属于监督学习范畴。它可以用于分类和回归任务&#xff0c;具有易于理解和解释的特点。决策树通过递归将数据分割成更小的子集&#xff0c;构建一个树形结构&#xff0c;其中每个节…

KV260视觉AI套件--PYNQ-DPU-Resnet50

目录 1. 简介 2. 代码解析 3. 全部代码展示 4. 总结 1. 简介 本文以 Resnet50 为例&#xff0c;展示使用 PYNQ 调用 DPU 运行 Resnet50 网络的详细过程&#xff0c;并对其中关键代码做出解释。 PYNQ是一个针对Xilinx Zynq平台的Python开发框架&#xff0c;它允许开发者使…

学校教室NTP电子钟时间是如何同步北京时间的?-讯鹏时钟

在学校教室里&#xff0c;NTP 电子钟精准地显示着时间&#xff0c;与北京时间保持高度同步&#xff0c;为师生们提供了可靠的时间参考。那么&#xff0c;它是如何做到这一点的呢&#xff1f; NTP 电子钟能够与北京时间同步&#xff0c;主要依赖于网络时间协议&#xff08;NTP&a…

准化 | 水系统碳中和标准体系初见成效

2024年5月31日&#xff0c;中华环保联合会发布《团体标准公告 2024年第10号&#xff08;总第78号&#xff09;》&#xff0c;批准发布了由中华环保联合会提出并归口的《废水处理温室气体监测技术规程》(T/ACEF 142-2024)、《工业水系统碳排放核算方法与报告指南》(T/ACEF143-20…