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.

[参考译文] TDA2PXEVM:TDA2PXEVM:在 TDA2Px 中:- DSP1和 DSP2内核始终显示超过98%的系统堆栈使用量。

Guru**** 2455560 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1475680/tda2pxevm-tda2pxevm-in-tda2px---dsp1-and-dsp2-core-always-showing-system-stack-usage-above-98

器件型号:TDA2PXEVM
Thread 中讨论的其他器件:SYSBIOS

工具与软件:

您好、TI:

我们在 SYSBIOS 操作系统中使用 TDA2Px 处理器。

我们正在尝试读取所有内核的系统堆栈以分析堆栈的使用情况、并将根据使用情况对其采取必要的操作。

除 DSP1和 DSP2之外、所有其他内核均在0x4000下提供了正确的系统堆栈使用。

但 DSP1和 DSP2提供了错误的系统堆栈使用方法(这也应该低于0x4000大小、与其他相同)。

下面是下面代码中显示的用法图/日志供您参考:-

A15_0核心的系统堆栈用法--> 0x460 、  A15核心的总堆栈--> 0x4000       "显示的总尺寸正确"

EVE1核心的系统堆栈用法--> 0x1d0 、 EVE1 核心的总堆栈--> 0x4000      "显示的总尺寸正确"

EVE2 Core 的系统堆栈用法--> 0x1d0  和  EVE2  Core 的总堆栈--> 0x4000       "显示的总尺寸正确"

DSP1 Core 的系统堆栈用法--> 0x87218580和 DSP1  Core 的总堆栈-->  0x8e0164f0        "使用量和总容量显示错误"

DSP2核心的系统堆栈用法--> 0x8721c2a8和 DSP2 核心的总堆栈--> 0x8e01a088       "使用量和总容量显示错误"

我认为这是垃圾值或任何随机地址。

M40、M41、EVE1、EVE2、A15内核系统堆栈使用情况看起来很好、低于10%- 20%(意味着低于0x4000)、但 DSP1和 DSP2始终显示系统堆栈高于98%。

问题1:  为什么我们仅获得超过98%的 DSP1和 DSP2系统堆栈使用量?

我在.map 文件中看到如下所示的内存配置

文件夹                 Origin           Length            全波整流          Unused         属性      加注

DSP1_CODE         86800000        00400000         00066660      003999a0       RWIX
DSP1_DATA          86c00000        02800000         006b1c07      0214e3f9       RWIX
DSP1_GC_DATA      89400000        04400000         02d00628      016ff9d8        RWIX

dsp2_code         8d800000        00200000         00044800      001bb800       RWIX
DS2_DATA          8da00000        02600000         006af2c5       01f50d3b       RWIX

如上一行所示、DSP1和 DSP2核心的使用量非常少、但我们得到的堆栈使用量仍然非常高。

 

请提供指导和支持来解决此问题。 这一问题非常紧迫、我们在过去几个月中被阻止。

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

    尊敬的 Pankaj:

    您能告诉我们这里使用的是什么 TI SDK 吗?  该项目涉及哪些方面? 它是在什么时候声明的、为什么现在发现了这个问题? 执行了什么代码更改、这就是导致该情况的原因? 您是否已查看输出此值并进行分析的代码?

    此外、要明确期望、TDA2x 器件没有发布任何新的维护版本、我们将尽最大努力提供支持。  

    谢谢。

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

    Praveen、您好!

    我们已经准备了您的答案案例、如下所示。

    下面是问题:
    问题1:您能告诉我们这里使用的是什么 TI SDK 吗?
    answer1:—我们正在使用的 TI SDK 为 pdk_01_10_01_06。

    Q2:-该项目是关于什么?
    答案2 :-该项目是一个基于 ADAS 系统的相机监控系统。

    问题3:-它是何时声明的、为什么现在发现了这个问题?
    回答者3 :-我们正在尝试检查堆栈使用情况和总系统堆栈。 如果堆栈将超出90%、我们将尝试生成错误。
    对于 A15、EVE1、EVE2、M4_0、M4_1内核、系统堆栈显示正确且在范围(0x4000)内。
    但如果是 DSP1和 DSP2、则无法获得正确的系统堆栈和总系统堆栈。

    Q4:-执行了什么代码更改、导致了这种情况?
    答案4:-来自 TI RTOS/XDC 工具的符号(例如__TI_STACK_SIZE 或__STACK_SIZE)似乎行为不正常。 因此、我们没有得到正确的堆栈大小。
    请参阅答案5中说明的执行情况。

    Q5:-您是否研究过输出此值并进行分析的代码?
    回答5:是的、我做了分析、下面是系统堆栈在结构上的更新方式。

    ***** 这是全球性的
    extern void*__stack;
    extern const uint32 __stack_size;
    extern void*__STACK_END;
    uint32* const gpSystemStack = reinterpret_cast (&&_stack);
    const uint32 gSystemStackSize = reinterpret_cast (&&_STACK_SIZE);
    * 结束我们的发言

    ****** 这是在一个函数内******
    m_sysStacks.maxStack[idx]= gSystemStackSize -((i - 1U)* 4U);
    **** 结束*****

    谢谢  

    Pankaj Verma

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

    尊敬的 Pankaj:

    感谢您的参与。

    此外、让我们了解包含此 PDK 的 Processor SDK 版本?   https://www.ti.com/product/TDA2P-ACD#software-development

    最新的 VISION SDK 版本 (03.08.00.00发布日期:2019年12月25日)具有 pdk_01_10_04_05? 您试过吗?

    查看代码片段、您能告诉我们您想要打印和检查的变量是什么吗? 此外、代码片段是否与 TI SDK 共享? 如果是、您能否在 SDK 中共享此文件的行号、文件名和路径、以便我们进行交叉检查?

    谢谢。

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

    Praveen、您好!

    我们使用 BIOS RTOS 和 XDC 工具。  

    xdctools_3_32_01_22_core

    BIOS_6_46_06_00

    问题:-看一下代码段、您能告诉我们您尝试打印和检查的变量是什么吗?

    asnwer:-我们正在尝试打印"m_sysStacks.maxStack[idx]"和"m_sysStacks.totalStack"

    谢谢  

    Pankaj Verma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="564850" url="~/support/processors-group/processors/f/processors-forum/1475680/tda2pxevm-tda2pxevm-in-tda2px---dsp1-and-dsp2-core-always-showing-system-stack-usage-above-98/5672642 #5672642"]

    我们使用 BIOS RTOS 和 XDC 工具。  

    xdctools_3_32_01_22_core

    BIOS_6_46_06_00

    [报价]

    好的、感谢 BIOS 和 XDS 工具版本。

    asnwer:-我们正在尝试打印"m_sysStacks.maxStack[idx]"和"m_sysStacks.totalStack"

    是否可以打印  gpSystemStack 和 gSystemStackSize?

    此外、对于有人提出的其他问题、请提供详细信息-- 代码片段是从 TI SDK 共享的吗? 如果是、您能否在 SDK 中共享此文件的行号、文件名和路径、以便我们进行交叉检查?

    谢谢。

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

    alos、您可以尝试打印"__stack"、"__stack_size"和"__stack_end"并进行检查吗?

    谢谢。

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

    Praveen、您好!

    我已经尝试打印   

    \n\n][BRI] 034:32.355  A15_0  -_TI_STACK_SIZE:4000 \r\n
    \n\n][BRI] 034:37.971  EVE2  -_TI_STACK_SIZE:4000 \r\n
    \n\n][BRI] 034:37.999  eve1  -_TI_STACK_SIZE:4000 \r\n
    \n\n][BRI] 027:42.363  DSP1  -_TI_STACK_SIZE:8721c1b8 <\r>
    \n\n][BRI] 027:42.552  DSP2  -_TI_STACK_SIZE:8e019f88 <\r>

    问:-是否可以打印  gpSystemStack 和 gSystemStackSize?

    答案:-是的、我还尝试了打印 gpSystemStack 和 gSystemStackSize、结果与_TI_STACK_SIZE 相同。

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

    好的,谢谢细节。  

     "__STACK_END"显示什么?

    我们还在等待:-->是 TI SDK 共享的代码片段吗? 如果是、您能否在 SDK 中共享此文件的行号、文件名和路径、以便我们进行交叉检查?

    此外、能否共享用于构建 DSP1和 DSP2映像的 linker.cmd 文件?

    谢谢。  

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

    Praveen、您好!

    以下是 DSP1和 DSP2的链接器文件

    e2e.ti.com/.../dsp1_5F00_linker.txte2e.ti.com/.../dsp2_5F00_linker.txt

    问:-代码片段是否与 TI SDK 共享? 如果是、您能否在 SDK 中共享此文件的行号、文件名和路径、以便我们进行交叉检查?

    答案:- 我们没有为 CMS 应用程序使用 PDK。 因此代码片段不是来自 PDK。 我们使用 BIOS RTOS 和 XDC 工具。  

    很抱歉、由于 TI 论坛网站上的"获得访问拒绝"错误导致答案延迟。

    谢谢

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

    尊敬的 Pankaj:

    感谢链接器文件

    一个问题-在创建之前、您是否参考过 TI SDK 提供的任何链接器文件?  

    我们正在 调查原因、需要一些时间。

    谢谢。

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

    Praveen、您好!

    此链接器很久以前由不再与我们合作的人创建。

    您认为链接器文件有什么问题吗?

    谢谢

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

    我们怀疑正在使用特定的 ti-CGT-C6000版本。 您能否共享您正在使用的版本?

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

    Praveen、您好!

     我们使用的版本  "ti-CGT-C6000_8.2.5"

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

    根据您在上面提到的 PDK 版本 pdk_01_10_01_06 、我们可以跟踪您是否在使用 https://www.ti.com/tool/download/SDK/03.05.00.00 、但在此 PROCESSOR-SDK-VISION 中、经验证的 ti-cgt-c6000 版本是7.4.2。

    有关所有组件版本-> https://dr-download.ti.com/software-development/software-development-kit-sdk/MD-ALyjKPdidL/03.05.00.00/Processor_SDK_Vision_manifest.html、请参阅随附的清单文件 

    那么、您能解释一下为什么会出现不匹配吗?

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

    根据您在上面提到的 PDK 版本 pdk_01_10_01_06 、我们可以跟踪您是否在使用 https://www.ti.com/tool/download/SDK/03.05.00.00 、但在此 PROCESSOR-SDK-VISION 中、经验证的 ti-cgt-c6000 版本是7.4.2。

    有关所有组件版本-> https://dr-download.ti.com/software-development/software-development-kit-sdk/MD-ALyjKPdidL/03.05.00.00/Processor_SDK_Vision_manifest.html、请参阅随附的清单文件 

    那么、您能解释一下为什么会出现不匹配吗?

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

    您似乎正在与我的同事讨论另一个主题--> https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1428018/tda2pxevm-in-tda2px---dsp1-and-dsp2-core-always-showing-system-stack-usage-above-98

    我要结束本次演示。

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

    Praveen、您好!

    我们没有使用 PDK。

    我们使用 BIOS RTOS 和 XDC 工具。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="564850" url="~/support/processors-group/processors/f/processors-forum/1475680/tda2pxevm-tda2pxevm-in-tda2px---dsp1-and-dsp2-core-always-showing-system-stack-usage-above-98/5689882 #5689882"]

    我们没有使用 PDK。

    我们使用 BIOS RTOS 和 XDC 工具。  

    [报价]

    仍然不清楚您正在使用哪个 TI SDK 来指定 ti-cgt-c6000_8.2.5与 xdctools_3_32_01_22_core 和 BIOS_6_46_06_00搭配使用。 请告诉我们。

    在任何情况下、 __TI_STACK_START、 __TI_STACK_END 和 __TI_STACK_SIZE 都是按此处所述引入的链接器符号: https://downloads.ti.com/docs/esd/SPRU513/symbols-automatically-defined-by-the-linker-stdz0753341.html 

    通常、您可以打开.map 文件并搜索这些文件。

    因此、建议在生成的.map 文件中对其进行格式化、以了解相应的值。

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

    Praveen、您好!

    请告诉我您清楚地需要哪些信息? 我可以给您。

    在我这边、我提供了所有 BIOS 和 XDS 版本信息。

    关于映射文件中的栈信息、请参阅以下信息

    87220148 __TI_STACK_END
    00004000 _TI_STACK_SIZE

    8721c148 _stack

    8721c148 8721c148 00004000 00000000 rw-
    8721c148 8721c148 00004000 00000000 rw-.stack

     

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请告诉我您清楚想要什么信息? 我可以给您。

    您使用的 TI SDK 指定 ti-cgt-c6000_8.2.5与 xdctools_3_32_01_22_core 和 BIOS_6_46_06_00搭配使用、目前尚不清楚。 请告知我们您使用的 TI SDK 作为基础。   

    [报价 userid="564850" url="~/support/processors-group/processors/f/processors-forum/1475680/tda2pxevm-tda2pxevm-in-tda2px---dsp1-and-dsp2-core-always-showing-system-stack-usage-above-98/5693567 #5693567"]

    87220148 __TI_STACK_END
    00004000 _TI_STACK_SIZE

    8721c148 _stack

    8721c148 8721c148 00004000 00000000 rw-
    8721c148 8721c148 00004000 00000000 rw-.stack

    [报价]

    我们认为您已从映射文件中获得了答案。

    谢谢。

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

    您好 Praveen、

    您能解释一下吗

    在所有映射文件中、我获得了以下信息。 在每个映射文件中、我可以清楚地看到堆栈大小为4000、所有内核的起始地址和结束地址之间的差异为4000、但我在用于打印__TI_STACK_SIZE 变量的 DSP1和 DSP2代码中没有得到该值。  

    EVE_1
    805d89f0 _stack
    805dc9f0 __TI_stack_end
    00004000 _TI_STACK_SIZE

    EVE_2
    815d7fd8 _stack
    815dbfd8 __TI_STACK_END
    00004000 _TI_STACK_SIZE

    dsp1
    8721c148 _stack
    87220148 __TI_STACK_END
    00004000 _TI_STACK_SIZE

    dsp2
    8e019f18 _stack
    8e01df18 __TI_STACK_END
    00004000 _TI_STACK_SIZE

    如果我缺少任何信息、请告诉我。

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

    我们编写了以下其中一项 PDK C6x 测试的代码片段、并在电路板上对其进行了测试、因此我们未看到任何问题。

    __extern __FAR__ char _stack[8];
    __extern __FAR__ UInt8 __TI_STACK_SIZE;
    UInt32 stackStart, stackSize, stackEnd;

    stackStart = (UInt32)_stack;
    stackSize = (UInt32)&__TI_STACK_SIZE;
    stackEnd = stackStart + stackSize;

    GT_1trace(BspAppTrace, GT_INFO, "stackStart - 0x%x\r\n", stackStart);
    GT_1trace(BspAppTrace, GT_INFO, "stackSize - 0x%x\r\n", stackSize);
    GT_1trace(BspAppTrace, GT_INFO, "stackEnd - 0x%x\r\n", stackEnd);

    UART 打印文件如下所示:

    此外、我们还验证了连接 CCS:

    下面我们来结束该主题。

    谢谢。

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

    您好 Prveen:

    仅供参考、问题并不存在于所有内核中。

    该问题仅存在于 DSP1和 DSP2内核中。

    如果您看到 DSP1和 DSP2的以下日志、则栈大小和栈起始位置显示相同。

    DSP2 -_TI_STACK_SIZE:0x8e019fb8和 &_stack 0x8e019fb8      --> 不好

    gSystemStackSize:0x8e019fb8                                   -->  不好

    DSP1 -_TI_STACK_SIZE:0x8721c1f0和 &_STACK 0x8721c1f0\r>         --> 不好

    gSystemStackSize:0x8721c1f0                                    -->  不好

    对于 EVE1和 EVE2、栈大小和栈起始值是不同的值

    EVE2 -_TI_STACK_SIZE:0x4000和 &_STACK 0x815d7fd8              -->确定

    gSystemStackSize:0x4000                                             -->确定

    EVE1 -_TI_STACK_SIZE:0x4000 &_STACK 0x805d89f0                 -->确定

    gSystemStackSize:0x4000                                           -->确定

    注意:-您的终端 请检查所有内核、特别是 DSP1和 DSP2的内核。  

    谢谢

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

    我们在 DSP1和 DSP2上测试了上述代码。 查看我的上述声明;我们提到了"PDK C6x 测试"。  

    谢谢。

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

    Praveen、您好!

    感谢您的支持,我们已经解决了核心问题。 现在 DSP1和 DSP2以及其他显示堆栈大小和正确使用情况的所有内核。

    谢谢  

    Pankaj Verma