跳转至

泰凌VS Code扩展使用指南


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

VS Code 中,打开扩展管理器(默认快捷键 Ctrl+Shift+X),搜索 Telink ,即可安装 Telink VS Code Extension(以下简称为Telink Extension)。

搜索 Telink Extension

Telink Extension 安装完成后,点击 Telink 图标,即可进入该插件的 Treeview 视图页面。开发 Telink SDK 前,需要安装或者指定必要的开发工具。

在 DEVELOPMENT TOOLS 中安装需要的开发工具

点击展开 DEVELOPMENT TOOLS,可查看所有支持的 Telink 开发工具,其中支持用户自定义安装的工具包括 : CMakeToolchainBDTICE DriverICEmanOpenOCDJtag_burn

对于上述的工具或工具链(toolchains),用户可根据实际需求选择性安装,右键单击工具或 toolchain,点击 Install 按钮启动安装。

注意

  • CMake 与当前工程所需的 toolchain 为必装项

安装工具

若用户需使用 BDT 功能,则需安装 BDT 工具;若用户需使用 JTAG 烧录和调试功能,则需安装 Jtag_burnICE DriverICEmanOpenOCD 等工具。

上述通过 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软件且已正确配置相关参数,详情请参考章节软件安装与配置)。

BDT快捷烧录

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

Debug Button

Telink Extension 支持 Telink TLSR9118 Wi-Fi SDK,其使用方式与其它 SDK 略有不同。

首先,需要打开 Telink TLSR9118 Wi-Fi SDK 文件夹,并确保 KConfig 文件在顶层目录中。

在 Wi-Fi DEVELOPMENT 中可对 TLSR9118 Wi-Fi SDK 进行配置、编译和烧录。

Wi-Fi SDK Development

在 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构建

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

构建

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

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

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

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

开始构建

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

构建完成

Clean

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

Clean

CMake工程构成

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

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

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

CMake Output

工程管理

增删工程和Target

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

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

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

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

添加工程

工程文件增删改查

增加/删除文件

在对应文件夹右键菜单,在输入框输入新的名称。

文件操作

导入/删除引用

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

删除引用:不实际删除文件,从target的source中移除引用。

导入和删除引用

编译选项配置

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

Properties参数配置

工程使能CPP

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

enable_cpp

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

cpp_properties

烧录和调试

在 Telink Extension 中,有两种烧录方式可供用户选择:

  • BDT

  • JTAG

BDT

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

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

快捷烧录

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

BDT快捷烧录

点击BDT工具栏的右侧箭头,打开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

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

Debug Configuration

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

Debug Configuration

点击右下角的 Debug 即可开始调试,同时会在 .vscode 文件夹下生成 launch.json 文件,里面包含调试配置,若有需要,可以在 'type' 为 'tlkTarget' 的对象中自行修改。

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

(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: 指定程序中的另外一个断点,当指定的断点生效时,当前断点才会生效。

软件安装与配置

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

(1) Telink Tools Installer,安装后插件会自动检测Tools路径。安装包的使用方法请参考章节Telink Tools Installer。(适用于没有安装TelinkIoTStudio环境,大概2GB,包含CMake、Make、Toolchain等常用软件)

(2) 本地配置, 如果已经安装TelinkIoTStudio,可以复用TelinkIoTStudio里面的toolchain等软件, 右键选择Browse。(节省安装时间)

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

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

tool_install

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

Toolchain本地配置

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

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

点击Configure

选择‘gcc’文件

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

toolchian_browse_check_version

CMake软件安装和配置

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

配置CMake软件路径

配置线程数量

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

配置构建线程数量

配置generator

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

Linux支持切换UNIX makefiles、Ninja。

Select Cmake Generator

在使用不同generator的情况下,检查tool/toolchain对应软件是否安装。不同generator需要使用不同的构建软件, 右键安装即可:

  • UNIX makefiles可以不用额外安装软件,toolchain里面已经包含。

  • MinGW makefiles:MinGW make。

  • Ninja: Ninja。

Check Cmake Generator Tools

更换不同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 中单击打开:

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

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

配置

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

(1) MenuConfig

MenuConfig

(2) GuiConfig

GuiConfig

简介

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

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

已知Bug

(1) 选项可能没有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

注意事项

Show File在Remote模式下不可用。