发帖
1 0 0

关于bouffalo_sdk的环境搭建

HEPPY
中级会员

3

主题

7

回帖

404

积分

中级会员

积分
404
Ai-M61系列 11 1 2 小时前
[i=s] 本帖最后由 HEPPY 于 2026-7-1 10:40 编辑 [/i]

Bouffalo SDK Windows (Git Bash) 编译环境部署指南

  • 以下是本次使用中遇见的问题

环境概述

  • 操作系统: Windows 10/11
  • Shell: Git Bash (MinGW64)
  • 芯片: BL616 / BL618 等
  • 工具链: Xuantie-900 RISC-V (T-Head) GCC 10.2.0

1. 环境变量配置 (~/.bashrc)

编辑 C:\Users\<用户名>\.bashrc,添加以下内容:

# Bouffalo SDK Build Environment
export PATH="/e/tool/firmware/toolchain_gcc_t-head_windows/bin:$PATH"
export PATH="/e/tool/make:$PATH"
export PATH="/e/tool/ninja:$PATH"
export PATH="/e/tool/cmake/bin:$PATH"
unset BL_SDK_BASE

说明: 以上为当前实际配置。所有工具统一放在 E:\tool\ 下集中管理:

工具 路径
工具链 (riscv64-unknown-elf-gcc) E:\tool\firmware\toolchain_gcc_t-head_windows\bin
make E:\tool\make
ninja E:\tool\ninja
cmake E:\tool\cmake\bin

BL_SDK_BASE 🚨必须取消设置,Makefile 会根据示例位置自动推导 SDK 根目录。

关键说明

配置项 说明
PATH 需要添加工具链 bin/makeninjacmake/bin/(均统一放在 E:\tool\ 下)
BL_SDK_BASE 必须取消设置,Makefile 会根据示例位置自动推导 SDK 根目录
启动加载 ~/.bash_profile 会自动 source ~/.bashrc,打开 Git Bash 即可使用,无需手动执行

2. SDK Bug 修复

以下修改已经应用到我使用的本地代码中。如果重新拉取 SDK 或更新版本,可能需要重新应用。

2.1 project.build — 并行写入竞争修复

文件: project.build 第 161 行

问题: Windows 下使用 & 后台并行执行多个 cmake -E echo 写入同一文件,导致 defconfig.cmake 内容损坏,CMake 配置阶段报错 Parse error. Function missing ending ")"

修复: 将 & 改为 ;(串行执行)。

ifeq ($(OS),Windows_NT)
     @$(foreach var,$(CONFIG_VARS), \
-    $(CMAKE) -E echo "set($(var) $(value $(var)))" >> $(BUILD_DIR)/generated/defconfig.cmake.new& \
+    $(CMAKE) -E echo "set($(var) $(value $(var)))" >> $(BUILD_DIR)/generated/defconfig.cmake.new; \
     )

2.2 cmake/compiler_flags.cmake — LTO 链接兼容性修复

文件: cmake/compiler_flags.cmake 第 56-68 行

问题:

  1. 链接选项无条件添加 -flto
  2. 预编译的静态库(WiFi stack: libfhost_*.a, libmacsw_*.a, libphyrf.a 等)由不同版本工具链编译,其 LTO 中间代码与当前链接器不兼容
  3. 报错: lto1.exe: internal compiler error: original not compressed with zstd

修复:

  1. 从无条件链接选项中移除 -flto
  2. -flto 仅在 CONFIG_GCC_COMPILE_LTO=y 时添加
  3. 默认添加 -fno-lto 禁用 LTO 插件
sdk_add_link_options(
     -Wl,--cref
     -Wl,--gc-sections
     -nostartfiles
     -fms-extensions
-    -flto
     -ffunction-sections
     -fdata-sections
     -Wl,--print-memory-usage
 )

+if(CONFIG_GCC_COMPILE_LTO)
+    sdk_add_link_options(-flto)
+else()
+    sdk_add_link_options(-fno-lto)
+endif()
  • 这里是配合ai做的修改部分😁

目前先补充到这里,再发现我再俩补充

──── 0人觉得很赞 ────

使用道具 举报

很棒~
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 31128 个
  • 话题数: 44726 篇