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

AM2732: 怀疑堆栈使用量超限导致程序跑飞

Part Number:AM2732


程序固定在这里跑飞,

提示栈溢出,但我在编译器里和linker.cmd里都有改大栈大小,还是不行,
希望能帮忙看下是什么问题,谢谢

Gary Lu:

您好,

以下是一些可能的原因和解决方法:

1. 递归调用:检查您的代码是否存在无限递归调用的情况。递归调用可能会导致堆栈不断增长,最终导致栈溢出。确保您的递归函数有正确的终止条件,并且递归深度不会过大。

2. 大型局部变量:检查您的代码中是否存在过多的大型局部变量。局部变量通常存储在堆栈上,如果局部变量过多或占用大量内存空间,可能会导致栈溢出。尽量减少局部变量的使用,或者将其声明为全局变量或静态变量。

3. 堆栈溢出检测:某些编译器和调试工具提供堆栈溢出检测功能。

4. 动态内存分配:考虑使用动态内存分配(如malloc和free函数)来分配和释放内存,而不是依赖于堆栈。动态内存分配可以帮助您更灵活地管理内存,并减少堆栈使用量。

5. 堆栈分析工具:使用堆栈分析工具来检查程序的堆栈使用情况。这些工具可以帮助您确定哪些函数或变量占用了大量的堆栈空间,并帮助您找到优化的方向。

,

toly tang:

 这个占用率是100%   如何调整他的大小?

,

Gary Lu:

您好,

可尝试以下几种方法:

1. 优化代码:检查wave_start的相关代码,确保它没有冗余或低效的部分。优化代码可以减少wave_start的占用率。

2. 减少数据量:如果wave_start处理大量数据,可以尝试减少输入数据的规模。例如,可以将数据进行分片处理,或者使用采样的方式进行处理,以减少wave_start的负载。

3. 使用更高效的算法或库:检查是否有更高效的算法或库可用于执行wave_start的任务。有时候,使用更优化的算法或库可以显著降低占用率。

4. 增加硬件资源:如果其他方法无法降低wave_start的占用率,可以考虑增加硬件资源

,

toly tang:

这里面最大的使用量是官方的库函数 MMWave_open 这感觉不太好优化

,

Gary Lu:

您好,

有一些替代的方法来减少对它的依赖或者优化它的使用。

您可以检查代码中对MMWave_open的调用是否可以进行合并或者批量处理。如果有多个地方都在调用MMWave_open,可以考虑将它们合并成一个地方进行调用,减少不必要的开销。

赞(0)
未经允许不得转载:TI中文支持网 » AM2732: 怀疑堆栈使用量超限导致程序跑飞
分享到: 更多 (0)