【玩转MDK】MDK编译过程解析

注:本文主要内容来自野火STM32教程

1、MDK编译过程

  • 在MDK工程下,点击编译按钮,MDK将会完成整个编译过程,如下图所示

  • 编译,MDK 软件使用的编译器是 armcc 和 armasm,它们根据每个c/c++和汇编源文件编译成对应的以“.o”为后缀名的对象文件(Object Code,也称目标文件),其内容主要是从源文件编译得到的机器码,包含了代码、数据以及调试使用的信息;

  • 链接,链接器 armlink 把各个.o 文件及库文件链接成一个映像文件“.axf”或“.elf”;

  • 格式转换,一般来说 Windows 或 Linux 系统使用链接器直接生成可执行映像文件 elf后,内核根据该文件的信息加载后,就可以运行程序了,但在单片机平台上,需要把该文件的内容加载到芯片上,所以还需要对链接器生成的 elf 映像文件利用格式转换器fromelf 转换成“.bin”或“.hex”文件,交给下载器下载到芯片的 FLASH 或 ROM 中。

2、编译过程实例解析

  • MDK工程下点击编译按钮,在MDK的“Build Output”窗口会看到编译过程信息

  • 1、提示信息的第一部分说明构建过程调用的编译器。图中的编译器名字是“V5.06(build20)”,后面附带了该编译器所在的文件夹。在电脑上打开该路径,即\ARM\ARMCC\bin,可看到该编译器包含 armar、 armasm、 armcc、 armlink 及 fromelf,后面四个工具上面内容已有讲解,而 armar 是用于把.o 文件打包成 lib 文件的

  • 2、使用 armasm 编译汇编文件。图中列出了编译 startup 启动文件时的提示,编译后每个汇编源文件都对应有一个独立的.o 文件

  • 3、使用 armcc 编译 c/c++文件。图中列出了工程中所有的 c/c++文件的提示,同样地,编译后每个 c/c++源文件都对应有一个独立的.o 文件。

  • 4、使用 armlink 链接对象文件,根据程序的调用把各个.o 文件的内容链接起来,最后生成程序的 axf 映像文件,并附带程序各个域大小的说明,包括 Code、 RO-data、 RW-data及 ZI-data 的大小。

  • 5、使用 fromelf 生成下载格式文件,它根据 axf 映像文件转化成 hex 文件,并列出编译过程出现的错误(Error)和警告(Warning)数量。

  • 6、最后一段提示给出了整个构建过程消耗的时间

  • 编译完成后,可在工程的“Output”及“Listing”目录下找到由以上过程生成的各种文件,每个 C 源文件都对应生成了.o、 .d 及.crf 后缀的文件,还有一些额外的.dep、 .hex、 .axf、 .htm、 .lnp、 .sct、 .lst 及.map 文件

(0)

相关推荐

  • STM32系列开发-揭开MDK下__main的面纱--非常详解

    之前,是大体了解了MDK下的__main函数所做的事情,一直没有深究,最近突然很想知道,MDK下在程序运行到我们用户定义的main()函数前,到底做了些什么,想看看ARMCC编译器默默地为我们做了哪些 ...

  • 【教程】如何用GCC“零汇编”白嫖MDK

    [说在前面的话] 其实我很久之前就想写这篇文章了,但彼时总觉得这是一个伪命题: 既然已经用了MDK,编译出来的代码,无论是体积还是性能都甩下arm gcc好几条街,谁还会想用gcc来进行Cortex- ...

  • 手把手教你VSCode搭建STM32开发环境

    干货福利,第一时间送达! 摘要:作为一个51单片机或STM32单片机的使用者,keil一直是我们的必备的一款工具之一.但keil的一些问题也一直存在,当然也有人用其他的,比如STM32CubeIDE. ...

  • 欢迎阅读《MDK的编译过程及文件类型全解》文档

    本章参考资料:MDK的帮助手册<ARM DevelopmentTools>,点击MDK界面的"help->uVisionHelp"菜单可打开该文件.关于ELF文件 ...

  • (5条消息) MDK 的编译过程及文件类型全解

    出处:MDK 的编译过程及文件类型全解 MDK 的编译过程及文件类型全解 ------(在arm9的开发中,这些东西都是我们自己搞定的,但是在windows上,IDE帮我们做好了,了解这些对深入开发是 ...

  • MDK的编译过程及文件类型全解

    前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. 本文转载自:第48章 MDK的编译过程及文件类型全解-零死角玩转STM32 ...

  • MDK 的编译过程及文件类型全解

    转: https://www.cnblogs.com/yangguang-it/p/7697967.html ------(在arm9的开发中,这些东西都是我们自己搞定的,但是在windows上,ID ...

  • 你玩过剑侠情缘吗?深度解析"剑侠"如何迷住了中国玩家19年

    问:如何每天看到最实用的行业文章? 答:关注[游戏客栈]啊! [游戏客栈原著内容 欢迎注明出处的各种形式转载] 文/游戏客栈 字幕 如果你问80后<剑侠情缘>是什么?他会告诉你,这是他小时 ...

  • 如何开一家成功的民宿过程解析

    ▲ 点击上方关注本号,更多行业内容推送 如何开一家成功的民宿(1)--前期准备篇 如何开一家成功的民宿,虽然这不是纸上谈兵就能实现的事情,但还是希望能给想开民宿的或已经在开民宿的朋友们一些足够受用的干 ...

  • 《哪吒之魔童降世》海报:敖丙线描插画手绘完整过程解析

    <哪吒之魔童降世>讲的是一个"打破成见"的故事,海报上那句"若命运不公,那就跟它斗到底",也绝不是什么空洞的口号.在没有看电影的时候一眼就被敖丙的海 ...

  • 中国风建筑简笔画过程解析,新手也能画的很好看

    简笔画又来啦(其实是存稿,哈哈~),这次小白来到江西滕王阁,主要是画建筑滴!结合一些水浪和云层,看着复杂实则很简单哒,建筑以短线条为主,新手也可以画的很好看哦~ 先来看看完成图:(有么有觉得中国风建筑 ...

  • 清新水彩画过程解析,新手福利

    水彩小白来啦~阔爱伐?先看看完成图: 001. 铅笔先画出构图,花瓣都要画的详细点,这样方便后面用针管笔描边(颜色有点浅): 002. 003号针管笔描出轮廓,然后就开始上色啦,柠檬黄画花蕊,具体从最 ...