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.

[参考译文] AUDIO-AM275-EVM:FFTLIB:在 FFT 和放大器上观察到电路板冻结;IFFT 内核'包装器实现测试运行

Guru**** 2484615 points
Other Parts Discussed in Thread: FFTLIB

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1552450/audio-am275-evm-fftlib-board-freeze-observed-on-fft-ifft-kernels-wrapper-implementation-test-runs

部件号:AUDIO-AM275-EVM
主题中讨论的其他部件:FFTLIB

工具/软件:

您好团队:

我正在 FFTLIB(来自 AM275-FREERTOS-SDK v11.00.00.16)  内核上实施标准化/通用 FFT 包装器  FFTLIB_fft1d_i32f_c32fc_o32fc 需要使用两个公式  FFTLIB_ifft1d_i32fc_c32fc_o32f 对于要在 C7x 内核上运行的复杂到实际的 IFFT 计算。 我已经遵循了  fftlib/test/fft_c7x/FFTLib_fft1d_i32f_c32fc_o32fc/FFTLib_fft1d_i32f_c32fc_o32fc_d.c 和 fftlib/fft7x/FFTLib_ifft1d_i32fc_i32fc_  因此、我已根据需要为包装器内的处理缓冲区分配 128 字节对齐。 但我注意到、即使是库外部的缓冲区也需要 128 字节对齐、这似乎是一个微妙的要求。 当我不这样做时、即如果我使用 Simple malloc () 分配外部缓冲区、执行会停止、并且我的目标板 (AM275-EVM) 会冻结并进入不可恢复/错误状态、我需要再次进行下电上电。 请注意、所有这些外部内部缓冲区都将分配给堆。 我尝试重现此问题、并在这里随附的 4 个独立 CCS 工程中尝试了几种方法来解决此问题 .zip 文件:

 #    CCS 工程 实现详细信息 观察 含义
 1. TI-FFT malloc () 用于外部缓冲区、未对齐、使用的缓冲区副本最少 执行期间电路板冻结 理想方式  
 2. TI-FFT-expT1 没有 malloc () 用法,所有外部缓冲区和库进程缓冲区都是 12 字节对齐的 成功执行 期望太不切实际
 3. TI-FFT-expt2 与 1 相同、只是包装器使用的缓冲器还多了几个 执行期间电路板冻结 如果增加了缓冲器、则不可取
 4. TI-FFT-expt3 与 3 相同、只是额外的缓冲区分配是根据操作进行管理的 执行期间电路板冻结 仍然可以接受

很高兴听到我所面临的关于这个问题的专家建议、并期待了解为什么看到这一观察结果以及问题的可能解决方案。

PS:项目包含用于构建测试应用程序的相关内核副本。 可能需要调整依赖项、才能成功构建。

此致、
Sreeekanth

e2e.ti.com/.../ti_2D00_fftlib_2D00_test.zip

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

    您好、Sreekanth、

    我正在努力了解这个问题。 请期待明天的 EOD 响应。

    谢谢、

    Shreyansh

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

    感谢您的响应 ShreyanshAnand 。 只是一个更新 — 我能够做一些更多的实验,并设法提出什么我认为是一个解决方案。

    我不得不手动重建半频谱的共轭复数,并将其与作为输入提供的半频谱相结合,并将完整的双面频谱作为输入传递到 IFFT 内核 FFTLIB_ifft1d_i32fc_c32fc_o32f。 它现在似乎按预期工作、如您在附加的 CCS 工程中所见。 您能否确认这是正确的方法

    e2e.ti.com/.../ti_2D00_fft_2D00_expt4.zip

    但是、我假设 IFFT 输入数据 格式是格式的数组 <xn,jyn> 对于 n = 0 至 N-1。 您能否确认我的假设正确、即复数数据是交错的

    另外、 FFTLIB_ifft1d_i32fc_c32fc_o32f 内核文档误导了我、其中指出:

    用于计算 32 位浮点复数到实数 IFFT 的内核。 内核使用 N/2 点复数 IFFT 来执行 N 点复数序列的 IFFT 以输出实数序列、从而节省计算时间

    这给人一种印象,内核只需要 N/2 点作为输入,重建由内核内部处理。

    是否还能确认 CCS 或 CGT 中运行时栈、堆分析器或任何其他运行时内存调试功能的可用性、并将我指向相关文档(如果有)? 我在 CCS 20.2(从 View 菜单)中只看到 4 -“内存“、“内存分配“、“内存映射“和“堆栈使用“工具、后者 3 似乎是静态分析器。 “存储器“虽然可用于验证数据、但它在检测堆和栈溢出方面用处不大。

    非常感谢为解决上述几个问题提供的任何帮助。

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

    您好、Sreekanth、

    但是、我假设 IFFT 输入数据格式是 格式的数组 <xn,jyn> 对于 n = 0 至 N-1。 您能否确认我的假设是正确的、即复杂数据是交错的

    正确。 复数数据采用交错格式。

    这给人的印象是内核只需要 N/2 点作为输入、重建由内核内部处理。

    你是对的。 我要提出一个 JIRA 来修复文档、我们还计划在下一个版本中将复共轭半频谱生成添加到内核中。  

    无论这是不是正确的解决方案、我在这里的背景不大。 请更正我如果我错了、您之前遇到电路板崩溃问题的原因是您仅向内核传递了 N/2 个点、如果是、这是正确的解决方案。

    您是否还能确认运行时栈、堆分析器或 CCS 或 CGT 中任何其他运行时内存调试功能的可用性、并将我指向相关文档(如果有)? 我在 CCS 20.2(从 View 菜单)中只看到 4 -“内存“、“内存分配“、“内存映射“和“堆栈使用“工具、后者 3 似乎是静态分析器。 “内存“虽然可用于验证数据、但它在检测堆和栈溢出方面用处不大。

    我将把这个问题传递给另一位专家、他将帮助您解决这个问题。

    谢谢、

    Shreyansh

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

    尊敬的 Shreyansh:

    感谢您的回答。

    无论这是不是正确的解决方案、这里的上下文都没有。 请更正我如果我错了、您之前遇到电路板崩溃问题的原因是您仅向内核传递了 N/2 个点、如果是、这是正确的解决方案。

    正确。 当我将 N/2 点传递给内核时、会看到电路板崩溃。

    我会将此查询传递给另一位专家、他将帮助您解决此问题。

    当然、专家验证会很好。

    我要提出一个 JIRA 来修复文档、我们还计划在下一个版本中将复共轭半频谱生成添加到内核中。

    好极了。 如果流引擎处理、也许有助于节省一些 CPU 周期。

    此致、
    Sreekanth

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

    您好、Sreekanth、
    我与专家进行了检查。 遗憾的是、我们没有任何运行时堆栈检测工具。

    我们通常使用的方法是在运行代码之前使用已知值(例如 0xDEAD)填充栈。  CCS 可以在存储器窗口中执行此操作。  “Memory"窗口“窗口中的某个图标具有“Import Data“选项、可用于填充整个堆栈。  然后、当您运行代码时、只要停止、您就可以检查栈并查看已使用了多少栈。

    用户可以执行的另一操作是设置观察点(类似于断点,但这会监视数据访问而不是程序提取) 以覆盖栈末尾的区域。  配置观察点以观察数据写入。  如果处理器尝试写入该区域(意味着栈用完)、则处理器将暂停。  在 CCS 中、您设置一个类似于断点的观察点、但选择“Watchpoint(观察点)“。

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

    尊敬的 Shreyansh:

    感谢您的意见。 您指的是此选项-  7.1.调试概述—Code Composer Studio 20.2.0 文档:7.4.16.1. 观察点。 对吗?

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

    您好、Sreekanth、
    是的、是这样。

    谢谢、
    Shreyansh