Telink IoT Studio用户指南
桌面快捷方式
Telink IoT studio的安装程序会在桌面上创建以下两个快捷方式:
Telink IoT studio
: 用于启动 IoT Studio。Telink TC32 console
: 用于启动TLSR8的开发控制台,用户可以在里面输入tc32-elf-gcc
和make
等命令。
不同的IDE
本用户指南将涉及以下3种不同的IDE:
Telink IoT studio
: 本文档描述的IDE。Telink old IDE
: wiki页面展示的针对TLSR8系列芯片的IDE。(链接:IDE for TLSR8 Chips)Telink RDS IDE
: wiki页面展示的针对TLSR9系列芯片的IDE。(链接:IDE for TLSR9 Chips)
上述3个IDE具有以下不同的桌面快捷方式图标:
Telink IoT studio:
Telink old IDE:
Telink RDS IDE:
IoT Studio或集成工具
- 构建TLSR8工程和SDK;
- 导入和构建TLSR9 Telink RDS工程和SDK;
- Telink Windows版BDT工具用于给TLSR8和TLSR9系列芯片烧录镜像文件;
- Telink libUsb版BDT工具用于给TLSR8和TLSR9系列芯片烧录镜像文件,仍处于测试阶段;
- Jtag_Burn通过JTAG接口给TLSR9系列芯片烧录镜像文件。
Telink RDS和Telink IoT studio的工程属性差异
Ext HW DSP option
这个选项用于配置是否使用DSP及其库。
此选项将在cc
和ld
中添加-mext-dsp
标志,同时也将在Telink RDS IDE中向链接器添加-lm
和-ldsp
标志。而Telink IoT studio只会在cc
和ld
中添加-mext-dsp
标志,而不添加-lm
和-ldsp
这两个额外的库标志。这使得配置更加灵活。
用户可以在链接器库设置页面上专门添加math
和dsp
库到链接器。
-msave-restore
和-msmall-data-limit
Telink RDS IDE
对-msave-restore
和-msmall-data-limit
都使用 IoT Studio 的内置值(默认),因此配置页上没有这些选项,而Telink IoT studio
对这些选项的配置则会更加灵活。
用户应该对TLSR9系列芯片使用Use toolchain default value
选项。
工具链和构建工具
工具链信息
Telink IoT studio包含以下几个用于TLSR8和TLSR9的工具链:
- 用于TLSR8芯片,带有GCC 4.5.1 (tc32-elf)版本的Telink TC32交叉编译器,与Telink old IDE 相同。
- 用于TLSR9(D25F和N22架构)芯片,Telink RDS IDE V3.2.3的GCC 7.4版交叉编译器。
- 用于TLSR9(D25F和N22架构)芯片,Telink RDS IDE V5.1.2的GCC 10.3版交叉编译器。
- 用于TLSR9(D25F和N22架构)芯片,Telink RDS IDE V5.3.0的GCC 12.2版交叉编译器。
工具链位置
我们假设Telink IoT studio安装在$IoTStudio
位置:
- 用于TLSR8芯片,带有GCC 4.5.1 (tc32-elf-1.5)版本的Telink TC32交叉编译器:
IoTStudio/opt/tc32/bin
- 用于TLSR9(D25F和N22架构)芯片,Telink RDS IDE V3.2.3的GCC 7.4版交叉编译器:
- N22:
$IoTStudio/RDS/V3.2.3/toolchains/nds32le-elf-mculib-v5
- D25F:
$IoTStudio/RDS/V3.2.3/toolchains/nds32le-elf-mculib-v5f
- N22:
- 用于TLSR9(D25F和N22架构)芯片,Telink RDS IDE V5.1.2的GCC 10.3版交叉编译器:
- N22:
$IoTStudio/RDS/V5.1.2/toolchains/nds32le-elf-mculib-v5
- D25F:
$IoTStudio/RDS/V5.1.2/toolchains/nds32le-elf-mculib-v5f
- N22:
- 用于TLSR9(D25F和N22架构)芯片,Telink RDS IDE V5.3.0的GCC 12.2版交叉编译器:
- N22:
$IoTStudio/RDS/V5.3.0/toolchains/nds32le-elf-mculib-v5
- D25F:
$IoTStudio/RDS/V5.3.0/toolchains/nds32le-elf-mculib-v5f
- N22:
为TLSR9芯片工程选择一个不同的工具链
由于TLSR8芯片仅包含一个工具链,因此本节仅适用于TLSR9芯片。
要改变一个工程的工具链,首先打开工程属性,导航到C/C++ Build
--> Settings
--> Toolchains
位置,并从下拉列表中选择不同的工具链。
列出的工具链有:
Telink TLSR9 D25F GCC
: 用于D25F架构芯片,来自RDS V3.2.3。Telink TLSR9 D25F GCC 7
: 与Telink TLSR9 D25F GCC
相同。Telink TLSR9 D25F GCC 10
: 用于D25F结构芯片,来自RDS V5.1.2。Telink TLSR9 D25F GCC 12
: 用于D25F结构芯片,来自RDS V5.3.0。Telink TLSR9 N22 GCC
: 用于N22架构芯片,来自RDS V3.2.3。Telink TLSR9 N22 GCC 7
: 与Telink TLSR9 N22 GCC
相同。Telink TLSR9 N22 GCC 10
: 用于N22架构芯片,来自RDS V5.1.2。Telink TLSR9 N22 GCC 12
: 用于N22架构芯片,来自RDS V5.3.0。
高级用法:根据路径设置工具链
一般来说,用户不应该通过更改工具链路径来设置工具链。相反,应使用上一节中提到的方法设置工具链:为TLSR9芯片工程选择一个不同的工具链
。
本节适用于有特殊要求的高级用户。
通过点击右侧的属性菜单选项,来打开工程属性对话框,然后点击工程弹出的菜单:
依次选择C/C++Build
-->Settings
-->Toolchains
选项:
点击下面红框所圈出来的global
链接。
在Toolchain folder
后的编辑框中设置路径。
一般来说,用户只需要更改红线所划出来的版本和后缀信息。
第一条红线表示工具链的基本版本信息(在图中为V3.2.3
),用户可以将其更改为以下项目之一:
V3.2.3
: Telink RDS IDE V3.2.3版本。V5.1.2
: Telink RDS IDE V5.1.2版本。V5.3.0
: Telink RDS IDE V5.3.0版本。
第二条红线表示工具链变体的版本(在图中为nds32le-elf-mculib-v5f
),用户可以将其改为以下项目之一:
nds32le-elf-mculib-v5f
: 用于Telink TLSR9 D25F芯片。nds32le-elf-mculib-v5
: 用于Telink TLSR9 N22芯片。
一旦工具链路径信息发生变化,请点击apply and close
按钮进行保存。
导入和构建项目
TLSR8
Telink IoT studio支持SDK或像Telink old IDE 这样的工程导入功能。
用户可以使用File
->Import...
来导入SDK或工程。
用户可以参考这个Telink wiki页面。
TLSR9
对于Telink RDS IDE
格式的工程(例如,泰凌官方wiki网站 上的TLSR9芯片SDK),在将其导入工作区之前,必须将其转换为Telink IoT studio
格式。
用户可以参考下面Telink 菜单
小节中的RDS转换为IDE格式
部分,查看如何操作。
Telink菜单和工具栏条目
RDS转换为IoT Studio格式
如果你从泰凌官方wiki网站 中获得TLSR9芯片 B91
的SDK或工程,它们是Telink RDS IDE
格式,你可以使用此功能将其转换为Telink IoT studio
格式,然后将其导入到Telink IoT studio,B92
的SDk或工程则不需要转换
单击Telink
菜单中的Telink RDS to IDE Converter
:
单击对话框中的Select .cproject file
按钮,选择Telink RDS IDE格式的.cproject
文件。
在Linux操作系统中,用户可以使用Ctrl + h
或其他快捷键来显示隐藏的(.cproject
)文件,筛选框中应更改为*
:
.cproject
文件选择完之后,会显示文件路径:
然后单击convert
按钮,结果将在下面的日志文本框中显示:
如果失败,日志文本框的背景将显示为红色。用户可以复制日志并将其发送到Telink IoT studio
开发者或FAE以获得帮助。
将转换器作为一个独立程序
转换器可以作为一个独立的实用程序使用,用户可以在命令行中使用它。
转换器安装在:
- Windows: $IoTStudio_PATH/tools/Converter/TelinkRDS2IDE.exe
- Linux: $IoTStudio_PATH/tools/Converter/TelinkRDS2IDE
在Windows操作系统中,为了从命令行转换.cproject
文件,用户可以使用以下命令:
$IoTStudio_PATH/tools/Converter/TelinkRDS2IDE.exe Path/To/.cproject
在Linux操作系统中:
$IoTStudio_PATH/tools/Converter/TelinkRDS2IDE Path/To/.cproject
注意事项
默认情况下,转换后的项目(.cproject
)会将工具链设置为Telink TLSR9 D25F GCC
,为了D25F会使用Telink RDS IDE
GCC 7.4版本交叉编译器。
Telink IoTStudio工程转换成Cmake工程
如果用户需要将 Telink IoTStudio 的工程转换为 CMake 工程,你可以使用下图中的工具。
首先,需要双击选中想要转换的工程,然后在 Telink Menu 中点击 Telink IoTStudio to Cmake
.
你可以选择是否生成 VS Code 工程需要的 settings.json
文件. 点击 Convert
生成 CMakelists.txt
和 settings.json
文件, log 指明它们所在的位置。
Jtag burn菜单
Jtag_Burn
功能与Telink RDS IDE
Jtag_Burn功能相似,都是利用JTAG接口将图像烧录到TLSR9X芯片。
除了Jtag_Burn
,TLSR9还可以用Burning EVK
通过SWS
协议,使用Windows BDT
软件进行烧录,这是比较推荐的方法。
SWS
协议只需要一个GPIO就可以将二进制图像烧录到TLSR8和TLSR9芯片,而JTAG对于TLSR9芯片来说,会使用2个或4个GPIO引脚。
参数
Jtag_Burn窗口打开后,用户可以填写或设置Jtag_Burn和ICEMan参数:
可以在Jtag_Burn driver Arguments
中设置Jtag_Burn
参数.
在Jtag_Burn窗口中使用ICEMan
ICEMan是管理TLSR9 JTAG ICE的工具(支持4线和2线模式)。
用户可以通过查阅doc
目录中的文档文件来获取更多的信息。
Jtag_Burn ELF设置中的ICEMan
用户可以在Flashing Drivers and ICEMan
部分设置其他ICEMan和Jtag_Burn ELF,设置/选择的值将被保存并在下次重新打开对话框时继续使用。
下面列出了标准的ELF文件名称以供参考:
- ICEMan: Windows操作系统中的
ICEMan.exe
,以及Linux操作系统中的ICEMan
。 - Jtag_Burn: Windows操作系统中的
Jtag_Burn.exe
,以及Linux操作系统中的Jtag_Burn
。
Jtag_Burn烧录程序
烧录程序时,要注意配置Jtag_Burn的路径和芯片类型,然后点击 Start ICEman,ICEman 准备好后,确保 telnet port 和 burner port 与 ICEman 保持一致,再点击烧录,如下图:
其中,Jtag_Burn 位于 $IoTStudio/RDS/V3.2.3/flash/ 目录下,其帮助文档也在同一目录.
安全下载功能
若需要使用 Jtag_Burn 的安全下载功能,在 Misc Arguments 输入框中输入选项 --encrypt 即可
Telink links
在Telink links的子菜单中,用户可以快速访问Telink相关网站以获取开发资源或信息:
- Telink forum 泰凌论坛
- Telink wiki 泰凌wiki
- Telink official webpage 泰凌官网
Telink tools launcher
此选项将会启动Telink tools launcher
,如果显示以下对话框,则意味着此版本的 IoT Studio 尚未提供Telink tools
,因此用户无法使用它。
libusb版本BDT
libusb version BDT
是一种新的烧录工具,类似于Windows操作系统和Linux操作系统中的Windows BDT
,但是这个工具需要使用新的固件来烧录EVK。此工具可用于通过SWS将图像烧录到TLSR8和TLSR9芯片。该工具仍处于测试阶段。如果这个工具在某些Windows操作系统中不起作用,请改用Windows BDT
(在下面的Windows BDT
部分中提到)。
用户可以启动此工具,然后点击libUSB BDT菜单上的“Help”来了解如何使用。
点击菜单项打开BDT的libusb版本,如果已经选择工程并且可以找到artifact,那么artifact bin文件路径可以传递过来,所以用户无需手动复制artifact路径:
如果未选择任何工程,则会跳出一个错误对话框,用户可以将其关闭,libusb BDT程序同样可以正常启动:
Toolchain shell or ICEMan shell菜单项
这是一个子菜单,它有好几个菜单项可以启动Toolchain控制台或ICEMan控制台,用户可以在这些shell中输入命令(例如:riscv-elf-gcc
或ICEMan
)。
Windows BDT
Windows BDT (SWS and JTAG)
菜单项会打开一个单独的程序Windows BDT
。用户可以使用此工具烧录或调试TLSR8和TLSR9芯片。
可以参考这个wiki页面 了解如何使用。
Linux tcdb for TLSR8(仅适用于Linux操作系统)
Linux tcdb for TLSR8
菜单项有2个子菜单项,tcdb
将打开gnome-terminal
以使用tcdb。用户可以使用tcdb
工具来烧录TLSR8芯片。
tcdb user guide
会打开PDF格式的用户指南以供用户参考。
Open artifact path
工具栏上有一个图标,用来打开artifact目录。
如果工程没有配置正确(.cproject
文件),这个图标无法工作,这个情况在许多之前的TLSR8 SDK中都会发生。
而大多数TLSR9 SDK工程都能够如期工作。
注意事项
在点击图标之前必须选择工程或工程文件,否则它将无法工作。
Copy artifact path
Telink IoT studio增加了一个方便的菜单选项,可以帮助用户复制artifact路径。
用户可以点击上图中箭头指向的这个图标,将artifact路径复制到系统剪贴板上。
注意事项
在点击图标之前必须选择工程或工程文件,否则它将无法工作。
其他位置
Copy artifact path
这个选项会显示在工具栏和右键弹出的菜单中,如下所示:
Search on DocSite
此工具可以用来在 Telink 文档中心网站中搜索特定的关键词,在工程文件中双击选中某关键词后,点击 Search on DocSite
,即可跳转至文档中心搜索页面。
常见的编译错误
找不到link脚本文件
当link脚本文件的路径为相关格式时,这种类型的错误就会出现。它在Telink RDS IDE
中不会报错,但在Telink IoT studio
中会显示错误。
错误日志的提示如下:
要解决上述问题,用户可以打开工程属性,然后找到Tool Settings
选项中的General
页面,如下图所示,然后双击link脚本文件:
在打开的对话框中,从workspace
中选择link文件:
点击OK
和apply and close
按钮,然后重新构建工程以检查结果。
其他附加的插件或功能
Telink Formatter
该插件用于使用快捷方式格式化代码/文件或使用 clang-format 保存文件。
配置Telink formatter
要在 formatter 中使用它,用户应该将 Telink Formatter
设置为默认格式化程序。从菜单 Windows
--> Preference
--> C/C++
--> Code style
--> Formatter
中打开设置,在 Code Formatter:
列表中选择 TelinkFormatter
,然后单击 Apply and Close
按钮:
随后用户可以在任何打开的源代码文件编辑器上按快捷键(默认为Ctrl+Shift+F
),会出现一个对话框,点击相应的按钮和选项进行确认:
当 Telink Formatter
格式化代码/文件后,用户可以在 Telink Formatter
输出控制台上查看日志以了解详细信息(请注意,应在 TelinkFormatter
首选项对话框中启用日志功能,请查看以下指南):
保存文本时触发(推荐使用)
格式化程序可以在保存一个或多个文件时触发,这需要在 TelinkFormat
设置中选择功能(通过菜单 Windows
--> Preference
--> C/C++
--> TelinkFormatter
):
当 Telink Formatter
格式化代码/文件后,如果在设置中启用了日志,用户可以在 Telink Formatter
输出控制台上查看日志以了解详细信息:
已知的问题
首次使用时Save
按钮被禁用
首次修改文件时,“保存”按钮处于禁用状态。使用“CTRL+S”(或“文件”-->“保存”,或使用“全部保存”菜单项/按钮)保存后,再次修改此文件,它将变为启用状态。
Easy Shell
这个插件允许从导航树或编辑器视图的弹出菜单中打开一个shell窗口或文件管理器。此外,它可以在shell中运行选定文件、复制文件或目录路径、运行用户定义的外部工具。
ECalculator
一个多功能计算器,包括:
- 显示n进制数字计算
- 标准、科学的和三角函数计算
- 输入合理的算术表达式
用户可以从菜单中打开:Window
--> Show view
--> other...
,然后输入Ecalculator
搜索并打开:
Eclipse中的终端
该终端可用于输入git命令和串口调试。
用户可以从菜单中打开:Window
--> Show View
--> Terminal
:
如果你的串口调试日志输出频率非常快,请使用其他专用工具代替。
二进制浏览器
这个插件用来打开二进制文件。
用户可以双击一个二进制文件,在 IoT Studio 中打开并查看。
FAQ
编译代码时出现Error 127
这个错误会在控制台窗口显示Error 127
:
这个问题是由于构建工具版本的不正确设置引起的,设置正确即可解决这个问题。
在路径中找不到设备或在构建时没有能够构建的内容
这些问题通常是由于将Telink RDS IDE格式的工程直接导入到Telink IoT studio而没有进行转换造成的。
要解决这个问题,请先删除该工程并在导入前将其转换为Telink IoT studio。
Orphaned configuration和设置选项卡上没有选项
发生这种情况时,工程属性会出现如下情况:
此问题的原因与前面的FAQ相同,在导入之前请将其转换为Telink RDS格式工程。
如何验证TLSR9当前使用的工具链gcc版本
用户可以在工程属性中设置以下命令来作为Post-build命令:
然后构建项目,控制台将输出GCC版本:
如何验证当前使用的make tools
用户可以在工程属性中设置以下命令 (echo "${PATH}"
) 来作为Post-build命令。
然后构建项目,控制台会输出路径,其中第一个就是make tool路径。
在上面的示例结果中,make tool
路径为C:\TelinkIDE\RDS\V3.2.3\cygwin\bin
,基础版本为V3.2.3
。
打开Telink TC32 console时出现以下权限错误
用户应以管理员
的身份权限打开Telink TC32 console
。
已知问题
如果用户多次点击Open artifact path
会导致IoT Studio退出
出现这种情况是因为 IoT Studio 无法找到artifact路径。用户应避免在短时间内多次点击工具栏上的Open artifact path
图标。
在导入工程和改变工具链后,IoT Studio会阻塞一段时间
这是一个正常的情况,因为 IoT Studio 需要花费一段时间来执行code indexing
和扫描编译器文件(例如工具链系统头文件和目录)。
这个过程将持续几秒钟。用户应该在其他操作(例如:构建)之前等待这项工作完成。这是一个一次性的动作,发生在改变工具链设置或导入工程的时候。
生成的artifact大小为零
如果用户在工程刚刚导入,makefile还没有完全生成的情况下就开始构建配置,就会出现这个问题。
当这种情况发生时,类似于以下情况的日志将显示在控制台的日志窗口。
想要解决这个问题,用户应该等待几秒钟,然后重新构建配置。
为了避免此类问题,用户应该等待makefiles的生成和索引完成。可以在 IoT Studio 的右下方查看具体完成进度。
点击Telink工具栏的工具无效
当点击 Telink 工具栏中的工具之前,先双击选中一个工程,即可避免此问题
IoT Studio设置
隐藏打印边距
默认显示打印边距,在代码编辑器中显示为一条垂直线。
如果想要隐藏它,你可以在首选项的Text Editors
页面上取消勾选Show print margin
选项。
IoT Studio调试工具(针对TLSR9)
注意:这个 JTAG 调试工具仅仅针对 TLSR9 系列芯片使用
构建可调试的程序
为了使用调试功能,构建可执行程序时,要加上 -g 选项,并且删除编译或者链接时的影响调试的优化选项,如 -O2.
这里要注意一点,选择优化级别时,要选择 -Og,不要选择 -O0,因为在测试中发现,烧写过某些使用了 -O0 选项编译出的程序后,想要再次利用 Jtag 擦除烧写时,会发生下面的错误:
要注意的一点是,在构建 V5.1.2 N22 的程序时,因为工具链的缘故,使用 GCC 10 版本的 N22 工具链时,要删掉 -mabi=ilp32f 选项(同时注意检查 assembler 和 linker 的参数):
Jtag_Burn烧录程序
烧录程序时,要注意配置Jtag_Burn的路径和芯片类型,然后点击 Start ICEman,ICEman 准备好后,确保 telnet port 和 burner port 与 ICEman 保持一致,再点击烧录,如下图:
其中,Jtag_Burn 位于 $IoTStudio/RDS/V3.2.3/flash/ 目录下,其帮助文档也在同一目录
Telink ICEMan GDB Debugging
开始调试之前,必须先双击选中你要调试的 elf 文件,如图中所示
然后点击 debug 图标的下拉箭头,选择 Debug Configurations...
双击 Telink ICEMan GDB Debugging,就会生成一个默认的配置,用户可以如图中所示选择是否需要 ICEman Interface 配置,默认情况下,用户不需要做其他更改就可以直接调试。
断点
目前 TLSR9 系列 Soc 支持最多两个硬件断点,当你发现你的程序运行的起始地址是 0x20000000 时,说明它运行在 flash 里面,需要使用硬件断点,而 step in
或 step over
等命令本身就会用到一个断点,所以用户调试时只能自定义一个断点,否则就会发生异常。这也是为什么不建议勾选 Stop on startup at,因为这个选项实际上的工作是设置了一个断点
当你调试时发生了 cannot access memory at address xx 异常时,可以使用 info br
命令检查一下断点数量
上述配置完成后,即可正常调试
IoT Studio中一些工具的单独使用方法
Converter
该工具的作用是将原 Telink RDS IDE 的工程文件格式转换为现在的 Telink IoT Studio 的工程格式。
其命令行的使用方法是,切换至需要转换的 .cproject
工程文件的目录,在此目录下执行 $(converter_path)/TelinkRDS2IDE.
converter 的所在目录是 $IoTStudio/tools/Converter/.
例如:
Jtag Burn
该工具的作用是将 binary 文件烧写至 TLSR9 芯片中,使用之前需要先使用 ICEman. Jtag Burn 工具位于 $IoTStudio/RDS/V3.2.3/flash/ 中,用户手册也在该目录下,下面是使用示例:
./Jtag_Burn --chip B92 --reset-and-run --verify --addr 0 --image /home/wang/UART_Demo.bin --port 2354 --telnet_port 4444 --unlock
其中,--port 和 --telnet_port 选项的参数需要和 ICEman 的 Burner_port 和 telnet_port 参数保持一致,若你看到 ICEman 的运行结果表明它的 burner_port 和 telnet_port 分别是 2354 和 4444(如下图):
这种情况下,运行 Jtag_Burn 时,可以省略 --port 和 --telnet_port 这两个选项
Linux中的安装和卸载
安装
在 linux 中,可以通过运行安装程序 "Telink_IoT_Studio_xxxx_Installer.run
" 来安装 IoTStudio。程序执行中, 用户需要指定安装路径。需要确保输入的是绝对路径,如图中所示。
程序结束后,会在终端中列出一些命令,用户需要再手动执行这些命令,就可以完成安装。
卸载
在 IoTStudio 的安装目录中,有一个 uninstall.sh
文件可以用来卸载 IoTStudio. 用户可以给该文件赋予可执行权限然后运行它. 用户需要将 IoTStudio 的 .Desktop 文件作为参数传递给 uninstall.sh
. 需要注意的是,安装目录下可能存在一个 TelinkIoTStudio.desktop 文件,注意不要将这个文件作为参数传递,需要使用带有版本号的 .Desktop 文件,可以参考下面的示例。
./uninstall.sh /home/wang/IDE2308/TelinkIoTStudio_2023.8.desktop
AndeSight相关文档
我们提供了AndeSight的相关文档,包括Andes Riscv工具链以及其他工具的使用文档,用户可以根据自己的需求在下面的路径中找到。
${IoTStudio_Path}/doc/Andes_V323_doc/
: Docs for AndeSight V3.2.3${IoTStudio_Path}/doc/Andes_V512_doc/
: Docs for AndeSight V5.1.2${IoTStudio_Path}/doc/Andes_V530_doc/
: Docs for AndeSight V5.3.0