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

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

bash 复制代码
{
    "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
}

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

bash 复制代码
-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,可能用于特定的芯片型号。

    这些选项的组合通常是为了满足嵌入式开发的需求,确保代码在目标硬件上高效运行,同时减少代码大小和提高安全性。

遇到不能调试的情况

bash 复制代码
"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

下载这个版本的工具链,才可以。

bash 复制代码
           "configFiles": [
                "interface/cmsis-dap-v1.cfg",
                "target/gd32e23x.cfg"
            ],

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

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

bash 复制代码
{
    "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了

相关推荐
久绊A5 分钟前
Ubuntu及其衍生系统安装Python
开发语言·python
ThereIsNoCode5 分钟前
「软件设计模式」责任链模式(Chain of Responsibility)
开发语言·责任链模式
m0_7263658327 分钟前
某宝同款百度盘不限速后台系统源码_卡密系统_Java账号管理系统部署方案
java·开发语言
zr想努力32 分钟前
Lua语言入门(自用)
开发语言·lua
半桔32 分钟前
C++入门
c语言·开发语言·数据结构·c++·vscode·青少年编程
yuanpan35 分钟前
23种设计模式之《外观模式(Facade)》在c#中的应用及理解
开发语言·设计模式·c#·外观模式
奔跑吧邓邓子1 小时前
【Python爬虫(64)】从“听”开始:Python音频爬虫与语音数据处理全解析
开发语言·爬虫·python·音频·语音识别
_nut_2 小时前
手撕跳表/数据结构
java·开发语言·数据结构
小猪咪piggy2 小时前
【数据结构】(12) 反射、枚举、lambda 表达式
java·开发语言·数据结构
web147862107232 小时前
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
java·开发语言·数据库