小猫爪:嵌入式小知识02-神秘的KEIL设置面板

1 前言

在学习这一章之前,希望大家最好先搞清楚嵌入式开发过程中的文件的相关联系,大家可以参考以下文章:
1.《痞子衡嵌入式:ARM Cortex-M文件那些事(1)- 源文件(.c/.h/.s)》
2.《痞子衡嵌入式:ARM Cortex-M文件那些事(2)- 链接文件(.icf)》
3.《痞子衡嵌入式:ARM Cortex-M文件那些事(3)- 工程文件(.ewp)》
4.《痞子衡嵌入式:ARM Cortex-M文件那些事(4)- 可重定向文件(.o/.a)》
5.《痞子衡嵌入式:ARM Cortex-M文件那些事(5)- 映射文件(.map)》
6.《痞子衡嵌入式:ARM Cortex-M文件那些事(6)- 可执行文件(.out/.elf)》
7.《痞子衡嵌入式:ARM Cortex-M文件那些事(7)- 反汇编文件(.s/.lst/.dump)》
8.《痞子衡嵌入式:ARM Cortex-M文件那些事(8)- 镜像文件(.bin/.hex/.s19)》

大家写程序的肯定都用过KEIL的MDK,但是大家都是靠着教程去一步一步的设置,然后点击下载,程序就进去了,对KEIL的那个设置面板的意思也都不清楚,接下来就让我们深挖一下KEIL的设置面板每一项都代表着什么。

那个神秘的魔术棒(Options for Target)里面到底有什么呢。。。
在这里插入图片描述

2 KEIL的背后工作者

KEIL的面板是为了让用户更好的理解和操作,其实真正干活的是几个程序,如下如下图所示:
在这里插入图片描述这几个程序每一个程序的作用如下图(截自野火《i.MX RT库开发实战指南》):
在这里插入图片描述每当我们点击编译按钮后,这几个程序就会按照如下步骤进行干活:

①使用armasm编译.s汇编文件,生成.o文件。
②使用armcc 编译c/c++文件,生成.o文件。
③使用armlink 链接.o对象文件,生成.axf 映像文件。
④使用fromelf 生成下载格式文件,它根据axf 映像文件转化成hex文件。

2 Options for Target

3.1 Device

在这里插入图片描述
这一部分就比较简单,就让你选一个器件。

3.2 Target

在这里插入图片描述这一部分大部分都是根据我们在Device选的芯片类型所决定的,下面的Read/Only Memory Areas为该芯片的ROM和RAM映射地址,一般我们不要去动它,因为一旦动了它,代码的存储的地址就会发生改变,程序运行后造成不可预估的影响。(当你对芯片的启动很懂得时候,你就可以去随意的操作了。)

红色标注的地方可以选择编译器的版本,一般保持不变。

3.3 Output

在这里插入图片描述这个界面就是控制KEIL编译后可以生成什么文件,可以看到这里可以生成.out可执行文件,HEX文件,.lib库文件,调试信息,批处理文件。

3.4 Listing

在这里插入图片描述在这个界面我们可以指定生成列表文件以及指定map文件里的生成内容。

3.5 User

在这里插入图片描述对于这部分为用户调用程序,我们可以在这一页调用一些程序用来生成我们自己想要的文件,可以看到我们可以指定在什么时候运行我们自己定义的程序。比如我们可以利用fromelf程序在编译之后生成bin文件,具体操作为在After Build/Rebuild那一栏下填入调用指令,格式如下:

fromelf --bin --output PATH1\APP.bin PATH2\APP.axf

其中PATH1和PATH2可以使用绝对路径也可以使用相对路径。

3.6 C/C++

在这里插入图片描述这个界面是主要为了armcc编译.c源文件生成.o文件服务的,我们可以在Language/Code Generation下面指定各种编译选项,当我们勾选或者取消一个选项会在Compiler control string中得到体现。(具体每一个选项代表什么意思大家可以参考MDK的帮助手册。)所以Compiler control string我们是不能直接去编辑的,只能通过勾选去编辑。

Misc Controls:这一栏则是对上面选项卡的补充,如果上面的选项卡没有的选项,则可以通过在这一栏手写加上。

Include Path:指定头文件的位置。

Preprocessor Symbols:可以进行预宏定义,相当于程序里的#define。

3.7 Asm

在这里插入图片描述
这个界面是主要为了armasm编译.s源文件生成.o文件服务的,同C/C++界面大同小异,每一栏所代表的意思也是相同的,在这里我们就不多说了。

3.8 Linker

在这里插入图片描述
该界面则是为armlink将.o文件链接成为elf文件(.axf文件)服务的,可以看到它也有跟上面两个界面类似的Misc Controls和Control String,这是一样的。在这里需要我们注意的则是Scatter File选项,我们可以在这一栏指定链接文件,链接文件里一般会指明芯片的映射地址,后面我们会专门介绍链接文件。

3.9 Debug

在这里插入图片描述这个界面很显然就是为了debug服务的,我们可以在这一界面选择调试器,还可以在Initialization File加入脚本文件,脚本文件的作用简单来说就是可以在APP运行之前对配置芯片的相关寄存器,后面我们也会对其进行介绍。

3.10 Utilities

在这里插入图片描述
这一部分其实也是为debug服务的,可以选择设置目标flash算法。

4 补充

如果想对KEIL的操作搞清楚,可以参考这篇文章学习KEIL的一些细致操作:
《Keil MDK从未有过的详细使用讲解》

大神还是无处不在的,在这里补充一句,其实每一个软件最好的老师还是这些软件的帮助文档,在help里,细致,详细,例子,应有尽有。

END

Guess you like

Origin blog.csdn.net/Oushuwen/article/details/109052897