前 言¶
本文档主要描述HiSpark Studio工具的安装及使用,该工具主要是用于代码的编辑、编译、镜像烧写。
本文档主要适用于基于海思芯片进行嵌入式开发的相关人员:
技术支持工程师
软件开发工程师
硬件开发工程师
嵌入式爱好者
在本文中可能出现下列标志,它们所代表的含义如下。
工具简介¶
HiSpark Studio面向智能设备开发者提供一站式集成开发环境,支持代码编辑、编译、烧录和调试等功能,支持C/C++语言,支持64位Windows10和Windows11操作系统,包含以下主要功能:
支持代码查找、代码高亮、代码自动补齐、代码输入提示、代码检查等,开发者可以轻松、高效编码。
支持单步调试和查看内存、变量、调用栈、寄存器、汇编等调试信息。
支持自动检测各芯片/开发板依赖的工具链是否完备,并提供一键下载和安装缺失工具链。
HiSpark Studio工具主要分为以下7个功能区域,如图1所示。
① 菜单栏:提供文件、编辑、视图、调试、工程等菜单选项。
② 工具栏:提供常用功能按钮。新建工程、打开工程、清除、编译、烧录、MCU配置、变量监控等功能。
③ 侧边栏:提供打开工程区、设置、搜索和调试功能。
④ 工程区:展示侧边栏中的具体功能,如资源管理器、搜索、调试等。
⑤ 代码编辑区:提供代码的查看、编写、跳转、高亮等功能。
⑥ 输出控制台:提供操作日志的打印、调试命令的输入及命令行工具等功能。
⑦ 状态栏:显示当前文件的编码格式、行数、列数等信息。
HiSpark Studio工具当前支持的芯片和对应特性如表1所示。
表 1 HiSpark Studio工具支持的芯片及其特性
HiSpark Studio工具版本与SDK版本的对应关系如表2所示。
表 2 HiSpark Studio工具版本与SDK版本对应表
![]()
HiSpark Studio欢迎界面中提供了生态社区的多个网址,用户可直接点击访问:
海思官方网站:https://www.hisilicon.com/cn
海思技术论坛:https://developers.hisilicon.com/forum/0101108112079179002/
Visual Studio Code插件市场:https://marketplace.visualstudio.com/
开发环境搭建¶
概述¶
当前版本仅支持Windows10和Windows11系统,本章节主要介绍Windows10和Windows11上的开发环境搭建。
安装要求¶
操作系统要求:支持64位Windows10或64位Windows11。
硬盘要求:至少有900MB的硬盘空间来安装HiSpark Studio。
内存要求:HiSpark Studio最低要求为1GB RAM,建议至少有4GB RAM来安装运行HiSpark Studio。
CPU:HiSpark Studio最低要求为1.6GHz或者更高的处理器。
C盘空间要求:HiSpark Studio默认会在用户的C盘文件夹中创建一个“HiSpark Studio”的缓存目录,用于存储用户的设置、插件等缓存,建议至少有1GB的C盘剩余空间。
安装HiSpark Studio¶
获取HiSpark Studio安装包。
安装包为一个可执行文件,如图1所示。
安装程序。
鼠标双击“HiSparkStudioSetup.exe”打开安装包,出现安装向导初始界面,如图2所示。选中“我同意此协议(A)”,并单击“下一步(N)”。
安装HiSpark Studio时,弹出窗口中的版本号应与HiSpark Studio安装包版本号保持一致,图2中1.0.0.1的版本号仅为举例说明。 新版本HiSpark Studio(1.0.0.12、25.09.1、25.12.1这三个版本)安装后不会卸载旧版本,只有安装相同版本时才会卸载已安装的同版本IDE,一台PC可同时安装多个IDE。如需卸载旧版本IDE,可双击IDE安装目录下的unins000.exe手动卸载。
一台PC中安装多个版本的IDE,通过右键任务栏中的IDE图标打开新窗口时,新窗口的版本号可能与当前已打开的IDE版本不一致。

由于微软和程序安装的限制,任务栏中的图标右键打开的窗口,默认为“C:\ProgramData\Microsoft\Windows\Start Menu\Programs”这个“程序”菜单下第一顺位的IDE,以下图为例,系统中同时安装26.03.1和25.12.1版本的IDE,但是25.12.1版本顺序靠前,所以,即使已打开26.03.1版本的IDE,并在26.03.1版本的基础上右键任务栏的图标,显示的新窗口也为25.12.1版本。

遇到上述情况,用户可通过各自的快捷方式或者在新开的界面中点击菜单栏中“文件”选项中的“新建窗口”功能打开所需的版本。
选择安装路径。
单击“浏览”,选择安装路径后,单击“下一步(N)”。
安装路径必须是英文路径。
选择附加任务,建议全部勾选,并单击“下一步(N)”。
准备安装。
确认安装信息无误,单击“安装(I)”。
等待安装。
等待安装执行。
在安装的过程中,如果想停止安装,单击“取消”按钮。
安装完成。
工程管理¶
新建工程¶
打开HiSpark Studio工具,进入欢迎页面,单击“新建工程”,进入新建工程页面。
在图2界面配置工程参数,单击“完成”。
查看工程创建结果。
HiSpark Studio会自动打开新创建的工程,并在欢迎界面工程列表中显示创建的工程,如图3所示。
![]()
3071工程需要用户手动配置arm-gnu-toolchain的编译器环境,用户可参考https://developer.arm.com/-/media/Files/downloads/gnu/14.2.rel1/binrel/arm-gnu-toolchain-14.2.rel1-mingw-w64-i686-arm-none-eabi.zip下载14.2版本的gcc并添加到环境变量中,关闭所有IDE窗口后再次创建3071工程。
导入工程¶
打开HiSpark Studio工具,进入到欢迎页面,单击“导入工程”,进入导入工程页面。
选择导入的路径,即可查找该路径下所有的工程,勾选需要导入的工程,单击“完成”。
导入工程完成后,会在工程区展示出工程的文件夹,并在欢迎界面的工程列表中展示所导入的工程。
![]()
多核工程的导入请参考打开多工程工作区章节。
打开工程¶
创建多工程工作台¶
HiSpark Studio支持创建MCU多工程工作台,并且支持设置活动工程,且编译、调试等功能与活动工程相匹配,也就是即一个HiSpark Studio窗口可以对多个工程分别进行编译、调试。
将工程文件夹添加到多工程工作区(需提前准备好MCU的工程文件夹)。
单击工程菜单下的“将工程文件夹添加到多工程工作区...”,如图1所示。
单击后弹出文件夹选择框,选择已创建好的MCU工程文件夹(可选择一个或多个),单击“添加(A)”,如图2所示。
添加完成后,在资源管理器视图中显示添加的多个工程文件夹,会默认将第一个工程文件夹设置为活动工程,并且工程文件会加粗且字号变大,如图3所示。
保存多工程文件,单击工程菜单下的“将多工程工作区另存为...”按钮,可以将多工程文件保存为.himpw文件,如图4所示。
设置活动工程,在资源管理器中,选择工程文件夹,单击鼠标右键,选择“设为活动工程”,将选中的工程设置为活动工程,如图5所示。
首次打开多工程文件夹会默认将第一个工程文件夹设置为活动工程。
设置为活动工程后,对应的工程文件夹的字号会变大且加粗,以区别于其他工程。
设为活动工程后,编译、重编译、清除、烧录、调试、栈分析、镜像分析、芯片配置器以及工程配置功能均针对活动工程。
多工程工作区在使用芯片配置器和工程配置功能时,需要在设置活动工程之前关闭已打开的芯片配置器和工程配置,以便功能刷新后与新活动工程匹配。
创建多核工程¶
HiSpark Studio支持创建MCU中3066H、3067M系列的多核工程,即3066H和3067M可一次性创建3个工程,分别为CPU0、CPU1和CPU2的工程,三个工程组成一个多工程工作区,即为创建完成的多核工程。
新建工程时选择如3066H系列芯片,工程类型选择“多核工程”,此时“工程名”选项会变为输入“工作区名”、“CPU0名”、“CPU1名”和“CPU2名”。选择工程路径和软件包路径后,点击“完成”即可创建多核工程。
创建完成后会在资源管理器中打开一个工作区,名称为步骤一中输入的“工作区名”,且该工作区会包含三个工程,分别为CPU0、CPU1和CPU2的工程名,且默认CPU0为活动工程,活动工程的使用可参考创建多工程工作台,工程创建后会自动打开芯片配置器生成三个工程的代码。
多核工程支持“全量编译”、“全量编译清除”和“全量烧写”功能,“全量编译”功能可以依次执行CPU0、CPU1和CPU2的编译,“全量编译清除”功能可以依次执行CPU0、CPU1和CPU2的编译清除,“全量烧写”功能可以依次执行CPU2、CPU1和CPU0的烧录。可以点击菜单栏中的“工程”按钮或者在资源管理器界面右键选择“全量编译”和“全量编译清除”功能。
打开多工程工作区¶
单击菜单栏中的“工程”菜单,选择“从文件打开多工程工作区...”选项,如图1所示。
在弹出的文件选择框中选择创建多核工程时生成的.himpw文件,即可打开对应的多工程工作区,如图2所示。
![]()
多工程工作区的创建与保存方法请参见“创建多工程工作台”章节。
工程配置¶
工程配置主要用于配置工程的基本信息、编译、调试、烧录等工程配置项,单击“
”按钮可以打开工程配置界面,如图1所示。
基本信息配置¶
单击工程配置界面左侧“基本信息”页签进入基本信息配置界面,如图1所示。该界面包含工程芯片系列、开发板型号、软件包路径,可以修改工程所对应的软件包路径。
编译器配置¶
单击工程配置界面左侧“编译器”页签进入编译器配置界面,如图1、图2、图3、图4所示,该界面可配置工程使用的编译工具链、编译类型、编译选项、编译指令、编译结果文件路径以及静态库等配置。
编译链:编译所使用的工具链。
手动选择工具链:若不想使用工具自带的工具链,可以手动选择本地已安装的其他版本工具链(路径不能包含中文和空格)。
指定链接器使用工具链中的C库:指定链接器使用工具链中的C库。
指定编译器使用工具链中的C库:指定编译器使用工具链中的C库。
编译类型:分debug和release。
debug会生成调试符号表打包到镜像中,方便调试。
release不会生成调试符号表,减少镜像大小,用于生产。
浮点常数类型:分float和double。
float可以提高程序的运行速度,但是可能会导致精度损失,因为单精度浮点数只能表示有限的数字范围和精度。
double可以提升浮点运算的计算精度,但是会占用更大的内存空间,也会增加耗时。
生成CRC:用于控制编译时是否会在“target.bin”和“target.hex”末尾插入CRC算法计算的结果。
生成校验和(使用CRC32算法):不在可执行文件中插入CRC算法计算结果,而是将结果保存在同级目录下的“checksum_list.txt”中,并在编译过程中打印出来。
生成符号表文件(target.symbol):可在编译后通过“out/bin”目录下的“target.elf”文件生成“target.symbol”符号表文件,文件位于“out/bin”目录下。
生成allinone.bin:只会出现在306xH系列的MCU上,用于控制编译时是否会生成“allinone.bin”。
生成target.hex:用于控制编译时是否会生成“target.hex”。
为Live Watch解析elf文件:用于控制编译时是否会解析elf中的全局变量,解析的结果会在调试功能的Live Watch中使用。
开启编译问题分析功能:用于控制编译是否开启编译问题分析功能。
为工程分析生成analyzerJson:用于控制编译时是否会静态分析工程,分析的结果会用于栈分析和镜像分析。
镜像填充。
no:无填充。
0:多余空间填0。
1:多余空间填1。
编译优化等级:编译优化选项。
O0:不做优化,源码与二进制代码对应性最好,适合调试场景。
Os:优化空间占用,适合Flash空间小的生产发布场景。
O1~3:优化运行性能,O1、O2、O3优化等级依次增强,适合需提升运行性能的生产发布场景。
开启栈保护功能(会增加内存、闪存的占用)。
告警当错误处理。
隐式函数声明当错误处理。
显示告警信息。
对未使用的函数不告警:忽略声明但未使用的静态函数发出的警告。
对未使用的标签不告警:忽略声明但未使用的标签发出的警告。
对未使用的参数不告警:忽略声明但未使用的参数发出的警告。
对未使用的变量不告警:忽略声明但未使用的变量发出的警告。
对函数缺少原型声明不告警:忽略函数使用前未声明产生的警告。
是否生成静态库:若选中,所选文件会编译生成静态库文件;若不选中,则不会在编译时生成静态库文件。
静态库名
输入静态库的名字,如“demo”,编译之后会在“out\libs”目录下生成“lib_demo_.a”。
静态库源文件
选择想要编译成静态库的文件或者文件夹。
静态库依赖头文件
选择编译静态库需要依赖的头文件,支持文件和文件夹。
外部静态库路径。
配置参与编译的外部静态库文件(不在本工程目录下)。
外部静态库依赖。
配置参与编译的外部静态库依赖头文件(不在本工程目录下)。
全局宏定义。
配置在整个工程中都有效的宏定义。
编译前执行。
自定义1~2条指令,被勾选的指令将在编译前执行。命令中可以使用内置变量:$P(当前工程路径)。
编译后执行。
自定义1~2条指令,被勾选的指令将在编译后执行。命令中可以使用内置变量:$P(当前工程路径)。
修改配置之后会自动保存并生效。文本输入框中的修改会在失焦时自动保存并生效。 3071芯片不支持O3编译优化等级。
调试器配置¶
单击工程配置界面左侧“调试器”页签进入调试器配置界面,如图1所示,该界面支持配置工程调试客户端、调试工具以及调试工具对应的参数。
Elf文件:指定待调试Elf文件路径,用于镜像分析、栈分析、变量监控和调试。
调试客户端:选择调试客户端,默认是gdb。
调试工具:选择调试器。
JLinkScript路径:配置JLink启动脚本,用于连接HiSpark Studio工具和芯片内核。
调试接口:选择调试器的连接模式jtag或swd,默认配置成swd。
调试速率:配置调试器速率,单位:MHz或kHz。
加载超时(秒):调试选择launch模式,会先将镜像加载到MCU中,选择一个加载时间,如果加载超时会自动退出调试。
![]()
使用HiSpark-Link时需要安装HiSpark-Link驱动,详情请参见《HiSpark调试器系列 使用指南》。
使用JLink时需要先安装JLink驱动。
修改配置之后会自动保存并生效。
MCU系列工程支持HiSpark-Trace、HiSpark-Link和JLink调试方式。
3071只支持HiSparkLinkPro调试器。
烧录器配置¶
单击工程配置界面左侧“程序加载”页签进入程序加载配置界面,如图1所示,该界面支持配置烧录传输方式以及传输方式对应的参数。

传输方式:选择数据传输方式。选择不同的传输方式会出现不同的参数配置项。
swd:选择通过swd接口传输。如图2所示。
调试板:选择调试器。默认选择“HiSpark-Trace”,可选“HiSpark-Link”、“HiSparkLinkPro”和“HiSpark-Trace”。
频率:配置调试器速率,单位:MHz或kHz。
jtag:选择通过jtag接口传输。如图3所示。
调试板:选择调试器。默认选择“HiSpark-Trace”,可选“HiSpark-Link”和“HiSpark-Trace”。
频率:配置调试器速率,单位:MHz或kHz。

serial:选择通过串口传输。如图4所示。
端口
波特率

usb:选择通过USB设备完成烧写升级。如图5所示。
i2c:选择通过i2c接口传输。如图7所示。(当前i2c烧写模式仅3071芯片支持)
烧写文件:指定需要烧写的文件。
MCU系列的工程“Bin文件”中为.bin文件,FBB系列的工程为.fwpkg文件。 SWD模式烧写时,3071芯片仅支持HiSparkLinkPro板,其它芯片支持HiSpark-Link和HiSpark-Trace板可选。 切换烧写模式时会自动更新当前模式下适配的默认频率(存在时)、默认烧写文件等内容。 3071选择i2c传输方式时,频率配置单位为kHz。
烧录后复位:烧录完成后,会进行单板软复位。
烧录后校验:烧录后,会将烧录文件进行回读对比,校验文件的完整性。
![]()
使用HiSpark-Link时需要安装HiSpark-Link驱动,具体请参见《HiSpark调试器系列 使用指南》。
MCU系列芯片当前共支持swd、jtag、serial和i2c四种烧录方式;FBB系列芯片除BS20、BS20C、BS21、BS21A、BS21E、BS22、BS25和BS26支持serial和usb两种烧录方式外,其余芯片仅支持serial烧录。
修改配置之后会自动保存并生效。
chipconfig配置¶
本章节主要介绍如何使用ChipConfig插件进行IP配置和代码生成。
功能介绍¶
芯片配置器提供图形化的PIN脚视图、组件视图,支持用户快速完成芯片的PIN脚设置和驱动模块参数设置并自动生成配置代码。
功能入口¶
打开工程后,单击工具栏中的“
”选项,如图1所示。
芯片配置器主界面¶

① 模块列表菜单区:提供了芯片所有可配置模块的列表,可以按字母排序也可按类别排序进行模块名查找。
② 模块视图区:提供了模块的Pin View管脚视图、Code Preview代码预览视图、Component View 组件视图,以图形化的方式实现模块的快速配置。
③ 模块参数区:提供了模块可配置的参数列表和pins列表。
![]()
不是所有驱动模块都存在图形化视图。芯片配置器支持的芯片系列参考表1。
模块列表菜单区详细介绍¶
① 生成代码按钮。
② 模块列表菜单区驱动模块名称搜索框。
③ 模块列表排序方式,“类别” 代表按模块类别分类排序,“A->Z”代表模块名称按字母排序。
④ 模块未使能状态。
⑤ 模块已使能状态。
⑥ 驱动模块配置正确。
模块视图区详细介绍¶
模块视图操作菜单栏¶
:视图缩小操作按钮。
:当前视图缩放比例。
:视图放大操作按钮。
:重置放大比例到百分百。
:展开/折叠模块参数区。
视图切换操作栏¶
:管脚视图。
:代码视图。
:图形化视图。
管脚视图介绍¶
①:鼠标放在管脚上出现的悬浮提示信息,展示当前管脚可配置选项,打勾为配置值,单击“Reset State”可取消当前配置值,“Go to Details”进入该管脚复用的配置界面。
②:灰底白字代表管脚尚未配置。
③:绿色代表管脚已被配置。
④:灰底灰字代表管脚不可配置。
⑤:管脚当前配置值。
⑥:当前模块可配置的功能管脚。
![]()
管脚视图支持通过拖拽的方式查看被遮挡的管脚配置值。
Code Preview代码预览视图介绍¶
可以通过代码视图界面预览芯片配置器生成的所有代码。
①:代码预览源文件切换。
②:自动生成的代码在电脑中的存储路径。
③:最新的代码修改提示,红色代表删除,绿色代表新增。
④ 代码展示区。
Component View图形化视图介绍¶
Component View提供驱动模块参数的图形化配置方式,方便用户理解和快速配置。
Component View中的参数与右侧的参数列表相对应。
图形化视图右侧的参数列表中的参数分为:
Parameters:详细参数配置。
Pins:管脚配置。
![]()
Component View配置内容跟随模块的变化而变化。
驱动模块配置举例(I2C)¶
使能I2C驱动模块¶
①:展开模块列表菜单区。
②:模块开关。
配置驱动模块PIN脚¶
① 在Pin View视图中点击可以配置驱动模块的管脚(例如48号管脚)。
② 选中的“I2C0_SDA”。
配置驱动模块参数¶
在Parameters模块参数区中,完成I2C驱动模块参数配置。
预览I2C驱动模块配置代码¶
在Code Preview视图中预览自动生成的代码。
生成驱动模块的代码¶
① 单击“Generate Code”生成代码。
② 弹出生成代码成功提示框,表示成功生成驱动模块代码。
样例配置举例(仅支持MCU系列芯片)¶
打开样例列表。
在模块列表菜单区中选择“SAMPLE”。
搜索并选择“Motorcontrolsystem”。
支持搜索“Sample”,在搜索框输入“Motor”,表格会过滤出所有类型中带有“Motor”的Sample用例,然后在表格视图中选择“Motorcontrolsystem Sample”。
生成Sample代码。
弹窗提示如下图所示,选择“确认”。
查看Sample的驱动模块配置。
在模块列表菜单区可以看到Motorcontrolsystem Sample自动配置了所依赖的驱动模块。
查看Sample自动生成的代码。
在模块视图区选择代码视图查看生成的代码。
Clock配置(仅支持MCU系列芯片)¶
展开“系统核心”,单击“CLOCK”进入时钟控制器页面。
① 工具栏:
:调整缩放比例;
:重置图片初始位置和大小;
:恢复时钟设置到上一次生成代码时的状态。
②
:可以修改的时钟值。
③
:固定的时钟值,不能被主动修改。
④
:选择输入的时钟源。
⑤ PLL时钟源,其中
、
、
表示分频的系数,其余表示计算的时钟结果。
⑥
警告:红色数字表示配置的时钟频率超过了MCU运行的范围,需要用户主动修改。
![]()
当Clock页面有警告存在时,用户无法生成代码。单击生成代码会出现如下图提示:
提示原因:红色数字表示该频率超出正常范围,需要用户主动将其修改至正常范围内。
LDS配置(仅支持MCU系列芯片)¶
展开“系统核心”,单击“LDS”进入LDS配置页面。
①:LDS菜单项。
②:LDS组件视图,展示当前MCU的内存分区视图。包括分区数量、分区命名、分区大小、起始地址、结束地址,总空间大小和剩余空间大小。用户可以修改分区的空间大小,生成“flash.lds”文件。
③:LDS配置信息。
APT主从配置(仅支持MCU系列芯片)¶
展开“定时器/事件”,单击“APT0”进入APT0配置页面。
①:APT1开关。
②:设定为主配置项。
使能APT1,选择“Synchronous Mode”为Master,将APT1设定为主。
①:APT0开关。
②:设定为从配置项。
③:从APT1配置项。
使能APT0,选择“Synchronous Mode”为Slave(设定为从),选择“Synchronous Source Configuration”为APT1。APT0的某些配置项将复用APT1的配置项。
配置主从关系后,在代码预览视图中可以查看对应生成的代码。
配置主从关系后,复用项与主APT配置相同,不允许用户修改,仅显示。不被复用项,允许用户修改,可与主APT配置项不同。
中间件配置(仅支持MCU系列芯片)¶
中间件配置的作用是确定中间件代码是以静态库的形式还是以源码的形式放到工程中。默认是以静态库的形式。
需要配置时,展开“配置信息”,单击“MIDDLEWARE”进入配置界面。
进入“MIDDLEWARE 配置信息”界面,勾选列表中的选项后,点击“生成代码”按钮,工程目录中middleware文件夹下就会生成对应的中间件源码文件,如图2所示。
默认不勾选“是否拷贝源码”选项时,点击“生成代码按钮”,工程目录中middleware文件夹下就会生成对应的中间件静态库文件,如图3所示。
多核配置(仅支持3066H和3067M系列芯片)¶
多核工程支持以模块为维度,将生成的代码配置到用户所选的核工程中,具体视图如图1所示。当前模块提供三种配置模式:“仅支持单一核(不可修改)”、“核间互斥”以及“核间共享”。
其中,仅支持单一核且不可修改的模块,如WWDG,界面无法被选用,仅作勾选展示,如图2。
核间互斥的模块,如UART,仅支持勾选其中一个核,且至少勾选一个核,如图3。
核间共享的模块,如ADC,支持同时勾选多个核,如图4。
其中,ADC模块不仅在多核模块分配视图中支持用户选择CPU,其配置界面也可以通过添加“CPU Config”选择框来实现。当用户在“CPU Config”中进行选择时,多核分配视图中对应ADC模块的CPU配置也会同步更新。同时,用户也可以在多核模块分配视图中单独配置ADC模块,两者之间为单向联动关系。如图5。
编译运行¶
编译按钮介绍¶
图1按钮依次是:清除、编译、重编译和停止编译按钮。
:单击触发工程清理,删除编译中间生成的文件。
:单击触发工程编译。
:单击触发先清理再编译。
:单击触发停止编译。
编译结果¶
单击“
”按钮开始编译,编译成功后终端窗口输出如图1所示,且工程目录中生成out目录如图2所示。
![]()
MCU系列芯片编译成功后,工程目录中生成out目录。
单击
按钮开始清除编译生成的文件,成功后终端窗口输出如图3所示。工程清理会清除工程目录下的out文件夹。

编译生成静态库¶
适用场景:希望将工程中的部分源文件打包生成静态库文件。
进入工程配置页面,找到“是否生成静态库”配置项。
使能“是否生成静态库”选项。如果不想生成静态库,可以通过这个选项再次关闭。
输入希望生成的静态库名,例如输入“demo”,最后生成静态库时会添加“lib”头和“.a”尾,生成“libdemo.a”。
从当前工程文件中选择静态库的源文件所在的文件夹或文件,支持多选,工具会自动筛选出.c文件,选择完毕后单击完成。
从当前工程文件中选择编译静态依赖所需的头文件路径。支持选择文件夹或者文件,支持多选,工具会自动筛选出.h文件,选择完毕后单击完成。
单击“Rebuild”开始编译,编译成功之后在“out\libs”中生成静态库文件。
使用静态库参与编译¶
将out\libs路径下生成的自定义静态库对应的.a文件移至“thirdparty\sysroot\lib”路径下。
不要在out\libs目录下放置.a文件,否则执行clean时会被清除。
将静态库对应的.h文件移至“thirdparty\sysroot\include”路径下。
在工程中包含对应的头文件,即可调用自定义静态库中的接口。
对单个文件或文件夹设置编译选项¶
![]()
“设置独立编译选项”功能仅支持MCU工程。
软件包烧录¶
烧录功能只支持串口烧录。
连接烧录串口线¶
软件镜像烧录,使用串口通信协议,需要将运行HiSpark Studio的电脑和目标板用串口线连接,常见的串口线有标准的串口线和USB转串口线两种。如果使用USB转串口线,需提前安装USB转串口驱动。
配置工程的烧录选项¶
烧录配置¶
本章节主要介绍支持选择性烧录bin文件的方法。使用此功能前如果编译成功则直接从本章节1开始,如果未编译,请参见“编译结果”章节进行编译,然后再根据本章节步骤进行操作。
![]()
烧录配置支持MCU工程,可导入.bin分区文件。
FBB分区文件默认为打包好的.fwpkg文件,或者单击“浏览”按钮从本地文件中选择打包好的.fwpkg文件。选择完成后,烧录工具会自动将.fwpkg文件中包含的bin内容列出。
MCU分区文件默认为打包好的target.bin或者allinone.bin文件,或者单击“浏览”按钮从本地文件中选择打包好的.bin文件。其中target.bin仅包含名为target.bin的一列内容,allinone.bin包含loader.bin和target.bin两列内容。
勾选需要烧录的.bin文件。对于FBB和MCU工程而言,默认会勾选全部.bin文件,包含loader.bin或ssb.bin分区的行不支持编辑。而其它.bin文件可以根据烧写的需求勾选或者取消勾选。同时,MCU在执行swd或者jtag烧录时,不会烧录loader.bin文件,仅做展示用。该特殊处理在分区文件上方也有注释说明。
烧录之前需要配置传输方式及其他参数信息,具体操作请参见“烧录器配置”章节。
单击“烧写”按钮,根据提示重启开发板,即可开始烧录。
开始烧写后,在分区文件下方会显示出烧录进度条,方便查看烧录进度。烧录成功后会在界面显示“successfully”相关字样(不同芯片打印的具体内容会有所差异)。
i2c烧录(仅支持MCU的3071芯片)¶
连接烧录设置¶
软件镜像烧录,使用i2c通信协议,需要将运行HiSpark Studio的电脑和目标板用i2c线连接。连接好调试器与开发板,目前支持的调试器有HiSparkLinkPro。
![]()
HiSparkLinkPro调试器有多个连接口,连接错误会导致烧录失败,注意检查。
配置工程的烧录选项¶
栈分析和镜像分析¶
HiSpark Studio集成了Stack Analysis栈分析工具和Image Analysis镜像分析工具,用于分析开发过程中的内存不足、内存溢出等问题,帮助开发者更加精准地分析定位问题。
Stack Analysis栈分析工具是基于静态二进制分析手段,提供任务栈开销估算值和函数调用关系图示,为栈内存使用、分析、优化和问题定位等开发场景提供较为准确的静态内存分析数据参考。
Image Analysis镜像分析工具对工程构建出的.elf文件进行内存占用分析,支持开发者快速评估内存段、符号表使用情况。
栈分析¶
栈分析工具基于静态二进制分析手段,提供任务栈开销估算值和函数调用关系图示,为栈内存使用、分析、优化和问题定位等开发场景提供较为准确的静态内存分析数据参考。
创建工程并成功编译后,单击工具栏中“
”按钮进行栈分析。
栈分析结果按照函数列表和调用关系进行展示。如图1所示,功能列表页面展示每个函数的名称、内部栈开销和位置信息,其中内部栈开销单位为Byte,支持关键字搜索和排序功能。
调用关系界面如图2所示,显示每个函数的调用关系,包括函数名称、调用深度、函数最大栈开销和内部栈开销,支持关键字搜索和排序功能。
最大开销:为当前函数所有子函数中最大栈开销与循环次数的乘积,再加上自身开销。
计算公式:max(子函数1的自身栈开销,子函数2的自身栈开销,子函数3的自身栈开销,…) × 循环次数+函数的自身栈开销
本地开销:当前函数的自身栈开销。
深度:当前函数每增加一层子函数,深度增加一层。
镜像分析¶
镜像分析工具通过分析.elf文件,图形化展示RAM和ROM的使用情况。对于资源有限的微控制单元(MCU),可以及早发现镜像超出MCU资源限制的情况。对于资源相对宽裕的MCU,方便合理规划镜像大小,提升产品性能。
创建工程并成功编译后,单击工具栏中的“
”按钮。
内存区域页面(如图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。
工程调试¶
调试配置选项¶
![]()
使用调试功能时,编译.elf需要使用O0编译选项,并且需要明确工程中可供用户调试的文件路径。 调试配置选项中的JLinkGDBServerCL驱动需要在JLink官网下载,官网地址: https://www.segger.com/products/debug-probes/j-link/models/j-link-base/
选择要调试的工程:在IDE主界面中,选择要调试的工程,打开“工程配置”。
修改调试选项,选择对应的调试器。具体请参见“调试器配置”章节。
启动调试¶
常用调试功能¶
调试页面¶
调试工作界面如图1所示,主要由以下3个部分组成:
① 调试侧边栏
② 调试功能区
③ 调试控制台
调试侧边栏¶
调试侧边栏集合了调试常用功能,包括变量、监视、调用堆栈、断点、查看外设寄存器、查看内存地址数据、查看反汇编。
调试功能区¶
启动调试功能后,当代码执行到设置的断点时,程序会暂停,可以根据调试功能区的按钮进行代码的调试。
:重启设备。
:继续运行(“F5”),当程序执行到断点时停止执行,单击此按钮程序继续执行。
:切换实时模式,禁用断点功能。
:单步跳过(“F10”),在单步调试时,直接前进到下一行(如果在函数中存在子函数时,不会进入子函数内单步执行,而是将整个子函数当作一步执行)。
:单步执行(“F11”),在单步调试时,遇到子函数后,进入子函数并继续单步执行。
:单步跳出(“Shift+F11”),在单步调试执行到子函数内时,单击单步跳出会执行完子函数剩余部分,并跳出返回到上一层函数。
:重启调试(“Ctrl+Shift+F5”),重新启动调试。
:停止调试(“Shift+F5”),停止调试任务,断开连接。
:内存窗口,查看对应内存地址的值。
调试控制台¶
调试控制台用来输出调试时的打印信息,也可以输入命令与调试器交互。
变量查看
当运行到断点处暂停时,可以在变量界面查看变量的当前值。
支持如下4种变量类型:
局部变量
全局变量(可能会被编译器优化,可以使用关键字volatile来规避此问题。)
静态变量(可能会被编译器优化,可以使用关键字volatile来规避此问题。)
寄存器
监视功能
在调试过程中,可以通过“监视”查看变量(包括局部变量、全局变量以及静态变量)和特定地址的取值来判断程序的运算结果是否有误。
查看调用栈
在调试过程中,可以通过查看调用栈来分析主程序调用的各子程序的调用关系,如下图所示。
管理函数断点
插入函数断点的多种方法如下:
用侧边栏的“断点”功能手动添加函数断点,单击左侧断点一栏右上角的+号,在文本框中输入要设置断点的函数名。
用鼠标单击代码编辑区代码行最左侧的位置(图片中红色圆点处),单击后出现红色圆点表示添加断点成功。
使用快捷键“F9”添加、删除断点。
在断点菜单下使能、去使能、添加和删除断点。
查看反汇编
在调试过程中,通过查看反汇编,可以确认代码的汇编实现,从而快速进行代码检查。在代码界面中单击鼠标右键,选择“打开反汇编视图”功能即可进入代码的汇编视图,如图5所示。也可以在右侧调试窗口的“反汇编”面板中,选择“在反汇编窗口中显示源代码”选项,打开或关闭源代码显示,如图6所示。

----结束
变量跟踪功能¶
单击工具栏中的变量跟踪图标,如图1所示,可以打开VariableTrace工具,用于实时分析和可视化微控制器单板程序数据。在目标板程序运行过程中,变量监控器可对程序的全局和静态变量的数值进行实时读取和修改,可视化变量变化趋势,提高程序开发调试效率。具体请参见《VariableTrace 使用指南》。
![]()
变量跟踪功能仅支持MCU系列工程。
常用调试命令¶
工程启动调试后,在调试控制台(debug console)中输入调试命令。
info files:查看.elf文件内容信息。
断点操作
info b:查看断点信息。
b main:设置停在main函数的断点。
delete breakpoints:删除所有断点。
delete breakpoints id:删除编号为id的断点。
disable/enable breakpoints id:禁用/启用断点。
continue:继续执行到下一个断点,可简写为cont/c。
list:查看代码。
next:单步调试。
bt:列出调用栈。
monitor mdw [addr] :读内存(mdw/mdd/mdh/mdb都是读命令,长度分别为:2Byte(8位)/Byte(4位)/半Byte(2位)/bit(1位))。
monitor mww [addr value] :写内存(mww/mwd/mwh/mwb都是写命令,长度分别为:2Byte(8位)/Byte(4位)/半Byte(2位)/bit(1位))。
p var_:打印变量值。
断点(BREAKPOINTS)¶
插入函数断点有多种方法:
用鼠标单击代码编辑区代码行最左侧的位置。
用侧边栏的“断点”功能手动添加断点函数。
使用快捷键“F9”。
可以在断点菜单下使能、去使能、添加和删除断点。
电机运行时,接入调试器前,请确保目标板程序已开启APT调试保护功能,否则会有硬件损坏的风险。
在代码函数所在行的最左侧,单击鼠标右键选择“添加条件断点”,然后输入断点的条件和进入次数即可,如图2所示。条件断点是指通过某个表达式是否成立作为条件,从而决定自身是否生效的断点,添加表达式如图3所示。
将鼠标放到要打断点的函数,然后单击鼠标右键选择“添加内联断点”,或者使用快捷键“Shift+F9”,如图4所示。内联断点可以精确地将断点打到一个代码语句中的某个代码片段上。
变量(VARIABLES)¶
当运行到断点处暂停时,可以在变量界面查看变量值的变化,如图1所示。

支持4种变量类型:
局部变量。
全局变量(可能会被编译器优化,可以在编码时使用关键字volatile来规避此问题)。
静态变量(可能会被编译器优化,可以在编码时使用关键字volatile来规避此问题)。
RISC-V寄存器。
监视(WATCH)¶
在调试过程中,可以通过“监视”查看变量(包括局部变量、全局变量以及静态变量)的取值来判断程序的运算结果是否有误,从而快速进行代码检查。
同时,也可以通过“监视”功能来监控指定的变量信息,单击
图标来添加变量,如图1所示。
单击变量添加按钮。
输入要监视的变量名。
可以通过右键菜单来添加变量到监视中。
左键选中变量,右键打开菜单。
选择“添加到监视”。
添加变量成功后,在暂停调试的状态下,即可以看到变量的当前值。如图3所示。
性能分析功能¶
添加性能标记起点和终点(当前仅支持一组),可以手动输入或在右键菜单中单击“添加性能分析标记起点”,如图1所示。

单击编译(工程配置要打开livewatch开关和性能分析开关,如图3所示),编译通过后启动调试。
单击调试视图(默认在右侧边栏)下的实时监视Treeview的“打开实时监视窗口”按钮。在弹出的webview中点击性能分析Tab页,如图4所示。
查看性能分析页面的分析结果,如图5所示。
![]()
livewatch等界面会默认隐藏,当启动调试时才会加载。
查看和修改外设寄存器(PERIPHERALS)¶
在调试过程中,可以查看/修改MCU的外设寄存器。
查看外设模块列表¶
MCU外设模块以“外设模块名称 @ 基址”的形式显示。例如:ACMP0 @ 0x18300000。
MCU外设模块名称:按MCU外设模块名称+外设模块索引进行显示。例如:ACMP0表示索引为0的ACMP。
基址:以16进制数的形式表示该外设模块的寄存器基址。
查看外设寄存器¶
单击MCU外设模块的名称,会展开该模块对应的寄存器清单,显示寄存器名称、寄存器偏移地址、寄存器数值。如图1所示。
查看外设寄存器字段列表¶
单击寄存器名称,会展开显示该寄存器对应的字段信息,包括字段名称、位域范围,如图1所示。
查看寄存器字段的详细描述¶
将鼠标悬浮在字段名称上,会显示该字段的详细描述,包括所属寄存器地址、位域范围、读写权限、Reset值和字段描述,如图1所示。读写权限包括Read-Write(默认不显示)、Read-Only和Write-Only。

查看寄存器的最新数值¶
按照以下步骤可以查看寄存器的最新数值:
展开外设模块的寄存器清单。
选择需要查看的寄存器或寄存器字段。
单击刷新按钮。
修改寄存器和字段值¶
单击寄存器或域右侧的笔形图标,可以修改寄存器或域的数值。如图1所示。
![]()
只有可写的寄存器域才能修改生效,包括Read-Write和Write-Only。Write-Only可能观察不到修改结果。
点击“更新值”按钮。
在弹出的输入框中输入要设置的值,按“Enter”确认,按“Esc”取消。
注意事项¶
查看和修改外设寄存器,必须先确认MCU外设模块的时钟已处于使能状态。例如:对于CAN模块,如果未使能时钟就读写CAN寄存器,会导致CPU运行异常。
通过如下两种方式使能外设时钟:
查看调用栈(CALL STACK)¶
在调试暂停时,可以通过查看调用栈来分析主程序调用的各子程序的调用关系,从而快速进行代码检查,如图1所示。
实时监视(Live Watch) 调试功能¶
功能介绍¶
![]()
使用HiSpark-Trace调试器。
监控对象为静态或全局变量。
支持监控静态变量或全局变量,变量数据类型支持char、unsigned char、short、unsigned short、int、unsigned int、long、unsigned long、float、double、long long、unsigned long long、bool、枚举、结构体、联合体、指针、数组、位域等类型。
支持动态刷新变量的数值,刷新频率可配置(Off、1Hz、2Hz或5Hz),以红色字体标识数值的变化。
支持实时修改变量的数值。
支持设置数值的默认显示进制,包含二进制、八进制、十进制、十六进制。
支持对变量进行单独设置数值的显示进制,包含二进制、八进制、十进制、十六进制。
支持变量列表的导入/导出。
实时监视(Live Watch) UI 界面¶
实时监视主界面如图1所示,包含调试命令按钮条、加载变量列表按钮、变量列表区和新增监控变量输入框。

①:调试命令按钮条。
②:加载变量列表按钮。
③:监控变量列表区。
④:新增监控变量输入框。
调试命令按钮可控制目标板程序的启动/停止、复位。
变量表的每一列显示每个变量的相关数据,包括变量名、值、地址和类型:
变量名:变量名,双击该格可实现输入并更改变量名(输入值后,回车确认)。
值:变量的值,双击该格可实现输入并更改变量的值(输入值后,回车确认)。
地址:变量的十六进制地址。
类型:变量的数据类型。
在变量区单击右键,可以触发右键菜单,如图2所示。
删除:删除所选单个变量。
全部删除:删除全部监控的变量。
默认进制设置:设置默认进制(默认为十进制)。
默认进制:以默认进制显示。
二进制:以二进制显示。
八进制:以八进制显示。
十进制:以十进制显示(默认)。
十六进制:以十六进制显示。
刷新率:设置刷新率(默认为2Hz)。
精简模式:启用后变量列表区不显示地址和类型列。
保存到文件:文件另存为(变量列表文件)。
实时监视(Live Watch)的使用¶
启动调试功能后,通过单击“实时监视->打开实时监视窗口”启动实时监视。当出现实时监视界面时,表示启动成功。如图1所示。

在实时监视界面中,单击“点击添加”,输入变量名添加变量,如图2所示。
①:添加父节点时,只输入父节点名(例如structTest),子节点也会出现。
②:添加嵌套子节点时,通过“父节点.子节点”的形式添加(例如unionNumt.strNum)。
③:添加单个变量时(例如intNum)。
支持在代码源文件编辑区界面中,通过鼠标右键菜单的“添加到 Live Watch窗口”添加变量,如图3所示。
①:当光标有框选内容时,将框选内容作为变量名添加到变量列表区。
②:当光标没有框选内容,直接单击鼠标右键添加,会就近自动识别变量名,添加到变量列表区。
实时监视界面会在“值”列显示变量的数值。

当目标板程序运行后,变量的数据在“值”列显示(如图5所示),并以红色字体方式标识数值发生了变化,如图6所示。
在Live Watch界面单击“值”列,修改变量的数值。当输入非法值,会有错误提示,按下回车键会维持旧值。
默认显示进制为十进制,在右键菜单“默认进制设置”的二级菜单(如图8中的①),选择一个进制(如图8中的②),所有未单独设置进制的变量会按新设置的默认进制显示。
右键单击一个变量,在弹出的右键菜单中,选择一个进制(如图9中的②,单击二进制),图9中①的value值位置会切换成设置的进制进行显示。
在变量列表区单击右键菜单,导出变量列表,如图10和图11所示。导出的文件内容包含变量名及其对应的单独进制显示设置。
单击右上角加载图标(Load From File)。
选择要导入的列表文件后,选择打开即可。导入的内容会包含之前导出的变量及其对应的单独进制显示设置。
内存窗口(MEMORY)¶
在调试过程中,通过查看对应的内存地址,获取内存地址中的取值,可以准确分析代码中各变量的取值及存储状态,从而快速进行代码检查。

单击“打开内存窗口”,开启内存窗口界面。
输入寄存器的地址和长度,单击“跳转”即可。
例如,在内存窗口中输入对应的开始地址(如:0x300000)和地址长度(0x128),即可查看对应的内存信息。
内存信息展示如图2所示。
单击
可以设置字节大小、每行分组和字节顺序。字节大小:设置按照 1Byte、2Byte或4Byte读取数据,默认是1Byte。
每行分组:设置每行内存展示的组数,有4组、8组或16组三种展示,默认是16组。
字节顺序:设置字节序为大端还是小端,默认为小端。
需要刷新值的时候,需先暂停程序,然后再次单击“跳转”。
内存断点¶
在内存窗口中,右键数值点击“值读取时中断”、“值更改时中断”、“值访问时中断”可添加此类断点。
反汇编(DISASSEMBLY)¶
在调试过程中,通过查看反汇编,可以确认代码的汇编实现,从而快速进行代码检查。
在代码界面中单击鼠标右键->选择“打开反汇编视图(Open Disassembly View)”功能即可进入代码的汇编视图,如图1所示。
反汇编视图如图2所示。
实时模式¶
启动调试后会出现“开启实时模式”图标(如图1所示),单击该图标则会切换为“关闭实时模式”图标(如图2所示)。在实时模式下调试时,无法添加断点,且调试的暂停运行功能失效。
![]()
打开实时模式前需先清除所有已添加的断点。
HiSparkLinkPro(仅支持3071)¶
如图1、图2所示,创建工程之后,在调试工具的选项框中选择HiSparkLinkPro,然后点击调试按钮启动调试,与JLink的调试方式一致。
串口控制台工具¶
本章节主要介绍HiSpark Studio中关于串口操作的工具监视器(Monitor)。主要功能包括显示串口列表、连接串口、断开串口连接、接收串口消息、给串口发送消息、清空串口输出区、开启/关闭屏幕自动滚动等。
![]()
串口工具以“\r\n”作为每行的分隔符,所以要求被打印的每行字符串都要以“\r\n”结尾,否则可能会出现程序结尾打印丢失的情况。
打开监视器¶
打开HiSpark Studio终端,找到终端区域、切换到“监视器”选项卡,如图1所示。

①:串口配置区
端口:显示当前电脑所连接的串口设备,单击“
”按钮刷新串口列表。波特率:选择串口波特率,范围:300~250000。
行尾:当给串口发送消息时,工具会根据此选项自动添加字符。
CRLF代表“\r\n”。
CR代表“\r”。
LF代表“\n”。
②:功能按钮区
:连接串口按钮。连接串口后,按钮状态会变为
,单击此按钮会断开串口连接。
:时间戳按钮。开启时会在每行输出前加上时间戳显示,如果按钮处于关闭状态则不显示时间戳,如图3所示。
:开启/关闭屏幕自动滚动。
:清空输出区。
:最大化面板。
:关闭面板③:输出区。
④:输入区。
⑤:发送消息按钮,单击该按钮或按回车键即可将输入区内容发送给串口,默认编码为UTF-8。
连接串口¶
单击“
”即可连接串口。连接串口前,输入区默认处于未激活状态(不可输入、不可点击);连接串口后,输入区变为激活状态,串口配置区的监视模式选项变为未激活状态。
查看消息¶
在输出区可以查看串口发送的消息。
发送消息¶
在输入区输入消息后,单击发送按钮或按回车键发送消息。
断开连接¶
单击“
”按钮断开串口连接。
扩展工具使用¶
扩展工具主要用于添加一些用户常用的命令,添加后单击名称即可发送命令。扩展工具在出厂时添加了一些常用命令,如果用户用不到这些命令,可以选择清空表格,然后手动添加所需命令,或通过excel表格导入方式进行添加。除此之外,扩展工具还有循环发送功能,在后面章节中会详细介绍。
打开扩展工具。单击扩展按钮,会在右侧展开扩展页面。
单击此按钮可最大化面板。
单击清空列表按钮可清空列表。
如果清空出厂表格后需要恢复,可导入安装目录下“HiSpark Studio\resources\app\extensions\huawei.cfbbserialcom-x.x.x\resources\excelFile“下的“rawData.xlsx”表格。
手动新增命令行。单击“增加一行”按钮。
添加数据规则:
数据格式:下拉框模式,下拉选项有utf8、bin、hex。
命令:发送给串口的命令字符串。
名称:用于识别命令的字符串。单击此按钮可立即发送命令给串口(前提是工具处于监听状态)。
顺序:在使用循环发送功能时,顺序大于0,才会进行循环发送。如果有多个命令的顺序大于0,并且数值一样,则按照由上到下的顺序发送。
延时发送:先发送一次,再进行延时,单位:ms。
操作:有编辑和删除两个选项,单击编辑可对命令行进行修改,单击删除可删除命令行。
批量添加命令。
循环发送。
AI应用调试指南¶
关于HiSpark Studio AI¶
HiSpark Studio AI是面向开发者提供的超轻量级AI应用开发平台,具备高集成、高专业、高易用等特征,聚焦嵌入式AI应用场景,提供模型压缩、模型转换、应用开发、端侧部署、性能调优的全流程开发平台。
高集成
一站式开发平台,支持模型压缩/转换/推理/部署/调试等功能。
统一的IDE界面和API接口,支持CPU芯片AI应用开发和部署。
高专业
高效的模型压缩,支持ONNX等AI模型。
超轻量的模型部署,支持KB级RAM嵌入式设备。
高易用
支持性能/精度可视化分析,方便调试。
功能介绍
HiSpark Studio AI功能架构如下图所示。具备核心功能有:
导入ONNX等格式的AI模型,初始化开发环境。
通过集成的CPU工具链可以进行模型压缩和转换。
导入SDK并参考Sample进行用户AI应用开发。
编译用户AI应用,烧录到嵌入式设备进行部署。
根据串口日志检测性能精度是否达成目标。

模型与数据获取¶
模型获取。
进行模型量化,请点击Link,下载ONNX模型。
点击Link,下载数据和预处理脚本“preproc_mnist_data.py”。请参考文档,执行该脚本,进行数据获取。请确保文件夹内包含如下数据和文件。
. |-- test_data | `-- npy | `-- sample_00000_7.npy | `-- ...... | `-- sample_09999_6.npy | `-- bin | `-- sample_00000_7.bin | `-- ...... | `-- sample_09999_6.bin | `-- label.csv `-- train_data | `-- bin | `-- sample_00000_5.bin | `-- ...... | `-- sample_59999_8.bin | `-- label.csv
test_data和train_data目录作为数据下载和预处理脚本的输入参数,会根据用户的输入而变化。
1. 工具栏操作¶
点击工具栏中的 HiSpark Studio AI 图标,打开 HiSpark Studio AI 功能面板。面板包含 "Home"(主页)、"Download Toolchain"(下载工具链)、"Offline Install Toolchain"(离线安装工具链)、"Select Local Toolchain"(选择本地工具链)选项,具体操作如下:
图 1 HiSpark Studio AI 图标

1.1 进入 HiSpark Studio AI 主页¶
点击 "Home",将进入 HiSpark Studio AI 的首页。
图 2 HiSpark Studio AI 首页

1.2 下载工具链¶
当PC端可访问外部网络时,可点击 "Download Toolchain" 在线下载工具链。
图 3 HiSpark Studio AI 下载工具链

1.3 离线安装工具链¶
当PC端无法访问外部网络时,可点击 "Offline Install Toolchain",选择已下载好的工具链离线包所在目录进行安装。
图 4 HiSpark Studio AI 离线安装工具链

1.4 选择本地工具链¶
当PC端无法访问外部网络时,可点击 "Select Local Toolchain" 选择本地已安装的工具链。
图 5 HiSpark Studio AI 选择本地工具链

2. 工程构建¶
2.1 新建工程¶
在进入 Home 页面后,点击 “新建工程”,进入新工程的创建页面。
图 1 HiSpark Studio AI 新建工程

在创建新工程的页面中,选择所需的芯片类型,并进行相应的配置。随后,输入新工程的名称,并选择相应的SDK 路径,最后点击 "完成" 按钮进行创建。工程类型支持多核工程和普通工程。
图 2 HiSpark Studio AI 配置工程芯片参数

图 3 HiSpark Studio AI 工程类型展示

图 4 HiSpark Studio AI 工程配置

新建工程导入页面的具体逻辑如下,参数详细配置如表1所示。
选择芯片为3066H下任意芯片,开发板与选择的芯片同名,工程类型选普通工程。
填写项目名称。
配置工程路径以及软件包。工程路径为工程文件的存放路径,可自由选择;一般情况下,软件包配置为已下载的SDK路径。
表 1 新建工程参数配置
![]()
用户需要提前准备3066H SDK解压到指定目录,一级目录包含application、tools等文件夹。
通常情况下,用户将“软件包”和“工程路径”设置为相同路径即可。如果用户有将“.hiproj”等项目文件与SDK文件夹分开放置的需求,可以创建一个新的文件夹,专门用于放置项目文件,并单独配置到“工程路径”中。
2.2 导入现有工程¶
如果用户已经有工程文件,则可以在 “HiSpark Studio AI” 首页页面下点击 “导入工程” 跳转到工程导入页面。 在导入页面中,输入工程所在的路径,选择需要导入的工程后点击 "完成" 按钮。
图 5 HiSpark Studio AI 导入现有工程

2.3 通过历史记录打开工程¶
在 HiSpark Studio AI 插件首页的“工程列表”中,保存着用户曾打开过的工程记录。用户可以直接点击列表中对应工程后的 "打开" 按钮,重新打开历史工程。
图 6 HiSpark Studio AI 打开历史工程

工程列表中各参数的含义如表2所示。
表 2 工程列表参数说明
参数 |
说明 |
|---|---|
Name |
工程名。 |
Path |
工程文件所在路径。 |
Chip |
芯片名。 |
Board |
开发板。 |
Update Time |
最近一次打开工程的时间。 |
Operation |
操作列,包含"Open"和"Delete"两个按钮:点击"Open"打开工程,点击"Delete"删除工程。 |
3. 模型选择¶
3.1 选择模型文件¶
点击 Import Model 之后弹出窗口,点击 Choose files from local 按钮。
图 1 HiSpark Studio AI 准备选择模型

选择本地存放的模型文件。
图 2 HiSpark Studio AI 选择模型文件

3.2 历史模型选择¶
如果当前工程已经执行过模型选择操作,那么在 "History Files"(历史文件)中会显示之前使用的模型列表。用户可以直接点击对应模型后的 “Next” 按钮,继续对模型进行操作。
图 3 HiSpark Studio AI 选择历史模型

4. 量化Quantize¶
完成模型选择后点击 "Next",进入CPU量化界面。
图 1 HiSpark Studio AI 量化

量化参数的配置步骤如下:
在 "Quantized Data Type" 下拉框中选择模型量化的目标类型,目前仅支持int8。
在 "Quant Type" 下拉框中选择 "FULL_QUANT"。
在 "Calibration Inputs" 文件选择框中选择训练数据集目录,即包含.npy文件的文件夹。
(可选)打开 "Validation" 开关。
在 "Validation Inputs" 文件选择框中选择验证集目录,即包含.npy文件的文件夹。
在 "Validation Labels" 下拉框中选择所需 "Outputs" 的 "Name",并在文件选择框中选择验证数据集的标签csv文件。
注:output maxsize为4KB,超出该值会被截断。请合理控制输入长度,以保证输出完整。
图 2 HiSpark Studio AI 量化配置参数

点击 "Quantize" 开始量化,量化成功后在 "Quantization Result History" 列表中显示量化结果。其中,"MSE" 与 "Cosine Similarity" 分别表示均方误差和平均余弦相似度,由原始浮点网络与量化后网络的推理结果计算得出;"Accuracy" 表示分类准确率,使用真值标签计算。
参数解释如表1所示。
表 1 量化参数配置
图 3 HiSpark Studio AI 量化结果

该窗口以表格的方式显示历史量化的结果。表头解释如表2所示。
表 2 历史压缩结果表头说明
若不需要量化,直接点击 "Next without Quantization","Quantization Result History" 列表中同样会生成一条量化记录,页面自动跳转到模型转换页面。
图 4 HiSpark Studio AI 跳过量化

5. 转换Convert¶
在量化界面的历史记录中点击某一条记录后的 "Next" 按钮,进入CPU转换界面,该记录生成的量化指标会自动填入转换参数配置页面。
点击 "Convert" 开始转换,转换完成后生成转换结果及历史记录。
图 1 HiSpark Studio AI 转换

历史记录支持下载和删除操作:点击下载图标可下载转换结果,点击删除图标可删除当前记录。 参数说明如表1所示。
表 1 转换参数配置
图 2 HiSpark Studio AI 下载和删除

该窗口以表格的方式显示历史转换的结果。表头说明如表2所示。
表 2 历史转换结果表头说明
图 3 HiSpark Studio AI 转换柱状图

AI上板存储占比如上图所示,蓝色显示为RAM占用,绿色显示为FLASH占用,各参数显示具体含义如表3所示。
表 3 内存占用分布条形图各项含义
6. Deploy¶
6.1 编译¶
点击 "Build" 按钮开始编译。
图 1 HiSpark Studio AI 编译

编译结果如下图所示。转换步骤生成的micro_gen文件会替换middleware/ai_mcu/adaptor/micro_gen目录下的同名文件,并对每个转换结果进行增量编译。
图 2 HiSpark Studio AI 编译结果

6.2 烧录¶
点击 "Burn" 进入烧录配置:"Burn Port" 选择开发板连接的串口,"Baud Rate" 波特率选择115200,配置完成后点击烧录按钮开始串口烧录。
图 1 HiSpark Studio AI 烧录参数配置

系统弹出如下图所示的烧录界面。
图 2 HiSpark Studio AI 烧录页面

点击烧录按钮开始烧录,默认采用SWD方式烧录。
图 3 HiSpark Studio AI SWD烧录

7. Benchmark¶
7.1 性能验证¶
在Deploy页面点击 "Next" 进入Benchmark页面。选择 "Port" 端口(开发板连接的串口)和波特率 "Baud Rate"(115200),点击 "Performance Evaluation" 按钮开始性能验证。验证过程需要一段时间,期间按钮显示为loading状态;当数据返回、点击 "Abort" 或验证失败时,按钮恢复为可用状态。点击 "Abort" 按钮可终止脚本运行。
图 1 HiSpark Studio AI 性能验证

性能验证参数配置页面的参数解释如表1所示。
表 1 性能验证参数配置
参数 |
说明 |
|---|---|
Port |
单板连接的串口号。 |
Baud Rate |
单板连接的波特率。 |
性能验证完成后显示如下图所示的结果,包括推理时间(INFERENCE TIME)、RAM和FLASH的占用大小。
图 2 HiSpark Studio AI 性能验证结果

性能验证结果页面各参数含义如表2所示。
表 2 性能验证结果
参数 |
说明 |
|---|---|
INFERENCE TIME |
上板AI推理时间。 |
RAM |
上板性能验证的RAM内存消耗。 |
FLASH |
上板性能验证的FLASH内存消耗。 |
Performance Evaluation |
性能验证按钮。 |
7.2 精度验证¶
选择验证集路径;当 "Validation Labels" 选择为非 "none" 时,可上传标签文件路径,如下图所示。点击 "Accuracy Evaluation" 按钮开始精度验证。验证过程需要一段时间,期间按钮显示为loading状态;当数据返回、点击 "Abort" 或验证失败时,按钮恢复为可用状态。点击 "Abort" 按钮可终止脚本运行。
图 3 HiSpark Studio AI 精度验证

精度验证参数配置页面的参数解释如表3所示。
表 3 精度验证参数配置
参数 |
说明 |
|---|---|
Input Node |
上板精度验证输入名称。 |
Path |
上板精度验证输入数据文件夹路径。 |
Validation Labels |
上板精度验证的labels标签。 |
Accuracy Validation |
精度验证按钮。 |
注:output maxsize为4KB,超出该值会被截断。请合理控制输入长度,以保证输出完整。
精度验证完成后显示如下图所示的结果,包括用例数据运行详情统计(Evaluation Data表格)以及余弦相似度概率密度分布直方图(Probability Density Histogram)。
图 4 HiSpark Studio AI 精度验证结果

精度验证结果页面主要分为准确率信息、逐项结果展示、余弦相似度分布直方图三部分,各参数含义如表4所示。
表 4 精度验证结果说明
参数 |
所属部分 |
说明 |
|---|---|---|
ACCURACY |
准确率信息 |
上板精度验证准确率 |
Sample Name |
逐项结果展示 |
样本名称 |
Output Name |
逐项结果展示 |
指标所对应的输出名称 |
Predict |
逐项结果展示 |
上板推理结果 |
Golden |
逐项结果展示 |
标杆推理结果 |
Accuracy |
逐项结果展示 |
样本所对应的准确率信息 |
Cosine Similarity |
逐项结果展示 |
余弦相似度 |
Probability Density Histogram |
余弦相似度分布直方图 |
余弦相似度分布图 |
7.3 结果汇总¶
点击 "Summary of Results" 按钮,弹出当前转换对应的历史性能验证与精度验证记录,如下图所示:
图 5 HiSpark Studio AI 结果汇总

评估结果汇总界面各元素说明如表5所示。
表 5 评估结果界面元素说明
表格支持选中、删除及导出记录操作:右上角第一个按钮 "Delete" 用于删除选中记录,第二个按钮用于将选中记录导出为csv文件。
8. 应用开发¶
在HiSpark Studio AI中完成模型量化、转换之后,将模型导出并使用HiSpark.AI API完成应用开发。具体步骤如下。
在HiSpark Studio AI工程目录middleware/ai_mcu/adaptor/micro_gen下获取转换好的Micro工程文件。
图 1 下载micro工程文件

参考工程目录user/sample_ai/src/路径下的ai_mcu_demo.c示例进行编译,并调用API。
图 2 调用API

具体API的用法请参考文档《HiSpark.AI API开发指南》
常见错误¶
启动HiSpark-TraceFlasher工具提示由于找不到MSVCP140.dll,无法继续执行代码解决方案(仅支持MCU系列芯片)
编译工程时,出现“start parsing target.elf for livewatch.....”之后要等待很久(仅支持MCU系列芯片)
如何解决部分快捷键无效问题¶
在使用IDE的时候发现部分快捷键无效。如图1所示。
检查其他运行的软件快捷键是否设置有冲突,例如查看输入法软件的属性设置,如图2所示。
①:打开“属性设置”。
②:选择“按键”。
③:打开“系统功能快捷键设置”。
在系统功能快捷键中,选择关闭或重置冲突的快捷键。
对单独的C或C++文件使用“生成和调试活动文件”后如何停止调试¶
对单独的c或c++使用“生成和调试活动文件”后,点击调试图标,没有退出调试。
按快捷键F1,在图1所示的输入框中输入“Debug: Stop”,点击搜索到的结果即可退出调试。
路径失效¶
导入工程路径问题导致的调试、栈分析、镜像分析等默认路径失效。
多个.a静态库如何打包成一个.a静态库(仅支持MCU系列芯片)¶
进入到工具链目录,默认路径是在C:\Program Files\HiSpark Studio\tools\Windows\cc_riscv32_musl_fp_win\bin。
将需要合成的.a和libAllInOne.bat 放到工具链目录中,检查目录中不能存在.o文件和多余的.a文件。
双击执行libAllInOne.bat。
按照 bat 中的提示信息完成打包。
![]()
libAllInOne.bat 执行代码可以参考如下代码:
@echo off echo 执行程序会将目录下面的所有.a合并成一个,请按任意键确认是否继续执行 pause for %%i in (*.a) do ( riscv32-linux-musl-ar.exe x %%i ) set /p input=请输入合成.a的名字,必须是以lib开头和.a结尾: for %%i in (*.o) do ( riscv32-linux-musl-ar.exe crs %input% %%i ) echo 生成 %input% 成功 pause
电机算法库的参数检查是否要开启?(仅支持MCU系列芯片)¶
当使用芯片配置器创建默认的 “Blank Main”工程时,会默认使能电机算法库的参数检查功能。
需要使能电机算法库的参数检查功能的场景:需要检查电机算法库函数参数是否有异常的场景(注意这会影响算法性能)。
需要关闭电机算法库的参数检查功能的场景:对算法性能有要求的场景。
断点数量限制统计不到反汇编断点导致断点数量超出限制无法调试(仅支持MCU系列芯片)¶
当所使用的断点包含反汇编断点时,即使达到断点数量限制,仍然可以继续添加断点,然而,当断点数量超过限制后,进行调试会导致异常报错。
断点数量超过限制时,运行调试会有异常弹窗,请单击“确定”按钮退出调试,并在删除部分断点(306xH系列MCU断点数量限制为7个,3061M系列MCU断点数量限制为3个)后再次启动调试。
调试的变量和监视窗口查看大数组变量会加载很久导致无法调试(仅支持MCU系列芯片)¶
调试过程中,如果要使用变量或监视窗口查看大数组变量(数组大小在2000以上),系统会加载很长时间,加载期间无法进行其他调试操作。
系统一直处于加载状态时先单击“停止调试”按钮退出调试,再次启动调试并使用实时监视(Live Watch)来查看大数组变量。
启动VariableTrace失败(仅支持MCU系列芯片)¶
介绍启动变量跟踪功能失败,没有弹出窗口。
方案一:使用独立显卡。
方案二:更新显卡驱动。在Windows10和Windows11版本中,可以通过系统设置来自动更新显卡驱动。
启动HiSpark-TraceFlasher工具提示由于找不到MSVCP140.dll,无法继续执行代码解决方案(仅支持MCU系列芯片)¶
在用户启动HiSpark-TraceFlasher工具时,提示由于找不到MSVCP140.dll,无法继续执行代码,导致无法打开工具。
方法一:找一台其他相同系统和位数的电脑,在C:\Windows\System32(64位:C:\Windows\SysWOW64),将msvcp140.dll拷贝至HiSpark-TraceFlasher工具根目录下(HiSpark-TraceFlasher.exe同级目录),重新启动即可。
方法二:网上下载一个符合电脑系统和位数的msvcp140.dll文件,放在HiSpark-TraceFlasher工具根目录下(HiSpark-TraceFlasher.exe同级目录),重新启动即可。
编译工程时,出现“start parsing target.elf for livewatch.....”之后要等待很久(仅支持MCU系列芯片)¶
编译工程时,出现“start parsing target.elf for livewatch.....”之后要等待很久,才能完成编译。
这个等待时间是在解析elf中的变量。等待时间与工程中定义的变量数量成正相关。
方案一:如果暂时不需要这个功能,可以取消勾选“工程配置”->“为Live Watch解析elf文件”。可以跳过这段流程,加快编译时间。
方案二:如果需要使用这个功能,又想要加快解析时间。对于电脑中没有安装Python的用户,可以下载并安装Python 3.8.8及以上版本后再次尝试编译,可有效加快编译;对于已安装Python的用户,只能使用方案一。
选择MCU的Nos Task Schedule例程,出现红色波浪线告警¶
选择MCU的Nos Task Schedule例程,出现红色波浪线告警。
工具栏中, IDE配置->设置。

在搜索栏中输入“intelli sense mode”。

选择“linux-gcc-arm”,红色波浪线被消除。

菜单栏隐藏后如何再次显示¶
在使用HiSpark Studio过程中,可以通过菜单栏中的“查看”->“外观”中的各种选项来控制某些区域的显示或隐藏,点击“显示菜单栏”选项后,菜单栏会隐藏。
可以通过如下方法重新显示菜单栏:
①:点击窗口右上角的“自定义布局”按钮,在弹出的选项框中,可以选择显示/隐藏菜单栏。
②:将活动栏切换至侧边,当隐藏菜单栏时,左侧活动栏会生成一个新图标,点击即可使用原生菜单栏中的功能,通过“查看”->“外观”->“显示菜单栏”这个选项功能来显示菜单栏。

③:用快捷键Ctrl+Shift+P弹出命令行菜单,输入“Toggle Menu Bar”,点击该选项即可显示/隐藏菜单栏。
HCC工具链下载失败如何手动下载(仅支持MCU系列芯片)¶
工程在编译、镜像/栈分析和调试时出现HCC工具链下载失败的错误提示。
通过链接[https://gitcode.com/HiSpark/fbb_ws63/tree/master/src/tools/bin/compiler/riscv/cc_riscv32_musl_105/cc_riscv32_musl_fp_win]下载HCC工具链压缩包cc_riscv32_musl_fp_win。
将1下载到的“cc_riscv32_musl_fp_win”文件拷贝到IDE安装目录(默认为:C:\Program Files\HiSpark Studio)下的tools\Windows路径中。
如何制作和使用可以运行在SRAM上的静态库(仅支持MCU系列芯片)¶
制作可以运行在SRAM上的静态库的步骤如下:
使用“RAM_CODE”宏定义并声明静态库对外提供的接口。
参考“编译生成静态库”章节的方案制作静态库。
使用可以运行在SRAM上的静态库的步骤如下:
在工程中打开“chipconfig配置”,请参见“功能入口”。
在“LDS配置”中的“RAM Code Path”区域中添加静态库对应的.a文件,请参见“LDS配置(仅支持MCU系列芯片)”。
点击“生成代码”,就可以得到一个让静态库中的“RAM_CODE”接口运行在SRAM上的工程。
不同PC间复制工程后无法打开如何解决¶
解决不同PC间复制工程后无法打开问题的步骤如下:
关闭IDE。
保证目标PC和源PC的SDK路径一致(这里的SDK路径是指被复制的工程对应的SDK路径)。
双击工程目录下的.hiproj文件打开工程,工程正常打开。
launch.json缺失异常弹窗¶
在新建3071工程或者打开工程配置界面时,偶尔会出现如图1所示的异常弹窗,直接单击“取消”即可。实际launch.json已生成在工程文件的.vscode目录下。


















”,进入打开工程页面。



















































































”按钮,进入工程配置界面。

,开始执行烧写。








”按钮,进入工程配置界面的“程序加载”页签,选择传输方式为“swd”或“jtag”并配置其他参数。
”或者“
”按钮,进入工程配置界面的“程序加载”页签,选择传输方式为“i2c”并配置其他参数。
”或者“








”右侧的下拉箭头选择需要的调试模式,如果是多工程场景,需要先配置活动工程,再启动调试。
”。

























































:隐藏输入框,隐藏/显示输入框界面如
















































