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.

[参考译文] TDA4AL-Q1:在 POST 过程中定义大阵列时崩溃

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1501231/tda4al-q1-crash-when-define-large-array-in-post-process

器件型号:TDA4AL-Q1

工具/软件:

嗨、我在后处理阶段(DSP2)中声明了以下阵列并尝试将模型的输出存储到其中时遇到了问题—程序崩溃、系统甚至需要完全重新启动才能运行以前工作正常的程序。

这可能是由于内存不足造成的?

#define MAX_LANE_NUM 4

第48章,我的朋友
#define REG_MAT_IDX2 80
浮动 regMat[MAX_LANE_NUM][REG_MAT_IDX1][REG_MAT_IDX2];

第48章,我的朋友
#define MASK_MAT_IDX2 80
浮动 maskMat[MAX_LANE_NUM][MASK_MAT_IDX1][MASK_MAT_IDX2];

此致、

Jiemin

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

    PS:  我要使用的 SDK 版本是 ti-processor-sdk-linux-adas-j721s2-evm-10_01_00_04。

    谢谢!

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

    尊敬的 Jiemin:

    乍一看、这似乎是一个内存问题。 如果您可以共享存储器映射和测试代码、我可以尝试在我这边重现问题

    此致、
    Sivadeep

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

    尊敬的  Sivadeep:

    感谢您的答复!

    我将 存储器映射放在 底部链接

    https://drive.google.com/drive/folders/1S9gi_XdfDZ6D_EzV0QixXM7850hv9Umk?usp=sharing

    我只是修改了vx_draw_box_detections_target.c(tivxKernelDrawBoxDetectionsProcess)中示例代码的后处理部分。 在其中、我声明了两个数组、如下所示:

    #define REG_MAT_IDX1 32
    #define REG_MAT_IDX2 80
    #define MAX_LANE_NUM 4
    浮动 regMat[MAX_LANE_NUM][REG_MAT_IDX1][REG_MAT_IDX2];

    定义 MASK_MAT_IDX1 32
    #define MASK_MAT_IDX2 80
    浮动 maskMat[MAX_LANE_NUM][MASK_MAT_IDX1][MASK_MAT_IDX2];

    问题是当我将模型的输出存储到中时 两者可兼得 在这些数组中、程序将崩溃。 但是、如果我只将输出存储到中 任一种 则可以正常工作。

    此致、

    Jiemin

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

    尊敬的  Jiemin:

    问题是当我将模型的输出存储到中时 两者可兼得 在这些数组中、程序将崩溃。 但是、如果我只将输出存储到中 任一种 数组中、它的工作没有任何问题。

    定义了两个数组时、程序崩溃、如果只定义了一个数组、程序就可以正常工作。 我的理解是否正确?

    我们也在该主题中邀请了视觉应用专家。

    此致、
    Sivadeep

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

    尊敬的  Sivadeep:

    是的、您完全正确。 感谢您的帮助。 我还正在验证存储器映射中是否存在任何错误配置。

    此致、

    Jiemin

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

    尊敬的 Jiemin:

    您能否请在堆内存或任何其他内存段中定义数组并进行相同的检查?  

    此致、
    Sivadeep

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

    尊敬的  Sivadeep:

    我尝试使用 malloc 作为 bellow、map->bboxlHW 无法分配。

    map->classArr    =(float*) malloc (sizeof (float)* map-> size * MAX_class);
    map->bboxXYArr    =(float*) malloc (sizeof (float)* map->size * MAX_BBOXXY);
    map->bboxZ      =(float*) malloc (sizeof (float)* map->size * MAX_BBOXZ);
    map->bboxLHW     =(float*) malloc (sizeof (float)* map->size * MAX_BBOXLHW);
    您能给我一个分配示例吗?
    谢谢!!
    此致、
    Jiemin  
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jiemin:

    您可以使用 tivxMemAlloc (),因为 DSP 运行 freeRTOS malloc ()将不起作用。  

    您可以在其他目标内核源文件中看到实现。 TIVX_MEM_EXTERNAL 标志将在 c66x 的 DDR_LOCAL_HEAP 存储器中  分配、而 TIVX_MEM_EXTERNAL_SCRATCH 标志用于在 c66x 的 DDR_SCRATCH 区域中分配。 (请参阅内存映射以了解这些区域的大小)

    此致、
    Gokul

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

    尊敬的  Gokul:

    我想使用底部内存

    DDR 中共享内存缓冲区的内存[大小512.00 MB ]<=可在 memory_map.h 中找到
    您能告诉我如何 指定这个存储器吗?
    此致、
    Jiemin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jiemin:

    由于假期、我们一半的团队目前已离开办公室。 请预计回复将延迟1~2天。

    感谢您发送编修。我们会重新检视您的建议。

    您能否查看此文档: https://www.ti.com/lit/ab/spradp3/spradp3.pdf

    此致、
    Sivadeep

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

    尊敬的  Sivadeep:

    感谢您的帮助! 它是有效的!

    再次感谢!!

    此致、

    Jiemin

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

    尊敬的 Jiemin:

    感谢您的更新。 如果原始问题已解决、我们可以关闭该主题吗?

    此致、
    Sivadeep