RT-Thread论坛
直播中

李梅

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

使用env工具创建工程始终提示UV4.exe不可用是为什么?

环境为rt thread 5.2.1标准版,使用的工程路径为

  • rt-thread-5.2.1rt-thread-5.2.1bspgd32armgd32470z-lckfb.



env工具是最新的2.0.0.

修改好目录下rtconfig.py中keil路径后,还是提示UV4.exe不可用。

担心是斜杠的问题,因此正反斜杠都试了下,现象一致

  • //rtconfig.py
  • import os

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

  • # bsp lib config
  • BSP_LIBRARY_TYPE = None

  • if os.getenv('RTT_CC'):
  •     CROSS_TOOL = os.getenv('RTT_CC')
  • if os.getenv('RTT_ROOT'):
  •     RTT_ROOT = os.getenv('RTT_ROOT')

  • # cross_tool provides the cross compiler
  • # EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
  • if  CROSS_TOOL == 'gcc':
  •     PLATFORM    = 'gcc'
  •     EXEC_PATH   = r'C:UsersXXYYZZ'
  • elif CROSS_TOOL == 'keil':
  •     PLATFORM    = 'armclang'
  •     EXEC_PATH   = r'C:/Custom/tool/MDK5/UV4/UV4.exe'
  • elif CROSS_TOOL == 'iar':
  •     PLATFORM = 'iccarm'
  •     EXEC_PATH   = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3'


以下为env工具输出

  • $ scons --target=mdk5
  • scons: Reading SConscript files ...
  • UV4.exe is not available, please check your keil installation
  • Keil5 project is generating...
  • Keil Version: 0.0
  • Keil-MDK project has generated successfully!


将平台从armcc改为armclang后,env报错内容为下方代码段。
原工程使用的AC6,但是现在5和6都无法正常编译

  • scons: Reading SConscript files ...
  • Newlib version: 4.1.0
  • KeyError: 'LIBPATH':
  •   File "C:UsersikunDownloadsrt-thread-5.2.1rt-thread-5.2.1bspgd32armgd32470z-lckfbSConstruct", line 63:
  •     DoBuilding(TARGET, objs)
  •   File "C:UsersikunDownloadsrt-thread-5.2.1rt-thread-5.2.1toolsbuilding.py", line 875:
  •     EndBuilding(target, program)
  •   File "C:UsersikunDownloadsrt-thread-5.2.1rt-thread-5.2.1toolsbuilding.py", line 984:
  •     GenTargetProject(program)
  •   File "C:UsersikunDownloadsrt-thread-5.2.1rt-thread-5.2.1toolsbuilding.py", line 883:
  •     MDK5Project(GetOption('project-name') + '.uvprojx', Projects)
  •   File "C:UsersikunDownloadsrt-thread-5.2.1rt-thread-5.2.1toolskeil.py", line 369:
  •     MDK45Project(template_tree, target, script)
  •   File "C:UsersikunDownloadsrt-thread-5.2.1rt-thread-5.2.1toolskeil.py", line 288:
  •     for path_item in group['LIBPATH']:




回帖(1)

郭大

2025-9-12 18:20:57

从您提供的信息来看,遇到UV4.exe不可用的问题通常与Keil环境配置有关。以下是完整的排查和解决方案:


根本原因分析:



  1. Keil路径未正确识别:ENV工具无法通过注册表或配置文件自动定位Keil的安装位置

  2. 环境变量缺失:系统或ENV未配置Keil路径的环境变量

  3. 路径格式问题:Windows路径中的特殊字符(空格、中文)可能导致识别失败

  4. Keil版本兼容性:MDK的ARM版本与BSP不匹配




解决方案:


第一步:修改 rtconfig.py 显式声明Keil路径


在您的rtconfig.py文件中直接指定绝对路径(替换成您的实际路径):


if CROSS_TOOL == 'keil':
    # 添加以下两行(根据实际安装路径修改)
    EXEC_PATH = r'C:Keil_v5'  # 使用raw string防止转义问题
    # 或兼容写法
    EXEC_PATH = 'C:/Keil_v5'    # 统一用正斜杠

第二步:添加系统环境变量



  1. 打开系统属性 → 高级 → 环境变量

  2. 新建系统变量

    • 变量名:UV4_EXEC_PATH

    • 变量值:C:Keil_v5UV4uv4.exe(具体路径根据实际安装位置修改)



第三步:检查Keil注册表项(关键步骤)


Win+R 输入 regedit 打开注册表,检查路径是否存在:


HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeKeilProductsMDK

若不存在,手动创建字符串值:


[HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeKeilProductsMDK]
"Path"="C:\Keil_v5"  # 双反斜杠转义

第四步:ENV命令行验证


在ENV控制台执行(替换实际路径):


# 临时设置环境变量
set RTT_EXEC_PATH=C:Keil_v5

# 强制生成工程
scons --target=mdk5 --force

第五步:检查路径特殊字符


如果Keil安装在以下路径会导致问题:


- C:Program Files (x86)Keil_v5   # 含空格
- D:开发软件Keil_v5               # 含中文

建议:



  1. 移动Keil安装目录到简单路径(如 C:Keil_v5

  2. 重新执行上述配置步骤




备用方案:


如果仍不生效,可尝试 手动生成工程


# 进入BSP目录
cd rt-thread-5.2.1bspgd32armgd32470z-lckfb

# 生成MDK工程(免环境检测)
scons --target=mdk -s



验证要点:



  1. 在CMD直接执行是否能启动Keil?
    "C:Keil_v5UV4uv4.exe"  # 注意引号包裹路径

  2. 检查RT-Thread版本兼容性:
    # 在ENV中执行
    pkgs --upgrade    # 更新软件包



⚠️ 重要提示:GD32F470属于M4内核,需确认已安装MDK的Device Family Pack支持包(Device → GD32F4xx Series)



通过以上步骤应可解决UV4路径识别问题。如果仍存在问题,可能是ENV的路径扫描逻辑异常,建议在RT-Thread官方论坛提交BSP具体配置日志。

举报

更多回帖

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