rt-studio+clion+cubemx联合使用(使用scons进行整合)

前言

以前在clion中使用rt-thread的方式

1. 使用的cubemx生成的方式: 这种方式只能使用rt-thread的内核版本
2. 自己去把rt-thread的源码拷贝到对应的工程中,再编写对应的CMakelists文件进行管理

思考

  1. 我的想法是通过rt-studio创建项目,然后通过工具转成cmakel编译的工具,然后根据官方提供的工具env来实现这个功能

概述

  1. 本次是最初的构建方案,可能在一些方面做的不是很好,后面学会了更好的解决方案再来处理.
  2. 本次是需要编写一些SConscript脚本文件(这里是参考rt-thread的官方源码进行的)
  3. 本次是使用的是stm32f407zgt6为硬件环境
  4. 本次使用的版本为rt-thread 5.0.2

使用RT-Studio创建一个项目文件

项目创建

在这里插入图片描述

处理报错问题

v

测试项目程序

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Env的配置(参考官网,这里不做说明)

使用Env生成cmake构建工具

在这里插入图片描述
在这里插入图片描述

scons --target=cmake

在这里插入图片描述

使用Clion打开

在这里插入图片描述

修改py脚本文件

原始的脚本文件

在这里插入图片描述

这里我们直接去rt-thread源码找一个f4的参考源码文件进行修改

在这里插入图片描述
在这里插入图片描述

修改后的py脚本文件

import os

# toolchains options
ARCH = 'arm'
CPU = 'cortex-m4'
CROSS_TOOL = 'gcc'

# cross_tool provides the cross compiler
# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
PLATFORM = 'gcc'
EXEC_PATH = ''

if os.getenv('RTT_EXEC_PATH'):
    EXEC_PATH = os.getenv('RTT_EXEC_PATH')

BUILD = 'debug'
PLATFORM = 'gcc'
if PLATFORM == 'gcc':
    # toolchains
    PREFIX = 'arm-none-eabi-'
    CC = PREFIX + 'gcc'
    AS = PREFIX + 'gcc'
    AR = PREFIX + 'ar'
    CXX = PREFIX + 'g++'
    LINK = PREFIX + 'gcc'
    TARGET_EXT = 'elf'
    SIZE = PREFIX + 'size'
    OBJDUMP = PREFIX + 'objdump'
    OBJCPY = PREFIX + 'objcopy'

    DEVICE = ' -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections'
    CFLAGS = DEVICE + ' -Dgcc'
    AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb '
    LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T linkscripts/STM32F407ZG/link.lds'

    CPATH = ''
    LPATH = ''

    if BUILD == 'debug':
        CFLAGS += ' -O0 -gdwarf-2 -g'
        AFLAGS += ' -gdwarf-2'
    else:
        CFLAGS += ' -O2'

    CXXFLAGS = CFLAGS

    POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'

在Env控制台,再次执行生成命令

scons --target=cmake

在这里插入图片描述
在这里插入图片描述

构建项目

在这里插入图片描述

创建SConscript文件来管理HAL库相关文件

在这里插入图片描述

内容填写(这里我们依然可以参考rt-thread源码提供的)

在这里插入图片描述
在这里插入图片描述

完整配置内容

import rtconfig
from building import *

# get current directory
cwd = GetCurrentDir()

# The set of source files associated with this SConscript file.

src = Split('''
CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cec.c
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cryp.c
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cryp_ex.c
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c
''')

if GetDepend(['RT_USING_SERIAL']) or GetDepend(['RT_USING_NANO', 'RT_USING_CONSOLE']):
    src += ['STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c']
    src += ['STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_usart.c']

if GetDepend(['RT_USING_I2C']):
    src += ['STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c']
    src += [
### 如何在CLion使用STM32CubeMX进行调试 为了实现在CLion中通过STM32CubeMX配置并调试项目,需遵循一系列特定设置来确保集成开发环境(IDE)能够识别硬件目标以及支持必要的工具链。 #### 配置STM32CubeMX工程以适应CLion 当创建一个新的STM32项目时,在STM32CubeMX界面中的Project菜单下选择Toolchain/IDE选项卡,并指定SW4STM32作为目标工具链[^1]。这一步骤会自动生成适用于ARM Cortex-M微控制器的CMake构建脚本(CMakeLists.txt),从而允许CLion解析和理解项目的结构。 #### 设置CLion工作区 完成上述操作之后,打开CLion并将生成好的源码目录加载进来。由于已经选择了SW4STM32工具链,因此应该能看到一个预配置过的`CMakeLists.txt`文件用于指导编译过程。此时还需要确认几个方面: - **安装GNU Arm Embedded Toolchain**: 确认本地已正确安装了GNU ARM嵌入式工具链版本,这是执行交叉编译所必需的基础组件之一。 - **调整CMake参数**: 如果必要的话,可以在CLion内修改CMake配置项以便更好地适配个人需求或解决潜在路径问题。 #### 调试准备 对于实际调试而言,除了基本的软件层面准备工作外,还需配备合适的硬件设备如ST-LINK V2等USB转JTAG/SWD接口适配器连接至目标板上对应的编程端口。随后按照如下方式启动调试流程: -CLion插件市场查找并安装GDB Server Plugin插件,该插件提供了图形化界面管理远程调试服务器的功能; - 启动OpenOCD程序监听来自计算机发出的数据包并通过物理线路传递给MCU; - 利用CLion内置功能建立与运行于主机上的gdbserver之间的通信桥梁,进而实现单步跟踪、断点控制等功能特性; 以上步骤完成后即可利用CLion强大的编辑能力配合STM32CubeMX便捷地开展基于STM32系列芯片的应用层逻辑编写及其后续测试验证活动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

詩不诉卿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值