前言

概述

本文档主要描述IDE工具的安装及使用,IDE工具使用的是HiSpark Studio,该工具主要是用于代码的编辑、编译、镜像烧写。

读者对象

本文档主要适用于以下工程师:

  • 技术支持工程师

  • 硬件开发工程师

符号约定

在本文中可能出现下列标志,它们所代表的含义如下。

符号

说明

表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。

表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。

表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。

用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。

“须知”不涉及人身伤害。

对正文中重点信息的补充说明。

“说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。

修改记录

文档版本

发布日期

修改说明

01

2025-05-30

第一次正式版本发布。

工具简介

HiSpark Studio面向智能设备开发者提供一站式集成开发环境,支持代码编辑、编译、烧录和调试等功能,支持C/C++语言,支持64位Windows10或Windows11操作系统,具有以下特点:

  • 支持代码查找、代码高亮、代码自动补齐、代码输入提示、代码检查等,开发者可以轻松、高效编码。

  • 支持单步调试和查看内存、变量、调用栈、寄存器、汇编等调试信息。

  • 支持自动检测各芯片/开发板依赖的工具链是否完备,并提供一键下载和安装缺失工具链。

HiSpark Studio工具主要分为以下7个功能区域,如图1所示。

① 菜单栏:提供文件、编辑、视图、调试、工程等菜单选项。

② 工具栏:提供常用功能按钮。新建工程、打开工程、清除、编译、烧录、MCU配置、变量监控等功能。

③ 侧边栏:提供打开工程区、设置、搜索和调试功能。

④ 工程区:展示侧边栏中的具体功能,如资源管理器、搜索、调试等。

⑤ 代码编辑区:提供代码的查看、编写、跳转、高亮等功能。

⑥ 输出控制台:提供操作日志的打印、调试命令的输入及命令行工具等功能。

⑦ 状态栏:显示当前文件的编码格式、行数、列数等信息。

图 1 功能分区图

HiSpark Studio工具当前支持的芯片和对应特性如表1所示。

表 1 HiSpark Studio工具支持的芯片及其特性

芯片系列

芯片名称

工程管理

芯片配置

编译运行

一键烧录

烧录配置

栈分析和镜像分析

MCU

306xH

3065A

3061M

3065P

3066M

Aucu

短距物联

BS21

×

BS25

×

WS53

×

×

×

×

WS63

×

手机穿戴

BRANDY

×

广域物联

NB17

×

NB17E

×

NB18

×

Hi2131

×

Hi2131C

×

芯片系列

芯片名称

工程调试

串口控制台

Kconfig

变量监控

GUI模拟器

CodeSize

DebugKits

MCU

306xH

×

×

×

×

3065A

×

×

×

×

3061M

×

×

×

×

3065P

×

×

×

×

3066M

×

×

×

×

Aucu

×

×

×

×

短距物联

BS21

×

×

BS25

×

×

WS53

×

×

×

×

×

WS63

×

×

手机穿戴

BRANDY

×

×

广域物联

NB17

×

×

×

NB17E

×

×

×

NB18

×

×

×

Hi2131

×

×

Hi2131C

×

×

说明: 芯片系列中,“短距物联”、“手机穿戴”、“广域物联”统一属于FBB系列,文档中FBB系列芯片指代这三个芯片系列。

开发环境搭建

概述

代码编辑、编译、烧录工作全部仅支持Windows10和Windows11版本,本文档主要介绍Windows10和Windows11上的开发环境搭建。

操作系统要求:支持Windows10和Windows11版本。

安装要求

  • 操作系统要求:支持64位Windows10或64位Windows11。

  • 硬盘要求:至少有900MB的硬盘空间来安装HiSpark Studio。

  • 内存要求:HiSpark Stsudio最低要求为1GB RAM,建议至少有4GB RAM来安装运行HiSpark Studio。

  • CPU:HiSpark Studio最低要求为1.6GHz或者更高的处理器。

  • C盘空间要求:HiSpark Studio默认会在用户的C盘文件夹中创建一个“HiSpark Studio”的缓存目录,用于存储用户的设置、插件等缓存,建议至少有1GB的C盘剩余空间。

安装HiSpark Studio

  1. 获取HiSpark Studio安装包。

    安装包为一个可执行文件,如图1所示。

    图 1 HiSparkStudioSetup安装包

  2. 安装程序。

    鼠标双击“HiSparkStudioSetup.exe”打开安装包,出现安装向导初始界面,如图2所示。选中“我同意此协议(A)”,并单击“下一步(N)”。

    图 2 安装HiSpark Studio向导初始界面

    说明: 安装HiSpark Studio时,弹出的窗口中安装版本号应与HiSpark Studio安装版本号保持一致,图2中1.0.0.1的版本号仅为举例说明。

  3. 选择安装路径。

    单击“浏览”,选择安装路径后,单击“下一步(N)”。

    图 3 选择安装路径

    说明: 安装路径必须是英文路径。

  4. 选择附加任务,建议全部勾选,并单击“下一步(N)”。

    图 4 选择附加任务

  5. 准备安装。

    确认安装信息无误,单击“安装(I)”。

    图 5 准备安装

  6. 等待安装。

    等待安装执行。

    图 6 等待文件安装

    图 7 等待插件安装

    说明: 在安装的过程中,如果想停止安装,单击“取消”按钮。

  7. 安装完成。

    图 8 安装完成

配置Python环境

HiSpark Studio在对FBB系列工程进行编译等操作需要依赖Python环境,安装HiSpark Studio时如果出现如图1所示提示,说明本地电脑中未安装Python或者安装的Python版本小于3.11.4,此时单击“确定”会立即打开网页下载Python-3.11.4-amd64.exe安装包,单击“取消”则不会下载Python 3.11.4的安装包。

图 1 安装时python弹框提示

须知: 单击“确认”或者“取消”均不会影响HiSpark Studio的正常安装。但是若不安装Python 3.11.4,可能会影响“编译”和“系统配置”功能的使用。

如果在安装过程中点击了“取消”但是为不影响IDE的使用想再次下载Python 3.11.4并安装,可以通过https://www.python.org/ftp/python/3.11.4/python-3.11.4-amd64.exe(Python官网,下载速度较慢)或者通过https://repo.huaweicloud.com/python/3.11.4/python-3.11.4-amd64.exe(下载安装包后上传至华为云上,下载速度较快)下载Python 3.11.4的安装包。

说明: 在安装Python过程中如果自定义安装需要勾选pip和tcl/tk and IDLE这两个选项。

CMake安装

使用BRANDY工程中的GUI模拟器,需要安装CMake和MinGW。CMake安装过程如下:

如果已经按照“配置Python环境”章节安装Python版本并将Python添加至环境变量中,可以直接下载“cmake-3.20.5-py2.py3-none-win_amd64.whl”文件至任意目录,并且在该目录下打开命令提示符(cmd),执行命令“pip install cmake-3.20.5-py2.py3-none-win_amd64.whl”,下载链接如下:https://files.pythonhosted.org/packages/65/7f/80cf681cd376834b442af8af48e6f17b4197d20b7255aa2f76d8d93a9e44/cmake-3.20.5-py2.py3-none-win_amd64.whl

在Window命令行通过“cmake --version”命令查看cMake是否正确安装,如图1所示。

图 1 查看cMake是否正确安装

如果不安装Python,需要单独下载安装CMake,安装步骤如下:

  1. 进入官网https://cmake.org/download/下载3.16.5以后的安装版本,并将安装目录“\cmake\bin”添加到变量名为Path的用户环境变量,安装目录切勿包含中文路径,否则可能会导致编译失败。

  2. 以3.26.0的CMake为例,双击“cmake-3.26.0-rc1-windows-x86_64.msi”,出现如下界面。

  3. 单击“Next”。

  4. 单击“Next”。

  5. 选择安装路径,并单击“Next”。

  6. 单击“Install”。

  7. 单击“Finish”完成安装。

用户环境变量下会自动添加环境变量。

在Window命令行通过“cmake --version”命令查看环境变量是否添加。

说明: 环境变量添加成功后需要关闭并重新打开HiSpark Studio,否则环境变量无法在HiSpark Studio中生效,模拟器工程无法编译运行。

MinGW安装

使用BRANDY工程中的GUI模拟器,需要安装CMake和MinGW。MinGW安装过程如下:

  1. 下载7.3.0版本的MinGW,下载链接:https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/7.3.0/threads-posix/seh/

    下载得到如下压缩包:

  2. 在文件夹下解压,并将安装路径“/mingw64/bin”添加到系统环境变量,通过“gcc -v”命令查看是否成功安装。安装目录切勿包含中文路径,否则可能会导致编译失败。

工程管理

新建工程

  1. 打开HiSpark Studio工具,进入欢迎页面,单击“新建工程”,进入新建工程页面。

    图 1 HiSpark Studio欢迎页面

  2. 图2界面配置工程参数,单击“完成”。

    图 2 新建工程窗口

    • 芯片:选择工程使用的芯片名称。具体参考“工具简介”中的表1。

    • 开发板:选择工程使用的开发板名称。当用户需要自定义开发板时,这里选择芯片名作为开发板名。

    • 工程类型:选择创建的工程类型。普通工程、空工程和sample工程,空工程当前只支持MCU系列芯片,sample工程当前只支持WS63芯片。

    • 工程名:输入工程名称。

    • 工程路径:选择用于存放工程文件的目录。

    • 软件包:选择工程使用的软件开发驱动包(SDK)文件夹根目录。

    当芯片选择WS63,且工程类型选择“sample工程后”,工程界面会新增“sample”路径和“sample选择”选项,如图3所示。

    图 3 sample工程创建页面

    sample路径可以从本地导入(路径目录下应该包含“build_config.json文件”),或者直接选择一个空文件夹目录,单击下载的图标按钮,会自动将sample文件下载到选择的空文件夹目录中,然后单击sample选择,弹出如图4所示界面。

    图 4 sample选择页面

    选择需要的sample后,关闭sample选择页面,选择的sample选项名会填充到新建工程页面中的“sample选择”中,如图5所示。

    注意: sample在线下载是从通过git clone https://gitee.com/HiSpark/fbb_ws63.git下载,如果没有下载gitee代码的权限,会导致下载时间过长最终失败。

    图 5 sample选择完成后页面

    后续选择合适的工程名、工程路径和WS63的软件包,单击“完成”即可创建工程。

  3. 查看工程创建结果。

    HiSpark Studio会自动打开新创建的工程,并在欢迎界面工程列表中显示创建的工程,如图6所示。

    图 6 工程创建结果页面

导入工程

  1. 打开HiSpark Studio工具,进入到欢迎页面,单击“导入工程”,进入导入工程页面。

    图 1 HiSpark Studio导入工程页面

  2. 选择导入的路径,即可查找该路径下所有的工程,勾选需要导入的工程,单击“完成”。

    图 2 导入工程配置页面

  3. 导入工程完成后,会在工程区展示出工程的文件夹,并在欢迎界面的工程列表中记录所导入的工程。

    图 3 导入工程完成

打开工程

  1. 打开HiSpark Studio工具,进入到欢迎页面,单击“”,进入打开工程页面。

    图 1 单击打开工程

  2. 选择目标工程打开。

    图 2 打开工程的步骤

    ①:选择目标工程所在的路径。

    ②:选择导入类型为“Project Files(*.hiproj)”。

    ③:选择目标文件,例如“demo.hiproj”。

    ④:单击“打开(O)”。

  3. 工作台视图中展示工程下面的文件夹,且在工程列表中出现当前打开的工程,表示打开工程成功。

    图 3 打开工程成功

创建多工程工作台

HiSpark Studio支持创建MCU多工程工作台,并且支持设置活动工程,且编译、调试等功能与活动工程相匹配,也就是一个HISpark Studio窗口可以支持对多个工程分别进行编译、调试等功能。

  1. 将工程文件夹添加到多工程工作区(需提前准备好MCU的工程文件夹)。

    单击工程菜单下的“将工程文件夹添加到多工程工作区...”,如图1所示。

    图 1 将工程文件夹添加到多工程工作区

    选择完后,在弹出的文件夹选择框中,选择已经创建好的MCU工程文件夹,可选择一个或者多个,选择完毕后,单击“添加(A)”,如图2所示。

    图 2 添加MCU工程文件夹到工作区

    添加完成后,在资源管理器视图中显示添加的多个工程文件夹,会默认将第一个工程文件夹设置为活动工程,并且工程文件会加粗且字号变大,如图3所示。

    图 3 打开多工程工作区

  2. 保存多工程文件,单击工程菜单下的“将多工程工作区另存为...”按钮,可以将多工程文件保存为.himpw文件,如图4所示。

    图 4 保存多工程工作区

  3. 设置活动工程,在资源管理其中,选择工程文件夹,单击鼠标右键,再点击“设为活动工程”按钮,将选中的工程设置为活动工程,如图5所示。

    图 5 设置活动工程

    说明:

    • 首次打开多工程文件夹会默认将第一个工程文件夹设置为活动工程。

    • 设置为活动工程后,对应的工程文件夹的字号会变大且加粗区别其他工程。

    • 设为活动工程后,编译、重编译、清除、烧录、调试、栈分析、镜像分析、芯片配置器以及工程配置功能均针对活动工程。

    • 多工程工作区在使用芯片配置器和工程配置功能时,需要在设置活动工程之前关闭已经打开的芯片配置器和工程配置功能,便于功能与活动工程刷新匹配。

工程配置

工程配置主要用于配置工程的基本信息、编译、调试、烧录等工程配置项,单击“”按钮可以打开工程配置界面,如图1所示。

图 1 单击工程配置按钮

基本信息配置

单击工程配置界面左侧“基本信息”页签进入基本信息配置界面,如图1所示。该界面包含工程芯片系列、开发板型号、软件包路径,可以修改工程所对应的软件包路径。

图 1 基本信息配置界面

单击Target选项框下方的 "Target 管理",可进入Target管理界面,如图2所示。

图 2 Target管理界面

图 3 Target添加界面

图 4 Target编辑界面

编译器配置

单击工程配置界面左侧“编译器”页签进入编译器配置界面,如图1图2图3图4所示,该界面可配置工程使用的编译工具链、编译类型、编译选项、编译指令、编译结果文件路径以及静态库等配置。

图 1 编译器配置界面-1

图 2 编译器配置界面-2

图 3 编译器配置界面-3

图 4 编译器配置界面-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”。

  • 为livewatc解析elf文件:用于控制编译时是否会解析elf中的全局变量,解析的结果会在调试功能的Live Watch中使用。

  • 为工程分析生成analyzerJson:用于控制编译时是否会静态的分析工程,分析的结果会用于栈分析和镜像分析。

  • 镜像填充。

    • no

    • 0

    • 1

  • 编译优化等级:编译优化选项。

    • O0:不做优化,源码与二进制代码对应性最好,适合调试场景。

    • Os:优化空间占用,适合Flash空间小的生产发布场景。

    • O1~3:优化运行性能,O1、O2、O3优化等级依次增强,适合需提升运行性能的生产发布场景。

  • 开启栈保护功能(会增加内存、闪存的占用)。

  • 告警当错误处理。

  • 显示告警信息。

    • 对未使用的函数不告警:忽略声明但未使用的静态函数发出的警告。

    • 对未使用的标签不告警:忽略给声明但未使用的标号发出的警告。

    • 对未使用的参数不告警:忽略给声明但未使用的参数发出的警告。

    • 对未使用的变量不告警:忽略给声明但未使用的变量发出的警告。

    • 对函数缺少原型声明不告警:忽略在使用函数前没有声明而发出警告。

  • 是否生成静态库:若选中,选中的文件编译生成静态库文件;若不选中,则不会在编译时生成静态库文件。

    • 静态库名

      输入静态库的名字,如“demo”,编译之后会生成在“out\libs”目录下生成“lib_demo_.a”。

    • 静态库源文件

      选择想要编译成静态库的文件或者文件夹。

    • 静态库依赖头文件

      选择编译静态库需要依赖的头文件,支持文件和文件夹。

  • 外部静态库路径。

    配置不在本工程目录下面的静态库文件参与编译。

  • 外部静态库依赖。

    配置不在本工程目录下面的静态库依赖头参与编译。

  • 全局宏定义。

    配置在整个工程中都有效的宏定义。

  • 编译前执行。

    自定义1~2条指令,被勾选的指令将在编译前执行。命令中可以使用内置变量:$P(当前工程路径)。

  • 编译后执行。

    自定义1~2条指令,被勾选的指令将在编译后执行。命令中可以使用内置变量:$P(当前工程路径)。

    说明: 修改配置之后会自动保存并生效。文本输入框中的修改会在失焦时自动保存并生效。

调试器配置

单击工程配置界面左侧“调试器”页签进入调试器配置界面,如图1所示,该界面支持配置工程调试客户端、调试工具以及调试工具对应的参数。

图 1 调试器配置界面

  • Elf文件:指定待调试Elf文件路径,用于镜像分析、栈分析、变量监控和调试。

  • 调试客户端:选择调试客户端,默认是gdb。

  • 调试工具:选择调试器。

    • HiSpark-Trace:选择HiSpark-Trace调试器。

    • HiSpark-Link:选择HiSpark-Link调试器。

    • JLink:选择JLink调试器。

      当调试器选择JLink时会要求配置JLinkGDBServerCL路径,该路径位于jlink驱动的安装路径下。

      图 2 JLinkGDBServerCL默认路径

  • JlinkScript路径 :配置JLink启动脚本,用于连接HiSpark Studio工具和芯片内核。

  • 调试接口:选择调试器的连接模式jtag或swd,默认配置成swd。

  • 调试速率:配置调试器速率,单位:MHz或kHz。

  • 加载超时(秒):调试选择launch模式,会先将镜像加载到MCU中,选择一个加载时间,如果加载超时会自动退出调试。

说明:

  • 使用HiSpark-Link时需要安装HiSpark-Link驱动,详情请参见《HiSpark调试器系列 使用指南》。

  • 使用JLink时需要先安装JLink驱动。

  • 修改配置之后会自动保存并生效。

  • MCU系列工程支持HiSpark-Trace、HiSpark-Link和JLink调试方式,FBB系列工程仅支持JLink调试。

  • 仅FBB系列工程能够选择JlinkScript路径。

烧录器配置

单击工程配置界面左侧“程序加载”页签进入程序加载配置界面,如图1所示,该界面支持配置烧录传输方式以及传输方式对应的参数。

图 1 程序加载配置界面

  • 传输方式:选择数据传输方式。选择不同的传输方式会出现不同的参数配置项。

    • swd:选择通过swd接口传输。如图2所示。

      • 调试板:选择调试器。默认选择“HiSpark-Trace”,可选“HiSpark-Link”和“HiSpark-Trace”。

      • 频率 :配置调试器速率,单位:MHz或kHz。

      图 2 选择swd配置界面

    • jtag:选择通过jtag接口传输。如图3所示。

      • 调试板:选择调试器。默认选择“HiSpark-Trace”,可选“HiSpark-Link”和“HiSpark-Trace”。

      • 频率 :配置调试器速率,单位:MHz或kHz。

      图 3 选择jtag配置界面

    • serial:选择通过串口传输。如图4所示。

      • 端口

      • 波特率

      图 4 选择serial配置界面

    • usb:选择通过USB设备完成烧写升级。如图5所示。(当前usb模式仅支持BS21和BS25系列芯片。)

      • usb设备列表

        图 5 选择usb配置界面

      • 切换usb模式时,会修改默认Bin文件,且仅支持程序加载,不支持烧录配置。

  • Bin文件:指定需要烧录的文件。

    说明: MCU系列的工程“Bin文件”中为.bin文件,FBB系列的工程为.fwpkg文件。

  • 烧录后复位:烧录完成后,会进行单板软复位。

  • 烧录后校验:烧录后,会将烧录文件进行回读对比,校验文件的完整性。

说明:

  • 使用HiSpark-Link时需要安装HiSpark-Link驱动,具体请参见《HiSpark调试器系列 使用指南》。

  • MCU系列芯片支持swd、jtag和serial三种烧录方式,FBB系列芯片除BS21和BS25支持serial和usb两种烧录方式外,其余芯片仅支持serial烧录。

  • 修改配置之后会自动保存并生效。

设备控制台配置

单击工程配置界面左侧“设备控制台”页签进入设备控制台配置界面,如图1所示。

图 1 设备控制台配置界面

  • 串口

  • 波特率

  • 停止位

  • 奇偶校验位

chipconfig配置

本章节主要介绍如何使用ChipConfig插件进行IP配置和代码生成。

功能介绍

芯片配置器提供图形化的PIN脚视图、组件视图,支持用户快速完成芯片的PIN脚设置和驱动模块参数设置并自动生成配置代码。

功能入口

打开工程后,单击工具栏中的“”选项,如图1所示。

图 1 芯片配置器入口

芯片配置器主界面

图 1 芯片配置器主界面

① 模块列表菜单区:提供了芯片所有可配置模块的列表,可以按字母排序也可按类别排序进行模块名查找。

② 模块视图区:提供了模块的Pin View管脚视图、Code Preview代码预览视图、Component View 组件视图,以图形化的方式实现模块的快速配置。

③ 模块参数区:提供了模块可配置的参数列表和pins列表。

说明: 不是所有驱动模块都存在图形化视图。芯片配置器支持的芯片系列参考表1。

模块列表菜单区详细介绍

图 1 模块列表菜单区

:生成代码按钮。

:模块列表菜单区驱动模块名称搜索框。

:模块列表排序方式,“类别” 代表按模块类别分类排序,“A->Z”代表模块名称按字母排序。

:模块未使能状态。

:模块已使能状态。

:驱动模块配置正确。

模块视图区详细介绍

模块视图操作菜单栏

图 1 模块视图操作菜单栏

  • :视图缩小操作按钮。

  • :当前视图缩放比例。

  • :视图放大操作按钮。

  • :重置放大比例到百分百。

  • :展开/折叠模块参数区。

视图切换操作栏

图 1 视图切换操作栏

  • :管脚视图。

  • :代码视图。

  • :图形化视图。

管脚视图介绍

图 1 管脚视图介绍

:鼠标放在管脚上出现的悬浮提示信息,展示当前管脚可配置选项,打勾为配置值,单击“Reset State”可取消当前配置值,“Go to Details”进入该管脚复用的配置界面。

:灰底白字代表管脚尚未配置。

:绿色代表管脚已被配置。

:灰底灰字代表管脚不可配置。

:管脚当前配置值。

:当前模块可配置的功能管脚。

说明: 管脚视图支持通过拖拽的方式查看被遮挡的管脚配置值。

Code Preview代码预览视图介绍

可以通过代码视图界面预览芯片配置器生成的所有代码。

图 1 Code Preview代码预览视图介绍

:代码预览源文件切换。

:自动生成的代码在电脑中的存储路径。

:最新的代码修改提示,红色代表删除,绿色代表新增。

④ 代码展示区。

Component View图形化视图介绍

Component View提供驱动模块参数的图形化配置方式,方便用户理解和快速配置。

Component View中的参数与右侧的参数列表相对应。

图 1 Component View图形化视图介绍

图形化视图右侧的参数列表中的参数分为:

  • Parameters:详细参数配置。

  • Pins:管脚配置。

说明: Component View配置内容跟随模块的变化而变化。

驱动模块配置举例(I2C)

使能I2C驱动模块

图 1 I2C驱动模块配置界面

:展开模块列表菜单区。

:模块开关。

配置驱动模块PIN脚

图 1 I2C驱动模块PIN脚配置

① 在Pin View视图中点击可以配置驱动模块的管脚(例如48号管脚)。

② 选中的“I2C0_SDA”。

图 2 更换I2C使能PIN脚

配置驱动模块参数

在Parameters模块参数区中,完成I2C驱动模块参数配置。

图 1 I2C驱动模块参数配置

预览I2C驱动模块配置代码

在Code Preview视图中预览自动生成的代码。

图 1 I2C驱动模块代码预览

生成驱动模块的代码

① 单击“Generate Code”生成代码。

② 弹出生成代码成功提示框,表示成功生成驱动模块代码。

样例配置举例(仅支持MCU系列芯片)

  1. 打开样例列表。

    在模块列表菜单区中选择“SAMPLE“。

    图 1 SAMPLE列表

  2. 搜索选择“Motorcontrolsystem"。

    支持搜索“Sample",在搜索框输入“Motor”,表格会过滤出所有类型中带有“Motor”的Sample用例,然后在表格视图中选择“Motorcontrolsystem Sample”。

    图 2 搜索并选择Motorcontrolsystem Sample

  3. 生成Sample代码。

    弹窗提示“将加载Motorcontrolsystem配置,并覆盖当前所有配置(Clock, Pins, Module Settings等),是否确认使用?”,选择“确认”。

    图 3 弹出提示对话框

  4. 查看Sample的驱动模块配置。

    在模块列表菜单区可以看到Motorcontrolsystem Sample自动配置了所依赖的驱动模块。

    图 4 选择Motorcontrolsystem Sample结果

  5. 查看Sample自动生成的代码。

    在模块视图区选择代码视图查看生成的代码。

    图 5 代码预览界面

Clock配置(仅支持MCU系列芯片)

展开“系统核心”,单击“CLOCK”进入时钟控制器页面。

图 1 CLOCK时钟控制器界面

① 工具栏: 是调整缩放比例, 是重置图片初始位置和大小,恢复时钟设置到上一次生成代码的状态。

:可以修改的时钟值。

:固定的时钟值,不能被主动修改。

:选择输入的时钟源。

⑤ PLL时钟源,其中表示分频的系数,其余表示计算的时钟结果。

警告:红色数字表示配置的时钟频率超过了MCU运行的范围,需要用户主动修改。

须知: 当Clock页面有警告存在时,用户无法生成代码。单击生成代码会出现如下图提示: 提示原因:红色数字表示在频率范围内异常,需要用户主动修改在正常范围内。

LDS配置(仅支持MCU系列芯片)

展开“系统核心”,单击“LDS”进入LDS配置页面。

图 1 LDS配置界面

①:LDS菜单项。

②:LDS组件视图,展示当前MCU的内存分区视图。包括分区数量、分区命名、分区大小、起始地址、结束地址,总空间大小和剩余空间大小。用户可以修改分区的空间大小,生成“flash.lds”文件。

③:LDS配置信息。

  • RAM Reserve Data

    定义:固化变量地址。

    用法:使用RESERVED_DATA声明变量,例如,RESERVED_DATA unsigned int g_test1。

    图 2 使能RAM Reserve Data

  • RAM Code

    定义:将代码放到RAM中运行,让系统有更好的实时性。

    用法:选择需要放入RAM中的“.c文件”。

    图 3 使能RAM Code

  • RAM Code Path

    定义 : 选择需要放入RAM中的.c文件。需要勾选RAM Code之后才出现RAM Code Path。

    用法:勾选当前工程目录中的.c文件。

    图 4 选择需要放入RAM中的.c文件

APT主从配置(仅支持MCU系列芯片)

展开“定时器/事件”,单击“APT0”进入APT0配置页面。

图 1 APT主从配置界面

①:APT1开关。

②:设定为主配置项。

使能APT1,选择“Synchronous Mode”为Master,将APT1设定为主。

图 2 APT0设定为从

①:APT0开关。

②:设定为从配置项。

③:从APT1配置项。

使能APT0,选择“Synchronous Mode”为Slave设定为从配置项,选择“Synchronous Source Configuration”为APT1,将APT1设定为主。APT0的某些配置项将复用APT1的配置项。

配置主从关系后,在代码预览视图中可以查看对应生成的代码。

图 3 主从配置代码-1

图 4 主从配置代码-2

配置主从关系后,复用项与主APT配置相同,不允许用户修改,仅显示。不被复用项,允许用户修改,可与主APT配置项不同。

复用配置项如图5图6图7所示。

图 5 复用配置项-1

图 6 复用配置项-2

图 7 复用配置项-3

不被复用配置项如图8图9图10所示。

图 8 不被复用配置项-1

图 9 不被复用配置项-2

图 10 不被复用配置项-3

中间件配置(仅支持MCU系列芯片)

中间件配置的作用是确定中间件代码是以静态库的形式还是以源码的形式放到工程中。默认是以静态库的形式。

需要配置时,展开“配置信息”,单击“MIDDLEWARE”进入配置界面。

图 1 Middleware中间件配置界面

进入“MIDDLEWARE 配置信息”界面,勾选列表中的选项后,点击“生成代码”按钮,工程目录中middleware文件夹下就会生成对应的中间件源码文件,如图_勾选电机控制库中间件所示。

图 2 勾选电机控制库中间件

默认不勾选“是否拷贝源码”选项时,点击“生成代码按钮”,工程目录中middleware文件夹下就会生成对应的中间件静态库文件,如图_默认生成中间件的静态库文件所示。

图 3 默认生成中间件的静态库文件

编译运行

编译按钮介绍

图 1 编译按钮

图1按钮依次是:清除、编译、重编译和停止编译按钮。

  • :单击触发工程清理,删除编译中间生成的文件。

  • :单击触发工程编译。

  • :单击触发先清理再编译。

  • :单击触发停止编译。

编译结果

单击“”按钮开始编译,编译成功后终端窗口输出如图1所示,且工程目录中生成output目录如图2所示。

图 1 编译成功

图 2 编译生成output目录

单击按钮开始清除编程生成的文件,成功后终端窗口输出如图3所示。工程清理会清除工程目录下的output文件夹。

图 3 清除工程编译成功

编译生成静态库

适用场景:希望将工程中的部分原文件打包生成静态库文件。

  1. 进入工程配置页面,到“是否生成静态库”的配置项。

    图 1 静态库配置

    使能是否生成静态库。如果不想生成静态库,可以通过这个选项再次关闭。

  2. 输入希望生成的静态库名,例如输入“demo”,最后生成静态库时会添加“lib”头和“.a”尾,生成“libdemo.a”。

    图 2 输入静态库名字

  3. 从当前工程文件中选择静态库的源文件所在的文件夹或文件,支持多选,工具会自动筛选出.c文件,选择完毕后单击完成。

    图 3 选择要生成静态库的源文件

  4. 从当前工程文件中选择编译静态依赖所需的头文件路径。支持选择文件夹或者文件, 支持多选,工具会自动筛选出.h文件,选择完毕后单击完成。

    图 4 选择要生成静态库的头文件路径

  5. 点击编译“Rebuild”,编译成功之后在 “out\libs”中生成静态库文件。

    图 5 静态库的生成路径

使用静态库参与编译

使用工程中的静态库文件

  1. 将out\libs路径下生成的自定义静态库对应的.a文件移至“thirdparty\sysroot\lib”路径下。

    说明: 不要在out\libs目录下面放入.a ,否则会在clean的时候被清除。

  2. 将静态库对应的.h文件移至“thirdparty\sysroot\include”路径下。

  3. 在工程中包含对应的头文件,即可调用自定义静态库中的接口。

使用工程之外的静态库文件

  1. 在外部静态库路径处选择所引用的外部静态库.a文件的路径,在外部静态库依赖处选择对应静态库所依赖头文件的目录。

    图 1 外部静态库配置项

  2. 选择完毕后单击编译Rebuild,并在工程中包含所引用的静态库所依赖的头文件即可。

对单个文件或文件夹设置编译选项

说明: “设置独立编译选项”功能仅支持MCU工程。

  1. 在资源管理器中对需要设置独立编译选项的.c文件或文件夹右键点击,在右键菜单中点击“设置独立编译选项“。

    图 1 设置独立编译选项入口

  2. 在弹出的界面中进行设置。

    图 2 独立编译参数设置界面

    ①:设置该文件或文件夹是否参与工程的编译。

    ②:编译选项设置。

    ③:恢复默认配置,默认配置来源于上一层文件夹的配置。

  3. 在界面中设置好参数后单击编译或重编译按钮进行编译即可。

软件包烧录

烧录功能只支持串口烧录。

连接烧录串口线

软件镜像烧录,使用串口通信协议,需要将运行HiSpark Studio的电脑和目标板用串口线连接,常见的串口线有标准的串口线和USB转串口线两种。如果使用USB转串口线,需提前安装USB转串口驱动。

图 1 烧录串口连接示意图

配置工程的烧录选项

  1. 配置好硬件环境。

    开发板设置好拨码开关后,请用串口线连接好电脑和待烧录开发板。

  2. 确定所连接的串口号。

    打开电脑的设备管理器,查看并记录串口线对应的串口号。

    图 1 串口选择

    须知: 如果使用USB转串口方式烧录,请安装USB转串口的驱动程序。

  3. 进入工程配置界面。

    打开要烧录的工程后,单击顶部的“”按钮,进入工程配置界面。

    图 2 工程配置入口

  4. 单击“程序加载”中的“传输方式”,默认选择“serial”串口传输,“Bin 文件”中,会默认选择烧录的Bin文件,按步骤2选择端口号,波特率默认115200。

    图 3 串口烧录配置

    须知: MCU系列的工程“Bin文件”中为.bin文件,其他为.fwpkg文件。 FBB系列芯片选择“serial”烧写模式时,由于是USB转串口的方式,硬件设备的差异可能会对芯片支持的烧写波特率有限制,如果想支持更高的波特率,需要改板。其中,Brandy系列芯片烧写波特率限制为不超过500000,BS2X系列芯片的烧写波特率限制为小于2000000。

  5. 单击工具栏中的烧录按钮,开始执行烧写。

    图 4 烧录按钮入口

  6. 按提示复位设备,烧录成功后终端窗口输出如图5所示。

    图 5 烧录成功

烧录配置

本章节主要介绍支持选择性烧录bin文件的方法。使用此功能前如果编译成功则直接从本章节1开始,如果未编译,请参见“编译结果”章节进行编译,然后再根据本章节步骤进行操作。

说明: 烧录配置支持MCU和FBB系列芯片。MCU可以支持导入.bin的分区文件类型,FBB支持导入.fwpkg的分区文件类型。

  1. 单击工具栏中的“程序加载”下拉三角框的“烧录配置”,进入烧录配置界面。

    图 1 烧录配置按钮及界面

  2. FBB分区文件默认为打包好的.fwpkg文件,或者单击“浏览”按钮从本地文件中选择打包好的.fwpkg文件。选择完成后,烧录工具会自动的将.fwpkg文件中包含的bin内容列出。

    图 2 FBB烧录配置分区文件路径

    MCU分区文件默认为打包好的target.bin或者allinone.bin文件,或者单击“浏览”按钮从本地文件中选择打包好的.bin文件。其中target.bin仅包含名为target.bin的一列内容,allinone.bin包含loader.bin和target.bin两列内容。

    图 3 MCU烧录配置分区文件路径

  3. 勾选需要烧录的.bin文件。对于FBB和MCU工程而言,默认会勾选全部.bin文件,且不支持修改表格中包含loader.bin或ssb.bin的分区名属性所在行的编辑状态。而其它.bin文件可以根据烧写的需求勾选或者取消勾选。同时,MCU在执行swd或者jtag烧录时,不会烧录loader.bin文件,仅做展示用。此处特殊处理在分区文件上方也有注释说明。

    图 4 FBB分区文件解析展示

    图 5 MCU分区文件解析展示(以target.bin为例)

  4. 烧录之前需要配置传输方式及其他参数信息,具体操作请参见“烧录器配置”章节。

  5. 单击“烧写”按钮,根据提示重启开发板,即可开始烧录。

    图 6 烧录

  6. 开始烧写后,在分区文件下方会显示出烧录进度条,方便查看烧录进度。烧录成功后会在界面显示“successfully”字样。

    图 7 烧录进度

    图 8 烧写成功终端内容

jtag与swd烧录(仅支持MCU系列芯片)

连接烧录设备

连接好调试器与开发板,目前支持的调试器有HiSpark-Trace和HiSpark-Link两种。

须知: 四合一调试器有多个连接口,连接错误会导致烧录失败,注意检查。

配置工程的烧录选项

  1. 进入工程配置界面。

    打开要烧录的工程后,单击顶部的“”按钮,进入工程配置界面→进入程序加载。选择传输方式为“swd”或者“jtag”并配置其他参数。

  2. 进行烧录器配置设置。

    图 1 烧录选项配置

  3. 单击烧录按钮“”或者“烧录配置”中的烧录按钮,即可开始烧录。

  4. 烧录成功后终端窗口输出如图2所示。

    图 2 烧录成功

栈分析和镜像分析

HiSpark Studio集成了Stack Analysis栈分析工具和Image Analysis镜像分析工具,用于分析开发过程中的内存不足、内存溢出等问题,帮助开发者更加精准的分析定位问题。

  • Stack Analysis栈分析工具是基于静态二进制分析手段,提供任务栈开销估算值和函数调用关系图示,为栈内存使用、分析、优化、问题定位等开发场景提供较为准确的静态内存分析数据参考。

  • Image Analysis镜像分析工具对工程构建出的.elf文件进行内存占用分析,支持开发者快速评估内存段、符号表使用情况。

栈分析

功能介绍

栈分析工具基于静态二进制分析手段,提供任务栈开销估算值和函数调用关系图示,为栈内存使用、分析、优化和问题定位等开发场景提供较为准确的静态内存分析数据参考。

功能入口

创建工程并成功编译后,单击工具栏中“”按钮进行栈分析。

栈分析功能页面

栈分析结果按照函数列表和调用关系进行展示。如图1所示,功能列表页面展示每个函数的名称、内部栈开销和位置信息,其中内部栈开销单位为Byte,支持关键字搜索和排序功能。

图 1 功能列表页面

调用关系界面如图2所示,显示每个函数的调用关系,包括函数名称、调用深度、函数最大栈开销和内部栈开销,支持关键字搜索和排序功能。

图 2 调用图页面

统计项说明

  • 最大开销:为当前函数所有子函数中最大的栈开销与循环调用的次数的乘积再加上自身的开销。

    计算公式: max(子函数1的自身栈开销, 子函数2的自身栈开销,子函数3的自身栈开销,…) × 循环次数+函数的自身栈开销

  • 本地开销:当前函数的自身栈开销。

  • 深度:当前函数每增加一层子函数,深度增加一层。

镜像分析

功能介绍

镜像分析工具通过分析.elf文件,图形化展示RAM和ROM的使用情况。对于资源有限的微控制单元(MCU),可以及早发现镜像超出MCU资源限制。对于资源相对宽裕的MCU,方便合理规划镜像大小,提升产品性能。

功能入口

创建工程并成功编译后,单击工具栏中的“”按钮。

功能界面

内存区域页面(如图1所示)评估分析工程对内存的细分使用情况。例如WS63,显示的内存区域region包含RAM、SRAM、ITCM等,展示的信息包含每个内存区域的名称、起始内存地址、结束内存地址、总大小、空闲大小、已用大小以及使用比例,支持关键字搜索和排序功能,如图1所示。

图 1 内存区域页面

内存详细信息页面(如图2所示)展示每个内存区域包含的内存段section和内存段包含的symbol的详细信息。比如FLASH下面包含.text、.entry、.data等内存段,内存段又包含分配在该段的程序符号,支持关键字搜索和排序功能。

每一行展示的信息包含运行地址VMA(Virtual Memory Address,表示程序装载的内存地址)、装载地址LMA(Load Memory Address,表示程序运行时的内存地址)、内存段/符号的大小。

图 2 内存详细信息页面

文件大小页面(如图3所示)展示每个链接进来的.o文件占用了哪块内存的空间以及占用空间的大小,支持关键字搜索和排序功能。

图 3 文件大小页面

模块大小页面(如图4所示)展示了模块和组件的层级关系以及不同模块的内存占用,支持关键字搜索和排序功能。

图 4 模块大小页面

文件夹大小页面(如图5所示)展示了不同文件夹下面模块的内存占用,支持关键字搜索和排序功能,支持导出excel。

图 5 文件夹大小

工程调试

调试配置选项

说明: 使用调试功能时,编译.elf需要使用O0编译选项,并且需要明确工程中可供用户调试的文件路径。

  1. 选择要调试的工程:在IDE主界面中,选择要调试的工程,打开“工程配置”。

  2. 修改调试选项,选择对应的调试器。具体请参见“调试器配置”章节。

启动调试

  1. 单击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处。

  2. 单击启动调试按钮“”。

  3. 启动调试成功。调试成功示例如下图,若出现下面提示信息与工具栏调试图标,则说明已经进入调试。

常用调试功能

调试页面

调试工作界面如图1所示,主要由以下3个部分组成:

① 调试侧边栏

② 调试功能区

③ 调试控制台

图 1 调试工作界面

调试侧边栏

调试侧边栏集合了调试常用功能,包括变量、监视、调用堆栈、断点、查看外设寄存器、查看内存地址数据、查看反汇编。

调试功能区

启动调试功能后,当代码执行到设置的断点时,程序会暂停,可以根据调试功能区的按钮进行代码的调试。

  • :重启设备。

  • :继续运行(“F5”),当程序执行到断点时停止执行,单击此按钮程序继续执行。

  • :切换实时模式,禁用断点功能。

  • :单步跳过(“F10”),在单步调试时,直接前进到下一行(如果在函数中存在子函数时,不会进入子函数内单步执行,而是将整个子函数当作一步执行)。

  • :单步执行(“F11”),在单步调试时,遇到子函数后,进入子函数并继续单步执行。

  • :单步跳出(“Shift+F11”),在单步调试执行到子函数内时,单击单步跳出会执行完子函数剩余部分,并跳出返回到上一层函数。

  • :重启调试(“Ctrl+Shift+F5”),重新启动调试。

  • :停止调试(“Shift+F5”),停止调试任务,断开连接。

  • :内存窗口,查看对应内存地址的值。

调试控制台

调试控制台用来输出调试时的打印信息,也可以输入命令与调试器交互。

  • 变量查看

    当运行到断点处暂停时,可以在变量界面查看变量值的变化。

    支持如下4种变量类型:

    • 局部变量

    • 全局变量(可能会被编译器优化,可以使用关键字volatile来规避这个问题 。)

    • 静态变量(可能会被编译器优化,可以使用关键字volatile来规避这个问题。 )

    • 寄存器

  • 监视功能

    在调试过程中,可以通过“监视”查看变量(包括局部变量、全局变量以及静态变量)和特定地址的取值来判断程序的计算结果是否有误,从而快速进行代码检查。

  • 查看调用栈

    在调试过程中,可以通过查看调用栈来分析主程序调用的各子程序的调用关系,从而快速进行代码检查,如下图所示。

  • 管理函数断点

    插入函数断点的多种方法如下:

    • 用侧边栏的“断点”功能手动添加断点函数,单击左侧断点一栏右上角的+号,在文本框中输入需要断点的函数。

    • 用鼠标单击代码编辑区代码行最左侧的位置,位置参考图片中红色圆点位置,点击后出现红色圆点表示添加断点成功。

    • 使用快捷键“F9”添加、删除断点。

    • 在断点菜单下使能、去使能、添加和删除断点。

  • 查看反汇编

    在调试过程中,通过查看反汇编,可以确认代码的汇编实现,从而快速进行代码检查。通过鼠标在代码界面中点击右键,选中“打开反汇编视图”功能就可以进入代码的汇编视图,如下图所示。

    ----结束

变量跟踪功能

单击工具栏中的变量跟踪图标,如图1可以打开VariableTrace工具,用于实时分析和可视化微控制器单板程序数据。在目标板程序运行过程中,变量监控器可对程序的全局和静态变量的数值进行实时读取和修改,可视化变量变化趋势,提高程序开发调试效率。具体请参见《VariableTrace 使用指南》。

图 1 变量跟踪功能入口

说明: 变量跟踪功能仅支持MCU系列工程。

常用调试命令

调试命令在工程启动调试后,在调试控制台(debug console)中输入。

  • info files :查看.elf文件内容信息。

    图 1 info files

  • 断点操作

    info b:查看断点信息。

    b main:设置停在main函数的断点。

    delete breakpoints:删除所有断点。

    delete breakpoints id:删除编号为id的断点。

    disable/enable breakpoints id:禁用/启用断点。

    图 2 断点操作

  • continue :继续执行到下一个断点,可简写为cont/c。

  • list :查看代码。

  • next :单步调试。

  • bt:列出调用栈。

    图 3 bt指令执行结果

  • monitor mdw [addr] :读内存(mdw/mdd/mdh/mdb都是读命令,长度分别为:2Byte(8位)/Byte(4位)/半Byte(2位)/bit(1位))。

    图 4 读内存

  • monitor mww [addr value] :写内存(mww/mwd/mwh/mwb都是写命令,长度分别为:2Byte(8位)/Byte(4位)/半Byte(2位)/bit(1位))。

    图 5 写内存

  • p var_:打印变量值。

    图 6 打印变量值

实时监视(Live Watch)调试功能(仅支持MCU系列芯片)

功能介绍

须知:

  • 使用HiSpark-Trace调试器。

  • 静态或全局变量。

  • 支持监控静态变量或全局变量,变量数据类型支持char、unsigned char、short、unsigned short、int、unsigned int、long、unsigned long、float、 double、longlong、unsigned long long、bool、枚举、结构体、联合体、指针、数组、位域等类型。

  • 支持动态刷新变量的数值,刷新频率可配置(Off、1Hz、2Hz或5Hz),以红色字体标识数值的变化。

  • 支持实时修改变量的数值。

  • 支持设置数值的默认显示进制,包含二进制、八进制、十进制、十六进制。

  • 支持对变量进行单独设置数值的显示进制,包含二进制、八进制、十进制、十六进制。

  • 支持变量列表的导入/导出。

实时监视(Live Watch)UI界面

实时监视主界面如图1所示,包含调试命令按钮条、加载变量列表按钮、变量列表区和新增监控变量输入框。

图 1 实时监视UI界面

①:调试命令按钮条。

②:加载变量列表按钮。

③:监控变量列表区。

④:新增监控变量输入框。

调试命令按钮条

调试命令按钮可控制目标板程序的启动/停止、复位。

监控变量列表区

变量表的每一列显示每个变量的相关数据,包括变量名、值、地址和类型:

  • 变量名:变量名,双击该格可实现输入并更改变量名(输入值后,回车确认)。

  • 值:变量的值,双击该格可实现输入并更改变量的值(输入值后,回车确认)。

  • 地址:变量的十六进制地址。

  • 类型:变量的数据类型。

右键菜单

在变量区单击右键,可以触发右键菜单,如图2所示。

图 2 右键菜单

  • 删除 :删除所选单个变量。

  • 全部删除: 删除全部监控的变量。

  • 默认进制设置:默认进制设置(默认设置为十进制)。

  • 默认进制:以默认进制显示。

  • 二进制:以二进制显示。

  • 八进制:以八进制显示。

  • 十进制:以十进制显示(默认)。

  • 十六进制:以十六进制显示。

  • 刷新率:刷新率设置(默认为2Hz)。

  • 精简模式:精简模式(启用后变量列表区不显示地址和类型列)。

  • 保存到文件:文件另存为(变量列表文件)。

实时监视(Live Watch)的使用

启动调试功能后,通过单击“实时监视->打开实时监视窗口”启动实时监视。当出现实时监视界面时表示启动成功,如图1所示。

图 1 实时监视启动步骤

输入框添加变量

在实时监视界面中,单击“点击添加”,输入变量名添加变量,如图2所示。

图 2 变量监视列表

①:添加父节点时,只输入父节点名(例如structTest),子节点也会出现。

②:添加嵌套子节点时,通过“父节点.子节点” 的形式添加(例如unionNumt.strNum)。

③:添加单个变量时(例如intNum)。

右键菜单添加变量Add to Live Watch

支持在代码源文件编辑区界面中,鼠标右键菜单添加变量“添加到Live Watch窗口”,如图3所示。

图 3 右键菜单添加到Live Watch窗口

  • 当光标有框选内容时,添加框选中内容作为变量名添加到变量列表区。

  • 当光标没有框选内容,直接单击鼠标右键添加,会就近自动识别变量名,添加到变量列表区。

查看变量数值

实时监视界面会在“值”列显示变量的数值。

图 4 启动程序以查看变量数值

当目标板程序运行后,变量的数据在“值”列显示(如图5所示),并以红色字体方式标识数值发生了变化(如图6所示)。

图 5 程序已运行并在“值”列显示变量数值

图 6 变量数值发生变化时会变成红色字体

修改变量数值

在Live Watch界面单击“值”列,修改变量的数值。当输入非法值,会有错误提示,按下回车键会维持旧值。

图 7 修改变量数值

设置默认显示进制

默认显示进制为十进制,在右键菜单默认进制设置中的二级菜单(如图8中的①),选择一个进制(如图8中的②),所有未设置过单独进制的变量值会切换成设置默认进制进行显示。

图 8 设置默认显示进制

单独设置变量的显示进制

右键单击一个变量,在弹出的右键菜单中,选择一个进制(如图9中的②,单击二进制),图9中①的value值位置会切换成设置的进制进行显示。

图 9 单独设置变量的显示进制

变量列表的导出(右键)

在变量列表区单击右键菜单,导出变量列表,如图10图11所示。导出的文件内容包含变量名及其对应的单独进制显示设置。

图 10 通过在右键菜单导出变量列表

图 11 保存为csv文件

变量列表的加载

单击右上角加载图标(Load From File),如图12所示。

图 12 单击加载图标

选择要导入的列表文件后,选择打开即可。导入的内容会包含之前导出的变量及其对应的单独进制显示设置。

图 13 选择导入.csv列表文件

性能分析功能(仅支持MCU系列芯片)

  1. 添加性能标记起点和终点(当前仅支持一组),可以手动输入或在右键菜单中单击“添加性能分析标记起点”,如图1所示。

    图 1 添加性能标记起点、终点

    图 2 性能标记代码

  2. 单击编译(工程配置要打开livewatch开关和性能分析开关,如图3所示),编译通过后启动调试。

    图 3 livewatch开关和性能分析

  3. 单击调试视图(默认在右侧边栏)下的实时监视Treeview的“打开实时监视窗口”按钮。在弹出的webview中点击性能分析Tab页,如图4所示。

    图 4 启动性能分析监测

  4. 查看性能分析页面的分析结果,如图5所示。

    图 5 性能分析结果

说明: livewatch等界面会默认隐藏,当启动调试时才会加载。

实时模式(仅支持MCU系列芯片)

启动调试之后会出现开启实时模式图标(如图1所示),单击打开实时模式图标则会切换为关闭实时模式图标(如图2所示)。调试在实时模式下,无法添加断点,且调试的暂停运行功能失效。

图 1 开启实时模式图标位置

图 2 关闭实时模式图标位置

说明: 打开实时模式前需先清除所有已添加的断点。

多核调试模式

单核调试模式

此模式属于调试功能的默认模式,操作方式和功能与上文介绍的调试功能一致。

多工程多核调试模式

用户在此模式下面,需要打开多个工程,并且需要配置需要调试的核的.elf文件路径、调试客户端,对应的调试工具、JLinkGDBServerCL路径、调试接口、调试速率、加载超时(秒)以及JLinkScript路径。

通过在调试器的多核调试选项中选中多工程多核调试模式,然后在对应的配置界面中对elf文件和jlinkscript路径进行配置(如图1所示),然后分别点击对应的调试核的启动模式即可调试(如图2所示)。

图 1 多工程多核调试模式设置

图 2 启动调试

单工程多核调试模式

用户在此模式下面需要配置要调试的各个核的.elf文件路径、调试客户端统一选择gdb,对应的调试工具、JLinkGDBServerCL路径、调试接口、调试速率、加载超时(秒)以及各个核的JLinkScript路径。大部分的配置与单核调试的场景方法一致,新增了.elf文件路径和JLinkScript路径需要用户设置新增的调试目标核的对应信息,当前主要适配的是NB系列芯片和工程。

  1. 在调试器的多核调试选项中选中单工程多核调试模式,如图1所示。

    图 1 设置为单工程多核调试模式

  2. 在.elf文件路径和JLinkScript路径配置项中选中需要调试的目标文件,然后保存配置。

    图 2 选择需调试的目标文件

  3. 通过单击图3所示的Launch和Attach模式启动单工程多核调试。

    图 3 启动单工程多核调试

  4. 启动后在调试窗口中的调用堆栈中显示多个核的调试信息,如图4所示。

    图 4 多核调试信息

HiSparkLinkPro(仅支持WS63和NB18)

图1图2所示,创建工程之后,在调试工具的选项框中选择HiSparkLinkPro,然后点击调试按钮启动调试,与Jlink的调试方式一致。

图 1 选择HiSparkLinkPro

图 2 启动调试

串口控制台工具

本章节主要介绍HiSpark Studio中关于串口操作的工具监视器(Monitor)。主要功能包括显示串口列表、连接串口、断开串口连接、接收串口消息、给串口发送消息、清空串口输出区、开启\关闭屏幕自动滚动等。

说明: 串口工具以“\r\n“作为每行的分隔符,所以要求被打印的每行字符串都要以“\r\n“结尾,否则可能会出现程序结尾打印丢失的情况。

打开监视器

打开HiSpark Studio终端,找到终端区域、切换到“监视器”选项卡,如图1所示。

图 1 切换到“监视器”选项卡

图 2 监视器界面介绍

  • ①:串口配置区

    端口:显示当前电脑所连接的串口设备,单击“”按钮刷新串口列表。

    波特率:选择串口波特率,范围:300~250000。

    行尾:当给串口发送消息时,工具会根据此选项自动添加字符。

    • CRLF代表“\r\n”。

    • CR代表“\r”。

    • LF代表“\n”。

  • ②:功能按钮区

    :连接串口按钮。当连接串口后,按钮状态会变成,单击此按钮会断开串口连接。

    :时间戳按钮。开启时会在每行输出前加上时间戳显示,如果按钮处于关闭状态则不显示时间戳,如图3所示。

    图 3 时间戳设置效果示例

    :隐藏输入框,隐藏/显示输入框界面如图4图5所示。

    图 4 显示输入框

    图 5 隐藏输入框

    :开启/关闭屏幕自动滚动。

    :清空输出区。

    :最大化面板。

    :关闭面板

  • ③:输出区。

  • ④:输入区。

  • ⑤:发送消息按钮,单击按钮或者敲击回车发送输入区信息给串口,默认编码为utf8。

连接串口

单击“”即可连接串口。连接串口前,输入区默认处于未激活状态(不可输入、不可点击);连接串口后,输入区变为激活状态,串口配置区的监视模式选项变为未激活状态。

查看消息

在输出区可以查看串口发送的消息。

发送消息

在下方输入区输入消息后单击发送按钮或者单击键盘回车按钮发送消息。

断开连接

单击“”按钮断开串口连接。

扩展工具使用

扩展工具主要用于添加一些用户常用的命令,添加后可以做到点击名称发送命令。扩展工具在出厂时添加了一些常用命令,如果用户用不到这些命令,可以选择清空表格,然后手动添加所需命令,或通过excel表格导入方式进行添加。除此之外,扩展工具还有循环发送功能,在后面章节中会详细介绍。

  • 打开扩展工具。单击扩展按钮,会在右侧展开扩展页面。

    单击此按钮可最大化面板。

  • 单击清空列表按钮可清空列表。

    如果清空出厂表格后需要恢复,可导入安装目录下“HiSpark Studio\resources\app\extensions\huawei.cfbbserialcom-0.0.1\resources\excelFile“下的“rwaData.xlsx”表格。

  • 手动新增命令行。单击“增加一行”按钮。

    添加数据规则:

    数据格式:下拉框模式,下拉选项有utf8、bin、hex。

    命令:发送给串口的命令字符串。

    名称:识别命令功能的字符串。单击此按钮可立即发送命令给串口(前提是工具处于监听状态)。

    顺序:在使用循环发送功能时,顺序大于0,才会进行循环发送。如果有多个命令的顺序大于0,并且数值一样,则按照由上到下的顺序发送。

    延时发送:先发送一次,再进行延时,单位:ms。

    操作:有编辑和删除两个选项,单击编辑可对命令行进行修改,单击删除可删除命令行。

  • 批量添加命令。

    1. 下载导入模板。导入模板会自动保存到安装目录下“HiSpark Studio\resources\app\extensions\huawei.cfbbserialcom-0.0.1\resources\excelFile\importResults.xlsx”。

      导入模板中会显示需要导入的列,以及每个列的规则。

    2. 填写导入模板。

    3. 导入“导入模板“文件。

    4. 查看导入数据。

    5. 查看导入结果表格。导入结果列会显示导入不成功的原因。

  • 循环发送。

    1. 设置顺序和延时。

      上图表格执行命令的顺序:

      首先,发送“起蓝牙“命令,延时1000ms;然后,发送“键盘模式“命令,延时1000ms;最后,发送“鼠标模式“命令,延时1000ms;结束。这是一个循环发送的周期,循环发送会不断的循环这个周期。

      “修改蓝牙地址”命令并不会发送,因为它的顺序不大于0。

    2. 打开串口监听。

    3. 打开循环发送开关(发送的命令自带“回车换行”)。打开后,会在左侧输出栏看到发送的命令。

      红色字体表明正在发送此条命令或者正在延时

Kconfig配置

本功能主要用于控制工程的编译构建,通过修改编译宏的方式配置参与编译的功能模块。

打开工程后,单击工具栏中的系统配置“”按钮,如图1所示。

图 1 系统配置入口

系统配置界面如图2所示。

图 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:单个菜单模式。

常见错误

如何解决部分快捷键无效问题

问题描述

在使用IDE的时候发现部分快捷键使用无效。如图1所示。

图 1 部分快捷键说明

解决方法

  1. 检查其他运行的软件快捷键是否设置有冲突,例如查看输入法软件的属性设置,如图2所示。

    图 2 按键属性设置

    ①:打开“属性设置”。

    ②:选择“按键”。

    ③:打开“系统功能快捷键设置”。

  2. 在系统功能快捷键中,选择关闭或重置冲突的快捷键。

    图 3 系统功能快捷键

对单独的c或c++使用“生成和调试活动文件”后如何停止调试

问题描述

对单独的c或c++使用“生成和调试活动文件”后,点击调试图标,没有退出调试。

解决方法

按快捷键F1,在如图1的输入框中输入“Debug: Stop”,点击搜索到的结果即可退出调试。

图 1 停止调试指令搜索

SDK根目录路径过长

SDK根目录路径过长:

Window10和Window11下路径有260的长度限制,过长的路径会导致编译时相关文件无法找到

或者编译的时候一直循环某些打印信息,而不执行具体的编译内容

建议SDK代码放到盘符的根目录或缩短SDK存放路径。

路径失效

导入工程路径问题导致的调试、栈分析、镜像分析等默认路径失效。

  • 调试:修改默认的debug_elf路径。

切换target

在工程配置页面,用户可以根据需求切换target

编译或者执行系统配置功能或者创建GUI工程过程中提示python或者其他依赖出错

编译或者执行系统配置功能或者创建GUI工程过程中提示python环境出错:

或者提示内容为“本地没有安装python”或者“本地安装的python不可用”这种错误,原因为本地没有安装python或者安装的python版本不为3.11.4,为不影响编译或者系统配置功能的正常使用,建议参考2.4章中的配置python环境下载python3.11.4的安装包并手动安装,安装过程中勾选“pip”和“tcl/tk选项”。

编译或者执行系统配置功能或者创建GUI工程过程中提示XX组件下载失败:

或者cmake、pycparser、kconfiglib或者pillow下载失败。原因为执行编译或者系统配置功能或者创建GUI工程时需要通过安装的python的pip组件进行下载所需依赖失败,可能是本地环境原因导致pip install失败或者当前没有网络连接导致下载失败。

解决方法:根据对应提示的组件下载失败,下载对应组件的whl文件,组件与下载链接对应关系如下:

cmake:https://files.pythonhosted.org/packages/65/7f/80cf681cd376834b442af8af48e6f17b4197d20b7255aa2f76d8d93a9e44/cmake-3.20.5-py2.py3-none-win_amd64.whl

pycparser:https://files.pythonhosted.org/packages/62/d5/5f610ebe421e85889f2e55e33b7f9a6795bd982198517d912eb1c76e1a53/pycparser-2.21-py2.py3-none-any.whl

kconfiglib:https://files.pythonhosted.org/packages/8a/f1/d98a89231e779b079b977590efcc31249d959c8f1d4b5858cad69695ff9c/kconfiglib-14.1.0-py2.py3-none-any.whl

windows_curses:https://files.pythonhosted.org/packages/18/1b/e06eb41dad1c74f0d3124218084f258f73a5e76c67112da0ba174162670f/windows_curses-2.3.3-cp311-cp311-win_amd64.whl或者https://files.pythonhosted.org/packages/1d/a9/6bfb7845f235a8fd03602ee0039b8aba2d70fb66a07ba3b3bd992a300624/windows_curses-2.3.3-cp312-cp312-win_amd64.whl

pillow:https://files.pythonhosted.org/packages/c1/d0/5866318eec2b801cdb8c82abf190c8343d8a1cd8bf5a0c17444a6f268291/pillow-10.4.0-cp311-cp311-win_amd64.whl或者https://files.pythonhosted.org/packages/74/0a/d4ce3c44bca8635bd29a2eab5aa181b654a734a29b263ca8efe013beea98/pillow-10.4.0-cp312-cp312-win_amd64.whl

说明: windows_curses和pillow依赖根据本地安装的python版本下载对应的whl文件进行安装,前者为python311的下载链接,后者为python312的下载链接。

下载完成后,在文件所在目录(建议存放在python3.11.4的安装目录)打开命令提示符(cmd),执行命令“pip install 对应的whl文件”,以cmake和windows_curses举例:

执行的命令:

检验是否执行成功,cmake可以打开命令提示符,执行“cmake --version”,如果有对应版本号出现,则说明cmake下载成功,其余组件可以通过执行“pip show 组件名”,如果有对应组件的信息出现,则说明各依赖下载成功:

如果环境均配置成功但是编译失败,并且提示“is the command line too long”的错误,则说明cmake版本与所需版本不符合,需要在python3.11.4的安装目录下下载cmake-3.20.5-py2.py3-none-win_amd64.whl并在该目录下执行“pip install 下载的cmake的whl文件”即可。

下载链接:

https://files.pythonhosted.org/packages/65/7f/80cf681cd376834b442af8af48e6f17b4197d20b7255aa2f76d8d93a9e44/cmake-3.20.5-py2.py3-none-win_amd64.whl

如果Python环境正常,但是执行执行pip install 组件的时候失败:

原因为pip的版本与Python版本不一致,即Python 3.11.4或者其他合规版本的python环境变量添加至环境变量,对应的Python安装目录下的Python311\Scripts的环境变量没有添加。可手动将Python\Scripts的环境变量也添加到环境变量头部,下载pip的依赖成功后,再关闭所有HiSpark Studio窗口再打开。

多个.a静态库如何打包成一个.a静态库(仅支持MCU系列芯片)

  1. 进入到工具链目录,默认路径是在C:\Program Files\HiSpark Studio\tools\Windows\cc_riscv32_musl_fp_win\bin。

  2. 将需要合成的.a和libAllInOne.bat 放到工具链目录中,检查目录中不能存在.o文件,和多余的.a文件。

  3. 双击执行libAllInOne.bat。

  4. 按照 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”工程时,会默认使能电机算法库的参数检查功能。

图 1 芯片配置器中电机算法库参数检查宏默认使能

解决方法

需要使能电机算法库的参数检查功能的场景:需要检查检查电机算法库函数参数是否有异常的场景(注意这会影响算法性能)。

需要关闭电机算法库的参数检查功能的场景:对算法性能有要求的场景。

断点数量限制统计不到反汇编断点导致断点数量超出限制无法调试(仅支持MCU系列芯片)

问题描述

当所使用的断点包含反汇编断点时,即使达到断点数量限制,仍然可以继续添加断点,然而,当断点数量超过限制后,进行调试会导致异常报错。

图 1 反汇编视图断点

图 2 断点数量超限制异常弹窗

解决方法

断点数量超过限制时,运行调试会有异常弹窗,请点击 "确定" 按钮退出调试,并在删除部分断点(306xH系列MCU断点数量限制为7个,3061M系列MCU断点数量限制为3个)后再次启动调试。

调试的变量和监视窗口查看大数组变量会加载很久导致无法调试(仅支持MCU系列芯片)

问题描述

调试过程中,如果要使用变量或监视窗口查看大数组变量(数组大小在2000以上),系统会加载很长时间,加载期间无法进行其他调试操作。

图 1 查看大数组变量加载状态界面

解决方法

系统一直处于加载状态时先点击 "停止调试" 按钮退出调试,再次启动调试并使用实时监视(Live Watch)来查看大数组变量。

启动VariableTrace失败(仅支持MCU系列芯片)

问题描述

按照“变量跟踪功能”中的介绍启动变量跟踪功能失败,没有弹出窗口。

解决方法

方案一:使用独立显卡。

方案二:更新显卡驱动。在Window10和Window11版本中,可以通过系统设置来自动更新显卡驱动。

  1. 打开“设置”。

    图 1 Window10和Window11版本设置

  2. 点击“更新和安全”。

    图 2 更新和安全

  3. 选择“Windows Update”,点击“检查更新”。

    图 3 检查更新

    如果有可用的显卡驱动更新,系统会自动下载并安装。

启动HiSpark-TraceFlasher工具提示由于找不到MSVCP140.dll,无法继续执行代码解决方案(仅支持MCU系列芯片)

问题描述

在用户启动HiSpark-TraceFlasher工具时,提示由于找不到MSVCP140.dll,无法继续执行代码,导致无法打开工具。

图 1 无法找到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)调试功能(仅支持MCU系列芯片)”。等待时间与工程中定义的变量数量成正相关。

方案一:如果暂时不需要这个功能,可以取消勾选“工程配置”->“为livewatch解析elf文件”。可以跳过这段流程,加快编译时间。

方案二:如果需要使用这个功能,又想要加快解析时间。对于电脑中没有安装python的用户,可以下载并安装 python 3.8.8 及以上版本,再次尝试编译,可以有效加快编译时间,对于电脑中已经有python的用户,就只能使用方案一。

选择MCU的Nos Task Schedule例程,出现红色波浪线告警

问题描述

选择MCU的Nos Task Schedule例程,出现红色波浪线告警。

图 1 出现红色波浪线告警

解决方法

  1. 工具栏中, IDE配置->设置。

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

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

菜单栏隐藏后如何再次显示

在使用HiSpark Studio过程中,可以通过菜单栏中的“查看”->“外观”中的各种选项来控制某些区域的显示或者隐藏,如果点击显示菜单栏后,菜单栏会隐藏。

可以通过如下方法重新显示菜单栏:

①:点击窗口右上角的“自定义布局”按钮,在弹出的选项框中,可以选择显示/隐藏菜单栏。

②:将活动栏切换至侧边,当隐藏菜单栏时,左侧活动栏会生成一个新图标,点击即可使用原生菜单栏中的功能,通过“查看”->“外观”->“显示菜单栏”这个选项功能来显示菜单栏。

③:用快捷键ctrl+shift+p弹出命令行菜单,输入“Toggle Menu Bar”点击该选项,能够显示/隐藏菜单栏。

HCC工具链下载失败如何手动下载(仅支持MCU系列芯片)

问题描述

工程使用编译、镜像/栈分析和调试时出现下载HCC工具链失败的错误提示。

图 1 出现下载HCC工具链下载失败错误提示

解决方法

  1. 通过链接https://hispark-obs.obs.cn-east-3.myhuaweicloud.com/cc_riscv32_musl_fp_win.zip下载HCC工具链压缩包cc_riscv32_musl_fp_win.zip。

  2. 1下载到的“cc_riscv32_musl_fp_win.zip”文件拷贝到IDE安装目录(默认为:C:\Program Files\HiSpark Studio)下的tools/Windows路径下面并解压。

    图 2 HCC工具链存放路径(示例)

WS63 SDK支持说明

HiSpark Studio 1.0.0.9 支持WS63 1.10.102 及更早版本的SDK,且该支持将持续到版本1.0.0.10。从版本1.0.0.11开始,软件将不再支持WS63 1.10.102及以下版本的SDK。

为了确保最佳的兼容性和功能体验,我们强烈建议您尽快升级到最新版本的SDK。

如何制作和使用可以运行在SRAM上的静态库(仅支持MCU系列芯片)

制作可以运行在SRAM上的静态库的步骤如下:

  1. 使用“RAM_CODE”宏定义和声明静态库的对外提供的接口。

  2. 参考“编译生成静态库”章节的方案制作静态库。

使用可以运行在SRAM上的静态库的步骤如下:

  1. 在工程中打开“chipconfig配置”,请参见“功能入口”。

  2. 在“LDS配置”中的“RAM Code Path”区域中添加静态库对应的.a文件,请参见“LDS配置(仅支持MCU系列芯片)”。

  3. 点击“生成代码”,就可以得到一个让静态库中的“RAM_CODE”接口运行在SRAM上的工程。

Kconfig Jump to弹框中搜索报错"NameError: name 're' is not defined"

  1. 打开Kconfig后,单击“Jump to...”按钮,在弹框中搜索相关内容。

    图 1 从Jump to打开搜索框

  2. 若出现如下异常打印:

    图 2 Kconfig异常打印

    需要修改guiconfig.py文件:在调用re模块前,添加import re,如图3所示。

    图 3 添加import re

  3. 添加代码之后可正常搜索,如图4所示。

    图 4 正常搜索示意图

不同PC间复制工程后无法打开如何解决

解决不同PC间复制工程后无法打开问题的步骤如下:

  1. 关闭IDE。

  2. 保证目标PC和源PC的SDK路径一致(这里的SDK路径是指被复制的工程对应的SDK路径)。

  3. 双击工程目录下的.hiproj文件打开工程,工程正常打开。