初识星闪sdk fbb_ws63
星闪SDK
源码地址
sdk以git仓库的形式进行分发。 gitcode和giteee均有仓库。
gitcode_ws63sdk链接地址
gitee_ws63sdk链接地址
sdk目录结构
docs/ # 文档
src/ # sdk核心代码
tools/ # 编译和签名工具
vendor/ # 其他厂商的相关案例
核心代码在 src目录下。
SDK的编译
整个sdk的编译,还是比较复杂的
sdk的代码主要是c。sdk的编译系统靠python脚本做统筹. 自动化程度很高。
sdk靠python脚本驱动cmake,进行编译sdk的c代码。生成对应的bin文件。之后,python内部定义了pre build和post build事件,驱动签名程序把bin文件合并签名,并封装成一个文件。c代码靠Kconfig控制app和sdk组件的编译。
总体就是python控制整个sdk的统筹,cmake负责编译,Kconfig负责具体配置选项。在cmake和kconfig无法管理的部分(固件的签名验证合并等工作),由python做补充。
开发环境
使用vscode进行开发, hispark studio软件已经废弃, 现在官方推荐使用vscode的插件HiSpark Studio进行开发。
接下来我也会使用vscode进行学习。
过程中遇到的问题
vscode中命令行无法启动。
原因,编译工具链的python库不全,根据vscode源码可以得知,pycparser库补全,解压对应的库的包到site-packages目录下
HiSpark Studio 插件的源码(经过压缩过后的,格式化之后呈现如下)
// 注册名为 "hispark-studio.commandLine" 的命令
L = a.commands.registerCommand("hispark-studio.commandLine", async () => {
// 1. 获取基础路径
const e = (0, j.getToolsPath)(), // 工具链根目录
t = l.join(e, "tools"), // .../tools
r = l.join(t, "Windows", "ninja"), // Ninja 路径
n = l.join(t, "Windows", "cc_riscv32_win_env"), // Kconfig 环境路径
i = l.join(t, "python"), // Python 根路径
o = l.join(t, "python", "Scripts"); // Python 脚本路径 (pip等)
// 2. 检查核心工具链是否存在
if (!c.existsSync(r) || !c.existsSync(n)) {
return void a.window.showInformationMessage("工具链安装失败,请先执行Download Toolchain配置工具链");
}
// 3. 检查 Python 基础目录
if (!c.existsSync(i) || !c.existsSync(o)) {
return void a.window.showInformationMessage("Python解压配置失败,请先执行Download Toolchain配置python环境");
}
// 4. 硬编码检查 pip 依赖包 (报错的高发区)
// 它通过检查 site-packages 下是否存在特定的 .dist-info 文件夹来判断库是否安装
const s = l.join(i, "Lib", "site-packages", "cmake-3.20.5.dist-info"),
u = l.join(i, "Lib", "site-packages", "kconfiglib-14.1.0.dist-info"),
p = l.join(i, "Lib", "site-packages", "windows_curses-2.3.3.dist-info"),
d = l.join(i, "Lib", "site-packages", "pycparser-2.21.dist-info"),
h = !c.existsSync(p) || !c.existsSync(d);
// 如果版本不号对不上 (例如你升级了 cmake),这里就会报错
if (!c.existsSync(s) || !c.existsSync(u) || h) {
return void a.window.showInformationMessage("Python环境的pip依赖配置失败,请先执行Download Toolchain配置python和pip环境");
}
// 5. 构造环境变量 PATH (环境变量隔离的核心)
const f = `${r};${n};${i};${o};${process.env.Path}`;
// 6. 获取当前工作目录
let m = (0, k.getWorkFolderPath)();
if ("" === m) m = "C:\\";
// 7. 创建并显示终端,注入 path
a.window.createTerminal({
name: "CommandLine",
cwd: m,
env: { path: f } // 这里的 path 将覆盖或合并到终端环境变量中
}).show();
});
windows系统下,启动带环境的命令行。
vscode下载的工具链ws63_toolchain\tools\cfbb\env_start.bat,直接启动, Path即可注入

浙公网安备 33010602011771号