ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

RT-Thread Env SCons 自定义文件添加与 ST-Link 一键下载配置教程

RT-Thread Env SCons 自定义文件添加与 ST-Link 一键下载配置教程

RT-Thread Env 是封装完成的 Python 虚拟环境,在 Env 终端中执行scons编译指令,本质是依托 Env 自带 Python 环境,调用 Scons 构建工具、ARM GCC 交叉编译器完成项目交叉编译。下面详细介绍自定义工程文件添加和ST-Link 一键下载的完整配置方法。

一、添加自定义工程文件(适配 SCons 编译)

新增文件如图

1. 配置原理

无需修改顶层编译配置,仅需在ibsp 同级目录的 SConscript 文件中添加自定义源文件、头文件路径,即可让 scons 指令识别并编译新增的自定义驱动文件。

2. 完整配置代码

打开对应目录下的 SConscript 文件,替换/追加以下完整代码,包含自定义驱动源文件、多级头文件路径配置,同时保留原生子目录编译逻辑:

importosfrombuildingimport*cwd=GetCurrentDir()# 自定义添加的源文件列表,根据自身工程文件路径修改src=Split(''' board.c CubeMX_Config/Src/stm32f4xx_hal_msp.c ibsp/dev/dev_led.c ibsp/drv/drv_led.c ''')# 配置全局头文件路径path=[cwd]# CubeMX 配置头文件路径path+=[os.path.join(cwd,'CubeMX_Config','Inc')]# 自定义设备层、驱动层头文件路径path+=[os.path.join(cwd,'ibsp/dev')]path+=[os.path.join(cwd,'ibsp/drv')]# 定义编译组,关联源文件与头文件路径group=DefineGroup('Drivers',src,depend=[''],CPPPATH=path)# 遍历当前目录子文件夹,自动加载子目录SConscript编译规则list=os.listdir(cwd)foriteminlist:ifos.path.isfile(os.path.join(cwd,item,'SConscript')):group=group+SConscript(os.path.join(item,'SConscript'))Return('group')

3. 生效方式

保存文件后,在 RT-Thread Env 终端的工程根目录执行scons指令,即可自动编译上述添加的所有自定义文件,新增驱动代码可正常参与工程编译链接。

二、配置 ST-Link 一键下载功能(scons download)

1. 配置原理

基于 SCons 自定义指令,调用 ST-LINK_CLI 官方命令行工具,绑定工程编译产物,实现一条指令完成编译+下载+复位,无需手动打开 ST-Link 上位机。

2. 前置准备

确认本地已安装 ST-LINK Utility,记录ST-LINK_CLI.exe 完整路径,后续代码需对应修改为本地实际路径。

3. 完整配置代码

打开工程根目录(可直接执行 scons 指令的目录)的 SConstruct 文件,在文件末尾追加以下代码:

importsubprocess# 自定义下载函数:调用ST-LINK命令行工具烧录程序defdownload(target,source,env):# 【重要】修改为本地ST-LINK_CLI.exe完整安装路径cli=r'"E:\ST-Link\ST-LINK Utility\ST-LINK_CLI.exe"'# 烧录配置:SWD下载模式、校验固件、下载完成自动复位运行# 默认烧录地址:STM32片内Flash起始地址 0x08000000cmd=f'{cli}-c SWD UR -P rtthread.bin 0x08000000 -V -Rst'print("Execute download cmd:",cmd)# 执行烧录指令ret=subprocess.call(cmd,shell=True)# 打印返回码,方便排查烧录异常print("ST-LINK download return code =",ret)returnret# 1. 绑定download指令与工程elf文件,编译后自动触发下载download_alias=env.Alias('download','rt-thread.elf',download)# 2. 标记指令始终执行,不受文件更新依赖限制env.AlwaysBuild(download_alias)

4. 关键注意事项

  • 路径修改:必须将代码中ST-LINK_CLI.exe路径替换为自己电脑的实际安装路径,路径含空格需保留双引号格式。

  • 文件位置:执行指令目录为工程 BSP 根目录,需保证编译生成的rtthread.bin文件在当前工作目录下,否则会报文件找不到错误。

  • 硬件配置:开发板需通过 ST-Link 连接电脑,且已开启 SWD 下载模式。

5. 功能使用

配置完成保存文件后,在 Env 终端执行以下指令:

  • 仅编译工程:scons

  • 编译 + 一键下载烧录:scons download

三、常见问题排查

  1. 新增文件不编译:检查 SConscript 中源文件路径、头文件路径是否准确,保存文件后重新执行 scons。

  2. download 指令报错:优先检查 ST-LINK_CLI 路径是否正确、ST-Link 硬件连接是否正常、开发板是否上电。

  3. 烧录成功但程序不运行:确认烧录地址0x08000000匹配当前芯片 Flash 起始地址,开启下载后自动复位。

(注:部分内容由 AI 生成)

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进