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 下载:
- 菜单栏选择
Project → Manage → Pack Installer - 左侧展开
ARM,找到CMSIS-FreeRTOS - 点击右侧 Install 按钮安装
- 安装完成后,
.scvd文件将出现在 Keil 安装目录下,例如:
| |
注意:需安装与工程中 FreeRTOS 版本相近或兼容的 Pack 版本。例如工程使用 FreeRTOS V10.4.3,可安装 CMSIS-FreeRTOS 10.3.x 或更高版本 Pack。
2.2 在工程中添加 .scvd 文件
- 点击 Options for Target(魔术棒图标)
- 切换到 Debug 选项卡
- 点击 Manage Component Viewer Description Files 按钮
- 在弹出的对话框中点击 Add
- 浏览至步骤 2.1 中的路径,选中
FreeRTOS.scvd,点击确认
2.3 重新编译工程
关闭配置窗口,执行 Project → Rebuild all target files,确保配置生效。
2.4 进入调试模式并打开 FreeRTOS 视图
- 点击 Debug 按钮进入调试会话
- 菜单栏选择
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 模式方可生效 |