Keil(MDK-ARM)系列教程(三)_工程目标选项配置(Ⅰ)

推荐

分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!但愿你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang微信

 

个人网站:https://www.strongerhuang.com函数

个人知乎:https://www.zhihu.com/people/strongerHuang.com工具

 

 

推荐在我公众号「strongerHuang」或网站阅读如下教程:
Keil系列教程01_Keil介绍、下载、安装与注册
Keil系列教程02_新建基础软件工程
Keil系列教程03_主窗口和工具栏详细说明
Keil系列教程04_菜单概述
Keil系列教程05_工程目标选项配置(一)
Keil系列教程06_工程目标选项配置(二)
Keil系列教程07_Configuration(一)
Keil系列教程08_Configuration(二)
Keil系列教程09_调试仿真
Keil系列教程10_文件类型及相关描述
Keil系列教程11_工程窗口图标说明
Keil系列教程12_map文件全面解析
Keil系列教程13_建立多目标工程
Keil系列教程14_建立多工程工做空间
Keil系列教程15_编辑窗口右键菜单选项说明
···优化

Ⅰ、写在前面

Options for Target目标选项其彻底意思是工程目标选项配置,或许有些人分不清工做空间、工程、目标这三个名词的意思和区别,下面章节将简述工做空间、工程、目标他们的意思。网站

 

因为目标配置的选项比较多,我将其分为工程目标选项配置(Ⅰ)工程目标选项配置(Ⅱ)两篇文章来说述。ui

 

目标选项包含了一个工程目标全部的配置信息,这些信息是保存在工程文件中的,也就是咱们每次双击打开工程的文件(.uvprojx)和对应的(.uvoptx)文件。看过我(打包)代码的人应该知道,个人工程文件就保留了这两个文件,其它生成的文件我所有删除了的。人工智能

 

本文内容已经整理成PDF文件,提供给你们下载:spa

http://pan.baidu.com/s/1nuJ0RDR操作系统

 

Ⅱ、本文要点

本文主要讲述的是目标选项的配置,但为了让更多人明白什么是目标选项,首先将简述工做空间、工程、目标的意思和区别。.net

 

1.打开目标选项的两种方法

1.点击目标选项快捷按钮,以下图:

 

2.从菜单中打开,Project -> Options for Target,以下图:

 

2.本文所讲述的目标选项

因为目标选项里面内容较多,本文只讲述前五项,后五项在下一篇文章讲述。本文旨在让大部分人明白目标选项的配置,为了使文章内容精简过于简单不经常使用过于复杂只简述

 

Ⅲ、简述工做空间、工程、目标

本章节内容与主题关系不大,若你掌握了,能够绕过。主要为了使更多的人明白这几个词的意思。本节内容这种复杂的结构,对于初学者基本使用不上,但能够适当了解。当之后项目作大了,可能会使用到工做空间。

 

工做空间、工程、目标它们三个是从大到小依次包含的关系,也就是说:一个工做空间能够有多个工程,一个工程能够有多个目标。工做空间下的工程能够是彻底独立的,工程下的目标基本上都有共同之处(好比:共用某些代码),它们工程项目统一管理。简单示意图,以下:

 

举个例子:一个项目,由主机从机组成,但项目为了区分产品的高低端,将产品作成简单复杂两个版本(简单版只保留复杂版的部分功能)。举例示意以下图:

 

本节内容不过多描述,在大型的实际项目中容易看见,通常不是很大项目,基本就是一个工程,一个目标或多个目标。初学者通常都是一个工程对应一个目标,这样简单明了。如果初学者,不能理解能够略过。

 

Ⅳ、工程目标选项配置(Ⅰ)

本节讲述工程目标前五项的配置,这里面有些内容在咱们新建工程时都已经使用过,下面将详细讲述每个选项配置的内容。

 

1.Device设备(器件)

这个选项不用多说,新建工程第一个就是选择设备(器件)。强调一点就是:器件能够经过输入查找,也能够经过列表查找

 

2.Target目标

这里说的目标和上面说的工程目标不同,是工程目标目标。从内容能够看得出来是工程目标的调试晶振频率、选择的编译器、RAM和ROM分配的地址空间等。

第1处:晶振频率。

这个值主要用于仿真调试用,通常咱们使用硬件调试能够不用管这个值。

 

第2处:操做系统。

很好理解,是否选择Keil自带的RTX操做系统,通常咱们都不选。

 

第3处:系统预览文件。

这里咱们通常是默认使用系统自带,不选择本身定义的。

 

第4处:生成代码所选择的编译器。

 

第5处:使用交叉模块优化、使用微库。

交叉模块通常咱们不使用,微库这个功能经常使用与printf函数。

 

第6处:ROM存储地址。

这里的ROM存储指的是程序储存的地址,分片外片内两种。

程序存储在片内好理解(初学者通常下载程序都是下载到片内FLASH),片外存储程序对于初学者来讲比较少见,通常都是项目作大了,或有特殊要求时,片内不够使用了才将程序存储在片外。常见使用片外的例子“外部NorFlash存储程序代码”就会用到片外的存储地址。

 

第7处:RAM存储地址。

RAM存储地址和ROM道理同样,能够分片内和片外。常见例子“外部SRAM做为运行内存”。

 

3.Output输出

从选项名“Output”能够知道该选项里面内容的主要意思,就是输出一系列相关的内容。输出分两类:

1.输出(建立)可执行文件,咱们下载处处理器里面的程序就是该类;

2.输出库,对于初学者来讲通常不使用库,但对于不少从事特殊行业技术开发的公司来讲,可能比较经常使用该功能。

第1处:输出路径。

输出路径就是在工程编译的过程当中,输出这些文件保存的文件夹。Keil V5通常默认是保存在Objects文件夹下面,我创建工程通常也使用这个默认的路径。【其内容能够所有删除,最好配置在单独一个文件夹下面,代码备份时方便删除】

 

第2处:输出可执行文件名。

输出的可执行文件的名称就是在这里定义。好比咱们常见输出Hex文件,其名称就是这里定义的。

 

第3处:输出可执行文件(重点)。

这里和输出库是二选一,选择了输出可执行文件就不能选择输出库。重要一点:输出这些信息都很费时间,若是都不勾选这些选项,编译速度会很快。

Debug Infomation:输出调试信息。勾选上这个选项,咱们才能够进行调试。

Create HEX File:输出可执行Hex文件,不少初学的朋友问:“在哪里设置生成Hex?”,这里勾选上就好了。

Browse Information:输出浏览信息。勾选上这个咱们才能使用go to definition of这个功能。不少人问:“为何我不能跟踪代码了”,缘由就在这里。

 

第4处:输出库。

拓展一点:这里输出(生成)的是静态库,并不是动态库。初学者能够不用去理解。

 

4.Listing列表

这个选项是关于生成列表相关的选项,对代码分析比较透彻的工程师就须要了解这个选项。常见的就是map地址的分布,就是在这里配置生成的。

第1处:输出路径、宽高。

选择列表文件输出的文件夹。可设置文件页面的宽度,长宽。

 

第2处:输出汇编列表。

勾选上会输出汇编列表信息(产生后缀为 .lst的文件)。若是工程中没汇编文件,则不会输出信息。

第3处:C编译列表。

C编译程序列表选项,勾选上可生成.txt, .i文件。

 

第4处:连接列表。

可选择生成或禁止生成.map文件。可设置生成代码的详细信息。可选择性的选取输出MAP文件。

 

5.User用户选项

这个选项是针对用户而设计的,通常不经常使用,方便用户执行一些程序。好比:编译完代码以后,我要将生成的Hex文件拷贝到其它地方。

 

纵观下图能够看见,第一、二、3处做用相同,都是让用户运行程序,只是运行的条件不一样而已。上面说的用户程序,勾选上,能够“DOS16模式”运行。

第1处编辑以前运行用户程序。

 

第2处编译以前运行用户程序。

 

第3处编译以后运行用户程序。

 

第4处:编译以后执行条件。

Run "After Build" conditionally:执行条件;

Beep When Complete:编译完成发出声音;

Start Debugging:启动调试程序。

 

Ⅴ、说明

每一种工具的功能都是须要本身亲自实践,并长期使用才能达到灵活运用的地步,不建议死记硬背。若要了解更多关于Keil的系列教程,能够进入我微信公众号或博客查看。

 

为了照顾大部分人,本文采用标记、主要说明和阐述的方式对每一项内容进行讲述。若是内容详尽,会让篇幅过于繁杂,且不易找到重点。

 

以上内容仅供参考,如有不对之处,敬请谅解。

 

Ⅵ、最后

个人网站:https://www.strongerhuang.com

个人微信公众号(ID:strongerHuang)还在分享STM八、STM3二、Keil、IAR、FreeRTOS、UCOS、RT-Thread、CANOpen、Modbus…等更多精彩内容,若是想查看更多内容,能够关注个人微信公众号。

 

微信公众号