1.优化等级设置
右键点击工程,选择 【属性 】

CCS12 设置菜单

CCS20 设置菜单

2.CCS 优化设置讲解:
Optimization level (--opt_level, -O)
Speed vs. size trade-offs (--opt_for_speed, -mf)
1. 优化等级 (--opt_level, -O)
这个选项决定了编译器对代码进行"整容"的力度。等级越高,代码跑得越快,但编译时间变长,且调试难度增加。
| 选项 | 标志 | 含义 | 适用场景 | 注意事项 |
|---|---|---|---|---|
| 无优化 | -o0 |
不进行优化,严格对应源代码行号。 | Debug调试阶段。方便打断点、看变量值。 | 代码运行最慢,体积可能反而较大(因为没压缩)。 |
| 基本优化 | -o1 |
简单的优化,如删除死代码、常量折叠。 | 早期开发阶段。 | 性能提升有限,但保留了较好的调试信息。 |
| 高级优化 | -o2 |
(默认推荐) 循环展开、函数内联、指令调度。 | Release发布版。大多数工程的最佳平衡点。 | 可能会导致部分局部变量在调试时不可见。 |
| 全力优化 | -o3 |
激进的优化,包括复杂的算法重组。 | 高性能要求。针对关键算法(如FOC控制环路)。 | 极易导致 #10068-D 错误(移除了未引用的段),代码体积变大。 |
| 自动/定制 | -o4 |
编译器根据目标芯片特性自动选择最佳策略。 | 特定高端芯片。 | 需查阅具体芯片手册确认支持情况。 |
2. 速度与大小权衡 (--opt_for_speed, -mf)
这个选项告诉编译器:"当代码体积和执行速度发生冲突时,你优先保哪个?"
- 范围 :通常从 1 到 5。
--opt_for_speed=1(-mf1) :极致省空间。编译器会极力压缩代码体积,哪怕牺牲运行速度。适用于 Flash 空间极度紧张的老旧芯片。--opt_for_speed=5(-mf5) :极致求速度。编译器会使用更多指令来换取更快的执行流(例如多用寄存器,少用内存访问),这会导致代码体积膨胀。
3. 如何搭配设置
针对项目,建议建立两套配置:
🛠️ Debug 配置 (用于写代码、查Bug)
- Optimization Level (
-o) :-o0(确保断点准确,变量可见) - Speed vs Size (
-mf): 默认即可 - 目的: 此时不要在乎快慢,只要能看清程序怎么跑的就行。
🚀 Release 配置 (用于出货、测试性能)
- Optimization Level (
-o) :-o3(开启强力优化) - Speed vs Size (
-mf) :-mf5(优先速度)
3.优化结果对比
| 优化配置 | 代码大小(KB) | 字节大小 | 分析 |
|---|---|---|---|
| O3/S0 | 125 KB | 128,568 字节 | 基础 O3 优化,体积最小。 |
| O3/S1 | 125 KB | 128,568 字节 | 体积无变化,尺寸优化未生效。 |
| O3/S2 | 125 KB | 128,952 字节 | 仍保持稳定,未明显膨胀。 |
| O3/S3 | 130 KB | 133,432 字节 | 转折点:体积开始上升,编译器以空间换时间。 |
| O3/S5 | 133 KB | 136,384 字节 | 体积最大,理论运行速度最优。 |