插件指南¶
工具简介¶
HiSpark Studio for VS Code插件面向智能设备开发者提供一站式集成开发环境。它为开发者提供代码编辑、编译、烧录和调试等功能,并支持C/C++语言,兼容64位Windows 10/Windows 11和Ubuntu 20.04及以上版本的Linux/WSL环境。该插件具有以下特点:
支持代码查找、代码高亮、代码自动补齐、代码输入提示、代码检查等,开发者可以轻松、高效编码。
支持单步调试和查看内存、变量、调用栈等调试信息。
支持自动检测各芯片/开发板依赖的工具链是否完备,并提供一键下载和安装缺失的工具链。
HiSpark Studio for VS Code插件主要分为以下6个功能区域(如图1所示):
① WELCOME:提供欢迎页、使用指南、创建导入项目等选项。
② PROJECT EXPLORER:工程区文件展示区。
③ COMMANDS:提供新建工程、打开工程、清除、编译、烧录等功能按钮,并可控制状态栏中按钮的显隐。
④ 代码编辑区:提供代码的查看、编写、跳转、高亮等功能。
⑤ 输出控制台:提供操作日志的打印、调试命令的输入及命令行工具等功能。
⑥ 状态栏:提供常用功能按钮,包括新建工程、导入工程、工程配置、清除、编译、烧录等功能,并显示当前文件的编码格式、行数、列数等信息。
HiSpark Studio for VS Code插件当前支持的芯片和对应特性如表1所示。
表 1 HiSpark Studio for VS Code插件支持的芯片及其特性(一)
| 芯片系列 | 芯片名称 | 工程管理 | 编译运行 | 一键烧录 | 烧录配置 | 栈分析/镜像分析 |
|---|---|---|---|---|---|---|
| 短距物联 | BS20 | √ | √ | √ | √ | √ |
| BS20C | √ | √ | √ | √ | √ | |
| BS21 | √ | √ | √ | √ | √ | |
| BS21E | √ | √ | √ | √ | √ | |
| BS22 | √ | √ | √ | √ | √ | |
| BS26 | √ | √ | √ | √ | √ | |
| BS21A | √ | √ | √ | √ | √ | |
| BS25 | √ | √ | √ | √ | √ | |
| BS27A | √ | √ | √ | √ | √ | |
| WS53 | √ | √ | √ | √ | √ | |
| WS63 | √ | √ | √ | √ | √ | |
| 手机穿戴 | BRANDY | √ | √ | √ | √ | √ |
| SOCMN2 | √ | √ | √ | √ | √ | |
| SW21 | √ | √ | √ | √ | √ | |
| 3322 | √ | √ | √ | √ | √ | |
| 广域物联 | NB17 | √ | √ | √ | √ | √ |
| NB17E | √ | √ | √ | √ | √ | |
| NB18 | √ | √ | √ | √ | √ | |
| Hi2113 | √ | √ | √ | √ | √ | |
| Hi2131 | √ | √ | √ | √ | √ | |
| Hi2131C | √ | √ | √ | √ | √ |
表 1 HiSpark Studio for VS Code插件支持的芯片及其特性(二)
| 芯片系列 | 芯片名称 | 工程调试 | 串口控制台 | Kconfig | CodeSize | GUI | 远程编译 |
|---|---|---|---|---|---|---|---|
| 短距物联 | BS20 | √ | √ | √ | √ | × | √ |
| BS20C | √ | √ | √ | √ | × | √ | |
| BS21 | √ | √ | √ | √ | × | √ | |
| BS21E | √ | √ | √ | √ | × | √ | |
| BS22 | √ | √ | √ | √ | × | √ | |
| BS26 | √ | √ | √ | √ | × | √ | |
| BS21A | √ | √ | √ | √ | × | √ | |
| BS25 | √ | √ | √ | √ | × | √ | |
| BS27A | × | × | × | × | × | √ | |
| WS53 | √ | √ | √ | √ | × | √ | |
| WS63 | √ | √ | √ | √ | × | √ | |
| 手机穿戴 | BRANDY | √ | √ | × | √ | √ | √ |
| SOCMN2 | √ | √ | × | √ | × | √ | |
| SW21 | √ | √ | × | × | × | √ | |
| 3322 | √ | √ | × | × | √ | √ | |
| 广域物联 | NB17 | √ | √ | × | × | × | √ |
| NB17E | √ | √ | × | × | × | √ | |
| NB18 | √ | √ | × | × | × | √ | |
| Hi2113 | √ | √ | × | × | × | √ | |
| Hi2131 | √ | √ | √ | √ | × | √ | |
| Hi2131C | √ | √ | √ | √ | × | √ |
说明:
HiSpark Studio for VS Code所支持的芯片中,BS20、BS21E、BS22、WS63以及3322中的HiDiTing的SDK已经开放至gitcode社区,可通过“SDK下载”章节获取详细信息。
芯片系列中,"短距物联"、"手机穿戴"、"广域物联"统一属于FBB系列,文档中FBB系列芯片指代这三个芯片系列。
3322包含3322和HiDiTing芯片。
Windows和Linux环境下都支持主页、新建工程、编译、栈/镜像分析功能、系统配置、命令行工具、高阶分析、烧录、下载管理、监视器、远程开发工具、调试功能。
开发环境搭建¶
概述
安装要求
安装HiSpark Studio for VS Code插件
工具链toolchain配置
SDK下载
MinGW安装
bash环境准备
CONFIG_PUBLIC_OPTION_IN_FILES宏开启
概述¶
当前版本支持Windows10/Windows11系统、Ubuntu 20.04及以上版本的Linux/WSL环境,本章节主要介绍Windows10/Windows11系统上的开发环境搭建。
安装要求¶
操作系统要求:支持64位Windows10或64位Windows11,Linux/WSL环境支持Ubuntu20.04版本及以上。
VS Code版本要求:1.85.0及以上。
硬盘要求:至少有900MB的硬盘空间来安装HiSpark Studio for VS Code插件。
内存要求:HiSpark Studio for VS Code插件最低要求为1GB RAM,建议至少有4GB RAM来安装运行HiSpark Studio for VS Code插件。
CPU:HiSpark Studio for VS Code插件最低要求为1.6GHz或者更高的处理器。
运行空间:建议至少保留1GB可用空间。
安装HiSpark Studio for VS Code插件¶
说明: 若之前已经安装过DevEco相关的插件,请手动禁用或者卸载所有与DevEco相关的插件,否则会与HiSpark Studio for VS Code插件功能冲突。 Linux/WSL环境下请先连接到远程环境,再安装HiSpark Studio for VS Code插件。
工具链toolchain配置¶
HiSpark Studio for VS Code插件在对工程进行编译等操作时,需要依赖工具链、Python以及pip.pyz等环境。可以使用插件中的Download Toolchain功能进行工具链等的自动下载和安装。
点击Download Toolchain功能后,会弹出一个文件夹选择框,用于选择工具链的下载和安装位置。
须知:
首次选择文件夹进行工具链的配置时,为避免影响该文件夹内已有文件,建议选择一个空文件夹,用于下载和配置工具链。
Linux/WSL环境下,工具链安装位置建议选择“home/用户/xxx”目录下。
文件夹选择路径不能包含中文或者空格,否则会有提示框弹出,此时选择“再次选择文件夹路径”会重新进入到工具链保存位置选择界面,选择“取消”则会退出工具链的选择安装。
选择完文件夹路径后,会依次下载Python 3.11.4、pip.pyz、pip.pyz的依赖(wheel、setuptools、cmake、kconfiglib、pycparser、pillow、numpy、opencv-python、windows-curses、ffmpeg-python、pyelftools、openpyxl、pandas以及tkinter-embed),以及编译所需的tools工具。如果本地没有安装git,即命令提示符(cmd)中输入“git --version”时没有显示对应版本,系统会同时下载git安装包。下载过程VS Code右下角通知栏会有对应的工具下载提示以及进度展示。compiler由于文件比较大,下载时间较长,请耐心等待。
下载结束后,具体的下载内容保存在选择目录的downloads目录下,以选择路径为“D:\toolchain”为例,工具链下载目录如图5所示。如果下载了git安装包,会在downloads目录下生成一个“Git.tar.gz”压缩包。
Python 3.11.4安装好后,会对pip.pyz的依赖进行安装,并对编译工具链进行解压,右下角会有对应的通知弹框提示,全部安装完成会提示环境准备完成。
图 6 python3.11.4安装完成后的pip.pyz依赖及工具链的解压提示

在环境准备中,会将文件夹下载路径如“D:\toolchain\downloads\HiSparkStudioToolchain.zip”的这个zip压缩包解压到与downloads目录同级的tools目录(如“D:\toolchain\tools”中)。如果下载了git安装包,tools目录下会存在一个Git文件夹。
Python环境可以通过在tools目录下的python目录如“D:\toolchain\tools\python”路径下打开cmd(命令提示符)窗口中进行验证。执行“.\python.exe --version”输出结果为‘Python 3.11.4’,以及执行“python.exe ..\..\downloads\pip.pyz list”命令输出结果显示有wheel、setuptools、cmake、kconfiglib、pycparser、pillow、numpy、opencv-python、windows-curses、ffmpeg-python、pyelftools、openpyxl、pandas以及tkinter-embed这些pip.pyz的依赖及其对应版本,则说明Python环境配置正确。
工具链下载完成,环境配置完成后,会自动在用户环境变量中添加一个变量名为“HISPARK_TOOL_PATH”,变量值为选择的工具链存放位置如“D:\toolchain”的环境变量,便于插件获取工具链的路径。
说明: 手动配置toolchain环境: 如果由于环境或其他原因导致自动配置toolchain环境失败,用户也可以手动进行配置,首先创建一个空文件夹用于存放下载的工具链,如“D:\toolchain”,并在该路径下创建两个文件夹downloads和tools分别用于存放下载的文件以及安装的工具链:
python下载链接:python,将该文件下载到downloads目录下(如“D:\toolchain\downloads”),并解压到tools目录下(如“D:\toolchain\tools”),将解压后文件命名为“python”。
下载“pip.pyz”文件至downloads目录下(如“D:\toolchain\downloads”),并将下载后的“pip.pyz”文件复制到tools\python目录下(如“D:\toolchain\tools\python”)。下载链接:pip.pyz
修改..\tools\python\python311._pth文件的内容,删除“#import site”前的#号。
pip.pyz依赖准备需要下载对应依赖的whl文件到downloads目录(如“D:\toolchain\downloads”)下,并复制到tools\python目录下(如“D:\toolchain\tools\python”),并在“D:\toolchain\tools\python”目录下打开cmd执行“.\python.exe pip.pyz install xx.whl”命令,如下载cmake的whl文件为“cmake-3.20.5-py2.py3-none-win_amd64.whl”,则在“D:\toolchain\tools\python”目录下打开cmd执行“.\python.exe pip.pyz install cmake-3.20.5-py2.py3-none-win_amd64.whl”即可。各依赖的whl文件下载链接如下: wheel、setuptools、cmake、kconfiglib、pycparser、pillow、numpy、opencv-python、windows-curses、ffmpeg-python、pyelftools、openpyxl、pandas
下载tkinter压缩包到downloads目录下(如“D:\toolchain\downloads”),并复制到“tools\python”目录下(如“D:\toolchain\tools\python”),并在“D:\toolchain\tools\python”目录下打开cmd执行“.\python.exe pip.pyz install --target .\ tkinter_embed-3.11.0.tar.gz”命令。 下载链接:tkinter压缩包
新建“toolChain.json”文件到tools目录下(如“D:\toolchain\tools”),并添加python路径如“d:\\toolchain\\tools\\python”内容至“toolChain.json”中。
{ "pythonDir": "d:\\toolchain\\tools\\python" }![]()
工具链可以手动通过工具链包链接下载到downloads目录下(如“D:\toolchain\downloads”),并解压到tools目录下(如“D:\toolchain\tools”)。
若本地没有配置git环境,可以手动下载git压缩包并解压到tools目录,git压缩包下载地址:git包。解压后的目录结构如下:
工具链的环境和Python环境验证可参考图7和图8。
验证成功后需手动将创建的用于存放下载工具链的文件夹目录(如“D:\toolchain”)添加至用户环境变量中,变量名为“HISPARK_TOOL_PATH”,变量值为新建的文件夹目录(如“D:\toolchain”),可参考图9。
说明: 半手动配置toolchain环境: 如果只是少数文件下载失败,用户可以根据上述“手动配置toolchain环境”中相应文件的下载路径,手动下载相应的文件到downloads目录,然后再次点击英文“Download Toolchain”或者中文“下载工具链”按钮,HiSpark Studio会自动完成后续的文件的下载、安装以及配置操作。
SDK下载¶
HiSpark Studio for VS Code插件中创建工程需要依赖SDK软件包,插件当前提供WS63、BS2X系列以及HiDiTing的SDK下载。
图 1 Download SDK from HiSpark功能

点击“Download SDK from HiSpark”后,弹出SDK下载列表。
选中任意SDK,会弹出“选择SDK保存位置”选项。
选中保存文件夹后,会优先使用本地系统中配置的git环境进行SDK下载,如果本地没有配置git环境,并且也没有进行下载工具链的操作,会提示“本地未安装配置git环境,请重新下载工具链配置git环境”。下载工具链的操作可以参考“工具链toolchain配置”。
SDK下载完成后,用户可根据SDK来进行工程创建。
须知:
为避免SDK下载后与其他文件夹相互影响,建议选择SDK保存位置时选择一个空文件夹。
由于Windows 10和Windows 11的路径存在260Byte的长度限制,为后续编译操作,建议SDK存放路径不宜过长。
WS63 SDK通过git clone https://gitcode.com/HiSpark/fbb_ws63.git在线下载。
BS2X SDK通过git clone https://gitcode.com/HiSpark/fbb_bs2x.git在线下载。
HiDiTing SDK通过git clone https://gitcode.com/HiSpark/hs-fbb.git在线下载。
MinGW安装¶
使用GUI模拟器,需要安装CMake和MinGW。MinGW安装过程如下:
下载7.3.0版本的MinGW。
下载得到如下压缩包:
在文件夹下解压,并将安装路径“/mingw64/bin”添加到系统环境变量,通过“gcc -v”命令查看是否成功安装。安装目录切勿包含中文路径,否则可能会导致编译失败。
bash环境准备¶
该小节仅针对需要依赖bash环境才可以编译的Hi2131、Hi2131C、3322工程。
如果需要编译Hi2131、Hi2131C、3322的工程,用户需手动下载git 并将bash路径添加到环境变量中。
如果Windows系统System32下默认有“bash.exe”,需要删除其系统下的“bash.exe”,使用安装的git下内置的“bash.exe”。
完成后,关闭所有VS Code窗口,再重新打开,保证新环境变量生效,即可正常编译工程。
说明: 若删除Windows系统库下的bash时提示没权限,可以在需要删除的bash.exe上右键点击,选择“属性”,在弹出的窗口中依次点击“安全”标签页→“高级”→点击“所有者”标签页下的“更改”按钮。选择一个新的所有者(例如当前用户),点击“应用”和“确定”。返回“安全”标签页,点击“编辑”。为当前添加的用户或组分配适当的权限(如完全控制、读取等)。点“应用”和“确定”后即可删掉选择的bash.exe文件。
对于3322的工程,涉及用tar进行解压的操作,如果使用系统默认自带的tar会解压失败,需要对bash环境进行配置,使用bash环境中的tar来解压,保证编译正常运行。
CONFIG_PUBLIC_OPTION_IN_FILES宏开启¶
对于3322工程(包含3322和diting工程),进行编译时,需要手动修改工程目录下的“build/config/target_config/3322/config.py”文件中的代码,将默认注释的宏“CONFIG_PUBLIC_OPTION_IN_FILES”开放,如不开放,在编译过程中会报“is command line too long”的错误,导致编译失败。
图 1 开启”CONFIG_PUBLIC_OPTION_IN_FILES”宏

需要编译哪个target就需要开放哪个target的宏,如上图所示,“3322-native-js”target中的“CONFIG_PUBLIC_OPTION_IN_FILES”宏默认关闭,在编译“3322-native-js”target时需要将宏的注释去掉,开放该宏,保证编译通过。
须知:
diting工程的编译同样需要修改开放对应的宏。
如果某一target中的参数没有“CONFIG_PUBLIC_OPTION_IN_FILES”宏,并且在编译时报“is command line too long”的错误,可以手动在“config.py”文件中的target下手动增加这一宏选项。
开启CONFIG_PUBLIC_OPTION_IN_FILES宏后,Windows会读取.rsp文件执行编译,rsp文件读取是以流式方式读取,头文件的读取存在先后顺序问题,当存在同名头文件时,可能存在头文件引用错误问题,因此用户开发过程中需避免创建同名头文件。
工程管理¶
新建工程
导入工程
新建工程¶
打开HiSpark Studio for VS Code插件,进入欢迎页面,点击“新建工程”,进入新建工程页面。
-
芯片:选择工程使用的芯片名称。
开发板:选择工程使用的开发板名称。当用户不需要自定义开发板时,默认芯片名作为开发板名。
工程类型:选择创建的工程类型。包括示例工程和三方示例工程,其中三方示例工程当前仅支持WS63芯片。
工程名:输入工程名称。
工程路径:选择用于存放工程文件的目录。
软件包:选择工程使用的软件开发驱动包(SDK)文件夹根目录。
当芯片选择WS63,且工程类型选择“三方示例工程”后,工程界面会新增“sample路径”和“sample选择”选项,如图3所示。
sample路径可选择WS63 SDK下载后与SDK同级目录下的vendor下的任意文件夹(所选文件夹下需包含“build_config.json”文件及demo文件夹),然后点击sample选择,弹出如图4所示界面。
选择需要的sample后,关闭sample选择页面,选择的sample选项名会填充到新建工程页面中的“sample选择”中,如图5所示。
后续选择合适的工程名、工程路径和WS63的软件包,点击“完成”即可创建工程。
查看工程创建结果。
HiSpark Studio for VS Code插件会自动打开新创建的工程,并在欢迎界面工程列表中显示创建的工程,如图6所示。如果是WS63创建“三方示例工程”,工程创建后会在“application/sample”工程目录下增加一个与已选sample同名的文件夹。
导入工程¶
工程配置¶
工程配置主要用于配置工程的基本信息、编译、调试、烧录等工程配置项,单击“
”按钮可以打开工程配置界面,如图1所示。
基本信息配置
编译器配置
烧录器配置
调试器配置
基本信息配置¶
单击工程配置界面左侧“基本信息”页签进入基本信息配置界面,如图1所示。该界面包含工程芯片系列、开发板型号、软件包路径,可以修改工程所对应的软件包路径。
基本系列配置界面中,Target选择框以及关联的Target管理功能仅在部分FBB芯片中生效:
BS20、BS20C、BS21、BS21E、BS21A、BS22、BS26既支持Target选择也支持Target管理,其余含有Target的工程仅支持Target选择。
以下指南仅针对上述涉及到Target功能的芯片:
如图2所示,通过选取不同的Target,可配合编译生成不同的编译产物。
单击Target选项框下方的 "Target 管理",可进入Target管理界面,如图3所示。
① 不支持编辑和删除的SDK默认Target。
② 支持编辑和删除的Target。
单击Target管理界面的“添加”,可进入添加Target界面,如图4所示。
当用户添加或删除Target时,工程配置界面的Target选项也会同步生效。以添加Target为例,当新增一个demo的Target后,如图5,工程配置界面Target下拉框也会同步更新DEMO选项,如图6。
配置后的Target参数宏信息会生成在target_config目录下的“.config”文件中,如图7所示。
Target支持选择和自定义,单击Target选项框可以从Target列表中选择需要的Target,也可以自定义Target和编译的指令。
须知:Target支持选择和自定义,每次自定义时均需要手动输入完整的自定义Target及命令,不支持在选择或自定义的Target基础上二次编辑,即每次自定义Target时均需从第一个字符开始输入;
Target自定义时,如果输入的Target为列表中已有的Target,在此基础上新增其他编译命令,如果编译能正常通过,调试和烧录均可正常执行。
Target自定义时,如果输入的Target为列表中没有的Target,在此基础上进行编译,如果编译能正常通过,由于没有绑定elf和map文件,调试和栈分析、镜像分析功能会受到影响。此外,若使用自定义列表中没有的Target,重新打开工程配置时会提示launch.json缺失并影响调试功能,此为正常现象。
编译器配置¶
单击工程配置界面左侧“编译器”页签进入编译器配置界面,如图1所示,该界面可配置工程是否开启编译问题分析功能和生成analyzerJson功能,默认不开启这两个功能。对于3322和3321工程会增加一个“-nhso构建参数”编译选项,默认开启,以加快3322和3321工程编译速度。
说明: 修改配置之后会自动保存并生效。文本输入框中的修改会在失焦时自动保存并生效。
烧录器配置¶
单击工程配置界面左侧“程序加载”页签进入程序加载配置界面,如图1所示,该界面支持配置烧录传输方式以及传输方式对应的参数。
传输方式:选择数据传输方式。选择不同的传输方式,会出现不同的参数配置项。
Bin文件:指定需要烧录的文件。
烧录后复位:烧录完成后,会进行单板软复位。
烧录后校验:烧录后,会将烧录文件进行回读对比,校验文件的完整性。
说明:
修改配置之后会自动保存并生效。
调试器配置¶
单击工程配置界面左侧“调试器”页签,在JlinkGDBServerCL路径中选择Jlink的执行软件,如图1所示。
编译运行¶
编译按钮介绍
编译结果
命令行编译工具
脚本执行命令
编译按钮介绍¶
图1中按钮依次为:清除、编译、重编译和停止编译。
:单击触发工程清理,删除编译中间生成的文件。
:单击触发工程编译。
:单击触发先清理target再编译。
:单击触发停止编译。
说明:
重编译功能会先清除output目录下当前target的内容,如acore目录和fwpkg目录下名为target的文件夹。如果存在该文件夹则会删除;如果没有,则不会清除任何文件或文件夹。清除完毕后会再执行编译功能。
如果想删除output文件夹,执行“清除”功能即可。
编译结果¶
单击“
”按钮开始编译,编译成功后终端窗口输出如图1所示,且工程目录中生成output目录如图2所示。
单击
按钮开始清除编程生成的文件,成功后终端窗口输出如图3所示。工程清理会清除工程目录下的output文件夹。
命令行编译工具¶
点击COMMANDS中的Command Line功能或状态栏中的Command Line图标,可执行命令行工具功能。
执行命令行工具功能后,会自动配置临时环境变量,并启动一个CommandLine终端。如果缺少编译所必需的工具链或其他依赖,会提示需先执行Download Toolchain功能配置环境。以Python环境配置失败为例,当Python环境未配置时点击Command Line会有信息提示先执行Download Toolchain配置环境。
环境配置完成后,会打开一个CommandLine终端,默认在C盘根目录下,输入“d:”会切换至D盘根目录,然后cd到SDK目录,执行“python build.py -c”命令运行编译脚本,选择编译选项(“-c”为清除编译命令,可视情况选择是否在编译命令中带上“-c”)。
脚本执行命令¶
在完成“工具链toolchain配置”后,在下载的工具链的tools目录下,如“D:\toolChain\tools”目录下,存在一个“hispark_studio.bat”的脚本。
双击该脚本后,cd到SDK所在目录,执行“python build.py -c”并选择所需要的target,即可不依赖VS Code工具直接对SDK或工程进行编译操作。以WS63工程为例,操作过程如图2所示。
软件包烧录¶
烧录功能只支持串口烧录。
连接烧录串口线
配置工程的烧录选项
烧录配置
说明: Linux/WSL挂载串口步骤: 1、下载usbipd-win:访问usbipd-win的GitHub仓库下载最新版本的安装包(https://gitcode.com/gh_mirrors/us/usbipd-win?source_module=search_result_repo 查看该链接中的README,下载“最新版本”的.msi文件)。或者,在PowerShell中使用winget命令在线安装:winget install --interactive --exact dorssel.usbipd-win。 2、安装usbipd-win:双击下载的.msi文件,按照安装向导完成安装。 3、列出所有USB设备:在Windows搜索栏中输入“PowerShell”,右键点击“Windows PowerShell”,选择“以管理员身份运行”。在PowerShell中运行usbipd list命令,列出所有连接到Windows的USB设备及其总线ID。 4、选择并共享USB设备:根据需要,找到并复制想要在WSL中使用的串口设备的总线ID。运行usbipd bind --busid
命令来绑定该设备,允许它被共享到WSL。其中 为要共享的设备总线ID。注意:在某些情况下,用户可能不需要显式运行usbipd bind命令,直接执行usbipd attach即可。但根据最新信息,建议首先使用bind命令确保设备被正确共享。 5、附加USB设备到WSL:在PowerShell中,使用usbipd attach --wsl --busid 命令将USB设备附加到WSL。其中 为之前复制的设备总线ID。 设置执行权限报错 Linux/WSL环境下,如果BurnToolCmd设置执行权限报错,请在终端执行 sudo chmod +x XXX/tool/BurnToolCmd/BurnToolCmd后重新尝试烧录。 XXX:工具链安装目录
连接烧录串口线¶
软件镜像烧录使用串口通信协议,需要将运行HiSpark Studio for VS Code插件的电脑与目标板用串口线连接,常见的串口线有标准的串口线和USB转串口线两种。如果使用USB转串口线,需提前安装USB转串口驱动。
配置工程的烧录选项¶
配置好硬件环境。
请用串口线连接好电脑和待烧录开发板。
-
打开电脑的设备管理器,查看并记录串口线对应的串口号。
须知:
如果使用USB转串口方式烧录,请安装USB转串口的驱动程序。 进入工程配置界面。
打开要烧录的工程后,单击工程配置的“
”按钮,进入工程配置界面。单击“程序加载”中的“传输方式”,默认选择“serial”串口传输,“Bin文件”中,会默认选择烧录的Bin文件,按步骤2选择端口号,波特率默认115200。
须知:
FBB系列芯片选择“serial”烧写模式时,由于是USB转串口的方式,硬件设备的差异可能会对芯片支持的烧写波特率有限制,如果想支持更高的波特率,需要改板。其中,BRANDY系列芯片烧写波特率默认限制为不超过500000,BS2X系列芯片烧写波特率默认限制为不超过2000000,3322系列芯片烧写波特率默认限制为不超过750000。单击工具栏中的烧录按钮
,开始执行烧写。根据终端打印的"Connection"或其他提示,对单板进行复位,烧录成功后终端窗口输出如图5所示。
烧录配置¶
本章节主要介绍支持选择性烧录bin文件的方法。使用此功能前如果编译成功则直接从本章节1开始,如果未编译,请参见“编译结果”章节进行编译,然后再根据本章节步骤进行操作。
-
FBB分区文件默认为打包好的.fwpkg文件,或者单击“浏览”按钮从本地文件中选择打包好的.fwpkg文件。选择完成后,烧录工具会自动地将.fwpkg文件中包含的bin内容列出。
勾选需要烧录的.bin文件。默认会勾选全部.bin文件,且不支持修改表格中包含loader.bin或ssb.bin的分区名属性所在行的编辑状态。而其他.bin文件可以根据烧写的需求勾选或者取消勾选。
烧录之前需要配置传输方式及其他参数信息,具体操作请参见“烧录器配置”章节。
单击“烧录”按钮,根据提示重启开发板,即可开始烧录。
开始烧录后,在分区文件下方会显示出烧录进度条,方便查看烧录进度。烧录开始后会在终端打印对应指令信息,最后烧录成功后会在界面显示“successfully”字样。
栈分析和镜像分析¶
HiSpark Studio for VS Code插件集成了Stack Analysis栈分析工具和Image Analysis镜像分析工具,用于分析开发过程中的内存不足、内存溢出等问题,帮助开发者更加精准地分析、定位问题。
Stack Analysis栈分析工具是基于静态二进制分析手段,提供任务栈开销估算值和函数调用关系图示,为栈内存使用、分析、优化、问题定位等开发场景提供较为准确的静态内存分析数据参考。
Image Analysis镜像分析工具对工程构建出的.elf文件进行内存占用分析,帮助开发者快速评估内存段、符号表使用情况。
栈分析
镜像分析
栈分析¶
栈分析工具基于静态二进制分析手段,提供任务栈开销估算值和函数调用关系图示,为栈内存使用、分析、优化和问题定位等开发场景提供较为准确的静态内存分析数据参考。
创建工程并成功编译后,单击工具栏中“
”按钮进行栈分析。
栈分析结果按照函数列表和调用关系进行展示。如图1所示,功能列表页面展示每个函数的名称、内部栈开销和位置信息,其中内部栈开销单位为Byte,支持关键字搜索和排序功能。
调用关系界面如图2所示,显示每个函数的调用关系,包括函数名称、调用深度、函数最大栈开销和内部栈开销,支持关键字搜索和排序功能。
最大开销:为当前函数所有子函数中最大栈开销与循环次数的乘积,再加上自身的开销。
计算公式:max(子函数1的自身栈开销,子函数2的自身栈开销,子函数3的自身栈开销,…)× 循环次数+函数的自身栈开销
本地开销:当前函数的自身栈开销。
深度:当前函数每增加一层子函数,深度增加一层。
镜像分析¶
镜像分析工具通过分析.elf文件,图形化展示RAM和ROM的使用情况。
创建工程并成功编译后,单击工具栏中的“
”按钮。
内存区域页面(如图1所示)评估分析工程对内存的细分使用情况。例如WS63,显示的内存区域region包含RAM、SRAM、ITCM等,展示的信息包含每个内存区域的名称、起始内存地址、结束内存地址、总大小、空闲大小、已用大小以及使用比例,支持关键字搜索和排序功能,如图1所示。
内存详细信息页面(如图2所示)展示每个内存区域包含的内存段section和内存段包含的symbol的详细信息。比如FLASH下面包含.text、.entry、.data等内存段,内存段又包含分配在该段的程序符号,支持关键字搜索和排序功能。
每一行展示的信息包含运行地址VMA(Virtual Memory Address,表示程序运行时的内存地址)、装载地址LMA(Load Memory Address,表示程序装载的内存地址)、内存段/符号的大小。
文件大小页面(如图3所示)展示每个链接进来的.o文件所占的内存区域及其大小,支持关键字搜索和排序功能。
模块大小页面(如图4所示)展示了模块和组件的层级关系以及不同模块的内存占用,支持关键字搜索和排序功能。
文件夹大小页面(如图5所示)展示了不同文件夹中模块的内存占用,支持关键字搜索和排序功能,支持导出Excel。
工程调试¶
调试配置选项
启动调试
常用调试功能
调试配置选项¶
说明: 调试配置选项中的JlinkGDBServerCL驱动需要在J-Link官网下载。
参考下图所示进行调试选项配置:
启动调试¶
单击IDE工具栏调试按钮“
”,在顶部弹框中选择需要的调试模式。GDB Launch(Acore):A核重启,暂停CPU,设置PC指针从头开始运行程序(A核开头设置了一个虚拟断点)。
GDB Attach(Acore):A核正在运行中,暂停CPU,程序直接停在CPU Halt处。
GDB Launch(Pcore):P核重启,暂停CPU,设置PC指针从头开始运行程序(P核开头设置了一个虚拟断点)。
GDB Attach(Pcore):P核正在运行中,暂停CPU,程序直接停在CPU Halt处。
说明:
3322芯片低功耗场景不支持launch模式,只支持attach模式。调试成功后示例如下图,若出现下面提示信息与工具栏调试图标,则说明已成功启动调试。
常用调试功能¶
调试页面
调试页面¶
调试工作界面如图1所示,主要由以下3个部分组成:
① 调试侧边栏
② 调试功能区
③ 调试控制台
调试侧边栏
调试功能区
调试控制台
调试侧边栏¶
调试侧边栏集合了调试常用功能,包括变量、监视、调用堆栈、断点、内存信息查看等。
调试功能区¶
启动调试功能后,当代码执行到设置的断点时,程序会暂停,用户可根据调试功能区的按钮进行代码调试。
:继续运行(“F5”),当程序执行到断点时停止执行,单击此按钮程序继续执行。
:单步跳过(“F10”),在单步调试时,直接前进到下一行(如果当前函数存在子函数调用,不会进入子函数内单步执行,而是将整个子函数当作一步执行)。
:单步执行(“F11”),在单步调试时,遇到子函数后,进入子函数并继续单步执行。
:单步跳出(“Shift+F11”),在单步调试执行到子函数内时,单击单步跳出会执行完子函数剩余部分,并跳出返回到上一层函数。
:重启调试(“Ctrl+Shift+F5”),重新启动调试。
:停止调试(“Shift+F5”),停止调试任务,断开连接。
调试控制台¶
调试控制台用来输出调试时的打印信息,也可以输入命令与调试器交互。
变量查看
当运行到断点处暂停时,可以在变量界面查看变量的当前值。
支持如下4种变量类型:
局部变量
全局变量(可能会被编译器优化,可以使用关键字volatile来规避此问题)
静态变量(可能会被编译器优化,可以使用关键字volatile来规避此问题)
寄存器
监视功能
在调试过程中,可以通过“监视”查看变量(包括局部变量、全局变量以及静态变量)和特定地址的取值来判断程序的运行结果是否有误。
查看调用栈
在调试过程中,可以通过查看调用栈来分析主程序调用的各子程序的调用关系,如下图所示。
内存信息查看
调试过程中,可以在内存查看界面查看指定内存地址的当前信息。
点击侧边栏“MEMORY”->“open memory view”菜单项,弹出内存信息查看窗口。
在输入框“address”、“offset”、“Length”中分别输入起始地址、偏移量和长度,可查看指定范围的内存地址信息。默认情况下,查看从“address”指定的地址开始、连续128个字节的地址的值。
点击“Save”按钮,可将当前地址信息以表格的形式保存到本地。
点击侧边栏“MEMORY”->“open memory view”菜单项,可同时打开多个Memory窗口。
远程开发工具¶
本章节主要介绍HiSpark Studio for VS Code插件中的远程开发工具。该工具可监测本地工程的文件变化并实时传输至服务器端,在服务器端编译后,将编译产物复制到本地工程目录,供本地执行调试、烧录等功能。
主要包括四个功能:连接服务器、打开远程配置管理、执行编译命令并传输文件、断开服务器。
说明:
在使用远程开发工具之前,建议本地创建的工程目录与服务端需要传输文件的SDK目录保持一致,如:
服务端目录:/home/developer/1a21
本地工程目录:D:\\home\\developer\\1a21
如果已经按照bash环境准备进行tar的环境配置,需要去除添加的Git目录下的“..\Git\usr\bin”的系统环境变量,保证where tar指向的是系统默认的tar,而不是用户手动安装的git目录下的tar。
连接服务器
打开远程配置管理
执行编译命令并传输文件
断开服务器
连接服务器¶
在本地和服务端分别创建工程并保持路径一致后,打开本地创建的工程目录,单击“远程开发工具”,会弹出远程开发选项框。
在弹出的远程开发选项框中选择“连接服务器”。按照提示进行服务器的连接,在选择模式中选择“文件同步Linux连接”,输入需要连接的服务器地址、连接端口号、用户名,选择认证方式(一般为“密码”),最后输入密码,连接步骤完成后,会在“输出”界面显示连接成功。
打开远程配置管理¶
在首次连接或者点击“远程开发工具”后弹出的“打开远程配置管理”选项框,会弹出“远程编译执行配置”界面。
各选项框介绍说明:
Windows工程目录:选择本地工程即当前打开的文件夹,用于与服务器目录的数据同步与传输。
Linux工程目录:选择服务器端的工程目录,用于与本地端目录的数据同步。
编译命令配置:需要在服务器端执行的命令操作,一般为cd到服务器端的工程目录下,再执行编译命令,即能够编译出需要传输给Windows目录的编译产物(即output目录)。
编译成功后自动下载产物:默认勾选,选择后执行编译命令会默认将Linux工程目录下的output文件夹复制到“Windows工程目录”选择的路径(即本地工程路径);如果编译后生成的烧录fwpkg文件在“tools/pkg/fwpkg”下,会额外复制一份“tools/pkg/fwpkg”文件夹到本地工程目录,如bs系列和brandy工程。
文件同步忽略规则:与服务端建立连接后,会监测本地文件的变化改动,再自动上传到远程服务端,忽略规则可以输入不需要监测的文件夹。如果工程目录过大需要监测的文件过多,会导致性能变差,IDE工具出现卡顿等情况。
各选项选择完后,需要点击保存配置。
执行编译命令并传输文件¶
点击“远程开发工具”后弹出的“执行编译命令并传输文件”选项框,会自动先执行“编译命令配置”中选择的编译命令,编译结束后,会自动将服务器端的编译产物传输至本地工程目录。
说明: 为提升传输速率,远程传输文件至本地采取先压缩编译产物为tar.gz压缩包,再传输单个压缩包文件,传输到本地后,再执行解压的操作。解压完成后会自动删除服务器和本地的tar.gz压缩包。如果编译产物(即output文件夹)下文件或者文件夹过多,会影响压缩和解压时间,造成传输时间过长。
服务器端的编译产物传输至本地后,可正常在本地使用调试、烧录等功能。
断开服务器¶
点击“远程开发工具”后弹出的“断开服务器”选项框,会断开与服务器的连接。
串口控制台工具¶
本章节主要介绍HiSpark Studio for VS Code插件中关于串口操作的工具监视器(Monitor)。主要功能包括显示串口列表、连接串口、断开串口连接、接收串口消息、给串口发送消息、清空串口输出区、开启\关闭屏幕自动滚动等。
说明: 串口工具以“\r\n“作为每行的分隔符,所以要求被打印的每行字符串都要以“\r\n“结尾,否则可能会出现程序结尾打印丢失的情况。
打开监视器
连接串口
查看消息
发送消息
断开连接
扩展工具使用
打开监视器¶
运行HiSpark Studio for VS Code插件后打开VS Code终端,找到终端区域、切换到“监视器”选项卡,如图1所示。
①:串口配置区
端口:显示当前电脑所连接的串口设备,单击“
”按钮刷新串口列表。波特率:选择串口波特率,范围:300~250000。
行尾:当给串口发送消息时,工具会根据此选项自动添加字符。
CRLF代表“\r\n”。
CR代表“\r”。
LF代表“\n”。
②:功能按钮区
:连接串口按钮。当连接串口后,按钮状态会变成
,单击此按钮会断开串口连接。
:时间戳按钮。开启时会在每行输出前加上时间戳显示,如果按钮处于关闭状态则不显示时间戳,如图3所示。
:隐藏输入框,隐藏/显示输入框界面如图4、图5所示。
:开启/关闭屏幕自动滚动。
:清空输出区。
:最大化面板。
:关闭面板。③:输出区。
④:输入区。
⑤:发送消息按钮,单击按钮或按回车键向串口发送输入区信息,默认编码为UTF-8。
连接串口¶
单击“
”即可连接串口。连接串口前,输入区默认处于未激活状态(不可输入、不可点击);连接串口后,输入区变为激活状态,串口配置区的监视模式选项变为未激活状态。
查看消息¶
在输出区可以查看串口发送的消息。
发送消息¶
在下方输入区输入消息后单击发送按钮或者单击键盘回车按钮发送消息。
断开连接¶
单击“
”按钮断开串口连接。
扩展工具使用¶
扩展工具主要用于添加用户常用的命令,添加后点击名称即可发送命令。扩展工具在出厂时预置了一些常用命令,如果用户用不到这些命令,可以选择清空表格,然后手动添加所需命令,或通过Excel表格导入方式进行添加。除此之外,扩展工具还有循环发送功能,在后面章节中会详细介绍。
打开扩展工具。单击扩展按钮,会在右侧展开扩展页面。
单击此按钮可最大化面板。
单击清空列表按钮可清空列表。
如果清空出厂表格后需要恢复,可导入安装目录下“C:\Users\用户xxx\.vscode\extensions\hispark.hisparkstudio-x.x.x\dist\resources\terminal\resources\excelFile”中的“rawData.xlsx”表格。
手动新增命令行。单击“增加一行”按钮。
添加数据规则:
数据格式:下拉框模式,下拉选项有utf8、bin、hex。
命令:发送给串口的命令字符串。
名称:识别命令功能的字符串。单击此按钮可立即发送命令给串口(前提是工具处于监测状态)。
顺序:在使用循环发送功能时,顺序大于0,才会进行循环发送。如果有多个命令的顺序大于0,并且数值一样,则按照由上到下的顺序发送。
延时发送:先发送一次,再进行延时,单位:ms。
操作:有编辑和删除两个选项,单击编辑可对命令行进行修改,单击删除可删除命令行。
批量添加命令。
循环发送。
Kconfig配置¶
本功能主要用于控制工程的编译构建,支持通过图形化界面管理编译配置。
打开工程后,单击工具栏中的系统配置“
”按钮,如图1所示。
系统配置界面如图2所示。
按钮功能介绍
按钮功能介绍¶
系统配置界面按钮功能如下:
① save:配置文件默认保存至`${menu_config_build_target}`下。
② save as:自定义保存路径,默认配置文件名 `${menu_config_build_target}`.config。
③ save(minimal):自定义保存路径和配置文件名称,且只保存修改过的配置项。
④ open:自定义加载配置文件。
⑤ jump to:配置项搜索。
⑥ show name:显示列名(Option-Name)。
⑦ show all:显示隐藏配置项。
⑧ Single-menu mode:单个菜单模式。
说明: Linux/WSL环境下没有图形化界面,操作界面显示为命令行模式。
GUI工程创建与使用¶
本章节内容较多,已拆分为独立文档,详见 GUI指南。
高阶分析功能使用¶
功能
功能演示
功能¶
FBB系列工程支持高阶分析功能,具体如下:
支持内存统计功能,可显示每个目录每个文件的具体内存信息,且支持按内存区域以及符号类型筛选。
支持将当前内存统计保存为基线版本,支持将当前内存统计与基线版本做比较。
支持将内存统计导出为JSON/HTML文件,可在设置里配置“导出格式”以及“导出路径”。
支持解析CPU Trace日志。
支持解析CPU Trace二进制文件。
支持解析malloc trace日志(支持BS20、BS20C、BS21、BS21A、BS21E、BS22、BS25和BS26系列芯片)。
支持解析IRQ Trace日志。
功能演示¶
内存统计功能
基线对比功能
CPU Trace 日志解析功能
CPU Trace 二进制文件解析功能
堆内存占用情况统计(BS2X和BS25系列芯片适用)
锁中断时间统计以及中断函数执行时间统计维测
Ko文件解析
Bootimg文件解析
内存统计功能¶
FBB系列工程经过编译生成output目录后,单击右下角Analysis按钮,在弹出的菜单栏中选择内存统计(有时此窗口弹出较慢,请耐心等待),如图1所示。
选择对应的target即可统计内存,内存统计界面如图2所示。
基线对比功能¶
可快速对比更改代码前后的内存占用情况:
CPU Trace 日志解析功能¶
芯片死机时通常会通过串口打印出死机日志,其中包含cpu_trace信息(即死机前一段时间的函数调用链)。
按照“内存统计功能”中的步骤,单击右下角cfbb按钮,在弹出的菜单栏中选择CPU Trace,选择对应的target,将死机时打印的cpu_trace日志复制到文本框,再单击Trace按钮即可,如图1所示。
CPU Trace 二进制文件解析功能¶
此功能可以解析保存在芯片Flash中的CPU Trace二进制文件,主要用于定位芯片死机问题。
单击右下角Analysis按钮。
在弹出的菜单栏中选择CPU Trace bin,如图所示。
在弹出的界面中按照提示选择需要解析的CPU Trace bin文件、编译工具链中的nm文件、编译生成的elf文件以及芯片的CPU频率,如图所示。
设置完成后单击解析按钮进行二进制解析,解析完成后会在IDE界面显示解析结果,并自动将解析结果以txt格式保存至与CPU Trace二进制文件相同的目录中,如图所示。
堆内存占用情况统计(BS2X和BS25系列芯片适用)¶
此功能可以解析堆内存维测日志,快速分析出堆内存的占用情况。
锁中断时间统计以及中断函数执行时间统计维测¶
要打开锁中断维测,需要在SDK根目录的“kernel/osal_adapter/CMakeLists.txt”文件的图示位置添加“set(PUBLIC_DEFINESOSAL_IRQ_RECORD_INTTER OSAL_IRQ_RECORD_DEBUG) ”, 注意:需要rebuild。
调用“osal_irq_record_flag_set()”接口即可使能/失能锁中断维测,其参数为0~3,参数说明如下:
0:失能中断维测;
1:使能锁中断时间统计维测;
2:使能中断函数执行时间统计维测;
3:使能锁中断和中断函数执行时间统计维测。
调用“osal_print_irq_record()”接口即可打印出记录的维测信息,其参数为空。
单击右下角cfbb按钮。
在弹出的菜单栏中选择Irq Trace。
选择对应的target。
将维测日志复制到文本框,单击“Trace”按钮即可。
Ko文件解析¶
Bootimg文件解析¶
常见错误¶
SDK根目录路径过长
路径失效
编译报错“Kconfig header saved to XXX”
Kconfig Jump to弹框中搜索报错"NameError: name 're' is not defined"
编译报错“Invalid argument”
工程编译慢的问题
SDK根目录路径过长¶
SDK根目录路径过长:
Windows 10和Windows 11下路径有260Byte的长度限制,过长的路径会导致编译时相关文件无法找到,或者编译时一直循环某些打印信息而不执行具体的编译内容,建议将SDK代码放到盘符的根目录或缩短SDK存放路径。
路径失效¶
导入工程路径问题导致的调试、栈分析、镜像分析等默认路径失效。
编译报错“Kconfig header saved to XXX”¶
如果编译报错“Kconfig header saved to XXX”,并且在SDK根目录下的build.log文件中搜索“error”有类似于“FAILED:xxx.c ccache”的字段。
可以尝试在下载工具链的目录下的tools/cfbb/thirdparty/ccache目录下执行“ccache.exe -s”指令清除缓存即可。
Kconfig Jump to弹框中搜索报错"NameError: name 're' is not defined"¶
编译报错“Invalid argument”¶
编译过程中如果报错“Invalid argument”。
图 1 ws63编译报错“Invalid argument”

报错原因:解析elf时由于没有管理员权限导致失败。解决方法:用管理员权限打开VS Code再次进行编译。
工程编译慢的问题¶
可能原因一:Microsoft PC Manager Service的CPU占用率过高导致,可以结束或者禁用这个进程,加快工程编译速度。
图 1 禁用Microsoft PC Manager Service服务

可能原因二:进程Antimalware Service Executable的CPU占用率较高,而且无法关闭。Antimalware Service Executable是一个Windows安全进程,它执行针对恶意软件的实时保护。其在后台运行,因此会不时地检测文件和程序。当它检测到病毒或其他恶意攻击时,它会删除或隔离它们。在工程编译时,其也会扫描整个工程目录,导致CPU占用率过高。因此,只要不让其扫描工程目录即可降低其CPU占用率,加快编译速度。解决方法如下:
打开Windows安全中心,单击“威胁和病毒防护”。
打开“病毒威胁和防护设置”的“管理设置”,下滑找到“排除项”,单击“添加或删除排除项”。
在“排除项”中添加要编译的工程目录。
可能原因三:VS Code在效率模式下,可以关闭效率模式,提升编译速度。














































































































































