code blocks 代码颜色_S32DS GNU GCC编译优化选项与配置方法详解及S32 SDK代码编译优化选项设置建议...

内容提要

引言

1. GNU GCC编译器的优化选项详解

1.1 何为编译器的优化选项

1.2 编译器优化选项的工作原理

1.3 GNU GCC编译器的-O/O1优化等级

1.4 GNU GCC编译器的-O2优化等级

1.5 GNU GCC编译器的-O3优化等级

1.6 GNU GCC编译器的-O0优化等级

1.7 GNU GCC编译器的Os优化等级

1.8 GNU GCC编译器的-Ofast优化等级

1.9 GNU GCC编译器的-Og优化等级

2. S32DS IDE中GNU GCC编译器的优化选项配置方法

2.1 设置整个应用工程/静态库编译工程的全局GNU GCC编译器优化

2.2 设置应用工程/静态库编译工程指定文件目录的GNU GCC编译器优化选项

2.3 设置应用工程/静态库编译工程特定源文件的GNU GCC编译器优化选项

2.4 查看编译优化选项设置结果和优化选项设置的优先级

3. 使用S32K SDK的S32DS应用工程的代码优化建议

3.1  S32K SDK代码支持编译优化等级

3.2 通过S32DS应用工程的文件目录编译优化选项设置配置SDK代码编译优化等级为-O1

3.3 用户代码的优化选项配置建议

总结

引言

很多S32DS和S32K SDK的用户反馈说,使用S32K SDK的S32DS应用工程编译结果比较差--编译结果代码量太大,运行速度慢。比如在S32DS for ARM v2018.R1新建的使用S32K SDK RTM3.0.1的S32K144测试工程,其添加了默认的PinSettings组件、Clock_Manager组件和interrupt_manager组件,分别完成引脚功能配置、时钟配置和中断管理,以及osif组件做软件延时功能。在main函数中,仅调用了时钟初始化和引脚初始化,以及OSIF_TimeDelay()和引脚翻转API函数实现一个LED的toggle功能:

cbcbe7eadf36a2a53d139585a40a5ab0.png

其编译的结果就需要占用14856字节Flash和3456字节SRAM存储器。

Tips:S32DS应用工程编译结果占用MCU存储器资源大小的计算方法如下:

占用的Flash大小(size) = .text(代码段) + .data(有初始化值的全局/静态变量) = 14520 + 336 = 14856字节 = 14.5KB;

占用的Flash大小(size) = .bss(未初始化或者初始值为0的全局变量/静态段) + .data(有初始化值的全局/静态变量) = 3120+ 336 = 3456字节 = 3.375KB;

此时,可以看到新建的S32DS应用工程,默认的GCC编译器优化等级为-O0,即无任何优化:

0adf0c2c9d65bcc4d72bad79b70735d0.png

若开启GCC编译器的优化,将优化等级设置为-O1:

06d4560eb69d7f44c465118d78437790.png

重新编译工程,编译结果如下,只用Flash 8020字节,SRAM 3456字节:

076130e49a626c545cb76b1bc926a46c.png

相较而言,开启优化()比默认不开优化时,编译结果可以节省46%((14856-8020)/14856)的Flash存储器空间。

另外一个实际的S32K142电机控制应用工程,不开优化与开优化之后的结果如下:

优化选项为-O0,关闭优化:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先需要明确的是,Code::Blocks 是一个集成开发环境(IDE),其本身并不具备代码性能分析的能力。但是,Code::Blocks 提供了与性能分析工具进行集成的能力,因此我们可以在 Code::Blocks 中使用性能分析工具进行代码性能分析。 常用的性能分析工具包括: 1. Valgrind:一款内存调试和性能分析工具,能够检测出内存泄漏、越界访问等问题,并能够分析程序的性能瓶颈。 2. gprof:一款基于函数级别的性能分析工具,能够统计函数的调用次数、执行间等信息,并生成函数调用图和函数执行间统计表。 在 Code::Blocks 中使用性能分析工具的方法如下: 1. 安装性能分析工具:首先需要安装所需的性能分析工具,例如 Valgrind 或 gprof。 2. 配置 Code::Blocks:进入 Code::Blocks 的“Settings”菜单,选择“Compiler”,在“Other options”中添加所需的编译选项。例如,在使用 Valgrind ,需要添加“-g -O0 -pg -Wall”等选项。 3. 编译程序:使用 Code::Blocks 编译程序,会自动加上之前添加的编译选项,从而生成可执行文件。 4. 运行性能分析工具:使用性能分析工具对可执行文件进行分析,例如使用 Valgrind 的“valgrind ./可执行文件”命令。 5. 分析结果:根据性能分析工具生成的结果,找出程序中的性能瓶颈,进行优化。 关于 Blockly 例子的分析,需要具体分析每个例子的代码结构和性能瓶颈,才能进行有效的代码性能分析和优化

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值