TI中文支持网
TI专业的中文技术问题搜集分享网站

LAUNCHXL-CC1310: CC1310 编译提示优化问题

Part Number:LAUNCHXL-CC1310

1.要怎么设置代码优化等级?

Alex Zhang:

O0:简化控制流图。分配变量到寄存器。进行循环换转。删除未使用的代码。简化表达式和语句。内联声明为inline的函数。

O1:执行O0的优化功能。施行局部复制/常量传递。删除未使用的赋值语句。删除局部共有的表达式。

O2:执行O1的优化功能。进行软件流水。进行循环优化。删除全局共有子表达式。删除全局未使用的赋值语句。把循环中的数组的引用转变为递增的指针形式。

进行循环展开。

O3:执行O2的优化功能。删除未使用的所有函数。当函数的返回值没有用到时,简化函数返回形式。内联小的函数。重新对函数声明进行排序。这样优化代码时,被调用函数的属性是已知的。当所有调用都传递一个相同的参数时,把这个参数直接放到函数体中去,不再通过寄存器的方式传递这个参数。识别文件级变量的特征。

4、总结最好的方法就是每个选项一次一次试一下,当发现本次优化状态代码运行不对,那么就返回上个优化状态,这样Opt Level下的优化已经到了极限。

开编译器优化可能导致跟踪函数的变量时值是错的。编译优化的好处是加快代码运行速度,但缺点就是只能把函数当做黑盒,函数内部的bebug结果是不可靠的。所以一般将算法和流程编到不同的文件中去,因为算法文件一般都是验证完了的,不怎么需要调试,所以算法文件开适当的优化,流程文件不开优化。这样既能提高运行效率又可以不影响流程的调试。

,

genyi liu:

优化等级 -o 0

优化等级 -o 3

修改了代码优化等级,固件大小没有明显变化 ?

,

Alex Zhang:

您的目的是更改bin文件大下对吗?

建议您这边下次提问,可以直接说明问题,这样可以更好的解决您的问题:

bin文件的格式非常简单。没有紧凑的方法来表示孔。表示洞的唯一可能的方法就是填补它。

零值通常用于填补漏洞。如果二进制文件是使用 objcopy 实用程序的变体创建的,请查看该实用程序是否支持名为 –gap-fill 的选项。如果是这样,它可以用来填充非零值的洞。

避免漏洞的最佳方法是仔细控制可执行文件中初始化部分的位置。将它们尽可能靠近地放置。在理想的配置中,它们都彼此相邻。

有时漏洞是无法避免的。如果是这种情况,请看看这两种替代方案之一是否可行。

一种替代方法是创建单独的 bin 文件。如果有两个初始化节簇,则为每个簇创建一个 bin 文件。这种方法并不总是实用。创建 bin 文件的实用程序可能不支持它。或者,读取 bin 文件作为输入的实用程序可能只接受一个文件。

第二种选择依赖于两个假设。第一,所有初始化的部分都靠近在一起接受一个。第二,初始化部分的主簇附近有内存空间。在这种情况下,请安排剩余的初始化部分具有不同的加载和运行地址。它加载到初始化节的主簇附近的地址。作为系统启动的一部分,它被复制到不同的运行地址。

我为您提供了链接,以方便您这边可以了解到更多的资料,可以解决您的问题,谢谢。

software-dl.ti.com/…/sdto_cgt_an_introduction_to_binary_files.html

赞(0)
未经允许不得转载:TI中文支持网 » LAUNCHXL-CC1310: CC1310 编译提示优化问题
分享到: 更多 (0)