查看原文
其他

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

strongerHuang 嵌入式专栏 2021-01-31

顶公众号,不错过每一条消息!


    本教程由作者strongerHuang于2018年08月发布。

版权所有:禁止商用

申明:该文档仅供个人学习使用,转载请公众号联系作者授权。


1写在前面

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


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


为了方便大家平时公交、地铁、外出办事也能用手机随时随地查看该教程,本文章收录于【EWSTM8系列教程】,在微信公众号回复【EWSTM8系列教程】即可查看。


2

拓展内容

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


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

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

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


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

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

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


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


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


3

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 Output输出

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的内容。


4

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额外选项配置

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


5

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 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额外选项配置

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


6

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额外选项配置同样与上一章节一样。


7

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:默认覆盖


8

说明

1.因IAR各种IDE针对的处理器差异较大,所以各IAR节点选项的配置差异也较大。本文讲述关于EWSTM8的许多节点选项可能在其他IAR中没有。


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


3.本教程收录于微信公众号【EmbeddedDevelop】,关注微信公众号回复【EWSTM8系列教程】即可查看全系列教程。


9最后

若觉得文章好,记得点赞、分享。扫描下面二维码、关注,在底部菜单中查看更多精彩内容!

长按识别图中二维码关注

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存