当前位置: 首页> 娱乐> 八卦 > 新闻网站设计_免费的crm系统_百度电脑网页版_视频号推广方法

新闻网站设计_免费的crm系统_百度电脑网页版_视频号推广方法

时间:2025/7/11 23:51:41来源:https://blog.csdn.net/froxy/article/details/146429201 浏览次数:0次
新闻网站设计_免费的crm系统_百度电脑网页版_视频号推广方法

MDK(Keil μVision 5)的编译过程及文件类型全解

一、编译过程

MDK的编译过程主要分为 预处理、编译、汇编、链接、生成可执行文件、格式转换 六个阶段。以下是详细流程:

  1. 预处理(Preprocessing)
    • 工具: armcc(ARM C/C++ 编译器)
    • 输入文件: .c(C源文件)、.h(头文件)
    • 输出文件: .i(预处理后的临时文件,默认不保存)
    • 作用: 展开宏、处理条件编译指令(如 #ifdef)、合并头文件到源文件中。
  2. 编译(Compilation)
    • 工具: armcc
    • 输入文件: 预处理后的 .i 文件
    • 输出文件: .s(生成的汇编文件,默认不保存)
    • 作用: 将C/C++代码翻译成ARM汇编指令。
  3. 汇编(Assembly)
    • 工具: armasm(ARM汇编器)
    • 输入文件: .s(汇编文件)或用户编写的 .s(如启动文件 startup_xxx.s
    • 输出文件: .o.obj(目标文件)
    • 作用: 将汇编代码转换为机器码(二进制目标文件)。
  4. 链接(Linking)
    • 工具: armlink(ARM链接器)
    • 输入文件: 所有 .o/.obj 文件、库文件(.lib)、分散加载文件(.sct
    • 输出文件: .axf(ELF格式的可执行文件,含调试信息)
    • 作用: 合并目标文件、分配内存地址(代码段、数据段)、解析符号引用。
    • 关键文件:
      • .sct 分散加载文件: 定义内存布局(如Flash和RAM的地址范围),类似GCC的 .ld 文件。
  5. 生成可执行文件(ELF格式)
    • 文件: .axf
    • 内容: 包含调试信息(符号表、源码行号)、机器码、内存分配表等,用于调试和烧录。
  6. 格式转换(Hex/Bin生成)
    • 工具: fromelf(ARM工具链)
    • 输入文件: .axf
    • 输出文件:
      • .hex(Intel HEX格式,用于烧录)
      • .bin(纯二进制镜像,可直接写入Flash)
    • 作用: 将ELF文件转换为烧录工具支持的格式。

二、文件类型全解
文件类型扩展名作用与说明
项目文件.uvprojxKeil项目文件,保存工程配置(如芯片型号、编译选项、文件结构)。
源文件.c.cppC/C++源代码文件。
头文件.hC/C++头文件,声明函数、宏、结构体等。
汇编文件.sARM汇编源文件(如启动文件 startup_xxx.s)。
汇编头文件.inc汇编语言的头文件,包含寄存器定义或宏。
目标文件.o.obj编译后的二进制目标文件,含机器码和未解析的符号。
可执行文件.axfELF格式的可执行文件,含调试信息和内存分配表,用于调试和烧录。
Hex文件.hexIntel HEX格式文件,烧录到Flash的标准格式。
Bin文件.bin纯二进制镜像文件,直接写入MCU的Flash。
链接器脚本.sct分散加载文件,定义内存布局(如Flash、RAM的分区)。
映射文件.map链接生成的文本文件,记录代码/数据的地址、大小、内存使用统计。
列表文件.lst汇编器生成的文本文件,显示汇编代码与机器码的对应关系。
依赖文件.d记录源文件的头文件依赖关系,用于增量编译。
交叉引用文件.crf符号交叉引用表,用于IDE中快速跳转到定义或引用位置。
调试脚本.ini调试配置脚本(如初始化硬件、配置内存)。
库文件.lib预编译的静态库文件,包含可重用的代码模块。

三、关键工具链
  • armcc: C/C++编译器(支持ARM语法和优化选项)。
  • armasm: 汇编器,处理ARM/Thumb指令。
  • armlink: 链接器,合并目标文件并分配内存。
  • fromelf: 格式转换工具,生成Hex/Bin文件。

四、编译选项与辅助文件
  • 生成.map文件: 在链接选项中勾选 Generate Map File
  • 生成.lst文件: 在汇编器选项中启用 Listing
  • 调试信息: .axf 包含DWARF格式的调试数据,支持Keil调试器的源码级调试。

五、常见流程示意图

复制

[.c/.h] → (预处理) → [.i] → (编译) → [.s] → (汇编) → [.o]↘ (链接 + .sct) → [.axf] → (fromelf) → [.hex/.bin]↗ 
[.s] → (汇编) → [.o] 

通过理解上述流程和文件类型,可以更高效地使用Keil MDK进行开发和调试。

关键字:新闻网站设计_免费的crm系统_百度电脑网页版_视频号推广方法

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: