初识星闪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即可注入

posted @ 2026-03-01 20:07  Xdesigner  阅读(1)  评论(0)    收藏  举报