VS Code 使用指南

概述

Ameba 扩展插件是基于 Cline 开发的 VS Code 扩展插件,保留了原生 Cline 的所有功能,并针对 Realtek Ameba 系列芯片增加了开发环境检查和自动安装,SDK 配置、代码编译、固件烧录、串口监控等专用功能。这些功能通过直观的按钮界面提供,简化了 Ameba 系列芯片的开发流程。

使用流程

  1. 插件的安装

在 VS Code 的扩展应用商店中搜索 Ameba,点击 安装 即可

  1. 仅使用 Ameba 功能

  • 首次使用的欢迎页面中可以登录 cline 账号或者使用自定义的 API Key

  • 当您没有 Cline 账户或 API key 时,可以点击 USE Ameba Only 按钮仅使用 Ameba 相关功能

../_images/vsix_welcome.gif
  1. Ameba 相关功能区

下图中的红框展示了 Ameba 相关的功能区域

../_images/vsix_ameba_area.png
  1. 开发环境检查和自动安装

插件会自动检查如下配置:

  • 打开的文件夹和子文件夹内是否包含 Ameba SDK,SDK 的下载请参考 FreeRTOS SDK 下载

  • 开发环境的软件合集包是否已正确安装,如果没有安装,将会在右下角提供 Install from GitHubInstall from Aliyun 两种安装选项(中国大陆地区用户建议使用 Aliyun),点击即可自动下载安装并创建 Python 虚拟环境

../_images/vsix_check_prebuilts.gif
  • 如果开发环境的软件合集包已正确安装,但 SDK 的 Python 虚拟环境未正确创建,将会在右下角进行提示,点击 Setup Now 按钮即可自动创建

../_images/vsix_check_venv.gif

通过上述所有检查后,插件才会激活 Ameba 相关功能按钮

  1. 芯片选择

通过下拉选择框选择要开发的 Ameba 系列芯片型号

../_images/vsix_ic_select.gif
  1. 串口选择

自动扫描并更新系统中所有可用串口,通过下拉选择框选择开发板对应的串口名

../_images/vsix_port_select.gif
  1. 示例选择

  • 通过下拉选择框选择对应的应用示例

  • 选择示例后将打开对应示例的 README.md 的预览

  • 默认情况下或者选择示例中的 None 将会编译基础项目配置

../_images/vsix_example_select.gif

主要功能

SDK 配置

  1. 选择目标芯片

  2. 点击 Ameba Menuconfig 按钮打开图形化 SDK 配置界面

  3. SDK 配置相关信息请参考 配置 SDK(menuconfig)

  4. 完成 SDK 配置后,必须保存并正确退出配置界面。如果未正确保存退出,将会影响后续的其余功能正常使用,插件会在右下角弹出提示信息提醒用户

../_images/vsix_config.gif

项目清理

  1. 选择目标芯片

  2. 点击 Ameba Clean 按钮清理工程编译产物

  3. 清理过程中将实时显示详细进度和日志信息

../_images/vsix_clean.gif

项目编译

  1. 选择目标芯片

  2. 点击 Ameba Build 按钮进行编译工程

  • 如果已在下拉选择框选择应用示例,则编译指定示例

  • 如果没有选择应用示例或者选择示例中的 None,则编译基础项目配置

  1. 编译过程中将实时显示详细进度和日志信息

../_images/vsix_build.gif

固件烧录

  1. 选择目标芯片和目标串口

  2. 设置烧录参数(可选):

  • 点击 设置 > 扩展 > Ameba > Flash:Memory Type 指定 Nor 或 Nand Flash ,默认 Nor Flash

  • 点击 设置 > 扩展 > Ameba > Flash:Baud Rate 设置烧录波特率,默认 2Mbps

  1. 点击 Ameba Flash 按钮启动固件烧录流程

  2. 根据 SDK 配置和 Flash 布局信息 进行烧录

  • 配置异常(如 overlap )时,将打开 Flash 布局信息 ,同时出现异常提示,方便用户检查

  1. 提供烧录进度实时反馈和详细日志

../_images/vsix_flash.gif

串口监控

  1. 选择目标串口

  2. 点击 Ameba Monitor 按钮打开集成的串口监视器,自动选择波特率并连接串口

  3. 实时显示和接收串口数据

  4. 支持通过串口发送 AT 命令,并且可以根据支持的 ATCMD List 通过 Tab 自动补全

  5. 支持历史记录功能,按 可以快速查看和选择之前发送过的命令

../_images/vsix_monitor.gif

代码调试

  1. 硬件准备

  • 调试适配器

    • 支持 DAP-LinkJ-Link (任选其一)

  • 调试目标芯片

  1. 连接步骤

  • 将适配器的 SWDIO( SWD )连接到目标芯片的 SWD DATA

  • 将适配器的 SWCLK( CLK )连接到目标芯片的 SWD CLK

  • 将适配器 GND 与目标芯片 GND 连接,确保共地

  • 将适配器通过 USB 连接到 PC

  1. 在插件中选择调试目标芯片

  2. 点击 Ameba Debug 按钮启动集成的调试器,开始代码调试

../_images/vsix_debug.gif

备注

  1. RTL8730E KM4 内核调试限制:

  • 调试前需关闭 tickless 功能,否则会影响调试行为。

  1. SWD 引脚差异:

  • 不同芯片/封装的 SWD 引脚位置可能不同,请参考对应 PINMUX 表进行确认。

  1. 连接稳定性:

  • 若连接后无法识别目标,优先检查引脚映射是否正确。

  • 若出现连接不稳,可适当降低 SWD 时钟频率。

调试框架

调试框架如下图所示:

../_images/debug_diagram_local.svg
  1. 目标芯片通过调试适配器与 PC 相连。

  2. 启动调试时, OpenOCD( GDB 服务器)启动。你可以在 VS Code 的终端( gdb-server )查看 OpenOCD 输出日志与状态。

  3. 工具链内置的 GDB 连接到 OpenOCD ,随后即可进行调试操作。

可选调试配置

在启动调试前,点击 设置 > 扩展 > Ameba > Debug 配置调试参数。

  1. 基础配置

  • Request type

    • Attach (默认):附加模式。适用于连接正在运行的目标芯片。调试开始时不会复位芯片,程序从当前运行位置继续执行,不破坏现场。

    • Launch :启动模式。适用于常规开发。调试开始时会复位芯片,程序从设定的入口函数重新开始运行。

  • Run To Entry Point

    • 仅在 Launch 模式下有效。指定程序启动后自动暂停的函数入口(例如 main )。

  • Adapter Type

    • Daplink (默认)

    • Jlink

  • Adapter Speed

    • 设置调试适配器的时钟频率( kHz ),默认值: 4000。

  1. 多核与高级配置

  • All Stop

    • 全停模式。多核调试专用,默认启用。

    • 当任意一个核因命中断点或点击暂停按钮而挂起时,所有核也会自动挂起。

  • Run Sync

    • 同步运行。多核调试专用,默认禁用。

    • 当点击单步跳过、单步进入或“继续”按钮时,所有核都会同步执行相应的操作。

  • Live Watch

    • 实时监控。配置是否启用变量实时刷新功能(无需暂停 CPU )。

    • Live Watch Core :指定应用实时监控的目标核。

    • Live Watch Samples Per Second :设置实时监控数据刷新频率,单位:次/秒。

基础调试技巧

  1. 调试工具栏

  • 继续:恢复程序运行(默认快捷键 F5 )。

  • 暂停:暂停当前运行的程序(默认快捷键 F6 )。

  • 逐过程:执行当前行但不进入函数内部(默认快捷键 F10 )。

  • 单步调试:逐语句执行并进入函数内部(默认快捷键 F11 )。

  • 单步跳出:从当前函数返回到上层(默认快捷键 Shift+F11 )。

../_images/vsix_debug_toolbar.gif
  1. 变量

这是调试时最常用的视图,它会显示当前程序停止位置可见的所有数据。系统会自动分类:

  • Local: 当前函数作用域内的局部变量。

  • Global: 全局变量。

  • Static: 当前文件内的静态变量。

  • Registers: 当前 CPU 核的寄存器值。

../_images/vsix_debug_vars.gif
  1. 监视

监视面板允许你监控你关注的变量。通过以下方式监控:

  • 查看变量:

    • 在代码中右键点击变量 添加到监视,或在面板中点击 + 号输入变量名。

  • 查看任意内存地址:

    • 直接输入地址转换表达式,例如*(int*)0x20000004 ,即可查看该地址的数值。

    • 内存视图:按 F1 输入 MemoryView 打开专用面板,支持查看大块内存区域的 Hex 数据。

  • 强制类型转换:

    • 支持 C 语言风格的转换,例如 (char*)my_var 以查看字符串的值。

../_images/vsix_debug_watch.gif
  1. 调用堆栈

当代码逻辑复杂时,调用堆栈能清晰展示 程序执行路径

  • 层级导航:顶层为当前暂停行,第二层为调用者(父函数),依此类推。点击不同层级可跳转查看当时的上下文变量。

../_images/vsix_debug_callstack.gif
  1. 多核调试控制

启动多核调试后,调用堆栈视图将列出所有核的调试会话。用户可通过点击视图标题栏上的按钮,在以下两种协作模式间进行切换。

模式

说明

Run Sync

  • 含义:同步运行模式。所有核在暂停状态下,对任一核执行调试控制指令(如 继续单步调试 等)时,调试器会自动对所有其他关联的核执行相同的操作

  • 目的:保持多核在时间轴上的同步运行,避免因核运行状态不一致,导致共享内存通信异常或逻辑错误

  • 操作:点击 RS 按钮切换

All Stop

  • 含义:全停模式。当任一核触发暂停条件(如断点)时,所有核均会被强制暂停

  • 目的:确保调试现场的全局一致性;若关闭此模式,则允许对目标核进行独立调试

  • 操作:点击 AS 按钮切换

备注

Run Sync 功能的完整实现通常依赖于 All Stop 机制,二者配合关系如下:

  • 开启 All Stop 时,暂停/继续,单步调试动作会在所有核间同步。

  • 关闭 All Stop 时,各核行为互不强制同步,适合单核排查。

../_images/vsix_debug_rs.gif
  1. RTOS-Aware

启用 RTOS-Aware 后,调试器能识别操作系统的内部结构。当调试挂起时,调试器将显示出 RTOS 中所有存在的线程。此外,它还允许你查看其他非活动线程的堆栈、寄存器和变量等信息。

多核调试时需要单独控制。在调用堆栈视图中点击 RA 按钮进行切换。

../_images/vsix_debug_ra.gif
  1. 断点管理

断点是调试过程中最常用的工具。当程序运行到断点位置时会自动暂停,允许您检查当前的变量状态或寄存器信息。

断点方式

断点管理

行号点击

  • 添加断点:在编辑器中,直接点击代码行号左侧的空白区域(点击后会出现红点)

  • 查看断点:左侧的 断点 面板,这里列出了所有断点的位置

  • 删除断点:再次点击行号左侧的红点,即可取消该断点

右键菜单

  • 添加断点:在代码区域点击鼠标右键,选择 Add Hardware Breakpoint

  • 查看断点:左侧的 断点 面板,这里列出了所有断点的位置

  • 删除断点:左侧的 断点 面板,选择相应断点删除

调试控制台

  • 添加断点:在调试控制台输入 GDB 命令

  • b 函数名 (示例: b main,在函数入口暂停)

  • b 函数名 thread ID (示例: b shared_func thread 8,当线程 ID 为 8 的任务运行到该函数时触发)

  • b 行号 (示例: b 100,在当前文件第 100 行暂停)

  • b 文件名:行号 (示例: b main.c:50

  • 查看断点: info b

  • 删除断点: d 断点编号

备注

不同的芯片架构对硬件断点的数量有限制,超过限制可能导致断点无效或转为软件断点。

../_images/vsix_debug_bp.gif

高级调试功能

  1. 实时监视

变量和监视视图需要程序暂停才能刷新,而实时监视允许在程序全速运行时实时观察变量的变化。

  • 监视类型:全局变量或者静态变量。

  • 添加方式:

    • 在 LIVE WATCH 视图中监控变量的值。点击 + 号,输入变量名。

    • 暂停时,变量视图中所有变量都可以通过右键菜单中点击 Add to live watch 添加到实时监控。

    • 在 XPERIPHERALS 视图中所有寄存器都可以通过右键菜单中点击 Add to live watch 添加到实时监控。

备注

需要在调试开始前在配置中配置实时监控的参数。

  1. 外设寄存器

XPERIPHERALS 视图允许查看芯片内部外设寄存器的值。

  • 原理:基于芯片的 SVD( System View Description )文件,解析寄存器地址和位域。

备注

如果未正确配置 SVD 文件路径,此视图将为空。

  1. RTOS 视图

RTOS 内核视图全面展示了由 RTOS 管理的各种内核对象。这些内核对象是嵌入式系统中用于实现任务管理、同步和通信的基础组件。请注意,这些视图仅在调试会话期间可用。

  • RTOS-TASK:

    • 显示所有任务的状态( Running, Ready, Blocked, Suspended )。

    • 显示任务名称、地址、栈使用率/剩余栈空间(用于排查栈溢出)、运行时间、优先级。

  • RTOS-QUEUE:

    • 显示队列的名称、容量、当前消息数、等待该队列的任务列表。

  • RTOS-SOFTWARE TIMER:

    • 显示定时器名称、地址、状态( Active/Inactive,One-shot/Autoreload,Static/Dynamic )、周期、回调函数名称及地址。

  • RTOS-HEAP:

    • 显示动态内存地址范围、分配情况、剩余堆大小、使用率。

  • RTOS-TASK NOTIFICATION:

    • 显示任务名称、地址、已接收和正在等待通知的数量。

在线文档

点击 Ameba Doc 按钮将,打开默认浏览器,跳转到 Realtek Ameba 的官方网页

../_images/vsix_doc.gif

远程功能

如果您本机电脑是 Windows 系统,开发板也连接到本机电脑,但是选择将 SDK 下载到 Linux 服务器,通过 VS Code 的 Remote-SSH 的扩展进行 SDK 的开发,请按照如下步骤进行:

  1. 在本机电脑下载 AmebaRemoteService 并启动,启动后默认不配置密码,有安全需要可以右击软件图置密码

  2. 在 VS Code 中按下键盘 F1 按键,输入 ameba: Remote Servers,点击对应的选项

  3. 点击 Add New Remote Server 选项

Server 名称:

输入想要自定义的服务器名称

Server 地址:

输入 Windows 本机电脑的 IP 地址

Server 密码:

如果 Windows 的服务器软件有配置密码,需要输入对应的密码,如服务器未设置,则直接回车跳过

  1. 配置成功后,如果 VS Code 通过 Remote-SSH 连接打开了 Ameba SDK ,串口列表会更新出远程串口信息

  2. 再次在 VS Code 中按下键盘 F1 按键,输入 ameba: Remote Servers,点击对应的选项可以查看已有 Server 信息,点击对应已有 Server 可以将其删除

../_images/vsix_remote_server.gif

远程串口烧录

  1. 选择目标芯片和目标远程串口

  2. 烧录参数和本地烧录一致

  3. 点击 Ameba Flash 按钮启动固件烧录流程

  4. 提供烧录进度实时反馈和详细日志

远程串口监控

  1. 选择目标远程串口

  2. 点击 Ameba Monitor 按钮打开集成的串口监视器,自动选择波特率并连接串口

  3. 实时显示和接收串口数据

  4. 监控功能和本地监控一致

远程调试

远程调试框架如下图所示:

../_images/debug_diagram_remote.svg
  1. 目标芯片通过调试适配器与本地 Windows PC 相连。

  2. 安装在 Windows PC 的 VS Code 通过 SSH 连接到远程服务器。

  3. 启动调试时, OpenOCD( GDB 服务器)由 AmebaRemoteService 在本地 Windows PC 上启动。你可以在 AmebaRemoteService 窗口查看 OpenOCD 输出日志与状态。

  4. 部署在远程服务器上的工具链内置的 GDB 连接到本地启动的 OpenOCD ,随后即可进行调试操作。

启动调试步骤:

  1. 按照 代码调试 中要求完成硬件连接与基础配置。

  2. 在插件中选择目标调试芯片和远程串口。

  3. 点击 Ameba Debug 按钮启动集成的调试器。

  4. 开启代码调试,调试技巧和 代码调试 所述一致。

../_images/vsix_debug_remote.gif

故障排除

当使用 Ameba 扩展插件时遇到问题,可以按照以下步骤进行故障排除:

插件安装失败

问题现象: 插件无法正常安装或安装后无法启动

解决方案: 检查系统环境版本要求,确保满足以下最低版本要求:

  • VS Code 版本需要 ≥ 1.84.0

  • Node.js 版本需要 ≥ 18.16.0

可以通过以下方式检查版本信息:

  • 菜单栏 帮助 关于 查看版本号

../_images/vsix_vscode_version.png

如果版本不满足要求,请先升级到对应版本后重新安装插件。

终端相关问题

问题现象: 插件功能异常、命令执行失败、或界面无响应

解决方案: 插件的核心功能是通过创建一个名为 Ameba 的专用终端来执行,当出现异常时:

  • 如果发现 Ameba 终端出现错误或无响应,请手动关闭

  • 插件会自动检测,并在下次执行功能时重新创建 Ameba 终端

  • 关闭异常终端后,重新点击相应的功能按钮即可正常使用

../_images/vsix_ameba_terminal.png

工具链路径修改后插件异常

问题现象: 修改工具链安装路径后,插件无法正常识别开发环境或功能异常

解决方案: 如果您修改了工具链的安装路径(参考 安装工具链 ),需要执行以下步骤:

  • 彻底关闭 VS Code(确保所有 VS Code 窗口都已关闭,仅重新加载窗口是不够的)

  • 重新启动 VS Code 并打开 Ameba SDK 项目

  • 插件会自动重新检测开发环境配置并更新相关路径信息