1. 背景:.scvd 文件的作用

1.1 文件定义

.scvd(System Component Viewer Description)是 Keil 定义的 XML 格式描述文件,用于告知 Keil 调试器如何在目标内存中解析特定 RTOS 的内核数据结构

1.2 为何需要 .scvd

FreeRTOS 的任务信息(任务名、优先级、堆栈、状态)存储于 tskTCB 结构体和 pxReadyTasksLists 等内核链表中。Keil 调试器自身并不知晓这些结构在内存中的布局、偏移量和字段含义。.scvd 文件相当于一份"内存解析地图",定义了以下内容:

  • pxCurrentTCB 的地址
  • TCB 中 pcTaskName 的偏移量
  • 就绪链表的遍历方式

1.3 版本匹配的重要性

FreeRTOS 不同版本(如 V9 与 V10)的 tskTCB 结构体大小和字段顺序可能存在差异。若 .scvd 版本与工程中 FreeRTOS 版本不匹配,Keil 会按错误的偏移量读取内存,导致调试视图显示乱码或空白。


2. 配置流程

2.1 安装 CMSIS-FreeRTOS Pack

.scvd 文件并非 Keil 默认自带,需通过 Pack Installer 下载:

  1. 菜单栏选择 Project → Manage → Pack Installer
  2. 左侧展开 ARM,找到 CMSIS-FreeRTOS
  3. 点击右侧 Install 按钮安装
  4. 安装完成后,.scvd 文件将出现在 Keil 安装目录下,例如:
1
C:\Keil_v5\ARM\Packs\ARM\CMSIS-FreeRTOS\10.3.1\CMSIS\RTOS2\FreeRTOS\FreeRTOS.scvd

注意:需安装与工程中 FreeRTOS 版本相近或兼容的 Pack 版本。例如工程使用 FreeRTOS V10.4.3,可安装 CMSIS-FreeRTOS 10.3.x 或更高版本 Pack。

2.2 在工程中添加 .scvd 文件

  1. 点击 Options for Target(魔术棒图标)
  2. 切换到 Debug 选项卡
  3. 点击 Manage Component Viewer Description Files 按钮
  4. 在弹出的对话框中点击 Add
  5. 浏览至步骤 2.1 中的路径,选中 FreeRTOS.scvd,点击确认

2.3 重新编译工程

关闭配置窗口,执行 Project → Rebuild all target files,确保配置生效。

2.4 进入调试模式并打开 FreeRTOS 视图

  1. 点击 Debug 按钮进入调试会话
  2. 菜单栏选择 View → Watch Windows → FreeRTOS

此时 FreeRTOS 窗口将显示任务列表、任务状态、堆栈使用等 RTOS 运行信息。


3. 关键点速查

要点说明
.scvd 定义System Component Viewer Description,Keil 用于解析 RTOS 内核结构的内存描述文件
版本匹配原因FreeRTOS 不同版本的 tskTCB 布局不同,.scvd 需匹配才能正确偏移解析
文件来源通过 Pack Installer 安装 ARM::CMSIS-FreeRTOS Pack 后生成,默认不存在
旧调试方式System and Thread Viewer 已不再用于 FreeRTOS 调试
新调试方式通过 View → Watch Windows → FreeRTOS 查看,依赖手动添加 .scvd
必要步骤添加 .scvd 后必须重新编译,再进入 Debug 模式方可生效