跳转至

泰凌 VS Code 扩展使用指南


Telink VS Code Extension 可以将 Telink IoT Studio 的工程转换为可在 VS Code 使用的 CMake 工程,并支持在 VS Code 中开发 Telink TL32 和 TC32 系列芯片的 SDK。

Video | Telink Forum

关于本文档

适用范围与目标读者

本文档面向使用 Telink Extension 在 VS Code 中开发 Telink TL32 / TC32 系列芯片 SDK 的开发者,覆盖从安装、工程转换、构建到烧录调试的完整流程。

前置条件

  • 已安装 VS Code
  • 已获取目标 SDK(可通过 SDK Downloader 获取,或使用已有 SDK)
  • 准备一块目标开发板及烧录/调试硬件(BDT 或 JTAG)

术语

术语 说明
Telink Extension Telink Development Tool VS Code 插件
SDK Telink 芯片的软件开发套件
CMake 工程 CMakeLists.txtcmake_configs/*_cmake.json 描述的工程
Target 工程中的一个构建目标(相当于 Telink IoT Studio 中的一个工程配置)
Toolchain 芯片对应的交叉编译工具链
Work Target 当前激活的 target,用于代码跳转与宏高亮
generator CMake 使用的构建系统生成器(Makefile / Ninja 等)
BDT Telink 烧录工具
JTAG 通过 ICEman 等实现的烧录与调试方式

泰凌 VS Code 扩展特性概述

当前最新版本的泰凌 VS Code 扩展在不同操作系统中,对各个系列的 SDK 以及各个功能的支持情况如下。

工程的导入,管理,编译和工具链获取

芯片系列 / 操作系统 Windows 10/11 Linux macOS X64 macOS AArch64
TL/TLSR9 系列 支持 支持 支持(GCC12.2 / GCC14.2) 支持(GCC12.2 / GCC14.2)
TC/TLSR8 系列 支持 支持 不支持 不支持

烧录和调试

芯片系列 / 操作系统 Windows 10/11 Linux macOS X64 macOS AArch64
TL/TLSR9 系列 支持 BDT 和 JTAG 支持 BDT 和 JTAG 支持 BDT 和 JTAG 支持 BDT 和 JTAG
TC/TLSR8 系列 支持 BDT 支持 BDT 不支持 不支持

快速入门

本教程带你完成第一次完整的开发闭环:打开 SDK -> 编译 -> 烧录 -> 调试

提示

编译需要 SDK、CMake、Toolchain 三个条件。其中 CMake 与 Toolchain 在首次编译时会提示安装对应版本,用户不需要关心具体使用哪个版本。

  1. 安装 Telink Extension:打开扩展管理器(默认快捷键 Ctrl+Shift+X),搜索 Telink,安装 Telink Development Tool Extension(以下简称为 Telink Extension)。

    搜索 Telink Extension

    Telink Extension 安装完成后,侧边栏 T 是插件进入页面。首次启动时可参考 Getting Started 引导页(也可通过菜单 Help > Open Walkthroughs 打开)。按打开 SDK -> 检查 CMake 工程 -> 安装 CMake -> 编译 -> 烧录 -> 调试 的步骤引导新手完成首次使用。

  2. 打开 SDK 工程:在 VS Code 中打开对应 SDK 文件夹。不同 SDK 的文件结构不同,有些 SDK 可能同时包含多个工程。

  3. 检查是否已有 CMake 工程(Telink Extension 以 CMake 工程为基础)。判断依据:

    • SDK 目录下是否存在 CMakeLists.txt 和对应的 cmake_configs/*_cmake.json 配置文件;
    • 插件栏 PROJECT OUTLINE 是否已显示工程。

    检查 CMake 工程文件

    PROJECT OUTLINE 显示工程

    没有 CMake 工程?

    插件提供工程转换和生成功能。选择工程并生成成功后,PROJECT OUTLINE 会显示工程视图,详见工程转换

    生成 CMake 工程

  4. 安装 CMake:系统已安装 CMake 会显示版本号,可跳过;若版本 < 3.19 或未安装,在右键菜单选择 Install

    检查 CMake 软件

  5. 编译:点击 PROJECT OUTLINE 中 target 旁的小火箭按钮。首次编译会提示安装对应的 Toolchain 工具链,等待安装完成后自动开始编译。

    提示安装 Toolchain

    编译完成后,即可看到输出文件(*.elf、*.bin、*.lst),其中 ELF 格式的文件用于调试,BIN 格式的文件用于烧录

  6. 烧录:烧录依赖 Telink BDT 软件。点击 bin 文件右侧的烧录按钮,若提示软件未安装,点击 Install 完成安装后即可烧录。若使用 JTAG 调试,可跳过 BDT 烧录步骤,调试会话支持直接烧录固件。

    提示安装 BDT

    BDT 快捷烧录

  7. 调试:鼠标悬停在 ELF 文件上,点击调试按钮,新建调试配置后 Telink Extension 会自动填充必要设置,点击 Debug 即可调试。详见调试

完成以上步骤,就完成了第一次完整的开发流程。若需了解各功能的详细说明,请参见后续章节。

工程转换

若 SDK 为 Telink IoT Studio 中的工程,需要转换成 Telink Extension 所支持的工程。

在 VS Code 工作空间打开一个 SDK 目录,选择需要转换的 Telink IoT Studio 工程,将其转换为 CMake 工程。

开始转换

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

转换完成

一次只转换一个工程。转换多个工程步骤: 重复运行上述命令选择其他工程。

转换过程注意事项

转换后的CMake工程可以直接编译, 可不用关心此章节内容.

Telink IoT Studio 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 路径参数,在 Telink IoT Studio 里推荐使用 ${workspace_loc:/${ProjName}} 格式。

自定义脚本 (Pre/Post Build)

Telink Extension 支持在 pre/post-build 阶段执行自定义脚本。

但须注意:Telink IoT Studio 与 VS Code 的项目目录结构存在差异,不能在命令中直接使用相对路径。

如果当前的工程是 Telink IoT Studio 工程,希望转换之后能正常执行 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"

CMake构建

插件在运行构建命令的时候,会默认自动运行配置。

构建

电脑环境需要安装 CMakeToolchain。安装方法请参考软件安装与配置

点击 target 旁边的小火箭按钮可以开始编译。

CMake 构建分为 cmake configurecmake build 2 个步骤,点击小火箭按钮会将 2 个步骤合并。如果用户需要手动运行 cmake configure,在 project 右键选择即可。

CMake 支持不同 generator,用法参考配置 generator

开始构建

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

构建完成

Clean

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

Clean

安装 ccache

目前在 Linux 环境,安装 ccache,可以加快编译速度。安装命令为:apt install ccache。CMakeLists.txt文件启用了ccache特性。

CMake工程结构

  1. CMakeLists.txt:CMake 工程函数,SDK 全局通用。

  2. cmake_configs:SDK 配置文件(*_cmake.json)。CMakeLists.txt 会去读取配置生成工程,目前不要手动去修改,否则可能会导致功能异常。

  3. cmake_builds:工程编译中间文件(.o 文件、output 文件)。

CMake Output

附录:CMake命令行编译

如需脱离插件在命令行手动构建,可参考以下步骤。

导出Toolchain环境变量

Linux 下不用导出环境变量,Windows 下需要。导出 2 个环境变量:Cygwin 环境和编译工具链环境。

export PATH=$PATH:/home/user/toolchain_v53x_v5f/nds32le-elf-mculib-v5f/bin;/home/user/toolchain_v53x_v5f/cygwin/bin

CMake Configure

  • PROJECT_NAME:工程名称(可在 cmake_configs/*._cmake.json 中name查看)。

  • TOOLCHAIN_NAME:目标使用的工具链(可在 *cmake.json 文件中toolchainVersionName查看)。

    CMake 配置中查看 TOOLCHAIN_NAME

  • TOOLCHAIN_PATH:编译工具链路径,指定到 bin 文件夹的父目录。

  • CMAKE_C_COMPILER_FORCED:配置为 1,跳过 CMake 配置阶段 gcc 检查。

  • -S:CMakeLists.txt文件的目录。

  • -B:中间文件目录,可自定义。

注意

不同工程需要不同的中间存储目录。

cmake -S ./tl_platform_sdk -Wno-dev -DPROJECT_NAME=TL_PLATFORM_SDK_321X -DTOOLCHAIN_NAME="TL32 ELF MCULIB V5 GCC12.2" -DTOOLCHAIN_PATH=/home/user/toolchain_v53x_v5/nds32le-elf-mculib-v5 -B cmake_builds/TL_PLATFORM_SDK_321X -G "Unix Makefiles" -DCMAKE_C_COMPILER_FORCED:STRING=1

CMake Build

cmake --build cmake_builds/TL_PLATFORM_SDK_321X --target ADC_Demo -j8

视图与代码跳转

工程显示

默认情况下,该插件展示全部目标,用户也可以设置只展示work target,如下图。

工程大纲筛选

代码高亮和跳转

右键点击目标, 选择 "Set Target IntelliSense"。

插件获取目标的编译选项和源文件列表,生成 C/C++ 或 clangd 插件的配置文件,实现宏定义高亮和代码跳转功能。

推荐使用clangd语言插件, 插件为每个target提供了compile_commands.json以及clangd启动参数配置。

IntelliSense 配置

工程操作

新建和删除工程/目标

PROJECT OUTLINE 和工程名称节点旁边的 + 分别对应 Add Project、Add Target。

在输入框输入新的名称,然后选择:

  • 新建空白工程/target
  • 复制已有工程/target(选择对应工程名称)

复制已有工程相较新建工程的优势:相似的工程可经过简单修改完成。

添加工程

文件增删改查

增加/删除文件

在目标/文件夹右键菜单,选择 "New File" / "New Folder" / "Delete"。支持批量操作应用到多个target 和工程。

New File" / "New Folder:在磁盘上创建文件或文件夹。右键单击目标文件夹,选择 "New File" 或 "New Folder",输入文件名称,然后选择应用范围。

增加文件夹

Delete File/Folder:从磁盘删除文件或文件夹。右键单击文件或文件夹,选择 "Delete",然后选择应用范围,最后点击 "Delete File/Folder" 删除。

删除文件/文件夹

导入/删除引用

导入引用:导入文件到目标, 选择Import File/Folder, 选择文件, 选择应用范围。该操作不会在磁盘新建文件, 只是文件引用。

导入引用

删除引用:,从目标中删除引用, 右键Delete, 选择删除范围, 选择Remove Reference。该操作没有在磁盘删除文件, 只是删除文件引用。

删除引用

编译选项

target 右键点击 Properties 进入配置页面,配置界面与 Telink IoT Studio 一致。

Properties 参数配置

使能CPP

大部分工程只包含 C、ASM 两种语言,如果该目标添加了 CPP 语言,在目标右键菜单 Enable CPP。插件会生成C++的编译配置。

enable_cpp

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

cpp_properties

开发工具

工具介绍

DEVELOPMENT TOOLS 列出了 Telink Extension 支持的全部开发工具。这些工具不用提前手动安装:在编译或调试过程中,根据实际需求或提示再安装。

工具 用途 使用场景
CMake 构建系统 编译(必装)
Toolchain 交叉编译工具链 编译(必装)
BDT 烧录工具 使用 BDT 烧录固件
ICE Driver JTAG USB 驱动 使用 JTAG 烧录和调试
ICEman JTAG 调试服务 使用 JTAG 烧录和调试
OpenOCD 调试服务 使用 JTAG 调试
Jtag_burn JTAG 烧录工具 使用 JTAG 烧录

如需手动安装或指定本地路径,右键单击工具或 toolchain,选择 Install(在线安装最新版本)或 Browse(指定本地已安装的工具)。

安装工具

软件安装与配置

构建环境的软件安装有多种方式可选:

  1. Telink Tools Installer:离线安装包(安装包约 2 GB,安装后占用约 5.2 GB),一次性安装全部开发工具。安装后插件会自动检测 Tools 路径,适合无法在线安装或需要批量部署的场景。安装包的使用方法请参考Telink Tools Installer

  2. 本地配置:如果已经安装Telink IoT Studio和其他软件,可以复用其中的toolchain等软件,右键选择 Browse。(节省安装时间)

  3. 在线安装(推荐):右键选择 Install。(下载速度受限于网络速度和文件大小,耗费一些时间;优点是根据实际条件安装需要用到的软件)

软件清单在 DEVELOPMENT TOOLS 中列出,可以右键选择 Install 和 Browse。用户在编译前可主动预安装,也可以在构建过程中根据提示再安装。

工具安装

构建需要两个必备软件:CMake 和 Toolchain。

Toolchain本地配置

在构建过程中发现缺失对应 Toolchain 时,右下侧会弹出选择框。

点击 Configure,根据文件选择框提示,选择对应 toolchain 路径下的 gcc 文件:riscv32-elf-gcc 或者 tc32-elf-gcc

点击 Configure

选择 'gcc' 文件

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

toolchain 版本检查

CMake软件安装和配置

右键选择 Install 或者 Browse,目前建议选择 Install,使用指定版本的 CMake。

配置 CMake 软件路径

  1. 配置线程数量

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

配置构建线程数量

  1. 配置generator

  2. Windows 支持切换 UNIX makefiles、Ninja、MinGW makefiles。其中 Ninja 和 MinGW makefiles 构建编译性能相较于 UNIX makefiles 有提高

  3. Linux 支持切换 UNIX makefiles、Ninja。

Select CMake Generator

不同 generator 需要使用不同的构建软件,右键安装即可:

  • UNIX makefiles:无需额外安装,toolchain 里面已经包含。
  • MinGW makefiles:需要 MinGW make。
  • Ninja:需要 Ninja。

Check CMake Generator Tools

注意

更换不同 generator,编译前需要删除 cmake_builds 目录,重新构建。

BDT烧录

安装:右键 BDT 选择 Install / Browse。Browse 根据文件选择框提示选择对应名称的软件。

该功能运行需要依赖 Windows 和 Linux 下的 BDT 工具。

快捷烧录

构建完成后,可以点击 bin 文件右侧烧录按钮,将固件烧录到目标开发板。

BDT 快捷烧录

打开 BDT

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

以下功能界面仅Linux可用。Windows平台会直接启动BDT软件, 参考windows BDT 参考文档

BDT 工具烧录

查看 Flash/SRAM 数据

BDT 查看内存

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

BDT 写入数据

JTAG烧录与调试

在程序烧录完成后,用户可以通过 JTAG 接口和 GDB 工具进行调试,包括单步调试、断点调试、查看变量、查看堆栈、查看寄存器、查看内存、查看汇编等等。

ICE Libusb驱动安装

JTAG 使用前置:驱动安装。查看提示是否安装对应驱动:

ice_driver_check_install

(1) Windows

ice_driver_install_windows

点击并运行 Install_driver:

ice_driver_install_folder_windows

(2) Linux

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

ice_driver_install_linux

安装完毕后,可以点击 DEVELOPMENT TOOLS 右侧 refresh 按钮刷新状态。

烧录

编译完成后,点击 Development Tools -> Jtag_burn。

JTAG Burn

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

JTAG Burn Config 1

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

JTAG Burn Config 2

然后点击 Start ICEman 按钮启动 ICEman,点击后,用户需要选择启动方式:

  • Default 模式:JTAG 为默认的四线连接方式。
  • SDP 2-wire 模式:ICEman 启动时添加 -I aice_sdp.cfg,JTAG 使用两线的连接方式,需要确保硬件支持。
  • -H 模式:ICEman 启动时添加 -H 选项,连接成功后,对芯片执行 reset-and-hold 操作。

一般情况下,若没有后两种的需求,建议选择 Default 模式。

Start ICEman

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

ICEman Log

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

Start Burning

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

JTAG Burn Log

调试

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

Debug Button

调试配置页面从左至右分为三个区域:

1. Core Configurations 与 Multi-Core Debugging Configurations: 泰凌 VS Code 扩展同时支持单核调试和双核调试。针对单个核心的 Core Configurations 是调试任务的基本组成部分。对于单核芯片,只需配置一个 Core Configuration 即可开始调试;对于多核芯片,则需分别编辑每个核的调试配置,然后在 Multi-Core Debugging Configurations 中将多个核心的配置组合为一个完整的调试任务。

2. 查看或新建调试配置:无论是 Core Configurations 还是 Multi-Core Debugging Configurations,均可在中间区域查看已保存的配置,并对已有配置进行编辑,或新建调试配置。

3. 编辑调试配置:调试配置页面最右侧为具体的调试配置编辑区域,用于编辑当前选中的调试配置。

  • 对于 Core Configurations,其配置页面如下图所示:

Core Config 1

Core Config 2

用户需要选择芯片类型。若所选芯片为双核芯片,则 Port 选项会提供两个端口,用于分别指定需要调试的两个核心。

用户可以配置 Initial Commands,该选项用于指定 GDB 启动时执行的初始命令,属于可选配置。用户可以根据 GNU GDB 的使用规范添加相应命令,也可以留空。

用户可以选择是否启用 Jtag_burn。启用后,在调试开始前,泰凌 VS Code 扩展会自动将指定的二进制文件下载至 Flash 的指定地址。

GDB Path、ELF Path 和 Working Directory 均可根据实际需求进行配置。一般情况下,使用默认配置即可满足调试需求。

  • 对于 Multi-Core Debugging Configurations,可以按照以下方式新建:

multi_core_new

只有当 Core Configurations 中至少存在两个芯片类型相同且芯片为双核芯片的 Core Configuration 时,才允许新建 Multi-Core Debugging Configurations。新建时,需要为调试任务指定名称,并选择两个芯片类型相同且互不相同的 Core Configuration 作为组合。启动该调试任务后,泰凌 VS Code 扩展会同时启动两个核心对应的调试会话。

调试页面可以大致分为图中的四个区域:

  1. 调试控制区域:提供调试控制功能,包括 continueinterruptstep overstep intostep outrestartdisconnect

  2. 变量和核心寄存器:在这里可以查看当前作用域中存在的变量,同时可以查看芯片的全部核心寄存器。

  3. 外设寄存器:若正确指定了 SVD 文件,可以在这里查看芯片的外设寄存器,并根据权限读或者写。

  4. Debugger Console:这里会显示调试过程中 GDB 的输出信息,同时在下方的输入框中用 >Command 的形式输入命令,GDB 会执行命令并返回结果,例如,>info br

Debug View

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

Debug View

断点的高级用法

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

Edit Breakpoint

Expression Breakpoint

  • Expression:自定义一个表达式,当表达式为真时,断点生效,表达式中的变量必须是当前作用域可见的。
  • Hit Count:当断点命中的次数达到指定次数时,断点生效。
  • Log Message:自定义一个字符串,当断点生效时,会在 Debug Console 中打印该字符串。
  • Wait for Breakpoint:指定程序中的另外一个断点,当指定的断点生效时,当前断点才会生效。

开发方式

除了常规的本地开发,Telink Extension 还支持以下开发方式:

  • VS Code Remote:在远程环境中开发,插件运行在 remote,UI 操作显示在本地。详见 Telink Extension Usage in VS Code Remote
  • Docker:使用基于 CMake 工程的 Docker 开发环境,包含基础工具(CMake, BDT, ICEman, JTAG)和 toolchain(TC32, GCC10.3, GCC12.2, GCC14.2)。详见 Telink Docker 使用方法

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 allmake cleanmake menuconfig。对于 menuconfig 我们建议使用 guiconfig,单击即可打开完全图形化操作的 QConfig 程序。
  • Build Files:显示所有的 build 生成的文件。
  • Tools and Settings:在这里可以指定 Wi-Fi SDK 开发中需要的工具,同样的,右键点击所需的工具可以选择下载。其中,单击 FlashTool 即可打开 sctool_gui 以烧录程序。

Wi-Fi SDK Development

环境配置

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

    wifi_check_toolchain

  2. Python 环境安装:

    pip install pycryptodome
    pip install imgtool
    pip install PyYAML
    

    保证安装的 Python 工具可以在系统环境变量找到。

构建Target

点击对应配置,会生成 .config。

wifi_config

点击 "all",完成编译。

wifi_build_all

配置

修改配置的方式可以通过下面两个软件。

(1) MenuConfig

MenuConfig

(2) GuiConfig

GuiConfig

SDK Downloader

SDK Downloader 功能可以用来获取当前 Telink VS Code Extension 支持的所有 SDK,用户可以通过以下两种方式打开 SDK Downloader:

  • 在 Telink Extension TreeView 中单击打开:

    Open SDKDownloader

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

    Open sdkDownloader

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

Clone or Fetch Tags(Branch)

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

Checkout Tags or Branch

注意

该功能实际上是将仓库克隆至本地,然后 checkout 用户指定的 tag 或者 branch,所以用户获取的同样也是指定 SDK 的 Git 仓库。

在下载完成后,你可以选择直接打开刚获取的 SDK:

Open SDK

简介

Telink Tools Installer 是 Telink SDK 开发工具的离线安装包,可一次性安装全部开发工具,适用于无法在线安装或希望批量部署的场景(如内网环境)。安装完成后,插件会自动检测 Tools 路径。

提示

常规开发中一般是用到什么工具再安装什么(编译、调试过程中插件会按需提示安装)。Telink Tools Installer 为一次性安装全部工具的方式,安装包约 2 GB,安装后占用约 5.2 GB,可根据实际情况选择。

该安装包包括以下组件:

  • 工具链
    • 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,而不是直接关闭窗口。

Install Log

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

Install Successfully

安装完成

安装完成后,在 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,我们建议选择安装。

故障排查与已知问题

常见问题

Q1:编译时报错提示缺少 Toolchain?

A: 在构建过程中发现缺失对应 Toolchain 时,右下侧会弹出选择框,点击 Configure 指定本地 toolchain 的 gcc 文件即可,详见Toolchain本地配置

Q2:更换 generator 后编译报错?

A: 更换 generator 后,编译前需要删除 cmake_builds 目录重新构建,详见配置generator

Q3:编译产物无法烧录?

请确认已安装 BDT 软件并正确配置相关参数,详见软件安装与配置BDT烧录

已知Bug

  • 选项可能没有 100% 全部转换,因为有些配置没有体现在工程文件 .cproject 中,是 IDE 默认行为。

当前仅支持VS Code Remote(workspace)模式(workspace模式: 插件运行在remote,UI操作显示在本地)。 相关概念请参考VS Code Remote Development

Architecture

Remote模式帮助开发者在不同环境快速切换完成开发。

远程安装插件

下面演示示例是Windows远程到Linux。Linux远程到Windows还需验证测试。进入Remote模式后,进行远程连接。

完成远程连接后,需要打开插件市场,给Remote安装插件,如下图,插件图标右下角有Remote图标,表示该插件安装在Remote环境。

Remote Install

检查配置是否正确

如果用户在Remote(例如Linux)已经有使用过的插件,在远程模式启动插件的时候,将会同步Remote环境对应插件配置,用户可以快速使用。

  1. 完成安装后,首先检查软件路径是否为Remote下的正确路径。

    Check Remote Path

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

    Remote Setting

如果没有重新配置,将会使用Local的路径配置,插件将不能正常运行。因为不同电脑开发环境配置都是不一样的。

完成配置后,如果UI界面显示的路径仍是旧路径,则需点击刷新。

Refresh Remote Tool

开发

该模式所有的文件操作都会在远程终端完成。工程编译在远程终端工作。

Remote Development

烧录与调试

根据硬件位置有2种情况。

硬件在Remote

这种情况不需要额外做配置,通过SSH连接Remote后可以直接使用。

远程硬件

硬件在Local

本地硬件

代码和编译后的 .bin.elf文件都在remote。

  • 如果只需要使用BDT烧录,选择硬件位置后直接烧录即可。

  • 如果使用ICEman调试,需要额外做一个SSH端口反向映射处理。配置方法如下:

  • 选择硬件位置

    选择位置

  • 打开Settings,先配置3个端口需要用到的端口号(Settings里有Remote Settings选项,是在建立远程连接之后才会显示Remote)。

    如果远程有使用过插件,建议在Settings里的User Settings进行配置(当进行远程连接,插件会同步User SettingsRemote Settings)。

    配置端口

  • 手动打开SSH配置文件(本地端的SSH)

    配置文件默认在用户目录,例如:

    • Windows: C:\Users\admin\.ssh\config
    • Linux/home/user/.ssh/config

    如果用户SSH配置文件是自定义文件路径,则打开对应配置文件。

    Host 192.168.88.88
    HostName 192.168.88.88
    User Admin
    RemoteForward 3334 localhost:3334
    RemoteForward 8889 localhost:8889
    RemoteForward 5556 localhost:5556
    

配置3个端口,分别可用于ICEman GDB port、TCLNET port、burn port连接。配置完成后,重新进行Remote SSH连接(关闭VS Code窗口,重新打开也可以),才能配置生效。配置完成后,如果不是端口冲突,后面使用该功能,不用再重新配置。

端口映射配置解释:远程电脑的3334端口映射到本地电脑3334端口,实现GDB访问ICEman的跨电脑透传连接。

注意事项

(1) Show File在Remote模式下不可用。

(2) 启动调试遇到如下提示,说明配置的端口3334存在冲突。有一种冲突是VSCode自动进行Forward,选择关闭后,就不会有冲突提示了。如果跟其他程序端口冲突,可以根据提示修改,例如使用本地localhost:33340

修改端口

基于CMake工程的Docker开发环境,包含基础工具(CMake, BDT, ICEman, JTAG)和toolchain(TC32, GCC10.3, GCC12.2, GCC14.2)。

主要有以下Docker(基于debian:bookworm-slim):

  • telink-dev-tc32:latest
  • telink-dev-gcc10.3:latest
  • telink-dev-gcc12.2:latest
  • telink-dev-gcc14.2:latest

github packages拉取。

docker pull ghcr.io/telink-semi/telink-dev-gcc12.2:latest
docker tag ghcr.io/telink-semi/telink-dev-gcc12.2:latest telink-dev-gcc12.2:latest

如果本地有Docker image压缩包, 直接加载。

docker load -i telink-dev-gcc12.2.tar.gz

在VS Code中使用Docker

安装Dev Containers插件 (Identifier: ms-vscode-remote.remote-containers)。

在VSCode打开一个SDK文件夹, 在当前workspace创建文件.devcontainer/devcontainer.json,填充如下内容。点击在左下角远程图标(Open a remote Windows), 选择Reopen in Containers

{
    "name": "telink-dev",
    "image": "telink-dev-gcc12.2:latest",
    "mounts": [
      "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached"
    ],
    "workspaceFolder": "/workspace",
    "runArgs": [],
    "customizations": {
      "vscode": {
        "extensions": [
          "telink.tlk"
        ]
      }
    }
}

注意

image: 根据SDK开发需求选择对应的Docker image。

在命令行界面(CLI)中使用Docker

以终端交互的形式打开

docker run -it --rm -v $(pwd):/workspace -w /workspace telink-dev-gcc12.2:latest
run_cmake.sh TL_PLATFORM_SDK_751X ADC_Demo 

GitHub Actions使用

创建.github/workflows/cmake_build.yml配置文件,根据实际需求拉取对应Docker,配置工程。

name: toolchain-build

on:
  push:
    branches: [ "docker_cmake_build" ]
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: ghcr.io/telink-semi/telink-dev-gcc12.2:latest

    env:
      PLATFORM: TL_PLATFORM_SDK_751X
      APP_NAME: ADC_Demo
      BUILD_CMD: run_cmake.sh

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Fix script permission
        run: |
          find . -type f -name "*.sh" -exec chmod +x {} \;

      - name: Build
        run: |
          echo "Platform: $PLATFORM"
          ${BUILD_CMD} $PLATFORM $APP_NAME

      - name: Collect artifacts
        run: |
          mkdir -p artifacts

          find cmake_builds -type f \( \
            -name "*.bin" -o \
            -name "*.elf" -o \
            -name "*.lst" \
          \) -exec cp --parents {} artifacts/ \;

          echo "Artifacts:"
          find artifacts

      - name: Upload artifacts
        uses: actions/upload-artifact@v4
        with:
          name: build-output
          path: artifacts/
          retention-days: 7