HighTec 工程配置详解

news2025/1/11 16:56:46

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}生成和工程名称一样的文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/50389.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计springboot咖啡销售平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Unity复刻骑砍中的帝国象棋(一)

Unity复刻骑砍中的帝国象棋(一) 起因和简介 这两天从一款游戏中发现了这么个棋类小游戏,觉得挺有意思,没错,就是下面这个: 作为程序员的我,一下就想到复刻它一下。这个棋类小游戏&#xff0c…

【程序人生】4年创作纪念日,不忘初心,继续前行

📫作者简介:小明java问道之路,专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

JavaScript --04. 流程控制语句介绍

文章目录流程控制1 代码块1.1 声明代码块1.2 let 和 var的作用域2 条件判断语句 -- if语句3 条件分支语句3.1 if-else语句3.2 if-else if-else语句3.3 练习4 Switch语句5 循环语句5.1 While循环5.2 do-while循环5.3 for循环5.4 嵌套循环6 break和continue6.1 break6.2 continue…

PTL智能拣货系统

一、PTL背景介绍 随着工业 4.0 理念持续扩展并被接受,智能制造将是中国制造业发展趋势。未来的生产企业不仅仅在生产过程中追求智能化,仓储、工具、设备智能化管理都会成为新的趋势。 现阶段物流仓储行业进入了一个快速的发展期,各种各样的…

辣椒疫霉RXLR效应子抑制植物免疫

文章信息 题目:A Phytophthora capsici RXLR effector targets and inhibits the central immune kinases to suppress plant immunity 刊名:New Phytologist 作者:Xiangxiu Liang,Daolong Dou et al. 单位:China …

微信无感知检测单项好友【WeTool 免费版】【微信如何检测单向好友?】

一.微信无感知检测单项好友 1.1 背景 因为最近业务的原因加了好多的陌生微信好友,难免有很多好友删了我,但是我还有他的微信,岂不是很占地方? 所以我琢磨如何检测这些单项好友【利用转账、拉群的方法太费时间】,我无…

[附源码]计算机毕业设计springboot拉勾教育课程管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

事件绑定(onclick,onfocus,onblur)

事件绑定(onclick,onfocus,onblur) 学习路线:JavaScript_DOM->事件绑定(onclick,onfocus,onblur)-> 事件绑定(onmouseout,onmouseover) ->事件绑定(onsubmit)表单提交 ->提交表单与验证表单案例 常用绑定方式 方式一:通过 HTML标签中的事…

Java Hash 碰撞

散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。 该函数将数据打乱混合…

获取windows硬件、软件信息的方法

1,方法1 systeminfo 该命令是Windows中用于显示关于计算机及其操作系统的详细配置信息,包括操作系统配置、安全信息、产品 ID 和硬件属性,如 RAM、磁盘空间和网卡和补丁信息等。 SYSTEMINFO [/S system [/U username [/P [password]]]] [/FO…

从阿里降薪百分之三十来了国企,没想到还是要加班!哭了!

从阿里进国企,图什么?图它降工资?图它技术强?当然是图它轻松不加班,稳定不裁员!但如果像下面这位阿里程序员一样,降薪百分之三十进了国企,发现还是得加班,大概只能emo了.…

[附源码]Python计算机毕业设计Django的文成考研培训管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Ae 动态图形模板

哈喽,各位小伙伴!今天我们来学习一下如何通过AePr导出和安装动态图形模板? 新建合成 首先,新建一个合成,然后点击文字工具,内容自定义(例:一场彗星雨,隔断了时空&#…

【408篇】C语言笔记-第九章(数据结构概述)

文章目录第一节:逻辑结构与存储结构1. 逻辑结构2. 存储结构1. 顺序存储2. 链式存储3. 顺序存储与链式存储分析第二节:算法的评价(时间复杂度与空间复杂度)1. 算法定义2. 时间复杂度3. 空间复杂度第一节:逻辑结构与存储…

CentOS7安装GmSSL过程记录

近期因为项目需要上区块链,在集成过程中证书选择了国密SM2,于是开启了入坑之旅,由于整个过程反复多次,我的记录也可能存在遗漏,只能尽力记录,这也是我为什么熬夜也要写下这篇记录! 环境说明Virt…

[附源码]Python计算机毕业设计Django的玉石交易系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…

【Pandas数据处理100例】(九十三):Pandas使用all()函数判断DataFrame中的元素是否都为True

前言 大家好,我是阿光。 本专栏整理了《Pandas数据分析处理》,内包含了各种常见的数据处理,以及Pandas内置函数的使用方法,帮助我们快速便捷的处理表格数据。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPandas版本:1.3.5N…

数据库事务、连接与java线程之间的关系

最近在处理事务和多线程时,比较困扰数据库事务,数据库连接以及java线程之间的关系。 问题1:事务和连接的关系? 回答:对于数据库事务来说先有一个连接,才能有事务,一个连接里可以有一次或多次事…

[附源码]计算机毕业设计SpringBoot计算机相关专业考研资料管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…