如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度

1、前言

使用英飞凌单片机编译器 TASKING TriCore Eclipse IDE 开发编译时,想必感受最深刻的就是编译速度,那是非常慢了,如果是部分修改的源文件编译还好,不用等太久,而如果选择需要全部编译,那么这个时间就很长了。

网上也有一些帖子讲述了如何提高 Tasking 编译速度的方式,比如更改多线程编译的数目、更改编译等级和减少编译输出内容等来提高编译速度。

不过这些方式没有很明显的提升, Tasking 多线程编译选项基本是默认的,会根据电脑的配置自动选择最优的线程数目进行编译,而编译等级和编译输出内容(如map文件)算是治标不治本,因为调试开发阶段这些是不可或缺的,没有调试信息的情况下在仿真调试阶段异常属于闭眼走路。

下面会介绍几种方式来提高 Tasking 编译时的速度,也会介绍如何修改编译时的多线程数目。

2、提升编译速度方法

以下的测试结果所使用的电脑配置: Windows 10 + 英特尔 i7(8核) + 64G内存

在设置之前首先全部编译一遍代码,方便对比编译时长,此次编译所耗时长是 480826ms ≈ 8 分钟。

Time consumed: 480826 ms
**** End of build ****

2.1、编译时的线程数目

右击工程,选择 “Properties -> C/C++ Build -> Behavior”,选择 “Use parallel jobs”,为了明显比较,这里设置 16(默认8)

如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度

看一下编译时的CPU使用率,达到了 100%(因为还有其他软件在运行,所以 Tasking 占据了 80%)。

如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度

此次编译所耗时长是 489038ms ≈ 8 分钟,没有明显变化,建议采用默认的线程数目即可。

关于编译时的线程数目,不是越多越好:CPU密集型任务,并行执行的线程数应该尽量和CPU核心数保持一致,否则超过了CPU核心数,再提高线程数也不会提高处理速度,反而因为 上下文切换带来的损耗降低处理速度。

Time consumed: 489038 ms
**** End of build ****

2.2、Makefile 的自动生成

Tasking 在编译时会为项目工程源码自动生成 Makefile 文件,可以查看工程目录下的 Debug 目录,里面基本都是各个源文件的 makefile 文件,都是在编译时自动生成的。每次编译(包含修改部分编译)都会重新生成一次,这里也需要占用一些编译的时间,那么这次测试取消编译时总是生成 Makefile 选项后能提高多少。

右击工程,选择 “Properties -> C/C++ Build -> Builder Settings”,取消勾选 “Generate Makefiles automatically”(如果新增了文件,那么最好重新勾选上并生成,否则编译时新增的源码文件不会被编译)。

如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度

此时测试编译耗时为 489543ms ≈ 8 分钟,没有明显变化。

Time consumed: 489543 ms
**** End of build ****

2.3、内存参数配置

由于 Tasking 是基于 eclipse 集成开发环境平台扩展的 IDE,因此可以根据如何提高 eclipse 的编译速度的方式对 Tasking 进行同样的设置。

打开 Tasking 的安装路径,找到 eclipse.ini 文件,修改配置信息提高 Tasking 的编译速度,-Xms设置为 2048,-Xmx设置为4096。

-vmargs:说明后面是VM的参数
-Xms256m:虚拟机占用系统的最小内存
-Xmx1024m:虚拟机占用系统的最大内存
建议把这个稍微设大一点,不过要根据自己机器内存大小来设置(可能设置后出现打不开,那就尝试再小些)

-showsplash
com.tasking.ctc
--launcher.XXMaxPermSize
512m
-vmargs
-Dosgi.splashPath=platform:/base/plugins/com.tasking.ctc
-Declipse.product=com.tasking.ctc.ide
-Xms2048m
-Xmx4096m
-Xverify:none

此时测试编译耗时为 438945ms ≈ 7 分钟,有些许变化。

Time consumed: 438945 ms
**** End of build ****

2.4、静态库链接

从编译的记录看,iLLD 库源码编译的时长是占比最大的,而通常情况下除非库有问题或者需要性能优化,基本不会随意修改 iLLD 的源码内容,但是每次全部编译都会重新编译这一部分源码内容,因此,如果想提高编译速度的话,那么这一块就是就是重点需要解决的部分。

将 iLLD 编译成静态库,然后在编译时不再编译 iLLD 源码,通过静态链接的方式完成整个工程的编译。

1、首先右击工程中添加的 iLLD 目录,按下图选项不再编译 iLLD 源码。

如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度

2、将编译好的 iLLD 静态库放在 iLLD 目录下,新建一个 Lib 存放,此时可以看到 Src 是灰色的,代表不被编译。

如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度

3、右击工程,”Properties -> C/C++ Build -> Settings -> Tool Settings”,按下图添加静态库,然后编译。

如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度

4、此时测试编译耗时为 235933ms ≈ 4 分钟,发生了明显的变化,编译时间缩短了一倍。

Time consumed: 235933 ms
**** End of build ****

3、总结

综上所述,四种方式中只有静态链接的方式会明显缩短编译时间外,其他几种方式均没有太明显的变化。

注:由于反复操作对比,即使没有按上述方式修改的情况下,每次编译时长都会比上次编译要久,所以上述除了静态链接的方式外,其他方式的测试编译时长仅供参考。

Original: https://www.cnblogs.com/const-zpc/p/16380283.html
Author: 大橙子疯
Title: 如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581971/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • java内存调优总结

    ···bashJVM 调优,是个很简单也很复杂的话题,由于经常遇到这类问题,在这里总结一下。 先从解决bug开始,当Java程序申请内存,超出VM可分配内纯的时候,VM首先可能会G…

    Linux 2023年6月14日
    092
  • AWS修改RDS时区

    查看 RDS 当前时区 默认情况下,AWS 的 RDS 采用的是 UTC 时间。而我们地区一般位于东八区,因此我们本地的时间是 UTC+8。 连接到 RDS 上,查询当前实例的时区…

    Linux 2023年6月7日
    0100
  • 构建自定义镜像并优化dockerfile文件

    服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64…

    Linux 2023年6月7日
    097
  • 2021年3月-第02阶段-前端基础-移动WEB开发-移动WEB开发之_响应式布局

    移动端WEB开发之响应式布局 1.0 响应式开发原理 1.1 响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式的设置,从而适配不同设备的目的。 设备的划分情况: 小…

    Linux 2023年6月8日
    0117
  • 我叫Mongo,干了「索引探索篇」提升我的效率,值得您拥有

    这是mongo第四篇”索引探索”,后续会连续更新4篇 mongodb的文章总结上会有一系列的文章,顺序是先学会怎么用,在学会怎么用好,戒急戒躁,循序渐进,跟…

    Linux 2023年6月14日
    079
  • Jenkins中HTML报告无法正常显示问题解决

    自动化结果生成了HTML报告,但是在Jenkins中打开报告却显示空白,打开控制台,可以看到该报错 参考https://www.jenkins.io/doc/book/securi…

    Linux 2023年6月6日
    0109
  • 存储过程,存储函数(Oracle)

    –打印hello world create or replace procedure sayhelloworld as –说明部分 begin dbms_output.put_…

    Linux 2023年6月14日
    080
  • 代码规范浅谈

    代码规范这东西网上很容易百度到一堆,除了天下文章一大抄的问题,另外,多数只给了结果,原因没有充分说明,或者非常的纠结于大写小写,一个函数可以写几行的细节。感觉有点容易让新人误入歧途…

    Linux 2023年6月13日
    0100
  • YUM简单入门

    1.制作YUM源先关闭相关安全设置,安装vsftpd 挂载到共享目录 对新增的安装包目录生成包的元数据(把包中依赖关系统计) 配置yum路径特性 生成yum 2.YUM命令简单使用…

    Linux 2023年6月7日
    098
  • VirtualBox 和宿主机挂载共享文件夹 步骤记录

    问题记录 这个功能不常用(感觉这个步骤很繁琐,用finalshell连ssh就能很溜),但是有时候在公司网络受限的时候安装不了ssh,只能用这个挂载的方式。 防止后期遗忘步骤,我把…

    Linux 2023年6月6日
    0162
  • 每天一个 HTTP 状态码 202

    202 Accepted 表示服务器已经接受了这个请求,但是还不确定… 202 Accepted 202 Accepted 表示服务器已经接受了这个请求,但是还不确定这…

    Linux 2023年6月7日
    0105
  • 在vue中使用websocket回调函数中调用其他methods函数报错Uncaught TypeError: this.getHistory is not a function at WebSocket.ws.onmess解决方案

    1、报错详情 在vue中,使用了websocket类,在websocket的onmessage回调函数中调用methods的 getHistory 函数,发现一调用就报错 Unca…

    Linux 2023年6月8日
    090
  • Vue3

    setup 函数时,它将接受两个参数:(props、context(包含attrs、slots、emit)) setup函数是处于 生命周期函数 beforeCreate 和 Cr…

    Linux 2023年6月13日
    085
  • 离职,问题就解决了吗?

    刚入职场的那几年,我经常对工作有各种抱怨。回想起来,有两次冲动的不必要的离职,或者说应该干得更久一点。一旦有了离职的想法,整个人每天都纠结是去还是留,这种纠结成倍的放大焦虑,让自己…

    Linux 2023年6月6日
    0107
  • 人人都写过的5个Bug!

    大家好,我是良许。 计算机专业的小伙伴,在学校期间一定学过 C 语言。它是众多高级语言的鼻祖,深入学习这门语言会对计算机原理、操作系统、内存管理等等底层相关的知识会有更深入的了解,…

    Linux 2023年6月14日
    0106
  • GT/s和Gbps的关系

    GT/s 和 Gbps 数据传输表示通过数字接口传递的数据量。 当用较多的数据位对原始数据进行编码时,有效数据传输量低于实际传输的数据位数。例如:PCIe串行总线采用10位数据对8…

    Linux 2023年6月7日
    096
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球