EIDE搭配cursor编译GD32的项目 需要的一些c_cpp_properties设置 json文件

news/2025/2/26 17:23:27

B站大神的一个视频。有些需要设置的joson文件,这里整理下。

原视频可以看这里。

【VSCode+EIDE开发STM32,支持标准库、HAL库、LL库,可以在VSCode里进行调试,编译以及下载,代码编辑更舒适,环境搭建超简单。】 https://www.bilibili.com/video/BV1nr4y1R7Jb/?share_source=copy_web&vd_source=6c4c4f00651225661ba90a5916b481f5

VSCode+EIDE开发STM32,支持标准库、HAL库、LL库,可以在VSCode里进行调试,编译以及下载,代码编辑更舒适,环境搭建超简单。

c_cpp_properties.json

{
    "configurations": [
        {
            "name": "ARM",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "compilerArgs": [
                "-Wall",                // 启用所有常见警告
                "-Wextra",             // 启用额外警告
                "-Werror",             // 将警告视为错误
                "-Wstrict-prototypes", // 函数声明必须指定参数类型
                "-Wunused",            // 未使用的变量警告
                "-Wconversion",        // 隐式转换警告
                "-Wshadow",            // 变量遮蔽警告
                "-Wpadded",            // 结构体填充警告
                "-Wpointer-arith",     // 指针运算警告
                "-Wdouble-promotion",  // float到double的隐式转换警告
                "-Wformat=2",          // 格式字符串警告
                "-pedantic",           // 严格遵循标准
                "-fstack-usage"        // 显示栈使用情况
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE",
                "GD32E230"
            ],
            "windowsSdkVersion": "10.0.17134.0",
            "cStandard": "c99",
            "cppStandard": "c++11",
            "intelliSenseMode": "windows-clang-arm64",
            "compilerPath": "C:\\Keil_v5\\ARM\\ARMCLANG\\bin\\armclang.exe"
        }
    ],
    "version": 4
}

在这里插入图片描述

编译器性能优化 的附加选项
填上之后,尺寸能小很多,将优化进行到极致。


-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m23 -c -mexecute-only -fno-rtti -flto -funsigned-char -fshort-enums -fshort-wchar -D__MICROLIB -gdwarf-4 -Oz -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -D__UVISION_VERSION="536" -D_RTE_ -DGD32E23x -D_RTE_ -DGD32E230

这些编译器的附加选项主要用于配置编译器的行为,以满足特定的硬件平台、优化需求和代码规范。以下是对这些选项的逐条解释:

  1. 编译器选项
    -xc:指定输入文件为C语言源代码。
    -std=c99:指定使用C99标准进行编译。
    -c:只编译源代码,不进行链接,生成目标文件(.o)。
    -o ./output/2024/*.o:指定输出文件的路径和名称。
    -MD:生成依赖文件(.d),用于Makefile中跟踪依赖关系。
    -MD,keilmdk:可能是特定工具链(如Keil MDK)的附加选项,用于生成依赖文件。

  2. 目标架构和硬件相关
    –target=arm-arm-none-eabi:指定目标架构为ARM的无操作系统支持的嵌入式应用二进制接口(EABI)。
    -mcpu=cortex-m23:指定目标CPU为Cortex-M23,这是ARM Cortex-M系列的低功耗、低性能核心。
    -mexecute-only:生成只执行的代码,通常用于安全或代码保护场景。

  3. 代码优化和特性
    -Oz:最高级别的优化,通常包括代码大小和执行效率的优化。
    -flto:启用链接时优化(Link-Time Optimization),允许编译器在链接阶段进一步优化代码。
    -fno-rtti:禁用C++的运行时类型信息(RTTI),减少代码大小和执行时间。
    -funsigned-char:将char类型默认为无符号类型。
    -fshort-enums:将枚举类型存储为最短的整型。
    -fshort-wchar:将宽字符类型wchar_t定义为16位(默认是32位)。

  4. 调试和符号信息
    -gdwarf-4:生成DWARF 4格式的调试信息,便于调试器使用。
    -DMICROLIB:启用MicroLib,这是ARM提供的轻量级C运行时库,适合嵌入式系统。

  5. 警告和错误
    -Wno-packed:禁止“packed属性”相关的警告。
    -Wno-missing-variable-declarations:禁止“缺少变量声明”相关的警告。
    -Wno-missing-prototypes:禁止“缺少函数原型”相关的警告。
    -Wno-missing-noreturn:禁止“缺少noreturn属性”相关的警告。
    -Wno-sign-conversion:禁止“符号转换”相关的警告。
    -Wno-nonportable-include-path:禁止“非可移植的包含路径”相关的警告。
    -Wno-reserved-id-macro:禁止“保留标识符宏”相关的警告。
    -Wno-unused-macros:禁止“未使用的宏”相关的警告。
    -Wno-documentation-unknown-command:禁止“未知文档命令”相关的警告。
    -Wno-documentation:禁止“文档相关”警告。
    -Wno-license-management:禁止“许可证管理相关”警告。
    -Wno-parentheses-equality:禁止“括号中的等式”相关警告。

  6. 宏定义
    -DUVISION_VERSION=“536”:定义宏UVISION_VERSION,值为536。
    -DRTE:定义宏RTE,通常用于RTX实时操作系统。
    -DGD32E23x:定义宏GD32E23x,表示目标芯片是GD32E23x系列。
    -DGD32E230:定义宏GD32E230,可能用于特定的芯片型号。
    这些选项的组合通常是为了满足嵌入式开发的需求,确保代码在目标硬件上高效运行,同时减少代码大小和提高安全性。

在这里插入图片描述

遇到不能调试的情况

"gdbPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin/arm-none-eabi-gdb.exe",

这行代码要加进去 ,你必须下载一个新版本的工具链,因为要用到调试工具。
arm-none-eabi-gdb.exe

https://developer.arm.com/downloads/-/gnu-rm
在这里插入图片描述
下载这个版本的工具链,才可以。

           "configFiles": [
                "interface/cmsis-dap-v1.cfg",
                "target/gd32e23x.cfg"
            ],

注意,这里,我直接填写了精准的端口配置文件。

以下是完整的配置。launch.json 这个是调试文件。

{
    "version": "0.2.0",
    "configurations": [
        


        {
            "cwd": "${workspaceRoot}",
            "type": "cortex-debug",
            "request": "launch",
            "name": "jlink",
            "servertype": "jlink",
            "interface": "swd",
            "executable": ".\\build\\Debug\\gd32e230-quickstart.axf",
            "runToEntryPoint": "main",
            "device": "GD32E230C8",
            "gdbPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin/arm-none-eabi-gdb.exe"
        },
        {
            "cwd": "${workspaceRoot}",
            "type": "cortex-debug",
            "request": "launch",
            "name": "openocd",
            "servertype": "openocd",
            "executable": ".\\build\\Debug\\gd32e230-quickstart.axf",
            "runToEntryPoint": "main",
            "gdbPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin/arm-none-eabi-gdb.exe",
            "configFiles": [
                "interface/cmsis-dap-v1.cfg",
                "target/gd32e23x.cfg"
            ],
            "showDevDebugOutput": "raw"
        }

        
    ]
}

配置好了这个,就可以用vscode,或者curor去调试的GD32了

在这里插入图片描述


http://www.niftyadmin.cn/n/5868982.html

相关文章

《操作系统 - 清华大学》8 -4:进程管理:进程控制结构

深度剖析进程控制块:操作系统进程管理的核心关键 在操作系统的复杂体系中,进程控制块(PCB)是实现高效进程管理的关键所在。接下来,将从多个维度深入剖析进程控制块,帮助更好地理解其在操作系统中的重要作用…

软件安全测评报告内容和作用简析,如何获取权威安全测评报告?

软件安全测评报告是对软件系统进行安全性评估后形成的一份详细文档。它通过对软件系统的设计、实现及运行环境等多个方面进行系统性分析,以识别潜在的安全风险和漏洞。该报告不仅包含漏洞的详细信息和修复建议,也是对软件开发者和管理者的重要决策支持工…

LLM全栈框架完整分类清单(预训练+微调+工具链)

一、预训练框架 1. 大规模分布式训练框架 框架名称核心能力GitHub地址Megatron-LM3D并行训练、FlashAttention支持、Transformer架构优化(NVIDIA生态)NVIDIA/Megatron-LMDeepSpeedZeRO优化系列、3D并行、RLHF全流程支持(微软生态&#xff09…

C++ 多态小练习

编写一个如下场景: 有一个英雄Hero类,私有成员,攻击,防御,速度,生命值,以及所有的set get 方法 编写一个 武器 Weapon 类,拥有私有成员攻击力,以及set get 方法 编写一个…

【linux配置】 修改内核网络参数

命令解释 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 这个命令的具体含义是: echo 1:将值1写入文件。 /proc/sys/net/ipv4/conf/all/arp_ignore:将值1写入 /proc/sys/net/ipv4/conf/all/arp_ignore 文件,从而修改内核参…

【前端】【面试】【树】JavaScript 树形结构与列表结构的灵活转换:`listToTree` 与 `treeToList` 函数详解

JavaScript 树形结构与列表结构的灵活转换:listToTree 与 treeToList 函数详解 在前端开发的数据处理工作中,树形结构和列表结构是两种常见的数据形式。树形结构能够清晰展示数据间的层级关系,适合用于菜单、组织架构等场景;而列…

【HarmonyOS Next】鸿蒙应用公钥和证书MD5指纹的获取

【HarmonyOS Next】鸿蒙应用公钥和证书MD5指纹的获取 一、问题背景 政府的icp备案时,或者某些三方SDK以来的管理后台,都需要配置鸿蒙应用的公钥和证书MD5指纹 二、解决方案 专有名词解释: 华为AppGallery Connect简称 AGC平台&#xff0…

DeepSeek 开源周:DeepEP 项目详解,GPU 压榨计划启动!

引言 就在今天,2025年2月25日,DeepSeek 再次为人工智能社区带来了一场技术盛宴——DeepEP 项目的开源。这个旨在优化 GPU 性能的工具一经发布便迅速获得了广泛的关注和赞誉,短短两小时内就斩获了超过1000个 Star。本文将详细介绍 DeepEP 的功…