历史上的今天

今天是:2024年09月17日(星期二)

2019年09月17日 | Keil(MDK-ARM)系列教程(三)_工程目标选项配置(Ⅰ)

发布者:skyshoucang 来源: eefocus关键字:Keil  MDK-ARM  工程目标  选项配置 手机看文章 扫描二维码
随时随地手机看文章

Ⅱ、本文要点

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


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文件拷贝到其它地方。


纵观下图可以看见,第1、2、3处作用相同,都是让用户运行程序,只是运行的条件不同而已。上面说的用户程序,勾选上,可以“DOS16模式”运行。

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


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


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


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


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


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


Start Debugging:启动调试程序。


Ⅴ、说明

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


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


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


关键字:Keil  MDK-ARM  工程目标  选项配置 引用地址:Keil(MDK-ARM)系列教程(三)_工程目标选项配置(Ⅰ)

上一篇:Keil(MDK-ARM)系列教程(二)_工具栏详细说明
下一篇:Keil(MDK-ARM)系列教程(四)_工程目标选项配置(Ⅱ)

推荐阅读

很多人可能都看过波士顿动力公司的机器狗视频,机器狗会开门、能跑步,而且还能负重走过灌木丛。这种彪悍的机器狗是具有人工智能的,一般情况下很少有人能把这种机器狗踹倒。波士顿动力公司还开发了能后空翻的双足机器人,这种机器人在后空翻后能平稳落地,其机动性堪比体操运动员。这就是人工智能机器人最前沿的进展。2017年7月,国务院印发了《新一代人...
法兰克福车展还在进行中,有不少整车企业在车辆和零部件企业在技术上会做些Worhshop,通过欧美和日韩的同行写的报道做一些整理,因为有延迟,今天选三个典型的来说。1)大众这个是大众有关电池系统车辆设计的一些内容,如果仔细看抓屏出来还是有些价值的,和昨天的相仿。从电池来说,大众提出了自己规格的模组,和按照这个模组设计的Pack,如果按照它的设...
财联社获悉,长盈精密为iPad外置键盘、Apple Pencil和iWatch结构组件的供应商。长盈精密称,外置键盘和Apple Pencil将会是一个增量市场。苹果2020秋季新品发布会于北京时间9月16日凌晨1点以线上直播方式举行。与往年不同的是,苹果此次仅对iPad系列及Apple Watch系列进行更新,万众期待的iPhone 12系列并未出现。
在全球科技行业,中国台湾地区的南亚电路板股份有限公司(Nan Ya Printed Circuit Board Corp.)并不是一个家喻户晓的名字,但这家鲜为人知的公司却生产着眼下芯片制造过程中急需的一种重要零部件——ABF载板(Ajinomoto build-up film substrate)。  目前,芯片荒已日益成为汽车制造商和电子科技企业所面临的严峻挑战。而对于世界上许多最先...

史海拾趣

问答坊 | AI 解惑

器件搜索

本帖最后由 paulhyde 于 2014-9-15 09:17 编辑 器件搜索  …

查看全部问答∨

请教高手电路图中的难点

D13,D41,D42三个二极管再电路中是什么用处? 如果LM324的1脚输出增加,那么D13,D41,D42三个二极管输出全部拉低,这对电路整体有什么影响呢? [ 本帖最后由 simonprince 于 2009-9-10 08:46 编辑 ]…

查看全部问答∨

做Wince和Mobile方面的底层和上层的软件开发的QQ 3号群68387065

提供一个大家交流的平台,现还有部分名额,欢迎相关人员加入,长期有效…

查看全部问答∨

求救,藍牙模塊出錯(Bluetooth hardware error 10050(controller not present))!

我在Catalog Items中添加了Bluetooth下的UART Driver 和 Universal Loadable Driver,然後 編譯. (是不是在這步之後需要修改哪個.reg嗎?請指教!)之後,在Bluetooth Manager中點擊Scan Device出現 Bluetooth hardware error 10050(controller not pre ...…

查看全部问答∨

求助:f2812如何将片内FLASH中的程序加载到片内RAM中运行?

由于程序在片内flash中的运行速度较慢,希望能将片内flash中的程序全部加载到片内ram中运行,请问有什么好办法? 我的邮箱:gziyong2004@126.com,希望大家有空多沟通交流!…

查看全部问答∨

智能小车

本帖最后由 dontium 于 2015-1-23 13:24 编辑 智能小车 …

查看全部问答∨

一种新颖的D类音频功率放大器驱动电路

本帖最后由 dontium 于 2015-1-23 12:40 编辑 一种新颖的D类音频功率放大器驱动电路一种高效率+PWM+CMOS+D类音频功率放大器 …

查看全部问答∨

用C8051F系列编写的ADXL345角速度测试程序

我用C8051F410编写的程序通过I2C通信,显示屏无任何显示,怎么办?谁有正确的代码,能不能分享下…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved