RT-Thread论坛
直播中

王莉

8年用户 1367经验值
私信 关注
[问答]

rtthread V5.2.1 scons无法编译,MDK编译失败怎么解决?


  • 环境:

系统版本:V5.2.1
env版本:env-windows-v2.0.0
bsp:STM32g474-st-nucleo
问题:

env中用scons编译失败,提示Dependency packages missing, please running 'pkgs --update'...
在使用pkgs --update命令后,再进入menuconfig命令,退出,再编译,还是报错。
使用MDK编译,提示缺少相关BSP文件。与V5.2.0对比,的确少了很多bsp包。
我觉得应该是我使用不对,请教对于新系统,如何便捷补全依赖文件。
问题截图如下:




回帖(2)

孙伟

2025-9-15 17:01:14
本地先执行pkgs —upgrade,然后在bsp目录下执行menuconfig生成最新的配置文件(.config rtconfig.h),最后执行pkgs —update下载必要的驱动库
举报

wufan931111

2025-9-17 17:45:03

针对您遇到的RT-Thread V5.2.1在编译时依赖包缺失的问题,以下是系统化的解决方案:




问题原因分析



  1. 软件包索引未更新

    pkgs --update 可能未成功下载完整的软件包列表(因网络或缓存问题)。

  2. BSP结构变化

    V5.2.1中STM32系列BSP采用分层设计,部分驱动依赖需通过menuconfig显式开启。

  3. MDK工程未同步包

    Scons生成的MDK工程可能未包含软件包代码。




解决方案步骤


1. 强制更新软件包索引


在Env中进入BSP目录(rt-threadbspstm32stm32g474-st-nucleo),依次执行:


# 清除旧索引
pkgs --upgrade

# 强制重新下载所有包
pkgs --update --force


  • 注意:观察输出是否有网络错误(如GitHub连接失败),必要时配置代理或更换网络环境。


2. 检查并开启BSP依赖


menuconfig中确认以下配置:


menuconfig


  • 步骤

    1. 进入 Hardware Drivers → On-chip Peripheral Drivers

    2. 确保 Enable serial drivers (UART)Enable GPIO drivers 已启用。

    3. 保存配置后退出(按S保存 → Esc退出)。



3. 重新生成编译环境


# 清除旧配置
scons -c

# 重新生成MDK工程(跳过编译)
scons --target=mdk5 -s


  • -s 参数抑制冗余输出,确保生成过程无报错。


4. MDK工程修复



  1. 用MDK打开 project.uvprojx

  2. 添加缺失文件

    • 手动将 packages 目录下的软件包源码加入工程(右键工程→Add Group→添加对应文件)。

    • 确认以下关键文件存在:

      • drv_gpio.c(位于 librariesHAL_Drivers

      • board.c(位于BSP根目录)



  3. 检查头文件路径

    • 包含路径需添加:

      • .packages最新软件包路径inc

      • .librariesHAL_Drivers

      • .librariesCMSISDeviceSTSTM32G4xxInclude




5. 备选方案:手动补全BSP


若上述无效,从GitHub仓库直接获取资源:



  1. 下载STM32标准外设驱动:
    cd libraries
    git clone https://github.com/RT-Thread/rt-thread.git --depth=1
    cp -r rt-thread/libraries/HAL_Drivers ./

  2. 更新BSP配置文件:


6. 完整环境重置(终极方案)


# 1. 备份个人代码
# 2. 删除BSP目录下除applications外的所有文件
rm -rf libraries packages rtconfig.h .config

# 3. 从官方仓库还原BSP
git clone https://github.com/RT-Thread/rt-thread.git --branch v5.2.1 tmp_bsp
cp -r tmp_bsp/bsp/stm32/stm32g474-st-nucleo/* ./

# 4. 重新初始化环境
pkgs --update
scons --menuconfig
scons



关键验证点



  • 执行 pkgs --update 后,检查 packages 目录是否包含软件包(如fal-v1.0.0)。

  • menuconfig 中确认 UARTGPIO 驱动已启用(状态为 [*])。

  • MDK工程中检查是否存在 HAL_Drivers/drv_gpio.cboard/board.c




通过以上步骤,可解决依赖缺失和MDK工程配置问题。若仍遇障碍,建议提交issue至RT-Thread GitHub仓库并提供完整Env日志。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分