HighTec 工程配置详解
创始人
2024-03-05 12:39:44
0

HighTec 工程配置详解

编译配置

构建配置管理器

管理器内,可以创建各种不同用途的配置项。例如用于生产工程的 ROM 配置,用于调试工程的 Debug 配置。对于每个配置,所设置的工程属性是单独分开的,互相之间没有影响。

打开构建配置管理器

选中工程后,右键选择 Build Configurations --> Mange 即可打开管理器。
]
在管理器内,可以看到对于本工程创建的所有的配置文件,左键可以选中配置项。下方四个菜单依次是:

Set Active 设置为当前活动的配置项

New 创建一个新的配置项

Delete 删除当前选中的配置项

Rename 重命名当前选中的配置项

同一时刻,必须有且只有一个配置项是活动的。
在这里插入图片描述

创建一个新的构建配置

点击 New 打开构建工具,NameDescription 可以由开发者进行编写,下方有一个设置拷贝的来源。
在这里插入图片描述
来源分为:

当前工程存在的配置:
在这里插入图片描述
当前工作空间存在的配置:
在这里插入图片描述
使用预定义配置:
在这里插入图片描述

编译属性

编译步骤

编译步骤分为编译前和编译后,编译前后可以使用默认的库来添加编译步骤。

在这里插入图片描述

编译前可以输出编译器的版本到 build_version.txt

在这里插入图片描述

编译后可以生成 hex/srec 文件,或者进行其他文件的转换或者对输出文件进行分析。
在这里插入图片描述

编译环境变量

环境变量可以看做是在操作系统(一般是Windows)的环境变量之后,附加的变量,在编译过程中创建比较简单的makefile文件。
在这里插入图片描述

编译日志

编译日志是需要根据工程的实际情况,来选择是否开启编译日志输出。且输出的文件位置可以进行设置。

在这里插入图片描述

编译配置

下面到了重点介绍的,关于编译配置的说明。同时需要说明的是 tricore 工具链的命令行最大字符数为 8K 字节,超过之后,会导致编译文件异常(不一定会提示编译失败)。

编译设置分为 工具链设置link配置编译步骤编译结果文件格式

工具链设置

Global options 全局配置,可以配置 CPU TYPE。 gcov 是用来分析静态内存时可以选择使用,但是需要配合第三方软件进行使用。

TriCore C Compiler 可以看到编译命令输出的编译过程。 其中所有配置项目都是在子菜单中可以进行配置。

在这里插入图片描述

Tricore PCP Compiler TriCore Assembler TriCore GTM Assembler TriCore C Linker 这几个也可以点击看命令行输出的编译过程,分别为PCP编译器,汇编文件编译器,GTM汇编文件编译器,链接器。

TriCore C Compiler

General

配置头文件搜索路径

在这里插入图片描述

-fno-short-enums : 不仅仅分配给枚举量使用的数据类型(short)

-funsigned-bitfields 位域使用无符号类型

在这里插入图片描述

Optimization 优化

分为5个等级

None : 无优化

Normal : 默认优化

Speed : 速度优先

Size : 尺寸优先

Balanced : 平衡速度与尺寸

在这里插入图片描述

Debugging 调试

调试等级分为4个

None 无调试信息

Minimal 最小调试信息

Default 默认调试信息

Maximum 最大调试信息

建议在调试阶段使用 -g3 添加最大的调试信息,以方便进行调试和解决错误。在生成Lib或者elf时,可以选择None模式,减少生成调试信息的过程,减少编译时间。且Lib也可以减小体积。
在这里插入图片描述

Warnings 警告

对编译过程所需要产生的警告信息进行设置,可以看到类型还是比较多。可以根据实际项目进行调整。

-W 更多的警告

-Wall 所有的警告信息

-Wdiv-by-zero 如果有除零操作

-Wcast-align 对数据指针转换时,增加对内存对齐的检查

-Wignored-qualifiers 如果函数返回类型超出范围

-Wformat 如果有个事函数使用错误

-Wnested-externs 如果函数内有外部引用函数

-Wdoble-promotion 从float到double的隐式转换

-Werror=fouble-promotion 从float到double的隐式转换变为错误
在这里插入图片描述

Output 输出

在这里插入图片描述

Symbols 符号

C语言中可以使用 #define SYSBOL 0 来产生一个宏定义。但是需要使用时,需要包含这个头文件。同样,在工程编译过程中,也可以使用 -Dsysbol 来产生一个全局的宏定义。

-D 产生的宏定义

-U 失效的宏定义

[)]

在这里插入图片描述

Language dependent 语言标准

分成4个,对于每个标准之间的区别,则需要自行查找。

在这里插入图片描述

Code Generation 代码生成

对可能使用的对象进行解释

-finline-limit= 对于行函数生成的最大字节数

-finline-is-always-inline 对所有的行函数增加 __always_inline__

-fdata-sections 对所有的数据段进行拆开生成,配合 -gc-sections 可以对不使用的变量链接时进行删除。应该只对 .data 有效

-ffunction-sections 对所有的函数段进行拆开生成,配合 -gc-sections 可以对不使用的函数在链接时进行删除,对所有函数有效

在这里插入图片描述

TriCore C Linker

General 通用配置

-nocrt0 不包含启动文件 crt0.o 文件。根据实际项目需要进行选择

-nostdlib 不使用标准库。根据实际项目需要进行选择

-nostartfiles 链接时,不使用系统启动文件

-T 选择链接文件

在这里插入图片描述

Optimization 优化

–gc-sections 删除不使用的段
–mem-holes 当前输出段(内存段的最后一个输出)已经满时,自动将输入段放入下一个输出段
在这里插入图片描述

Libraries 库文件

-L 库文件搜索路径,可以使用绝对路径和相对路径

-l 库文件名称。 不包括lib前缀和.a后缀 例如实际库文件是 libc.a 则此处需要填写 c 。

在这里插入图片描述

Output 输出文件

-Map= 输出map文件名称
在这里插入图片描述

link设置

选择后,可以将需要连接的目标文件放置在 iROM.object 文件内,以减少命令行的长度。

在这里插入图片描述

选择前后的连接命令对比

在这里插入图片描述
在这里插入图片描述

编译步骤

编译步骤和前面介绍的编译前后步骤一样,但是这里就没有提供库来使用,只能由开发者进行手动填写。还没有研究两个编译的前后顺序。

在这里插入图片描述

编译结果文件格式

结果文件可以分为两种类型,可执行文件(.elf)和静态库文件(.a),其中还可以设置名称和前缀、后缀。

在这里插入图片描述

name 可以使用宏名称 ${ProjName}生成和工程名称一样的文件。

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...