构建参考

命令与产物的速查。带解释的分步教程见 SOP.md,这里只列事实。

依赖

依赖 版本 / 来源 必须
WS63 SDK https://gitcode.com/HiSpark/fbb_ws63.git 是
RISC-V 工具链 随 SDK(tools/bin/compiler/riscv/) 是
cmake 系统包管理器 是,必须在 PATH
Python 3 系统 是
ccache 构建配置启用了就必须在 PATH 视配置

命令

cd <SDK>/src

rm -rf output                    # 改过 Kconfig 之后必须先清
python build.py ws63-liteos-app  # 构建

# 整包重来
rm -rf output && python build.py ws63-liteos-app

build.py 走 ninja,自动并行,不需要手写 -j。

影响构建的开关

开关 位置 作用
CONFIG_ENABLE_PERIPHERAL_SAMPLE 目标 config 必须打开,否则下面的样例开关被 Kconfig 丢弃
CONFIG_SAMPLE_SUPPORT_WAVESHARE_2INCH_AMOLEDOS 目标 config 编译本工程
CONFIG_OPEN_SOURCE_LVGL 目标 config 必须打开,否则 115 项 CONFIG_LV_* 全部作废
FS_SELFTEST_WRITE fs/fs_common.h 开机写自检,默认开;设 0 关闭

产物

output/ws63/
├── acore/
│   ├── ws63-liteos-app/
│   │   ├── ws63-liteos-app.elf
│   │   ├── ws63-liteos-app.map       链接映射,查符号体积
│   │   └── mconfig.h                 本次构建生效的配置 ← 排查配置问题看这里
│   └── ws63-flashboot/
└── fwpkg/ws63-liteos-app/
    ├── ws63-liteos-app_all.fwpkg      整包,烧录用这个
    └── ws63-liteos-app_load_only.fwpkg

mconfig.h 是排查配置问题的第一现场。 怀疑某个 CONFIG_* 没生效时,直接看它里面有没有那一行 —— 没有就是被 Kconfig 丢弃了。

体积

场景 应用镜像 占 imageA(2 MiB)
本仓库实测(AT 框架关闭,ws63-liteos-app.bin) 1,867,392 B 89.0%
纯净 SDK 默认(AT 框架开启) 1,962,240 B 93.6%

差别来自 CONFIG_MIDDLEWARE_SUPPORT_AT 及其 BLE/GLE 命令表,约 93 KB。关掉 AT 不影响本工程的任何功能(本固件不用 AT 框架),要省这块空间就把它关掉。

链接时打印的内存分区占用在编译日志里,也可以看:

Memory region         Used Size  Region Size  %age Used
            ITCM:       12992 B        16 KB     79.30%
            DTCM:       14668 B        16 KB     89.53%
            SRAM:      234416 B     548608 B     42.73%
         PROGRAM:     1866316 B    2357504 B     79.16%

PROGRAM 这一行(2.25 MiB 区域)和实际烧录分区 imageA(2 MiB)不是同一个度量 —— 79.16% 不是余量。真正的余量看 imageA:2,097,152 − 1,867,392 ≈ 224 KB。

按模块拆固件体积:

python waveshare_2inch_amoledos/tools/flash_ledger.py

构建期的常见失败

报错 原因
ninja: error: loading 'build.ninja' cmake 不在 PATH
CreateProcess failed: The system cannot find the file specified ccache 不在 PATH
implicit declaration of function 'lv_xxx' CONFIG_OPEN_SOURCE_LVGL 没打开
multiple definition of 'uapi_at_bt_register_cmd' 兼容桩没声明成弱符号
样例没被编进去(构建却成功) CONFIG_ENABLE_PERIPHERAL_SAMPLE 没打开
改了 Kconfig 但不生效 没清 output/