泰凌VS Code扩展使用指南
Telink VS Code Extension 可以将 TelinkIoTStudio 的工程转换为可在 VS Code 使用的 CMake 工程,并支持在 VS Code 中开发 Telink TL32 和 TC32 系列芯片的 SDK。
Telink VS Code Extension 以及开发工具的安装
在 VS Code 中,打开扩展管理器(默认快捷键 Ctrl+Shift+X),搜索 Telink ,即可安装 Telink VS Code Extension(以下简称为Telink Extension)。

Telink Extension 安装完成后,点击 Telink 图标,即可进入该插件的 Treeview 视图页面。开发 Telink SDK 前,需要安装或者指定必要的开发工具。
在 DEVELOPMENT TOOLS 中安装需要的开发工具
点击展开 DEVELOPMENT TOOLS,可查看所有支持的 Telink 开发工具,其中支持用户自定义安装的工具包括 : CMake、Toolchain、BDT、ICE Driver、ICEman、OpenOCD、Jtag_burn。
对于上述的工具或工具链(toolchains),用户可根据实际需求选择性安装,右键单击工具或 toolchain,点击 Install 按钮启动安装。
注意
- CMake 与当前工程所需的 toolchain 为必装项。

若用户需使用 BDT 功能,则需安装 BDT 工具;若用户需使用 JTAG 烧录和调试功能,则需安装 Jtag_burn、ICE Driver、ICEman、OpenOCD 等工具。
上述通过 DEVELOPMENT TOOLS 选择性安装工具的方式为首推方案,用户可按需安装最新版本的工具。
用户也可下载 Telink Tools Installer 离线安装包进行安装,详情请参考章节Telink Tools Installer 使用方法。
若用户已经安装 Telink Toolchain 或其他 Telink 开发工具,则可以指定工具链或者开发工具到本地路径,具体配置请参考章节软件安装与配置。
快速使用:编译、烧录和调试
在 VS Code 中打开 Telink SDK,点击 Telink Extension 图标,即可在 PROJECT OUTLINE 中查看当前工程结构,不同 SDK 的文件结构不同,有些 SDK 可能同时包含多个工程。若当前工程为 TelinkIoTStudio 工程,而非 Telink Extension 直接支持的工程,需参考章节转换TelinkIoTStudio工程为CMake Project,将其转换为 CMake 工程。
编译和调试
在 PROJECT OUTLINE 中选择需编译的工程及其对应的 Target 后,点击右侧的编译按钮进行编译。

编译完成后,即可看到输出文件(*.elf、*.bin、*.lst),其中 ELF 格式的文件用于调试,BIN 格式的文件则用于烧录。
如下图所示,点击bin文件右侧的烧录按键(前提:确保已安装BDT软件且已正确配置相关参数,详情请参考章节软件安装与配置)。

鼠标悬停在 ELF 文件区域,点击右侧的调试按钮打开调试页面,新建调试配置后,Telink Extension 会自动填充必要的设置。勾选 Enable JTAG Burn,Telink Extension 将在调试前烧录程序至芯片。确保各项设置正确后,点击底部 Debug 按钮进行烧录与调试。

Telink TLSR9118 Wi-Fi SDK 的开发
Telink Extension 支持 Telink TLSR9118 Wi-Fi SDK,其使用方式与其它 SDK 略有不同。
首先,需要打开 Telink TLSR9118 Wi-Fi SDK 文件夹,并确保 KConfig 文件在顶层目录中。
在 Wi-Fi DEVELOPMENT 中可对 TLSR9118 Wi-Fi SDK 进行配置、编译和烧录。

在 Select Targets 中点击需要编译的 Target,成功生成 .config 后,点击 Build Targets 中的 all 进行编译。
编译完成后,点击 FlashTool 即可启动 Wi-Fi SDK 烧录工具进行烧录。
若需了解关于 Telink Extension 各功能的详细说明,请参见后续章节。
转换TelinkIoTStudio工程为CMake Project
如果你的仓库第一次使用,需要运行转换功能。
VS Code工作空间打开一个SDK目录,将TelinkIoTStudio工程转换为CMake工程,选择需要转换的工程。

转换完成后,可以在PROJECT OUTLINE查看project - target - source。

可以转换多个工程,重复运行上述命令,选择其他工程即可。
SDK参数的注意事项请参考章节TelinkIoTStudio SDK中的参数使用注意。
CMake构建
插件在运行构建命令的时候,会默认自动运行配置。
构建
电脑环境需要安装CMake,Toolchain。安装方法请参考章节软件安装与配置。
点击target旁边的小火箭按钮可以开始编译。
CMake构建分为cmake configure和cmake build2个步骤,点击小火箭按钮会将2个步骤合并。如果用户需要手动运行cmake configure在project右键选择即可。
CMake支持不同generator, 用法参考配置generator。

构建完成后, 可以看到构建产物和构建Log。

Clean
在target右键菜单,选择Clean Target,或者下方clean按钮。

CMake工程构成
(1) CMakeLists.txt: CMake工程函数,SDK全局通用。
(2) cmake_configs: SDK配置文件(*_cmake.json)。CMakeLists.txt会去读取配置生成工程,目前不要手动去修改,否则可能会导致功能异常。
(3) cmake_builds: 工程编译中间文件(.o文件, output文件)。

工程管理
增删工程和Target
PROJECT OUTLINE和工程名称节点旁边的+分别对应Add Project, Add target。
在输入框输入新的名称,然后选择:
- 新建空白工程/target
- 复制已有工程/target (选择对应工程名称)
复制已有工程相较新建工程的优势:相似的工程可经过简单修改完成。

工程文件增删改查
增加/删除文件
在对应文件夹右键菜单,在输入框输入新的名称。

导入/删除引用
导入引用:不实际创建文件,表示给target导入已经存在的文件到source中。
删除引用:不实际删除文件,从target的source中移除引用。

编译选项配置
target右键点击Properties进入配置页面,配置界面与TelinkIoTStudio一致。

工程使能CPP
大部分工程只包含C,ASM 2种语言, 如果该Target添加了CPP语言,则在对应Target右键菜单Enable CPP. 插件默认复制一些编译选项到工程配置。

可进入Target Properties修改对应CPP编译选项.

烧录和调试
在 Telink Extension 中,有两种烧录方式可供用户选择:
-
BDT
-
JTAG
BDT
安装:右键BDT选择Install / Browse。Browse根据文件选择框提示选择对应名称的软件。
该功能运行需要依赖Windows和Linux下的BDT工具。
快捷烧录
构建完成后,可以点击bin文件右侧烧录按钮,将固件烧录到目标开发板。

点击BDT工具栏的右侧箭头,打开BDT工具页面,烧录固件。

查看Flash/SRAM数据

针对SRAM可按字节操作的介质,可以修改对应地址数据,点击WriteBack写回到目标开发板。

JTAG
在程序烧录完成后,用户可以通过 JTAG 接口和 GDB 工具进行调试,包括单步调试、断点调试、查看变量、查看堆栈、查看寄存器、查看内存、查看汇编等等。
ICE Libusb驱动安装
JTAG使用前置:驱动安装
查看提示是否安装对应驱动:

(1) Windows

点击并运行Install_driver

(2) Linux
点击安装后,会调转到运行一段安装命令, 输入密码获取root权限后运行。

安装完毕后, 可以点击DEVELOPMENT TOOLS右侧refresh按钮刷新状态。
烧录
编译完成后,点击 Development Tools -> Jtag_burn

在 Telink JTAG Burn With ICEman 页面中,用户可以选择配置 ICEman 和 Jtag_Burn 的路径,芯片类型和烧录起始地址:

用户也可以选择配置 ICEman 的连接方式及端口:

然后点击 Start ICEman 按钮启动 ICEman,点击后,用户需要选择启动方式:
- Default 模式,JTAG 为默认的四线连接方式。
- SDP 2-wire 模式,ICEman 启动时添加
-I aice_sdp.cfg,JTAG 使用两线的连接方式,需要确保硬件支持。 - -H 模式,ICEman 启动时添加 -H 选项,连接成功后,对芯片执行 reset-and-hold 操作。
一般情况下,若没有后两种的需求,建议选择 Default 模式。

ICEman 的 log 中,若出现 ICEman is ready to use 的字样,则表示连接成功:

然后用户可以配置 Jtag_Burn 执行时的参数,并点击 Burn 按钮开始烧录:

并通过 log 判断是否烧录成功:

调试
在编译完成后,将鼠标悬停在生成的 ELF 文件上,此时会出现一个调试按钮,点击即可打开调试配置界面:

Telink Extension 支持单核或者双核调试,同时支持 ICEman 或者 J-Link 两种 Server,用户可以在此配置。需要注意的是,我们没有提供 J-Link 调试工具套件,若需要使用 J-Link 调试,需要提供 JLinkGDBServer 的完整路径。

用户还可以配置需要调试的文件(ELF 格式的文件)、GDB 路径以及 GDB 启动后执行的 initCommand。一般情况下,使用默认设置即可。若需要查看外设寄存器,可以根据芯片类型选择对应的 SVD 文件。若使用 J-Link 调试,还需要选择芯片核心的类型(D25F 或者 N22)。另外,若没有提前下载程序,可以使能 Jtag_burn 功能在调试之前下载程序。

点击右下角的 Debug 即可开始调试,同时会在 .vscode 文件夹下生成 launch.json 文件,里面包含调试配置,若有需要,可以在 'type' 为 'tlkTarget' 的对象中自行修改。
调试页面可以大致分为图中的四个区域:
(1) 调试控制区域:提供调试控制功能,包括 continue、interrupt、step over、step into、step out、restart、disconnect。
(2) 变量和核心寄存器:在这里可以查看当前作用域中存在的变量,同时可以查看芯片的全部核心寄存器。
(3) 外设寄存器:若正确指定了 SVD 文件,可以在这里查看芯片的外设寄存器,并根据权限读或者写。
(4) Debugger Console:这里会显示调试过程中 GDB 的输出信息,同时在下方的输入框中用 >Command 的形式输入命令,GDB 会执行命令并返回结果,例如,>info br。

双核调试时,其主界面功能与单核模式一致,此外,用户可以在图中指示的位置切换当前调试会话作用的核:

断点的高级用法
调试过程中,对于普通的断点,可以通过右键点击 Edit Breakpoint 修改断点属性,如图所示,有四种功能可以选择:


Expression: 自定义一个表达式,当表达式为真时,断点生效,表达式中的变量必须是当前作用域可见的。Hit Count: 当断点命中的次数达到指定次数时,断点生效。Log Message: 自定义一个字符串,当断点生效时,会在 Debug Console 中打印该字符串。Wait for Breakpoint: 指定程序中的另外一个断点,当指定的断点生效时,当前断点才会生效。
软件安装与配置
构建环境的软件安装有多种方式可选:
(1) Telink Tools Installer,安装后插件会自动检测Tools路径。安装包的使用方法请参考章节Telink Tools Installer。(适用于没有安装TelinkIoTStudio环境,大概2GB,包含CMake、Make、Toolchain等常用软件)
(2) 本地配置, 如果已经安装TelinkIoTStudio,可以复用TelinkIoTStudio里面的toolchain等软件, 右键选择Browse。(节省安装时间)
(3) 在线安装, 右键选择install。(文件下载速度可能受限于网络速度和文件大小,需要耗费一些时间;优点是根据实际条件安装需要用到的软件。)
软件清单在DEVELOPMENT TOOLS列出,可以右键选择Install和Browse。用户在编译前可主动预安装,也可以在构建过程中根据提示再安装。

构建需要2个必备软件CMake和Toolchain。
Toolchain本地配置
在构建过程中发现缺失对应Toolchain时,右下侧会弹出选择框。
点击Configure, 根据文件选择框提示,选择对应toolchian路径下的gcc文件:riscv32-elf-gcc或者tc32-elf-gcc。


如果Browse的版本不对, 会如下图提示:

CMake软件安装和配置
右键选择install或者browse, 目前建议选择install,使用指定版本的CMake。

配置线程数量
线程数量越多,构建速度越快。

配置generator
Windows支持切换UNIX makefiles、Ninja、MinGW makefiles。 在Windows中Ninja和MinGW makefiles构建编译性能相较于UNIX makefiles有提高。
Linux支持切换UNIX makefiles、Ninja。

在使用不同generator的情况下,检查tool/toolchain对应软件是否安装。不同generator需要使用不同的构建软件, 右键安装即可:
-
UNIX makefiles可以不用额外安装软件,toolchain里面已经包含。
-
MinGW makefiles:MinGW make。
-
Ninja: Ninja。

更换不同generator,编译前需要删除cmake_builds目录,重新构建。
TelinkIoTStudio SDK中的参数使用注意
参数的使用方式会影响工程转换的效果。
${ConfigName} ${ProjName}在工程转换过程中会被展开为实际值。
${workspace_loc:/${ProjName}}格式的路径会被转换成${CMAKE_CURRENT_SOURCE_DIR}。
例如,shell语句
${workspace_loc:/${ProjName}}/../../../tools/tl_check_fw_tool/tl_check_fw. ${ConfigName} ${ProjName}
>>> after converted >>>
${CMAKE_CURRENT_SOURCE_DIR}/project/tlsr_riscv/B92/../../../tools/tl_check_fw_tool/tl_check_fw.sh UART_Demo TL_PLATFORM_SDK_B92
类似-I、-L路径参数,在TelinkIoTStudio里推荐使用${workspace_loc:/${ProjName}}格式。
自定义脚本(Pre/Post Build)
Telink 扩展支持在 pre/post-build 阶段执行自定义脚本。
但须注意:TelinkIoTStudio 与 VS Code 的项目目录结构存在差异,不能在命令中直接使用相对路径。
如果当前的工程是 TelinkIoTStudio 工程,希望转换之后能正常执行 pre/post-build, 那么不能直接使用类似../../的写法, 而是使用 ${workspace_loc:/${ProjName}} 来指代你的工程根目录。
例如, 一段脚本改写方式。
原脚本为:
"../../../tools/tl_link_load.sh" "../../../platform/boot/tl321x/boot_tl321x.link" "${workspace_loc:/${ProjName}}/boot.link"
写成:
"${workspace_loc:/${ProjName}}/../../tools/tl_link_load.sh" "${workspace_loc:/${ProjName}}/../../platform/boot/tl321x/boot_tl321x.link" "${workspace_loc:/${ProjName}}/boot.link"
SDK Downloader
SDK Downloader 功能可以用来获取当前 Telink VS Code Extension 支持的所有 SDK,用户可以通过以下两种方式打开 SDK Downloader:
- 在 Telink Extension TreeView 中单击打开:

- 在 VS Code 命令面板中输入
"Open sdkDownloader"打开:

打开 SDK Downloader 后,用户可以看到所有被支持的 SDK 的 Git 仓库列表。用户可以选择直接从 Gitee 或者 GitHub 上将 SDK 克隆到本地,也可以点击 Fetch tags list 来获取该仓库的所有 tags。将需要的 tags 克隆至本地,如下图:

若用户点击 Fetch tags list,则可以点击每一个 tags 旁边的下载按钮将指定的 tags 克隆到本地,同时用户可以点击右边的切换按钮,它的功能是将当前的 tags 列表切换成 branch 列表:

注意
- 该功能实际上是将仓库克隆至本地,然后 checkout 用户指定的 tag 或者 branch,所以用户获取的同样也是指定 SDK 的 Git 仓库。
在下载完成后,你可以选择直接打开刚获取的SDK:

Wi-Fi SDK Development
Telink Extension 为 Telink TLSR9118 Wi-Fi SDK 提供了支持:(使用时推荐在 VS Code 打开 SDK 中顶层 Makefile 和 Kconfig 所在文件夹)。
在 Wi-Fi SDK DEVELOPMENT 栏,可以看到以下功能:
- Select Targets:这里将会显示出 configs 中定义的所有 targets。
- Build Targets:这里提供构建需要的 make 命令,包括
make all、make clean、make menuconfig, 对于 menuconfig 我们建议使用 guiconfig,单击即可打开完全图形化操作的 QConfig 程序。 - Build Files:显示所有的 build 生成的文件。
- Tools and Settings:在这里可以指定 Wi-Fi SDK 开发中需要的工具,同样的,右键点击所需的工具可以选择下载。其中,单击
FlashTool即可打开 sctool_gui 以烧录程序。

环境配置
(1) 检查toolchain是否已经安装或者配置,右键Install或者Browse。

(2) Python环境安装
pip install pycryptodome
pip install imgtool
pip install PyYAML
保证安装的Python工具可以在系统环境变量可以找到。
构建 Target
点击对应配置,会生成.config。

点击 “all”,完成编译。

配置
修改配置的方式可以通过下面2个软件。
(1) MenuConfig

(2) GuiConfig
![]()
Telink Tools Installer 使用方法
简介
Telink Tools Installer 安装包用于安装 Telink SDK 开发需要的开发工具,在 VS Code 中使用 Telink Extension 进行开发之前,需要先安装这些工具。
该安装包包括以下组件:
-
工具链
- TC32-GCC Toolchain
- TL32 ELF MCULIB V5F GCC12.2
- TL32 ELF MCULIB V5 GCC12.2
- TL32 ELF MCULIB V5F GCC10.3
- TL32 ELF MCULIB V5F GCC7.4
-
下载和调试工具
- ICEman
- Jtag_burn
- Telink BDT(Windows)
- Telink libusb BDT(Linux)
-
其他工具
- CMake : 使用 Telink Extension 开发的 SDK 是基于 CMake 的构建系统。
使用安装包
在空间足够 (大约需要 5.2 GB) 的情况下,我们推荐在安装时遵循安装程序的默认行为,即双击运行后,点击右下角 Install 按钮安装。上述工具会被安装在 {User_Dir}/.Telink_Tools 文件夹中。
选择安装路径
若用户不想安装在默认文件夹,可以选择安装路径,安装程序会检测用户所选择的安装路径是否有足够的空间。


安装过程
安装进程会被显示在 Installation Log 窗口。在安装过程中,用户可以点击 Install 右边的 Cancel并确认,程序将在完成当前工具的安装后自动暂停。若用户需要在安装过程中退出,可以使用 Cancel,而不是直接关闭窗口。

安装成功后会有如下提示,确认后即可退出程序。

安装完成
安装完成后,在 Linux 中,用户需要根据 Installer 的提示,在终端中执行下列命令,完成配置:
sudo cp /home/wang/.Telink_Tools/udev/99-libtlink.rules /etc/udev/rules.d/
cd /home/wang/.Telink_Tools/udev; chmod a+x install_linux_package.sh; sudo ./install_linux_package.sh
cd /home/wang/.Telink_Tools/udev; chmod a+x change-udev-usb-mode.sh; sudo ./change-udev-usb-mode.sh
注意
- 上述命令中的路径
/home/wang/.Telink_Tools/只是示例,实际安装过程中,请根据 Installer 的提示执行命令。
在 Windows 中,安装完成后 Installer 会弹窗询问是否安装 aice_libusb_driver,我们建议选择安装。
已知Bug
(1) 选项可能没有100%全部转换,因为有些配置没有体现在工程文件.cproject中,是IDE默认行为。
Telink Extension Usage in VS Code Remote
当前仅支持VS Code Remote(workspace)模式(workspace模式: 插件运行在remote,UI操作显示在本地)。 相关概念请参考章节VS Code Remote Development。

Remote模式帮助开发者在不同环境快速切换完成开发。
远程安装插件
下面演示示例是Windows远程到Linux。Linux远程到Windows还需验证测试。进入Remote模式后,进行远程连接。
完成远程连接后,需要打开插件市场,给Remote安装插件,如下图,插件图标右下角有Remote图标,表示该插件安装在Remote环境。

检查配置是否正确
如果用户在Remote(例如Linux)已经有使用过的插件,在远程模式启动插件的时候,将会同步Remote环境对应插件配置,用户可以快速使用。
(1)完成安装后,首先检查软件路径是否为Remote下的正确路径。

(2)如果在远程是第一次安装,Local(例如Windows)需要重新配置Remote的相关插件配置,配置方式如下图:

如果没有重新配置,将会使用Local的路径配置,插件将不能正常运行。因为不同电脑开发环境配置都是不一样的。
完成配置后,如果UI界面显示的路径仍是旧路径,则需点击刷新。

开发
该模式所有的文件操作都会在远程完成。

注意事项
Show File在Remote模式下不可用。