Keil 项目/生成的各种文件类型(.AXF、.D、.crf、.exf)说明
内容提要
Keil是ARM推出的低功耗芯片集成开发环境品牌,包括项目文件、源码文件、列表文件、目标文件、调试文件等。Keil还提供命令行工具和独立版编译套件。
延伸解读
区分IDE与编译器生成的文件
文章指出,严格来说,许多扩展名文件并非Keil本身生成,而是由编译器产生,Keil只是集成开发环境。ARM还提供独立版编译套件,可在命令行中使用。因此,理解文件来源有助于在脱离IDE时排查问题,例如直接调用编译器或链接器时,需明确哪些文件由工具链生成,哪些由μVision管理。
版本差异与文件替代关系
随着Keil升级,不同版本的文件类型可能变化,部分文件被弃用或替代。例如.OPT是早期项目配置选项文件,在新版本中已被.UVOPT/.UVOPTX取代;.UVPROJ与.UVPROJX分别对应μVision4和μVision5的项目文件。了解这些对应关系,可避免在迁移工程或查阅旧资料时混淆文件用途。
调试与构建辅助文件的实用价值
文章提到,.INI文件常用于在线调试和Trace初始化,可通过Keil界面配置;.dbgconf为部分器件提供调试、跟踪或Flash编程的默认配置,但可能未设置全部选项,需验证并调整。此外,.BAT批处理文件可在命令行中重建项目,适合自动化构建场景。这些文件虽非核心输出,但对调试和构建流程有实际帮助。
链接器输出文件的研究意义
文章强调,.MAP文件是查看编译信息的利器,开发阶段需实时查看和研究;.SCT分散加载文件非常有用且值得研究,文中还给出了一个复杂示例。这些链接器生成的文件能反映内存布局和符号分配,深入理解它们有助于分析程序结构和优化链接配置。
Q&A
Keil 的 .UVPROJX 和 .UVPROJ 文件有什么区别?
.UVPROJX 是 Keil μVision5 的项目文件,采用 XML 格式记录工程结构,如芯片类型、包含的源文件等,双击即可打开工程;.UVPROJ 是 μVision4 的项目文件,同样采用 XML 格式记录工程结构。
Keil 编译后生成的 .AXF 文件是什么?有什么作用?
.AXF 是由链接器生成的绝对可执行对象文件(ELF 格式),包含大量调试信息,是可执行文件的一种。
Keil 中的 .crf 文件有什么用途?
.crf 是交叉引用文件,包含浏览信息(如宏定义、变量及函数的定义和声明位置),在代码编辑器中右键“Go To Definition Of”时,MDK 通过该文件查找跳转位置。
如何让 Keil 生成 .map 文件?
在 Keil 的 Listing 标签配置中勾选相应选项即可输出 .map 文件,该文件是链接器生成的列表文件,常用于查看编译信息。
Keil 的 .INI 文件在调试中有什么作用?
.INI 文件通常用于初始化调试器,在线调试和 Trace 时经常使用,可以包含加载程序、启用跟踪端口等调试命令。
Keil 中 .UVGUI 和 .UVGUIX 文件分别记录什么?
.UVGUI 是 μVision4 的窗口布局文件,记录用户调整的窗口布局;.UVGUIX 是 μVision5 的窗口布局文件,采用 XML 格式记录 GUI 布局,如代码编辑区大小、编译输出窗口位置等。