我是手臂架构的新手,我从事嵌入式软件工作,并试图了解项目二进制文件调试文件夹中的.axf文件。
发现它是链接器在构建过程中生成的arm可执行格式文件,用于调试崩溃。所以很明显它包含一些调试信息,但不清楚它是什么类型的信息?并且调试文件夹中也存在一个.map文件,那么这两个文件之间可能有什么区别呢?
答案 0 :(得分:23)
AXF文件是由ARM的RealView编译器(也是Keil的ARM-MDK的一部分)生成的目标文件格式,包含目标代码和调试信息。在调试器中,只有目标代码加载到目标本身上,代码和调试信息都会加载到开发主机的内存中。
当通过JTAG,SWD或其他连接调试(任何类型 - 不仅仅是崩溃)时,代码需要在主机上可用,以及将该代码与原始源代码相关联的调试信息。在调试连接上,仅传输诸如寄存器值之类的最小数据,因此例如调试器将获取程序计数器值并且能够使用AXF中的调试数据显示主机上可用的汇编器和源代码。
MAP文件包含相同信息的某些,但它是为了人类的可读性和消费而非机器使用,并且不包含源代码行到目标代码源级调试器所需的关联数据。
大多数情况下你可以忽略它 - 编译器生成它,调试器加载它。您的工具链可能还会生成.hex文件,这是您用于生产编程的文件,仅包含机器代码和常量数据以及初始化程序。