构建参考
命令与产物的速查。带解释的分步教程见 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/ |