说明:

本文原创作者『strongerHuang

首发于微信公众号『嵌入式专栏』,同时也更新在我的个人网站:EmbeddedDevelop

该教程基于EWSTM8,大部分内容也适用于IAR其它产品(如:EWARM,EW430等)

一、写在前面

Options for node即节点选项,而node节点位于Project工程的下一级。本文讲述的工程节点选项配置,即菜单Project -> Options下Options for node节点选项中的前五项配置,如下图:

由于节点选项较多,我将其分为工程节点选项配置(一)工程节点选项配置(二)两篇文章来讲述。

二、拓展内容

本文讲述的工程节点选项配置,其中的工程与节点是包含关系,而工作空间与工程也是包含关系。

2.1 工作空间、 工程、 节点三者的关系

三者之间就是包含关系:工作空间 > 工程 > 节点。一个工作空间可以包含多个工程,一个工程可以包含多个节点,见下图:

请关注系列教程新建多工程,多节点的文章。

2.2 打开节点选项配置的三种方法

1.选中节点 -> 快捷键Alt + F7

这种方法简单、快捷,推荐使用。

2.选中节点 -> 右键 -> Options

3.选中节点 -> 菜单Project -> Options

三、General Options普通选项

3.1 Target目标

1.Device:器件

即选择MCU芯片型号,如上图选择的是STM8S103F3P.

2.Code model:代码模式

包含三种:小、中、大;

Small:小

Medium:中

Large:大

对于初学者,可以理解为:如果选择Large大的话,编译出来的Code代码就会更大。具体的差异可以查看生产的.map文件。

3.Date model:数据模式 原理类似上面代码模式,同样有三种: Small:小 Medium:中 Large:大

3.2 utput输出

1.Output file:输出文件

输出文件类型有两种,但只能二选一。

A.Executable:生成可执行的文件。如Hex、Bin等;

B.Library:生成库文件。

2.Output directories:输出目录(路径)

编译过程中生成的文件分别存放的目录(路径)。默认在Debug文件夹下面就会发现三个文件夹:Exe、Obj、List。

A.Executables/Libraies:生成可执行/库文件的路径

B.Object files:生成目标文件的路径

C.List files:生成列表文件的路径

提示:路径为相对工程文件(如Demo.ewp)的路径。

3.3 Library Configuration库配置

1.Library:选择运行时库 运行时库有四种可选择: None:无 Normal:选择常规配置的运行时库 Full:选择完整配置的运行时库 Custom:选择定制运行时库

2.Description:运行时库的描述

3.Configuration:运行时库的配置

提示:第2、3点是随第1点选择的库改变而改变,第3点配置只有在选择“定制运行时库”时才可修改。请参看下图动画效果:

选择运行时库动画效果:

3.4 Library Options库选项

1.Printf formatter:选择Printf(打印输出)格式器

共有8种类型:

Auto:自动格式

Full:完整格式

Full without multibytes:完整无多字节格式

Large:大格式(不区分a或A)

Large without multibytes:大格式(不区分a或A),无多字节格式

Small:小格式(不区分a或A,无Float)

Smallwithout multibytes:小格式(不区分a或A,无Float),无多字节格式

Tiny:微小格式;

2.Scanf formatter:选择Scanf(打印输入)格式器

类似上面printf,总共有7种类型:

Auto:自动格式

Full:完整格式

Full without multibytes:完整无多字节格式

Large:大格式

Large without multibytes:大格式,无多字节格式

Small:小格式

Smallwithout multibytes:小格式,无多字节格式

3.Math functions:数学函数

有两种可选择类型:

Default:默认。包含cos, sin, tan, log, log10等函数;

Smaller:精简。函数体积小,执行速度快,精度低,输入范围小等。

3.5 Stack/Heap栈和堆

1.Stack size:栈大小。

2.Heap size:堆大小。

提示:堆和栈位于内存中两块不同区域,使用的大小根据实际情况而定,修改此值之前请认真了解堆栈的含义。

3.6 MISRA C标准

MISRA-C:1998和MISRA-C:2004年的选项控制IDE如何检查源代码与MISRA C规则的偏差,这些设置用于编译器和链接器。

General Options普通与C/C++ Compiler编译器中的MISRA C选项配置相关联,本文章不讲述,后续单独讲述关于MISRA C的内容。

四、Static Analysis静态分析

4.1 C-STAT静态分析

1.Select C-STAT Checks:选择C静态检查项目 里面可选择的项目较多,通过手动选择(使能/失能)相关选项,使用前需了解C-STAT相关知识。

2.Import Settings:导入设置 导入静态检查配置文件(类型为.xml文件)。

3.Export Settings:导出设置 导出(当前第1点中)静态检查配置文件。

4.Enable parallel analysis:使能并行分析 后面参数为并行分析(进程)数。

5.Enable module timeout:使能模块超时值 后面参数为单个模块超时时间(单位:秒)

6.Enable false-positives analysis:使能“误报”分析

7.Limit messages per check and file:限制每次检查文件的消息数

提示:静态分析各项参数配置好之后,在菜单Project -> C-STAT Static Analysis中执行。

4.2 Extra Options额外选项配置

这里就不贴图了,主要就是使用命令行进行静态检查相关的配置,具体命令后续抽空单独整理成相关文章。

五、C/C++ Compiler编译器

5.1 Language语言1

1.Language:选择语言

三选一,选择C语言,就不能C++相关特性。选择Auto自动,会根据文件后缀自动判别。

2.Language conformance:语言一致性

控制编译器如何严格遵守标准C或c++语言。

Standard with IAR extensions:接受IAR(STM8)特定的关键字作为标准C或c++语言的扩展。

Standard:禁用IAR系统扩展,但不严格遵循C/C++语言。

Strict:严格遵守C/C++语言。

3.C dialect:选择C标准 C 89

C 89

C 99

  Allow VLA:运行可变长度数组;

  C++ inline semantics:支持内联函数;

Require prototypes:需要原型

强制编译器验证所有函数都有合适的原型。

4.C++ dialect:选择C++标准

Embedded C++:嵌入C++

Extended Embedded C++:扩展嵌入C++

Destroy static objects:清除静态对象

5.2 Language语言2

1.Plain 'char'解析为Signed或者Unsigned.

2.Floating-point semantics:浮点语句

Strict conformance:严格一致,使编译器严格遵守浮点表达式的C和浮点标准。

Relaxed:放松,使编译器放松语言规则并对浮点表达式执行更积极的优化。

3.Enable multibyte support:启用多字节的支持

默认情况下不支持多字节,启用多字节支持使编译器可以根据主机的默认设置多字节支持来解释源代码中的多字节字符。

5.3 Optimizations优化

1.Level:优化等级

None:无

Low:低

Medium:中

High:高

选择High优化等级为高时,可以选择Balanced平衡、Size大小、Speed速度(速度时可选择不收大小限制),请参看下图动画效果。

2.Enabled transformations:使能转换

选择不同的优化等级,对应优化转换不同,也可自定义转换项目。

3.Number of virtual byte registers:虚拟寄存器的字节数

优化选项动画效果:

5.4 Output编译输出

1.Generate debug information:生成(输出)调试信息 如果需要调试,此选项需勾选。

5.5 List列表

1.Output list file:输出列表文件

Assembler mnemonics:输出汇编助记符

Diagnostics:输出诊断信息

2.Output assembler file:输出汇编文件

Include source:包含源文件

Include call frame information:包含调用信息

5.6 Preprocessor预处理

1.Ignore standard include directories:忽略标准包含目录(路径)

2.Additional include directories:添加路径

最好是相对工程目录的相对路径。

3.Preinclude file:预包含文件

4.Defined symbols:预定义

类似代码中#define,这里截图预定义STM8S103,相当于定义在stm8s.h文件中。

5.Preprocessor output to file:预处理输出到文件

5.7 Diagnostics诊断

Diagnostics诊断选项卡,用于规定诊断信息的分类和显示。 编译过程中可能产生三种错误诊断信息:remark(注意)、waining(警告)和error(错误)

1.remark是一种次要的诊断信息,表明按源程序结构生成的代码可能出现不正常。

2.warning表示源程序中存在错误,但编译过程不会停止。

3.error表示源程序中存在违反C/C++语言规则的现象,将导致无法生成目标代码。error信息不能被禁止,也不能重新分类。

1.Enable remarks:使能注意信息 勾选则允许编译器产生remark注意诊断信息。

2.Suppress these diagnostics:禁止显示这些(指定)诊断信息 比如:我们希望禁止显示(输出)Pa091和Pe001这两类信息,可以在此写入【Pa091, Pe001】。

3.Treat these as remarks:将这些(指定)信息作为注意信息显示 比如:我们希望将Pe177这类警告信息作为注意信息显示,只需要在此输入Pe177即可。

4.Treat these as warnings:将这些(指定)信息作为警告信息显示 与上面第3点同理。

5.Treat these as errors:将这些(指定)信息作为错误信息显示 与上面第3点同理。

6.Treat all warnings as errors:将所有警告作为错误处理(并显示)

5.8 MISRA C标准

MISRA-C:1998和MISRA-C:2004年的选项用于编译器和链接器。 General Options普通选项C/C++ Compiler编译器中的MISRA C选项配置相关联,本文章不讲述,后续单独讲述关于MISRA C的内容。

5.9 Extra Options额外选项配置

这里就不贴图了,主要就是使用命令行对编译相关选项进行配置。具体命令后续抽空单独整理成相关文章。

六、Assembler汇编器

这一章节内容和上面C/C++编译器原理类似,只是这里是针对汇编。

6.1 Language语言

1.User symbols are case sensitive:用户符号区分大小写

2.Enable multibyte support:使能多字节的支持

3.Allow mnemonics in first column:允许在第一列中使用助记符

4.Allow directives in first column:允许在第一列中使用指令

5.Macro quote characters:宏引用字符选择

有四种字符可选择:

A.()

B.[]

C.{}

D.<>

6.2 Output编译输出

这里就不贴图了,和上面一章节C/C++的Output一样,Generate debug information:生成(输出)调试信息,如果需要调试汇编,此选项需勾选。

6.3 List列表

1.Output list file:输出列表文件

A.Do not include diagnostics:不包括诊断

B.Include cross-reference:包括交叉引用

C.List macro definitions:宏定义列表

D.Disable macro expansion:禁用宏扩展

E.List only assembled parts:只列出部分列表(除假条件汇编)

F.Truncate multiline data field:截断多行数据字段

6.4 Preprocessor预处理

1.Ignore standard include directories:忽略标准包含目录(路径)

2.Additional include directories:添加路径

3.Preinclude file:预包含文件

4.Defined symbols:预定义

5.Preprocessor output to file:预处理输出到文件

提示:这里选项和上面C/C++中预处理类似,只是这里针对的是汇编。

6.5 Diagnostics诊断

这里就不贴图了,本节Diagnostics诊断几乎与上一章节中Diagnostics诊断一样,只是这里针对的是汇编,详情请参看上一章节C/C++的Diagnostics诊断描述。

6.6 Extra Options额外选项配置

这里就不贴图了,本节Extra Options额外选项配置同样与上一章节一样。

七、Output Converter输出转换器

7.1 Output输出

1.Generate additional output:使能生成额外的输出(文件)

2.Output format:输出格式 A.Motorola B.Intel-extended C.Binary D.Simple

3.Output file:输出文件 Override default:默认覆盖

八、说明

1.该文档仅供个人学习使用,版权所有,禁止商用。

2.本文由我一个人编辑并整理,难免存在一些错误。

3.为了方便大家平时公交、地铁、外出办事也能用手机随时随地查看该教程,该教程同步更新于微信公众号『嵌入式专栏』,关注微信公众号回复【EWSTM8系列教程】即可查看全系列教程。

九、最后

我的博客:http://www.strongerhuang.com

我的GitHub:https://github.com/EmbeddedDevelop

我的微信公众号(ID:strongerHuang)还在分享STM8、STM32、Keil、IAR、FreeRTOS、UCOS、RT-Thread、CANOpen、Modbus...等更多精彩内容,如果想查看更多内容,可以关注我的微信公众号『strongerHuang』。

c语言-命令行选项_EWSTM8系列教程06_工程节点选项配置(一)相关推荐

  1. EWSTM8系列教程06_工程节点选项配置(一)

    IAR最新全套教程: 1.EWSTM8系列教程01_IAR介绍.下载.安装和注册 2.EWSTM8系列教程02_新建基础软件工程 3.EWSTM8系列教程03_主窗口.工具栏的概述 4.EWSTM8系 ...

  2. keil查看程序运行时间_Keil系列教程05_工程目标选项配置(一)

    说明: 本文原创作者『strongerHuang』 首发于微信公众号『嵌入式专栏』,同时也更新在我的个人网站:EmbeddedDevelop 标签:Keil. MDK-ARM. µVision 该教程 ...

  3. 【嵌入式开发】C语言 命令行参数 函数指针 gdb调试

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21551397 | http://www.hanshul ...

  4. Go语言命令行工具介绍-3

    章节 命令-go build 命令-go run 命令-go get 1.go build 用于编译源码文件.代码包.依赖包: 1.1 编写源代码 test.go package mainimport ...

  5. 终端 删除php文件内容,Mac_mac命令行终端可以卸载吗?mac命令行终端卸载软件教程,  mac os系统卸载软件方式有 - phpStudy...

    mac命令行终端可以卸载吗?mac命令行终端卸载软件教程 mac os系统卸载软件方式有多种, 卸载工具,程序图标拖拽到垃圾桶皆可,但对顽固残留软件该怎么办呢?今天phpstudy小编就为大家分享ma ...

  6. R语言命令行写linux,如何在Linux上编写和使用R脚本

    --by不是杀杀 虽然大多数时候在Windows下和在Jupyter中能够非常方便快捷地进行R语言编程,但对于处理数据量较大的工作时,还是避免不了需要在服务器上运行我们写的代码,那么我们要如何方便快捷 ...

  7. springboot banner在线生成_SpringBoot系列教程10--小花样之SpringBoot配置自定义Banner

    SpringBoot系列教程10--小花样之SpringBoot配置自定义Banner 作者:一一哥 一. Spring Boot 常用配置 本章节主要介绍一下 Spring Boot 中的一些常用配 ...

  8. SpringBoot2.x系列教程10--小花样之SpringBoot配置自定义Banner

    SpringBoot系列教程10--小花样之SpringBoot配置自定义Banner 作者:一一哥 一. Spring Boot 常用配置 本章节主要介绍一下 Spring Boot 中的一些常用配 ...

  9. linux bash命令_Ultimate Linux命令行指南-Full Bash教程

    linux bash命令 Welcome to our ultimate guide to the Linux Command Line. This tutorial will show you so ...

最新文章

  1. SemSegMap :基于3D点云语义信息的定位
  2. 在MyEclipse中导入做好的java项目出现错误The project cannot be built until build path errors are resolved
  3. 989-数组形式的整数加法
  4. Linux解压rar、zip、war、tar文件
  5. java接口方法默认权限_java 接口内定义方法的权限是什么?
  6. ccf魔数c语言,ccf 201609-4 交通规划
  7. 荣耀20 Pro 5000元最强拍照机翻车?官方怒放样张辟谣
  8. countif函数比较两列不同_VLOOKUP函数批量查找,这么长的公式你可以写出来,立马加薪...
  9. 【纪中集训】2019.08.13【省选组】模拟3
  10. C语言之计算程序运行时间(八)
  11. banner 获取当前指示物_ConvenientBanner使用指南
  12. Makefile教程
  13. 给应用程序注入钩子程序
  14. 2021年PMP考试模拟题6(含答案解析)
  15. 用计算机刻录光盘,怎么用电脑刻录光盘?将文件刻录光盘的方法和步骤
  16. Java 中的Date(获取一天的开始时间和结束时间)
  17. c++primer 第二章 变量和基本类型
  18. Python:variable in function(argument、function) name should be lowercase 处理方式
  19. Howto: Download SLES or SLED Source Code
  20. 【vue+a-form+字体图标展示】在form表单中加入svg字体图标列表,新增操作详解

热门文章

  1. 2017.10.17 CF#441 F题 思考记录
  2. 2017.9.20 mode 思考记录
  3. 2017.9.7 翻硬币 失败总结
  4. rssi室内定位算法原理_室内定位方案常用的4种定位算法
  5. html列表逆序输出,JS实现倒序输出的几种常用方法示例
  6. GLSL Optimizer
  7. Linux disk 100% busy,谁造成的?
  8. k-近邻算法-优化约会网站的配对效果
  9. 深入玩转K8S之智能化的业务弹性伸缩和滚动更新操作
  10. Python中获取当前日期的格式