HiSpark fbb 框架(fbb_ws63 / fbb_bs2x 等)跨平台一键开发环境。自带 fbb CLI,调用即激活、镜像加速、AI Agent 友好。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 20 天前 | ||
| 20 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 27 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 27 天前 | ||
| 23 天前 | ||
| 23 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 23 天前 | ||
| 2 个月前 | ||
| 1 个月前 |
fbb — HiSpark fbb framework CLI
语言:简体中文 | English
fbb 是开发 HiSpark fbb 框架系列任意 SDK 的统一命令行工具 ——
fbb_ws63、fbb_bs2x,以及其他支持 fbb 框架的 SDK。安装一次,即可用同一个
fbb 对它们进行 构建 / 烧录 / 串口监视等。
目录
快速开始
0. 一键安装(推荐)
一条自托管命令即可完成开发环境配置 —— 从镜像源
(dl.hispark.hisilicon.com)拉取 uv、安装 fbb,再运行 fbb setup。
# Linux / macOS
curl -fsSL https://dl.hispark.hisilicon.com/bootstrap.sh | sh
# Windows (PowerShell)
irm https://dl.hispark.hisilicon.com/bootstrap.ps1 | iex
然后直接跳到第 3 步。 如果你想手动配置,请走下面的步骤:
1. 安装 uv
# Linux / macOS
curl -fsSL https://dl.hispark.hisilicon.com/fbb-tools/uv/uv-0.11.17-linux-x86_64.tar.gz | tar -xz -C ~/.local/bin --strip-components=1
# (或上游) curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
irm https://astral.sh/uv/install.ps1 | iex
uv 装到 ~/.local/bin/。装完请开一个新终端。
2. 安装 fbb + 准备构建环境
uv tool install git+https://gitcode.com/HiSpark/hs-fbb-cli.git
fbb setup
fbb setup 准备管理器 + Python 3.12.10 构建 venv,以及与芯片无关的工具
(ccache、Git)。芯片相关的工具链 在你
运行 fbb sdk install <chip>(推荐)、fbb setup --targets <chip> 或
fbb setup --sdk-dir <sdk> 时,按 SDK 的要求从镜像源按需下载安装。本地安装路径为 ~/.hs-fbb/tools/<name>/<version>/。
3. 安装 SDK,然后 构建 → 烧录 → 串口监视
fbb sdk install ws63@master # 安装最新 master 分支代码
cd ~/hispark/fbb_ws63/master/src # 或使用安装完成后打印的 cd 路径
fbb build ws63-liteos-app
fbb flash ws63-liteos-app --port COM3
fbb monitor --port COM3 --reset --until "device_module_init:: succ!" --timeout 30
fbb flash ... --then-monitor 会在烧录后直接在同一端口接入 monitor 会话。
命令参考
fbb <verb> [args]。verb 分为三组。
组 A — 环境
fbb setup
准备构建环境。
| Flag | 作用 |
|---|---|
--force |
清空 ~/.hs-fbb/ 并全部重新准备 |
--dry-run |
只打印安装计划,不动文件系统 |
--skip-tools |
只装 Python venv;跳过工具链 + Git |
--skip-python |
只装工具链 + Git;跳过 venv |
--no-uv |
跳过 uv;用内嵌 Python + bootstrap pip(较慢的回退路径) |
--targets ws63[,bs2x] |
只准备这些芯片的工具链(默认:清单里的全部) |
--sdk-dir PATH |
按照该 SDK 路径下的 json 文件中的 requires 配置来安装对应工具链(默认:自动检测) |
fbb sdk install <name>[@<ref>] [flags]
安装对应版本的 SDK 源码。SDK 会安装到版本化目录 ——
$FBB_SDK_ROOT/<repo>/<ref>(FBB_SDK_ROOT 默认 ~/hispark)。这样多个
release / branch 可以并存。安装完成后,命令会打印准确的 cd .../src 下一步。
名字 → 仓库 的解析(既能按仓库(推荐),也能按芯片):
- 一个明确的仓库(
hs-fbb、fbb_ws63、fbb_bs2x) - 一个裸芯片/模块(
hiditing、ws63、bs2x)
| Flag | 作用 |
|---|---|
<name> |
仓库/芯片;用 @<tag|branch|sha> 指定版本(默认:最新 release tag) |
--dir PATH |
安装到这个确切目录,而非 $FBB_SDK_ROOT/<repo>/<ref> |
--no-provision |
只安装;跳过工具链准备 |
--force |
覆盖一个已存在的非空目标目录 |
--json-summary |
输出一行 JSON 摘要 |
fbb sdk install ws63 # 旧式仓库 -> ~/hispark/fbb_ws63/<latest-release>
fbb sdk install ws63@1.10.103 # 指定某个 tag
fbb sdk install hs-fbb # 统一主干(多颗芯片)
fbb sdk install hiditing # 主干里的芯片 -> ~/hispark/hs-fbb/<latest-release>
来源:${FBB_SDK_GIT_BASE:-https://gitcode.com/HiSpark}/<repo>.git。
fbb sdk versions <chip> [--all] [--json]
列出远端可用版本 —— release tag(最新在前、标注 latest)和分支
(master / release/*)。安装前先发现,无需去翻仓库。--all 还会显示
预发布 / 非 semver 的 tag。
fbb sdk versions ws63 # 看 release + 分支
fbb sdk install ws63@1.10.103 # 安装某个固定 release
fbb sdk install ws63@master # 安装开发主干
fbb sdk list [--json]
列出 $FBB_SDK_ROOT 下已安装的 SDK(芯片、git ref、路径)。
fbb sdk uninstall <chip> [--dry-run] [--no-gc] [--json-summary]
移除一个 SDK,然后清理对应不用的工具链 —— 即不再被任何剩余 SDK 使用的版本
(清单里的 recommended / 默认版本始终保留)。--dry-run 预览;--no-gc 跳过回收。
fbb doctor
诊断构建环境 —— 检查 venv、工具链、关键 Python 模块;对任何失败都打印确切的修复命令。无 flag。
fbb describe [--json] [--sdk-dir PATH]
一次性快照:环境 + 工具链 + 检测到的 SDK。--json 输出机器可读形式(见
JSON 输出)。
fbb env [--print {sh|bash|ps1|bat|cmd|json}]
打印一段环境激活片段,供 eval / IDE 集成使用。无副作用。--json 是
--print json 的简写。
fbb run -- <cmd> [args...]
在已激活的构建环境里运行任意命令(于是 python、ninja、cmake 等可被解析)。
例:fbb run -- python --version。
fbb shell
开一个已激活环境的交互子 shell。exit 退出。
fbb help
显示用法。
组 B — 构建
fbb build [<target>] [--clean] [--sdk-dir PATH] [extra...]
构建一个目标。这是唯一会转发给 SDK(<SDK>/build.py)的 verb。
| 参数 | 作用 |
|---|---|
<target> |
目标名,如 ws63-liteos-app。省略则让 build.py 打印合法列表。 |
--clean |
构建前清理(转发为 build.py 的 -c)。较慢。 |
--sdk-dir PATH |
覆盖 SDK 自动检测。 |
extra... |
目标之后的任何内容原样转发给 build.py(-j 8、-dump……)。 |
fbb build ws63-liteos-app # 增量构建,在 SDK src 下运行
fbb build --clean ws63-liteos-app # 先清理后构建
fbb build # 不给目标 -> build.py 列出合法目标
把 fbb 自己的 flag(--clean、--sdk-dir)放在目标之前。
两种模式 —— 自动选择
fbb build 从 cwd 向上查找 fbb-project.toml。找到则进入树外(out-of-tree)
模式;否则**树内(in-tree)**模式。
| 模式 | 触发条件 | fbb 做什么 |
目标来源 |
|---|---|---|---|
| 树内 | cwd 是 SDK src(cwd 及任何父目录都无 fbb-project.toml) |
原样转发给 <SDK>/build.py <target>。向后兼容。 |
CLI 参数 |
| 树外 | cwd / 某个父目录存在 fbb-project.toml |
从清单读 chip / target,导出 FBB_PROJECT_DIR + FBB_PROJECT_TARGET + FBB_SDK_DIR,再转发给 <SDK>/build.py。SDK 的 cmake 源目录翻转为用户工程。 |
清单(或给了 CLI 参数则用之) |
# 树外用法
cd my_app/ # 有 fbb-project.toml,含 chip + target
fbb build # 不需要目标 —— 从清单读
fbb build --clean # 先清理再构建
SDK 侧必须支持这一点。
fbb menuconfig [<target>] [--mode ...] [--sdk-dir PATH]
打开 SDK 的交互式 Kconfig 菜单(一个 curses TUI),编辑该目标的 .config。
树外组件(fbb add / fbb create-component)带来的选项会自动出现。--mode 选择
一个非交互的批处理动作来替代菜单:defconfig(重置为默认)、allyesconfig、
allnoconfig。
fbb menuconfig ws63-liteos-app # 交互菜单(给人用,需真实终端)
fbb menuconfig ws63-liteos-app --mode defconfig # 重置为默认,无 UI
交互菜单需要真实终端(Windows 上构建 venv 里还需
windows-curses)。 脚本 / CI / AI agent 不需要用它 —— 用下面的fbb config。
fbb config <get|set|unset> <OPTION> [--target T] [--sdk-dir PATH]
无需任何菜单地读取或修改单个 Kconfig 选项 —— 可脚本化、对 choice 安全。
set/unset 驱动 SDK 的非交互 setconfig(kconfiglib set_value),因此启用一个
choice 块的某个成员会自动反选它的兄弟 —— 无需手动"=y + 逐个 unset 兄弟"。
fbb config get CONFIG_SAMPLE_ENABLE
fbb config set CONFIG_SAMPLE_SUPPORT_SLE_SAMPLE=y # choice 兄弟自动反选
fbb config unset CONFIG_FOO # = 关闭(n)
给自动化 / AI agent: 改配置时,始终用
fbb config set/get/unset。 不要手改*.config,也不要手动添加# CONFIG_..._<sibling> is not set这类行 ——fbb config set已替你处理 choice 互斥。fbb menuconfig仅交互、 无法被程序驱动。
组 C — 芯片 verb(原生;读取 <chip>.json)
下列每个 verb 都由 fbb 自身实现,从
<SDK>/build/config/target_config/<chip>/<chip>.json 读取芯片数据。全部接受
--sdk-dir PATH(覆盖自动检测)和 --json-summary(把最后一行 stdout 输出为
一行 JSON)。
fbb flash [<target|path>] [flags]
把构建好的目标固件烧到板子上。烧录器 hsflash 由 fbb setup 准备;
下面面向用户的 flag 不依赖烧录器自身的命令行语法。
| Flag | 作用 |
|---|---|
<target> |
目标名(如 ws63-liteos-app)—— 在 SDK 下定位 fwpkg。也可以是一个 .fwpkg 路径。 |
-p, --port COMx |
选择串口烧写并指定端口;仅支持串口的芯片省略时可自动检测唯一端口。 |
-d, --device [VID:PID] |
选择 USB DFU 烧写;可选值用于覆盖 SDK 配置的 USB 设备 ID。 |
--trigger-port COMx |
USB DFU 的 AT 控制串口;省略时自动探测能响应 AT 的 USB 串口。 |
--baud N |
传输波特率(默认:<chip>.json 的 flash.signalbaud,否则 921600)。 |
-c, --chip NAME |
芯片名(默认:从目标 / fwpkg 名推断)。 |
-f, --file PATH |
烧这个确切的 .fwpkg —— 树外 / 独立;无需 SDK(配 --chip)。 |
--manual-reset |
不自动复位;按芯片要求手动按 RESET 或断电重上电进入下载模式。 |
--no-elevate |
不显示 Windows UAC;USB DFU 需要管理员权限时直接失败。 |
--load-only |
烧 *_load_only.fwpkg(仅 app)而非 *_all.fwpkg。 |
--timeout SECONDS |
可选的整体烧录时限。未指定时由 hsflash 使用芯片相关的阶段超时。 |
--then-monitor [monitor args...] |
烧录成功后接入 monitor;端口自动传递。 |
--json-summary |
输出 flash 的 JSON 摘要。 |
fbb flash ws63-liteos-app --port COM6 --json-summary
fbb flash ws63-liteos-app --port COM6 --then-monitor --reset --until "device_module_init:: succ!" --timeout 30
fbb flash -f ./build/ws63-liteos-app_all.fwpkg --chip ws63 --port COM6 # 独立,无 SDK
fbb flash ws63-liteos-app --port COM6 --manual-reset # 按芯片要求手动复位或重新上电
fbb flash -f ./diting-community.fwpkg --chip 3322 -d --then-monitor --baud 750000 --until "APP\|run:" --timeout 45
-p 保持原有串口流程,-d 选择 USB;同时支持两种介质的芯片可在未传参数时
使用 flash.transport。USB 模式先启动 hsflash,等待其进入 DFU 等待状态后
发送 SDK 配置的触发命令,烧写后通过 --after-reset 自动复位并检查 AT 串口恢复,
需要时继续进入 --then-monitor。Windows 管理员终端直接执行 USB DFU;普通
PowerShell 第一次 USB 烧写时只请求一次 UAC,并在该 PowerShell 关闭前复用临时提权
Broker。串口烧写不会启动 Broker。无人值守任务可用 --no-elevate 禁止 UAC 并直接失败。
串口出现 DEVICE_NOT_RESPONDING 时仍可用 --manual-reset 重试,并按芯片要求按 RESET
或断电重上电。
fbb monitor [flags]
打开串口控制台;配 --until / --timeout 对 HIL 友好。
| Flag | 作用 |
|---|---|
--port COMx |
串口(省略则自动检测)。 |
--baud N |
波特率(默认:<chip>.json 的 monitor.default_baud,典型 115200)。 |
--chip NAME |
芯片名(单芯片 SDK 自动选)。 |
--until REGEX |
首次匹配时退出 0;超时未匹配退出 4。 |
--timeout SECONDS |
墙钟时限。脚本化使用时与 --until 配套必填。 |
--reset |
读取前发送 <chip>.json 里的复位命令。 |
--log FILE |
把捕获到的字节同时输出到 FILE 与 stdout。 |
--json-summary |
输出 monitor 的 JSON 摘要。 |
# 脚本化启动检查
fbb monitor --port COM3 --reset --until "device_module_init:: succ!" --timeout 30 --json-summary
# 交互控制台(Ctrl+C 退出)
fbb monitor --port COM3
fbb create-project <name> [flags]
从 <SDK>/tools/templates/sample_project/ 脚手架一个新工程。
| Flag | 作用 |
|---|---|
-p, --path DIR |
父目录(默认:当前目录)。 |
--template NAME |
用另一个 template / example 作为来源。 |
--json-summary |
输出 create 的 JSON 摘要。 |
fbb create-component <name> [-p DIR] [--json-summary]
从 <SDK>/tools/templates/sample_component/ 脚手架一个新组件。
fbb create-project-from-example <example> [flags]
克隆某芯片 examples.roots(在 <chip>.json 中)声明的一个 example。
| Flag | 作用 |
|---|---|
--name NAME |
工程目录名(默认:与 example 同名)。 |
-p, --path DIR |
父目录(默认:当前目录)。 |
--json-summary |
输出 create 的 JSON 摘要。 |
fbb create-project myapp
fbb create-component mywidget
fbb create-project-from-example helloworld --name my_hello
fbb set-target <target> [--json-summary]
把一个默认目标存入 <project>/.fbb-target(一个按工程维度的状态文件;工程根是
FBB_BUILD_ROOT_PATH 或当前目录)。目标会对照 SDK 的可构建目标列表做校验。
fbb get-target [--json-summary]
打印 set-target 保存的目标。无状态文件时退出 3。
fbb list-targets [--json] [--json-summary]
枚举可构建目标,按芯片分组。--json 输出完整结构化形式。
fbb list-examples [--json] [--json-summary]
从每颗芯片的 examples.roots(在 <chip>.json 中)枚举可克隆的 example。
JSON 输出与退出码
这是给脚本和 skills 的稳定接口。请针对它编码,而非针对人类可读文本。
退出码
| 码 | 含义 |
|---|---|
0 |
成功 |
1 |
命令失败(构建错误、烧录失败……) |
2 |
用法错误(参数错、未知 verb) |
3 |
资源缺失(无串口、无 fwpkg、无 SDK、无烧录器) |
4 |
配置错误(chip JSON 缺某段、--until 超时……) |
--json-summary 约定
组 C 的 verb 接受 --json-summary。给了它时,stdout 的最后一行是一个单行 JSON
对象。前面的行可能带人类可读进度 —— 消费者只解析最后一行。
每个摘要都有:verb、schema_version(当前 1)、success(bool)、
duration_seconds,以及 error(null 或一个对象)。
error 对象
"error": { "code": "DEVICE_NOT_RESPONDING", "message": "...", "recoverable": true }
recoverable 出现在 flash 错误上;true 表示重试(如配 --manual-reset)可能成功。
error.code 枚举(基于它分支)
| Verb | 码 |
|---|---|
| flash | FWPKG_NOT_FOUND · FWPKG_OPEN_FAILED · PORT_NOT_FOUND · PORT_BUSY · FLASHER_NOT_FOUND · CHIP_UNKNOWN · CHIP_FLASH_CONFIG_MISSING · FLASH_TRANSPORT_UNSUPPORTED · DEVICE_NOT_RESPONDING (recoverable) · FLASH_PROTOCOL_ERROR · FLASH_FAILED |
| monitor | PORT_NOT_FOUND · PORT_OPEN_FAILED · IO_ERROR · INVALID_USAGE |
| create-* | INVALID_NAME · TEMPLATE_NOT_FOUND · EXAMPLE_NOT_FOUND · DEST_NOT_EMPTY · COPY_FAILED |
| set-target | TARGET_NOT_FOUND · STATE_WRITE_FAILED |
| get-target | STATE_NOT_FOUND |
| list-targets | ENUMERATION_FAILED |
flash 摘要
{
"verb": "flash", "schema_version": 1, "success": true,
"duration_seconds": 35.7, "target": "ws63-liteos-app", "chip": "ws63",
"port": "COM3", "baud": 921600,
"fwpkg": "...ws63-liteos-app_all.fwpkg", "fwpkg_size_bytes": 1458920,
"attempt": "auto", // "auto" | "manual"
"die_id": null, "burned_sections": 6,
"backend": "hsflash", "requested_backend": "hsflash",
"flasher_exit_code": 0, "burntool_exit_code": null, "optlog_path": null,
"error": null
}
flasher_exit_code 是 hsflash 进程退出码。burntool_exit_code 保留 schema v1
中的 BurnTool 语义,因此现在为 null。burned_sections 只是观测到的诊断计数;
自动化应基于 success 和 error.code 分支。
monitor 摘要
{
"verb": "monitor", "schema_version": 1, "success": true,
"duration_seconds": 1.0,
"exit_reason": "matched", // matched|timeout|user_interrupt|io_error
"matched": true, "match_pattern": "device_module_init:: succ!",
"match_text": "...context around the match...",
"bytes_read": 895, "port": "COM3", "baud": 115200,
"log_path": null, "error": null
}
create / set-target / list 摘要
create-* → { verb, schema_version, success, name, path, template, files_created, error }。set-target / get-target → { verb, success, target, state_file, available_targets_count, error }。list-targets
--json → { by_chip, all_targets, total_targets, ... };
list-examples --json → { by_root, all_examples, total }。
面向 AI agent 与 skills
fbb 是机制层。skills 是策略层 —— 它们决定何时调用某个 verb、如何反应。
两者之间的契约就是 JSON 输出与退出码 里的一切。
自举(幂等):
uv tool install git+https://gitcode.com/HiSpark/hs-fbb-cli.git && fbb setup
每次 fbb 调用都会自激活环境 —— agent 无需在调用间共享 shell 状态。
fbb describe --json —— 态势感知探针
一次调用返回规划所需的一切:
| 键 | 含义 |
|---|---|
schema_version |
快照模式版本。 |
fbb_cli.version |
已安装的 fbb 版本。 |
build_env.exists / venv_python / toolchain_dir |
fbb setup 是否已运行。 |
toolchain.ninja / riscv_gcc / flasher / hsflash / git |
解析到的路径(或 null)。burntool 保留 v1 原语义,BurnTool 退役后为 null。 |
python_packages.pyserial |
venv 里的版本(或 null)。 |
sdk.path / name / chips |
SDK 位置、fbb_<chip> 名,以及 target_config/ 下发现的芯片。 |
sdk.build_entry |
<SDK>/build.py 路径(fbb build 转发去处),或 null。 |
sdk.supported_verbs |
fbb 为该 SDK 提供的 verb(固定集合)。 |
sdk.targets |
可构建目标。 |
sdk.templates / sdk.examples |
脚手架模板与可克隆 example。 |
给 skills 的推荐烧录流程
result = fbb flash <target> --port COMx --json-summary # 解析最后一行 stdout
success -> 完成
error.code == DEVICE_NOT_RESPONDING -> 引导用户按 RESET,
用 --manual-reset 重试一次
otherwise -> 呈现 error.message,不要重试
SDK 自动检测
芯片 verb 与 build 按此顺序解析 SDK:
--sdk-dir <path>flagFBB_SDK_DIR环境变量- 从当前目录向上查找
src/build.py+CMakeLists.txt
若都无法解析,该 verb 退出 3 并给出定向提示。
镜像配置
所有默认值都是自托管。在 fbb setup 前设置这些:
| 变量 | 默认值 | 用于 |
|---|---|---|
FBB_PIP_INDEX |
https://pypi.tuna.tsinghua.edu.cn/simple |
所有安装器 |
FBB_PYTHON_MIRROR |
https://mirrors.huaweicloud.com/python |
pip 路径(主) |
FBB_PYTHON_MIRROR_B |
https://mirrors.cloud.tencent.com/python |
pip 路径(回退) |
UV_PYTHON_INSTALL_MIRROR |
https://dl.hispark.hisilicon.com/fbb-tools/python |
uv 路径 |
FBB_OBS_BASE |
https://dl.hispark.hisilicon.com |
清单 + 工具链制品 |
FBB_TOOLS_MANIFEST_URL |
$FBB_OBS_BASE/tools.json |
工具可用性清单 |
FBB_SDK_ROOT |
~/hispark |
fbb sdk install 安装 SDK 的位置 |
FBB_SDK_GIT_BASE |
https://gitcode.com/HiSpark |
SDK 仓库基址(/<repo>.git) |
FBB_SDK_TRUNK |
hs-fbb |
无 fbb_<chip> 仓库时裸芯片落到的统一 SDK 仓库 |
FBB_GETPIP_URL |
https://mirrors.aliyun.com/pypi/get-pip.py |
pip 路径(回退) |
export FBB_PIP_INDEX='https://mirrors.aliyun.com/pypi/simple/' # bash
$env:FBB_PIP_INDEX = 'https://mirrors.aliyun.com/pypi/simple/' # PowerShell
fbb setup --force
安装了哪些东西
~/.local/bin/fbb the CLI (managed by `uv tool install`)
~/.hs-fbb/ the managed build env (provisioned by `fbb setup`)
├── venv/ Python 3.12.10 + numpy + kconfiglib + cmake 3.20.5 + ...
├── tools/ manifest-provisioned, version-keyed:
│ ├── hcc/7.3.0-20240618/ RISC-V cross-compiler
│ ├── ccache/4.13.6/ compiler cache
│ └── <name>/<version>/ ... (shared across SDKs that pin the same version)
├── Git/ portable Git on Windows when no system git is found
└── .install-state.json resume marker
~/hispark/ SDK source checkouts (FBB_SDK_ROOT; visible, yours)
└── fbb_ws63/
└── 1.10.103/ one installed SDK ref
└── src/ build from here
~/.hs-fbb/ 内置绝对路径、与机器相关 —— 每个开发者用 fbb setup 各自重建;它不可
再分发。~/hispark/ 下的 SDK 检出是你正常编辑与构建的 git 树;每个 <repo>/<ref>/
是一份独立检出。
Windows 下,fbb setup 还会确保 Git 提供 patch、tar 和 xz。完整的系统 Git
会被复用;能力不完整时安装清单托管的 PortableGit。Git 的 GNU tar/xz 路径只在
fbb build 启动的 SDK 子进程中优先,不修改系统 PATH。
手动激活
用 fbb 时无需此操作。给想要长期激活 shell 的高级用户 / CI:
eval "$(fbb env --print sh)" # bash / zsh
fbb env --print ps1 | Out-String | Invoke-Expression # PowerShell
疑难排查
始终先从 fbb doctor 开始 —— 它逐组件诊断并打印修复方法。
| 症状 | 修复 |
|---|---|
fbb: command not found |
~/.local/bin 不在 PATH。uv tool update-shell 或开新终端。 |
[fbb] build environment not provisioned |
运行 fbb setup。 |
because running scripts is disabled on this system |
PowerShell 策略。Set-ExecutionPolicy -Scope Process Bypass。 |
CMake was unable to find ... "Ninja" |
工具链不在 PATH。fbb doctor,缺则 fbb setup --force。 |
gcc: error: CreateProcess: No such file or directory |
Windows 32K 命令行长度限制。把 SDK 安装到更短的路径。 |
import numpy ... ModuleNotFoundError |
在环境外用了裸 python。用 fbb run -- python ... 或 fbb shell。 |
fbb setup 把 cmake 升到 3.31.x 后构建坏了 |
requirements.txt 锁定 cmake==3.20.5。强制重装、绕过缓存:uv tool install --force --reinstall --no-cache git+https://gitcode.com/HiSpark/hs-fbb-cli.git,然后 fbb setup --force。 |
fbb flash → DEVICE_NOT_RESPONDING |
板子未自动复位。用 --manual-reset 重试并按板子的 RESET 键。 |
fbb flash → PORT_BUSY (退出 17) |
一个串口监视器 / 残留烧录器占着端口。关掉它再试。 |
fbb <verb> → cannot run '<verb>': no SDK in scope |
cd 进一个 fbb_* 检出、传 --sdk-dir <path>,或设 FBB_SDK_DIR。 |
| 在企业代理后面 | 在 fbb setup 前设 HTTPS_PROXY / HTTP_PROXY。 |
重装与清理
fbb setup --force # 清空 + 重新准备构建环境
rm -rf ~/.hs-fbb && fbb setup # 全删,从头来
uv tool uninstall hs-fbb-cli # 卸掉 CLI 本身
延伸文档
- CONTRIBUTING.md —— 开发 fbb 本体(英文)。
- PLATFORMS.md —— 各平台安装说明(英文)。
- TRANSLATIONS.md —— 多语言 /
FBB_LANG、新增语言(英文)。
许可证
Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2026-2026. All rights reserved.
基于 Apache License, Version 2.0 授权。见 LICENSE 与
NOTICE。准备阶段下载的制品保留其各自上游许可证;本仓库不再分发它们。