This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS320C6747:TMS320C6747

Guru**** 2393725 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/582283/ccs-tms320c6747-tms320c6747

部件号:TMS320C6747

工具/软件:Code Composer Studio

我们在项目中部署了TI DSP 6.2 零代码编辑器。 以前的CC版本是3.3。

我们发现malloc和堆分配存在问题。  例如,malloc调用无法获得内存分配,因为堆都是保留的。 我们知道堆没有过度分配。

是否存在影响malloc和堆分配及释放的新CC 6.2 的标志或选项。

由于某种原因,如果malloc失败并重新加载DSP SW,为什么DSP会进入相同的重新加载循环,即使是使用全新的SW重新加载。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Khaldun Karazoun 说:
    是否存在影响malloc和堆分配及释放的新CC 6.2 的标志或选项。[/QUOT]

    您可以使用选项--heap_size更改堆的大小。  在CCS中,右键单击项目名称,然后选择“显示生成设置”。  在左侧类似结构的树中,浏览到Build | C6000 Linker | Basic Options。  右侧有一个文本框,您可以在其中输入--heap_size的值。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没有控制分配策略的选项,只有George提到的一个控制大小的选项。

    如果malloc失败,并且程序在未检查的情况下通过返回的NULL指针进行写入,则这是未定义的行为。 根据地址0的实际情况,这可能会对程序产生不可预测的影响。 我甚至无法猜测为什么"全新软件重新加载"会受到影响。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    archeologist 说:

    我甚至无法猜测为什么"全新软件重新加载"会受到影响。

    [/引述]

    我想猜一猜。 在全新重新加载过程中显示错误行为的典型错误是访问单化内存(通常在堆栈上)。 如果设备电源关闭一段时间,内存内容将非常容易预测,但如果重新加载程序和/或设备仅短暂关闭,内存将保留其当前内容, 如果您的程序依赖于一些未初始化的值,它可能会立即再次崩溃。

    不过,这只是一个猜测。

    Markus