MAP 文件管理
MAP 文件管理功能帮助您添加和管理链接器生成的 MAP 文件,在无法获得 ELF 文件(或 ELF 无调试信息)时,仍能建立变量名→地址映射,参与统一的变量观测与地址解析链路。
支持的 MAP 格式
系统按文件内容特征自动识别以下三种主流格式,无需手动指定:
| 格式 | 工具链 |
|---|---|
| GCC | GNU ld / arm-none-eabi-gcc(开源工具链) |
| ARMCC | ARM armlink / armclang / Keil MDK |
| IAR | IAR ilink(IAR Embedded Workbench) |
功能入口
- 添加 MAP 文件:资源管理器「MAP文件」根节点 → 右键 →「添加MAP文件...」
- 加载:右键 MAP 文件节点 →「加载」
- 关闭:右键已加载的 MAP 文件节点 →「关闭」
- 移除:右键 MAP 文件节点 →「移除」
使用步骤
1. 添加 MAP 文件
- 在资源管理器中右键「MAP文件」根节点
- 选择「添加MAP文件...」
- 在文件选择对话框中选择目标 MAP 文件(
.map) - MAP 文件节点添加到「MAP文件」节点下,初始为未加载状态(灰色图标)
2. 加载 MAP 文件
- 右键 MAP 文件节点,选择「加载」
- 系统自动识别文件格式(GCC / ARMCC / IAR)
- 解析符号表,提取数据符号(全局变量名→地址映射)
- 变量注册到全局变量管理器,节点下显示变量子节点
- 节点状态变为已加载
3. 使用 MAP 变量
- MAP 变量可像 ELF 变量一样添加到工程,参与 Watch / Scope / DAQ 等观测功能
- 工程重载后,已保存的 MAP 变量自动恢复,不会重复注册
4. 关闭与移除
- 关闭:清空变量子节点,节点恢复未加载状态
- 移除:删除 MAP 文件节点本身(不删除物理文件)
MAP 与 ELF 的对比
| 特性 | ELF 文件 | MAP 文件 |
|---|---|---|
| 变量地址 | ✅ 准确 | ✅ 准确 |
| 变量大小 / 所在段 | ✅ 包含 | ✅ 包含 |
| 类型信息 | ✅ 完整 | ❌ 不包含 |
| 结构体 / 数组展开 | ✅ 支持 | ❌ 不支持 |
| 指针路径解析 | ✅ 支持 | ❌ 不支持 |
选型建议:优先使用 ELF 文件;仅当只有 map 产物(或 ELF 无调试信息)时使用 MAP 文件。
注意事项
- 仅全局变量:MAP 文件仅提供全局变量的名称、地址、大小信息,无类型信息
- 不支持结构体展开:MAP 变量不支持结构体 / 数组展开与指针路径解析,如需此类能力请使用 ELF 文件
- 类型需手动指定:MAP 变量如需使用 IQ 格式等类型相关功能,需先为变量手动指定数据类型(参见 IQ格式)
- 格式限制:仅支持 GCC / ARMCC / IAR 三种格式,其他链接器产物不支持
- 工作区持久化:添加过的 MAP 文件随工作区保存,下次打开自动恢复