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

文章目录

  • 目的
  • 前期准备
    • 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模式 等等
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ozon、美客多补单测评黑科技:打造无懈可击的自养号补单环境

不管哪个跨境平台的风控都会做升级,相对的补单技术也需要进行相应的做升级,风控升级后,自己养号补单需要注意以下技术问题,以确保补单的稳定性和安全性: 一、物理环境 1. 硬件参数伪装:平台已经开始通过I…

择校秘籍:如何找到口碑爆棚的学校?以星贝育园为例

在为孩子选择学校时,家长们总是慎之又慎,希望能找到一所口碑好、教育质量高的学校,为孩子的未来奠定坚实的基础。今天,我们就以星贝育园为例,来探讨一下如何选择口碑好的学校。 一、考察师资力量 优秀的教师团队是一所…

什么是定时器?

前言👀~ 上一章我们介绍了阻塞队列以及生产者消息模式,今天我们来讲讲定时器 定时器 标准库中的定时器 schedule()方法 扫描线程 手动实现定时器 任务类 存储任务的数据结构 定时器类 如果各位对文章的内容感兴趣的话,请点点小赞&am…

帮找Java Bug,面试,项目,解决Java问题

本人是个Java老程序员,如果你有解决不了的问题,或者面试的时候需要人帮助,或者求职就业上任何问题都可以联系我,下面是我微信,欢迎联系我!

【JUC】可重入锁理解

可重入锁(Reentrant Lock),也称作递归锁,是一种特殊的锁机制,它允许同一个线程多次获取同一个锁。 优点是可以避免死锁。 public class WhatReentrant {public static void main(String[] args) {new Thread(new Runn…

Qt——升级系列(Level Eight):界面优化

目录 QSS 背景介绍 基本语法 QSS设置方式 指定控件样式设置 全局样式设置 从文件加载样式表 使用Qt Designer 编辑样式 选择器 选择器概况 子控件选择器 伪类选择器 样式属性 盒模型 控件样式示例 按钮 复选框、单选框 输入框 列表 菜单栏 登录界面 绘图 基本概念 绘制各种形…

【Kali-linux for WSL】图形化界面安装

文章目录 前言图形化界面安装 前言 之前在WSL中安装了Kali 启动之后发现什么都没有!!! 那我还怎么学习渗透技术??? 看来,得改进下我的kali-linux for wsl,安装个图形化界面 图形化…

Jetson系列机载电脑创建热点模式配置方法

Jetson nano为例—— 创建热点模式配置方法 1.1、新建一个 WiFi 在屏幕右上角找到网络图标,点击后选择“Edit Connections”选项,进入选择网络连接页面,然后点击左下角加号,新建一个连接,类型选择 WiFi 后点击 “cre…

AI降重,不再难:降AI率的实用技巧大揭秘

如何有效降低AIGC论文的重复率,也就是我们说的aigc如何降重?AIGC疑似度过高确实是个比较愁人的问题。如果你用AI帮忙写了论文,就一定要在交稿之前做一下AIGC降重的检查。一般来说,如果论文的AIGC超过30%,很可能会被判定…

剪画小程序:如何将视频变成自己的作品!在手机上这样做就可以了!

亲爱的小伙伴们,我是你们的博主小画! 今天和大家分享两个在视频剪辑中实用的技巧—旋转视频和添加水印! 在我们的创作过程中,有时候常规的视角并不能完全展现出视频的魅力和创意。而通过旋转视频,就能为观众带来全新的…

【云原生监控】Prometheus 普罗米修斯从搭建到使用详解

目录 一、前言 二、服务监控概述 2.1 什么是微服务监控 2.2 微服务监控指标 2.3 微服务监控工具 三、Prometheus概述 3.1 Prometheus是什么 3.2 Prometheus 特点 3.3 Prometheus 架构图 3.3.1 Prometheus核心组件 3.3.2 Prometheus 工作流程 3.4 Prometheus 应用场景…

新规则!2024年信息素养大赛复赛图形化编程题这么写系统才能通过

2024年全国青少年信息素养大赛复赛即将在7月6日陆续开赛,今年Scratch图形化编程小低组和小高组分别为6道编程题,将采用新的判题规则,类似GESP的OJ系统判题,主要有以下三个方面: 1、变量名大小写要和题目完全一致。 2…

数据万象推出智能检索MetaInsight,现已开启限时公测

海量文件的分析统计一直是对象存储COS的热点需求,伴随AIGC飞速迭代发展,在众多不同模态素材的海洋中,用户也急需更高效地管理和利用多媒体内容,打破传统搜索的桎梏。 数据万象推出的智能检索 MetaInsight 服务将多模态检索与元数…

开源之夏|祝贺MatrixOne开源社区项目中选同学!

在本届「开源之夏 2024」活动中,MatrixOne开源社区共计上线3个项目任务,最终有 3位同学成功突围。接下来让我们看看每个项目的详细中选情况: 中选学生公示 项目名称:基于大语言模型的操作系统任务自动识别,拆解&#…

Unicode 和 UTF-8 以及它们之间的关系

通俗易懂的 Unicode 和 UTF-8 解释 Unicode 是什么? 想象一下,我们有一个巨大的图书馆,这个图书馆里有各种各样的书,每本书都有一个唯一的编号。Unicode 就像是这个图书馆的目录系统,它给世界上所有的字符&#xff0…

数据要素如何转化为生产力?关键在以指标为中心实现数据分析“快全准省”

进入到数字化时代,企业的经营变得越来越精细化、智能化、自动化,其中,数据就变成了关键要素,在企业的业务运营、经营决策、流程改进、创新驱动、资源配置等方面发挥出巨大作用。 数据具体如何转化为生产力,有几个关键…

俄罗斯ozon运费计算工具,跨境电商ozon物流运费计算工具

OZON平台服装类目卖家而言,如何快速、准确地为产品定价,并有效管理运费成本,直接关系到市场竞争力与利润空间。接下来我们看看俄罗斯ozon运费计算工具,跨境电商ozon物流运费计算工具。 萌啦Ozon定价工具:智能模拟&…

OCR text detect

主干网络 VoVNet:实时目标检测的新backbone网络_vovnet pytorch-CSDN博客 DenseNet: arxiv.org/pdf/1608.06993 密集连接: DenseNet 的核心思想是将网络中的每一层与其前面的所有层直接连接。对于一个 L 层的网络,DenseNet 具有…

【深度学习】扫描全能王的AI驱动创新与智能高清滤镜技术解析

目录 引言1、扫描全能王2、智能高清滤镜黑科技2.1、图像视觉矫正2.2、去干扰技术 3、实际应用案例3.1、打印文稿褶皱检测3.2、试卷擦除手写3.3、老旧文件处理3.4、收银小票3.5、从不同角度扫描文档 4、用户体验结论与未来展望 引言 在数字化时代背景下,文档扫描功能…

AI是在帮助开发者还是取代他们

目录 1.概述 1.1.AI助力开发者 1.2.AI对开发者的挑战 2.AI工具现状 2.1. GitHub Copilot 2.2. TabNine 2.3.小结 3.AI对开发者的影响 3.1.对开发者的影响 3.2.开发者需要掌握的新技能 3.3.在AI辅助的环境中保持竞争力的策略 4.AI开发的未来 5.总结 1.概述 生成式…