nRF Connect SDK v3.1.1 环境搭建:Windows 10 下 5 步解决中文路径编译报错 nRF Connect SDK v3.1.1 环境搭建Windows 10 下 5 步解决中文路径编译报错嵌入式开发工程师在使用nRF Connect SDKNCS进行项目开发时经常会遇到因中文路径导致的编译错误。本文将详细介绍如何在Windows 10系统下通过五个关键步骤彻底解决UnicodeDecodeError: gbk codec等常见问题确保开发环境稳定运行。1. 环境准备与基础配置在开始解决中文路径问题前我们需要确保基础环境配置正确。nRF Connect SDK v3.1.1对系统环境有特定要求操作系统Windows 10 64位版本1909或更高Python版本3.8或3.93.10及以上版本可能存在兼容性问题Git版本2.32.0或更高工具链nRF Connect SDK Toolchain v1.9.1首先检查系统用户名是否为中文。如果是中文用户名建议新建一个英文用户账户或者修改当前用户的环境变量# 检查当前用户目录 echo %USERPROFILE% # 临时修改环境变量仅当前会话有效 set HOMEC:\Users\YourEnglishName安装必要的依赖项# 安装Python依赖 pip3 install -r zephyr/scripts/requirements.txt pip3 install -r nrf/scripts/requirements.txt pip3 install -r bootloader/mcuboot/scripts/requirements.txt2. 修改Python脚本编码设置编码问题是最常见的错误来源。我们需要修改SDK中的关键Python脚本确保它们能正确处理非ASCII字符路径。找到以下文件并进行修改ncs/v3.1.1/zephyr/scripts/list_boards.pyncs/v3.1.1/zephyr/scripts/build_helpers.pyncs/v3.1.1/zephyr/scripts/west_commands/sign.py在每个文件的打开文件操作处添加encoding参数# 修改前 with open(file_path, r) as f: # 修改后 with open(file_path, r, encodingutf-8) as f:对于CMake相关脚本还需要修改# 在CMakeLists.txt中添加以下内容 if(WIN32) add_compile_definitions(_WIN32_WINNT0x0601) add_compile_options($$C_COMPILER_ID:MSVC:/utf-8) add_compile_options($$CXX_COMPILER_ID:MSVC:/utf-8) endif()3. 配置Git以忽略文件权限变更由于NCS在Linux环境下打包Windows解压后文件权限会发生变化导致git状态不干净。执行以下命令全局忽略文件权限变化# 进入SDK根目录 cd /d D:\ncs\v3.1.1 # 为所有仓库设置忽略文件权限 west forall -c git config core.filemode false # 为所有子模块设置忽略文件权限 west forall -c git submodule foreach --recursive git config core.filemode false # 验证git状态 west forall -c git status如果使用nrfutil安装的SDKv1.8.0及以上版本已自动处理此问题。可通过以下命令检查nrfutil版本nrfutil --version4. 创建纯净工程路径避免使用包含空格和中文字符的路径是解决编译问题的关键。建议采用以下路径结构D:\projects\ ├── ncs_toolchains\ ├── ncs_sdks\ │ └── v3.1.1\ └── ncs_projects\ └── your_project\在VS Code中设置工作区时确保路径简单明了。可以通过以下PowerShell命令快速创建合适路径# 创建项目目录结构 mkdir -Force D:\projects\ncs_projects\your_project # 设置环境变量 [Environment]::SetEnvironmentVariable(NCS_PROJECTS_ROOT, D:\projects\ncs_projects, User)5. 验证编译流程完成上述配置后通过以下步骤验证环境是否正常工作选择测试项目使用nrf/samples/bluetooth/peripheral_uart作为测试案例配置构建目录确保构建路径不含中文和空格执行编译命令# 进入项目目录 cd D:\projects\ncs_projects\peripheral_uart # 生成构建系统 west build -b nrf52840dk_nrf52840 # 执行编译 west build如果编译成功最后会显示类似输出[1/1] Linking C executable zephyr\zephyr.elf Memory region Used Size Region Size %age Used FLASH: 34904 B 512 KB 6.66% SRAM: 7984 B 128 KB 6.09% IDT_LIST: 0 GB 2 KB 0.00%常见问题排查即使按照上述步骤操作仍可能遇到问题。以下是常见错误及解决方法问题1UnicodeDecodeError仍然出现解决方案检查所有Python脚本是否已修改编码设置确保系统区域设置中启用了Beta版使用Unicode UTF-8提供全球语言支持问题2west build找不到板型定义解决方案# 更新west元数据 west update # 导出Zephyr CMake包 west zephyr-export问题3Git仓库状态不干净解决方案# 重置所有仓库 west forall -c git reset --hard # 清理未跟踪文件 west forall -c git clean -fd环境配置检查清单为确保环境配置完整请核对以下清单检查项验证方法预期结果系统路径无中文echo %USERPROFILE%显示英文路径Python编码设置检查修改过的.py文件已添加encodingutf-8Git文件权限配置git config --list包含core.filemodefalse工具链版本nrfutil --version≥1.8.0项目路径cd %NCS_PROJECTS_ROOT%无空格和中文通过以上五个关键步骤的系统性配置nRF Connect SDK v3.1.1在Windows 10下的中文路径编译问题将得到彻底解决。实际项目中建议将工程文件存储在纯英文路径下并定期使用west update保持SDK更新以获得最佳开发体验。