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.

[参考译文] TDA4VE-Q1:CSIRX 图像分段问题

Guru**** 2465890 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1463808/tda4ve-q1-csirx-image-fragmentation-issue

器件型号:TDA4VE-Q1

工具与软件:

尊敬的专家:

我们的客户发现  TDA4VE 上存在严重的图像碎片问题、如以下视频所示。 您可以帮助检查如何进行调试吗?

e2e.ti.com/.../mmexport1737212085099.mp4

SDK:

TI-PROCESSOR-SDK-RTOS-j721s2-evm-08_06_01_03

摄像机:

4*1920*1536@25fps

问题说明:

1.连接到 CSI-RX 和 TDA4VE 的4个摄像头通过以太网将视频输出到 cookpit。 我们可以在大约5秒内发现严重的图像碎片。

2.我们发现捕获统计数据、CRC/ECC/overflow 在 MCU2_0中保持为0、但帧下降计数持续增加;

3.复员方案统计数字如下:

测试和结果:

1.如果只连接了1台相机,就没有问题;

2.我们试图将捕获节点的缓冲区从4增加到6;帧丢弃计数几乎消失、对此问题有一些改进、但无法完全解决;

按如下所示捕获统计数据:

3. 如果我们在 C7中禁用 BEV fastray 和 infopost、就不会有问题;

4.我们尝试修改 CSIRX 驱动程序配置如下,并将概率从5s/1次降至1min/1次;

初始文本文件

位置

变化

pdk_j721s2_08_06_01_03/packages/ti/drv/csirx/csirx.h

增加 chCfgPrms->rxChParams.addrType = TISCI_MSG_VALUE_RM_UDMAP_CH_ATYPE_NON_相干;

chCfgPrms->rxChParams.busOrderId = 12u;

5.我们尝试按照下面 E2E 链接中的建议修改 CSIRX 驱动程序。 但报告了错误。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1308436/tda4vm-8m-camera-run-report-incomplete-frame-error/4989762?tisearch=e2e-quicksearch&keymatch=UDMA_CH_TYPE_RX_UHC#4989762

初始文本文件

位置

变化

packages/ti/drv/csirx/csirx.h

Csirx_chCfgInit

在函数末尾添加"chCfgPrms->rxChParams.addrType = TISCI_MSG_VALUE_RM_UDMAP_CH_ATYPE_NON_相干;"行。

更改了 以下声明

     UdmaChRxPrms_init (&chCfgPrms->rxChParams、UDMA_CH_TYPE_RX);

   最终目的

     UdmaChRxPrms_init (&chCfgPrms->rxChParams、UDMA_CH_TYPE_RX_UHC);

packages/ti/drv/udma/udma/udma_ch.c src

UdmaChUtcPrms_init

更改了以下声明

      utcPrms->addrType   = TISCI_MSG_VALUE_RM_UDMAP_CH_ATYPE_PHYS;

 最终目的  

      utcPrms->addrType   = TISCI_MSG_VALUE_RM_UDMAP_CH_ATYPE_NON_相干;

//TISCI_MSG_VALUE_RM_UDMAP_CH_ATYPE_PHYS;

packages/ti/drv/csirx/sysirx/sysirx_drvma.c src

CsirxDrv_setChUdmaParams

更改了以下声明  

         ChType = uDMA_CH_TYPE_RX;

 最终目的

         ChType = uDMA_CH_TYPE_RX_UHC;

修改上述内容后、当 MCU2_0启动时、捕获节点报告以下错误。  

关于 udma_ch_type_RX_HC 和 udma_ch_type_RX_UHC 通道分配失败的问题、客户会查看 udma_rmAllocRxHcCh ()和 udma_rmAllocRxUhcCh ()、发现 numRxHcCh 和 numRxUhcCh 为0。

客户跟踪了代码并发现它用于 Udma_rmGetSciclientDefaultBoardCfgRmRange() 从 Sciclient Default BoardCfg 中查询所有资源范围。  如果客户想要使用 RX HC 和 UHC 通道、需要采用哪种配置?

此致、

Zhu Xingyu

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

    尊敬的 Xingyu:

    在 SDK08.06版本中、不支持 TDA4AE/VE 器件上的 QoS 设置。 那么、您可以从下面的链接应用所附的设置并重试吗? 此外、请在 CSIRX.h 头文件中将订单 ID 保持为12。  

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1214683/faq-processor-sdk-j721s2-how-to-enable-qos-for-dss-in-sbl-or-in-spl-boot-flow

    此致、

    Brijesh

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

    您好、Brijesh:

    感谢您的答复。 我们的客户一开始就集成了此 QoS 修补程序。 他们还尝试启用更多的 QoS、但两者都没有改善。

     在 pdk_j721s2_08_06_01_03/packages/ti/drv/csirx/csirx.h 中

    更改(chCfgPrms->rxChParams. busOrderId = 12 u、 chCfgPrms->rxChParams.addrType = TISCI_MSG_VALUE_RM_UDMAP_CH_ATYPE_NON_相干;)

    静态空 J721S2_SetupQoS ()

       setup_navss_nb();

       /*解锁 PDK-8359的方法。

       * setup_main_r5f_QoS ()会导致上的 UDMA DRU 示例崩溃

       * MCU2_0 (具有 SBL UART 引导模式)、在 CSL_REG64_WR (&pRegs->DRUQueues.CFG[QueueID]、regVal)期间;

       *所以注释掉以下内容。 */

       setup_main_r5f_qos ();

       Setup_mcu_r5f_QoS ();

       setup_vpac_qos();

       Setup_dmpac_QoS ();

       Setup_dss_QoS ();

       /* setup_GPU_QoS ();*/

       Setup_encoder_QoS ();

    }

    您可以帮助检查可能的原因吗? 您对测试项目5有什么建议吗? 谢谢

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

    尊敬的 Xingyu:

    我们是否可以读回0x03702010和0x037003010 并确认值分别设置为0x2和0x4?  

    CSIRX 很可能正在检测短/长帧错误。 为了进行确认、我们是否可以在 TI-processor-sdk-rtos-j721s2-evm-08_06_00_11/tiovx/kernels_j7/hwa/capture/capture/vx_capture_target.c 文件中 的 tivxCaptureEquueFrameFromDriver API 中添加以下代码。

    Chid = TIvxCaptureGetNodeChannelNum (
    PRM、
    instIdx、
    fvid2Frame -> chNum);

    F (FVID2_FRAME_STATUS_COMPLETED!= fvid2Frame ->状态)

      vx_print (vx_zone_error、
        "捕获:错误:检测到 Chid%d 的短帧/长帧!!\n"、Chid);
    }

    它本质上意味着 CSIRX 无法足够快地进行写入。 您是否可以尝试将 CSIRX 驱动程序中的 busOrderId 更改为值15?  

    chCfgPrms->rxChParams。 busOrderId = 15 u

    此致、

    Brijesh

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

    您好、Brijesh:

    [报价用户 id="80721" url="~/support/processors-group/processors/f/processors-forum/1463808/tda4ve-q1-csirx-image-fragmentation-issue/5616893 #5616893"]我们能否回读0x0702010和0x037003010 并确认该值分别设置为0x2和0x4?  [报价]

    root@iMOTION:/mnt#./devmem2 0x03702010
    /dev/mem 打开。
    存储器映射在地址0xff83573000。
    在地址0x03702010 (0xff83573010)上读取:0x00000002
    root@iMOTION:/mnt#./devmem2 0x03703010
    /dev/mem 打开。
    存储器映射在地址0xff8c1c7000。
    在地址0x03703010 (0xffffff8c1c7010)处读取:0x00000004

    为了确认、我们能否添加以下代码

    下面是日志。

    [MCU2_0] 25.340497 s:vx_zone_error:[tivxCaptureDequeueFrameFromDriver:889] capture:error:detected for ChId0 (已检测到短帧/长帧)!!!
    [MCU2_0] 25.340577 s:vx_zone_error:[tivxCaptureDequeueFrameFromDriver:889] capture:error:detected for ChId1 (已检测到短帧/长帧)!!!
    [MCU2_0] 25.340640 s:vx_zone_error:[tivxCaptureDeueFrameFromDriver:889] capture:error:detected for ChId2 (已检测到短帧/长帧)!!!
    [MCU2_0] 25.340700 s:vx_zone_error:[tivxCaptureDeueFrameFromDriver:889] capture:error:detected for ChId3 (已检测到短帧/长帧)!!!
    [MCU2_0] 28.036739 s:vx_zone_error:[tivxCaptureDequeueFrameFromDriver:889] capture:error:detected for ChId0!!
    [MCU2_0] 28.036853 s:vx_zone_error:[tivxCaptureDequeueFrameFromDriver:889] capture:error:detected for ChId1 (已检测到短帧/长帧)!!
    [MCU2_0] 28.036919 s:vx_zone_error:[tivxCaptureDequeueFrameFromDriver:889] capture:error:detected for ChId2 (已检测到短帧/长帧)!!
    [MCU2_0] 28.036991 s:vx_zone_error:[tivxCaptureDequeueFrameFromDriver:889] capture:error:detected for ChId3 (已检测到短帧/长帧)!!

    您能否将 CSIRX 驱动程序中的 busOrderId 更改为值15?  [报价]

    客户尝试了不同的 RX 和 TX busOrderId 组合、测试结果如下:

    RX ID Tx ID 问题频率
    15. 8. 1次/分钟
    12. 8. 1次/分钟
    12. 12. 6次/分钟
    8. 8. 30次/分钟
    8. 12.   30次/分钟
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这实质上意味着 CSIRX 无法足够快地写入

    客户发现我们可以在 pdk_j721s2_08_06_01_03/packages/ti/drv/udma/udma/udma_ch.c UdmaChRxPrms_init ()中调整 burstsize、但需要先启用 HC 或 src 通道。

    客户尝试在内核的 UDMA 驱动程序中添加一些打印内容、发现 HC 和 UHC 通道不是0。 但是、当他们尝试将 CSIRX 通道配置为 UDMA_CH_FLAG_HC 或 UDMA_CH_FLAG_UHC 时、UDMA_rmAllocRxHcCh ()将因为 numRxHcCh 而被分配失败。 详细信息可在测试项目5中找到。

    这是否意味着我们需要首先启用 CSIRX UDMA UHC 通道?

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

    尊敬的 Xingyu:

    CSIRX 内部使用 BCDMA 信道、所以我真的很怀疑它是否可以使用 UDMA 的 HC/UHC 信道。  

    由于使用了 CSIRX 的短/长帧错误、 这意味着 CSIRX 无法足够快地写入数据、因此 您会在显示器上看到伪影。  

    我不明白上表中的 TX ID。 您要在此处更改哪个参数?  

    本质上、我们只需要将 rxChPrms.busOrderId 更改为大于10的值。 这应该会有所帮助。  

     系统中运行的所有其他组件是什么? 是否可以在 EVM 上重现此问题?

    此致、

    Brijesh

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

    您好、Brijesh:

    感谢您的答复。

    CSIRX 内部使用 BCDMA 信道、所以我真的怀疑它是否可以使用 UDMA 的 HC/UHC 信道。  [报价]

    BCDMA 有16个正常信道、因此似乎无法使用 HC/UHC;

    [报价 userid="80721" url="~/support/processors-group/processors/f/processors-forum/1463808/tda4ve-q1-csirx-image-fragmentation-issue/5618548 #5618548"]

    我不明白上表中的 TX ID。 您要在此处更改哪个参数?  

    [报价]

    客户尝试在 pdk_j721s2_08_06_01_03/packages/ti/drv/csitx/csitx_drvInit.c Csitx_chCfgInit () src Params.busOrderId 中修改 TX ID

     系统中运行的其它所有组件有哪些?

    客户正在运行一些与 ADAS 相关的功能。 运行的应用程序包括

    1.捕获、LDC/MSC

    2.在 C7x_2上运行的 NV12到张量运算符

    3. BEV 处理分为三个阶段、分别分布在 C7x_1和 C7x_2上。

    是否可以在 EVM 上重现此问题?

    客户已检查此项。 将自己的应用移植到 EVM 上非常困难。  

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

    此外、在 CSIRx 驱动程序中、启用 CSIRX_DRV_ENABLE_DEBUG 后、客户在重现短/长帧错误时观察到一种现象。 当出现错误帧时、当前错误帧与前一帧之间的时间戳差异不是预期的40ms (摄像头帧速率为25fps)。 可能的原因是什么?

    如下图所示、帧状态0x1表示 FVID2_FRAME_STATUS_COMPLETED、帧状态0x4表示 FVID2_FRAME_STATUS_ERROR。 连续四帧的时间戳(TS)分别为61,659,61661699,61729和61779。 错误帧的时间戳差异为61729 - 61699 = 30ms、这小于预期的40ms。

    下面是日志。

    e2e.ti.com/.../mcu20_5F00_csirx_5F00_debug.txt

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

    尊敬的 Xingyu:

     令人惊讶的是 、您会在 30ms 内收到错误帧。 这是不应该发生的。  

    但主要问题是、我们不应该看到这些错误。  

    CSIRX 节点中有一个参数可 一次使用多个像素、您能否尝试更改它? 您能否将  tivx_capture_inst_params_t 结构中的 numPixels 设置为值1、看看它是否有帮助?

    我还在查看其他更改、并查看是否需要其他更改。  

    此致、

    Brijesh

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

    您好、Brijesh:

    感谢您的答复。 客户已尝试更改参数并进行了两次测试。 找不到明显的改进、错误帧仍然存在。

    1. vision_apps/modules/capture/app_capture_module.c src configure_capture_params() add captureObj->params.instCfg[id].numPixels = 1u;
    2. pdk_j721s2_08_06_01_03/packages/ti/drv/csirx/csirx.h csirx_instCfgInit ()
    变化
    modCfgPrms->numPixelsStrm0 =(uint32_t) 0u;
    最终目的
    modCfgPrms->numPixelsStrm0 =(uint32_t) 1u;

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

    尊敬的 Xingyu:

    好的、帧丢弃不是问题、但主要问题是报告短/长帧错误。  

    我想在 CSIRX 驱动程序中再进行一项更改、看看它是否有用。 明天我将分享这些变化。  

    您能否确认 MCU 域中的 OCM 存储器可供 CSIRX 使用? 我的意思是、您使用的是 SBL 还是 BootApp? 它们都使用 OCM 存储器。  

    此致、

    Brijesh

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

    您好、Brijesh。

    我的意思是您使用的是 SBL 还是 BootApp

    客户正在使用 SBL;

    您能否确认 MCU 域中的 OCM 存储器可供 CSIRX 使用?

    客户 OCM 使用如下所示:

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

    尊敬的 Xingyu:

    它们是否也 使用主域 OCM 存储器?

    此致、

    Brijesh  

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

    您好、Brijesh:

    他们是否也 使用主域 OCM 内存?

    我们不确定。 客户检查了 system_memory_map、并列出了与 OCMRAM 和 OCRAM 相关的所有项目。

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

    尊敬的 Xingyu:

    我提出这个问题是因为我看到在 OCM 存储器中分配了段、如"Vector""Common"和"NoCache、所以我想知道是否也使用了主域 OCM 存储器。

    我假设它不是这样、并将使用它来存储 CSIRX 驱动程序的一些内部数据。

    您是否还可以要求确认客户仅使用 CSIRX instance0、而客户正将其用于捕获4通道/摄像机数据? 由于此存储器很小、因此可能不足以容纳所有实例和通道的完整数据。

    此致、

    Brijesh

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

    您好、Brijesh:

    您能否确认客户仅使用 CSIRX instance0并使用该实例捕捉4通道/摄像机数据?

    是、客户使用 CSIRX0采集4个摄像头数据(1920x1536)。  

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

    谢谢兴宇、我会向您分享 SDK08.06上 CSIRX 驱动程序的更改、一两天内即可试用。  

    此致、

    Brijesh

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

    尊敬的 Xingyu:

    您能否将补丁附加到 PDK 驱动程序和 Vision 应用中、并根据更改重新运行用例? 这些改变将 CSIRX 描述符移动到内部存储器。 让我们看看此更改是否有助于解决此问题。  

    /cfs-file/__key/communityserver-discussions-components-files/791/PDK_5F00_Moved_5F00_CSIRX_5F00_Desc_5F00_To_5F00_Internal_5F00_Mem.patch

    /cfs-file/__key/communityserver-discussions-components-files/791/Vision_5F00_Apps_5F00_Moved_5F00_CSIRX_5F00_Desc_5F00_To_5F00_Internal_5F00_Mem.patch

    此致、

    Brijesh

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

    您好、Brijesh:

    感谢您的答复。

    按照提供的补丁、将 csirx desc 相关数据移至 OCRAM 后、测试表明、与映像相关的初始化和流式传输无法正常工作。 客户收集的信息:
    1. app_status_monitor.out 的执行结果。 应用 OCRAM 补丁后没有输出;

    e2e.ti.com/.../app_5F00_status_5F00_monitor_5F00_output_5F00_csirx_5F00_desc.txt

    e2e.ti.com/.../app_5F00_status_5F00_monitor_5F00_output_5F00_original.txt
    2. mcu20引导日志。 应用 OCRAM 补丁后,应用程序在 tiovx/source/framework/vx_graph_verife.c 中执行 vxVerifyGraph ()期间卡在函数 GraphNodeKernelInit ()中,这会阻止摄像头的初始化和流式传输继续进行;

    e2e.ti.com/.../mcu20_5F00_bootlog_5F00_csirx_5F00_desc.txt

    e2e.ti.com/.../mcu20_5F00_bootlog_5F00_original.txt
    vx_app_rtos_linux_mcu2_0.out.map、对应于 mcu20的编译结果。

    e2e.ti.com/.../vx_5F00_app_5F00_rtos_5F00_linux_5F00_mcu2_5F00_0.out.map_2D00_original

    e2e.ti.com/.../vx_5F00_app_5F00_rtos_5F00_linux_5F00_mcu2_5F00_0.out.map_2D00_csirx_5F00_desc

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

    根据 app_status_monitor.out 的结果、mcu20上原始512KB L3存储器中的大约99%似乎仍未使用、初始化期间可用的256KB 可能不足。 然而、csirx 解析需要大约190KB (0x30900)的空间、并且至少需要192KB 的空间分配、因此可用资源有点紧张。

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

    尊敬的 Xingyu:

    是的、它有点紧凑、但仍然合适、对吧? 如果不存在、则会出现编译错误。 由于存在编译错误、 因此它能够充分 存储在存储器中。 但为什么 CSIRX 停止工作? 与此补丁一起对传感器/SERDES 设置进行的任何更改? 我们是否可以使用 CCS 连接到 MCU2_0、并查看初始化期间卡住的地方?  

    此致。

    Brijesh

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

    尊敬的专家:

         是的、内存资源可以满足要求、未发生编译错误、但 MCU2_0卡住了、我们没有找出它。  

         顺便说一句、  传感器/SERDES 设置中的任何更改 都不会与此假象贴片一起发生。
         我们进行了测试、 将 L3_MEM_SIZE 从512KB 更改为256KB (不添加段 csirx_desc_mem)、MCU2_0运行良好。因此 L3_MEM_SIZE 256kb 应该足够了。
         应用 OCRAM 补丁后,  在 tiovx/source/framework/vx_graph_verife.c 中执行 vxVerifyGraph ()期间,应用(在内核中运行)卡在函数 GraphownNodeKernelInit ()中,这会阻止摄像头的初始化和流式传输继续进行。 我们猜 MCU2_0出了问题。  由于我们不太熟悉 CSS 工具、因此我们将对其进行研究并添加更多调试信息。  
          
           

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

    尊敬的专家:
       应用 OCRAM 补丁后、  我们需要更新到 borad 的所有文件都是  vx_app_rtos_linux_mcu2_0.out、不需要任何其他文件?  

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

    尊敬的 Zhao Li:

    这只需要更改 MCU2_0固件、因为此 OCM 存储器未在 MCU2_1或 其他任何地方使用。 您能否共享 MCU2_0的映射文件?  

    此致、

    Brijesh

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

    尊敬的专家:
       这是 应用 OCRAM 补丁后的映射文件:
          /cfs-file/__key/communityserver-discussions-components-files/791/vx_5F00_app_5F00_rtos_5F00_linux_5F00_mcu2_5F00_0.out.map_2D00_csirx_5F00_desc
       这是不含  OCRAM 补丁的映射文件:
         /cfs-file/__key/communityserver-discussions-components-files/791/vx_5F00_app_5F00_rtos_5F00_linux_5F00_mcu2_5F00_0.out.map_2D00_original

    此致、
    Zhao Li

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

    尊敬的专家:
          我使用演示 vx_app_multi_cam.out 重现了卡住的问题。 应用 OCRAM 补丁后、  在 vision_apps/apps/basic_demos/app_multi_cam/main.c       中执行 vxVerify_graph ()期间、应用 vx_app_multi_cam .out 也会卡在函数 app_verifyGraph ()中、下面列出的日志:
          

    root@imotion:/opt/vision_apps# ./run_app_multi_cam.sh
    APP: Init ... !!!
    MEM: Init ... !!!
    MEM: Initialized DMA HEAP (fd=4) !!!
    MEM: Init ... Done !!!
    IPC: Init ... !!!
    IPC: Init ... Done !!!
    REMOTE_SERVICE: Init ... !!!
    REMOTE_SERVICE: Init ... Done !!!
        10.391005 s: GTC Frequency = 200 MHz
    APP: Init ... Done !!!
        10.393389 s:  VX_ZONE_INIT:Enabled
        10.393431 s:  VX_ZONE_ERROR:Enabled
        10.393441 s:  VX_ZONE_WARNING:Enabled
        10.394684 s:  VX_ZONE_INIT:[tivxInitLocal:131] Initialization Done !!!
        10.398269 s:  VX_ZONE_INIT:[tivxHostInitLocal:93] Initialization Done for HOST !!!
        10.574241 s: ISS: Enumerating sensors ... !!!
        10.574801 s: ISS: Enumerating sensors ... found 0 : BL_031_3M_96717_SVM
    1 sensor(s) found
    Supported sensor list:
    a : BL_031_3M_96717_SVM
    Select a sensor above or press '0' to autodetect the sensor
    a
    Sensor selected : BL_031_3M_96717_SVM
    Querying BL_031_3M_96717_SVM
        12.035469 s: ISS: Querying sensor [BL_031_3M_96717_SVM] ... !!!
        12.035739 s: ISS: Querying sensor [BL_031_3M_96717_SVM] ... Done !!!
    LDC Selection Yes(1)/No(0)
    Max number of cameras supported by sensor BL_031_3M_96717_SVM = 4
    Please enter number of cameras to be enabled
    4
    YUV Input selected. VISS, AEWB and Mosaic nodes will be bypassed.
    Creating context done!
    Kernel loading done!
        16.447954 s: ISS: Initializing sensor [BL_031_3M_96717_SVM], doing IM_SENSOR_CMD_PWRON ... !!!
        16.448238 s: ISS: Initializing sensor [BL_031_3M_96717_SVM], doing IM_SENSOR_CMD_CONFIG ... !!!
        17.403376 s: ISS: Initializing sensor [BL_031_3M_96717_SVM] ... Done !!!
    Sensor init done!
    Display init done!
    App Init Done!
    Graph create done!
    Capture graph done!
    App Create Graph Done!


        这将有助于您 在 应用 OCRAM 补丁后重现卡住的问题。

    此致、
    Zhao Li

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

    尊敬的 Zhao Li:

    好的、我先在 EVM 上尝试一下、并向您分享更改。  

    此致、

    Brijesh

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

    尊敬的专家:
         应用 OCRAM 补丁后,MCU2_0  卡在  CSL_udmapCppi5SetDescType(pTrpd, descType)中 ,就在开头  

    CsirxDrv_udmaRxTrpdInit ()、pdk_j721s2_08_06_01_03/packages/ti/drv/csirx/csirx/csirx_drvUdma.c src。

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

    尊敬的 Zhao Li:

    真是 令人惊讶。 您能否检查 pTrpd 地址 并查看它是否指向正确的 OCM 存储器? 此外、您 是否可以从 CCS 存储器窗口查看此区域是否可访问? 很可能应该映射此区域、但如果没有、我们能否将此映射添加到 MPU 中?  

    此致、

    Brijesh

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

    尊敬的专家:
         "您能检查 pTrpd 地址 、看看它是否指向正确的 OCM 存储器吗?您能 从 CCS 内存窗口中检查这个区域是否可访问吗?"
            是、地址在{0x60040000、0x60080000 }范围内、无法读取或写入。
          我尝试了以下补丁、 将存储器地址转换大小更 改为 MAIN_OCRAM_MCU2_0_SIZE、这可以修复 由于  OCRAM 补丁而导致的 MCU2_0卡滞问题。
          

    diff --git a/pdk_j721s2_08_06_01_03/packages/ti/drv/csirx/src/csirx_drvUdma.c b/pdk_j721s2_08_06_01_03/packages/ti/drv/csirx/src/csirx_drvUdma.c
    index 04e281f23..9d53219f2 100755
    --- a/pdk_j721s2_08_06_01_03/packages/ti/drv/csirx/src/csirx_drvUdma.c
    +++ b/pdk_j721s2_08_06_01_03/packages/ti/drv/csirx/src/csirx_drvUdma.c
    @@ -67,7 +67,7 @@
      * UDMA Memories
      */
     static uint8_t gCsirxRingMem[CSIRX_INSTANCE_ID_MAX][CSIRX_NUM_CH][CSIRX_DRV_RING_MEM_SIZE_ALIGN]
    -                            __attribute__((aligned(UDMA_CACHELINE_ALIGNMENT)));
    +                            __attribute__((aligned(UDMA_CACHELINE_ALIGNMENT), section(".csirx_desc_mem") ));
     #if defined (SOC_J721E)
     static uint8_t gCsirxCompRingMem[CSIRX_INSTANCE_ID_MAX][CSIRX_NUM_CH][CSIRX_DRV_RING_MEM_SIZE_ALIGN]
                                 __attribute__((aligned(UDMA_CACHELINE_ALIGNMENT)));
    @@ -76,7 +76,7 @@ static uint8_t gCsirxTdCompRingMem[CSIRX_INSTANCE_ID_MAX][CSIRX_NUM_CH][CSIRX_DR
     #endif
     static uint8_t gCsirxUdmaTprdMem
             [CSIRX_INSTANCE_ID_MAX][CSIRX_NUM_CH][CSIRX_CAPT_QUEUE_DEPTH_PER_CH][CSIRX_DRV_TRPD_SIZE_ALIGN]
    -                            __attribute__((aligned(UDMA_CACHELINE_ALIGNMENT)));
    +                            __attribute__((aligned(UDMA_CACHELINE_ALIGNMENT), section(".csirx_desc_mem") ));
     extern CsirxDrv_CommonObj gCsirxCommonObj;
     
     #if (CSIRX_DRV_ENABLE_DEBUG == 1U)
    @@ -515,6 +515,7 @@ void CsirxDrv_udmaCQEventCb(Udma_EventHandle eventHandle,
         /* Take out completed TRPD from UDMA CQ Ring */
         if(eventType == UDMA_EVENT_TYPE_DMA_COMPLETION)
         {
    +        GT_0trace(CsirxTrace, GT_ERR, "CsirxDrv_udmaCQEventCb receive dma completion event\r\n");
             /* Disable HW interrupts here */
             cookie = HwiP_disable();
             bmObj = &chObj->bufManObj;
    diff --git a/vision_apps/platform/j721s2/rtos/common/app_cfg_mcu2_0.h b/vision_apps/platform/j721s2/rtos/common/app_cfg_mcu2_0.h
    index 78e57f3e2..da2bbef6c 100755
    --- a/vision_apps/platform/j721s2/rtos/common/app_cfg_mcu2_0.h
    +++ b/vision_apps/platform/j721s2/rtos/common/app_cfg_mcu2_0.h
    @@ -65,7 +65,7 @@
     
     #include <app_cfg.h>
     
    -#define L3_MEM_SIZE (MAIN_OCRAM_MCU2_0_SIZE)
    +#define L3_MEM_SIZE (MAIN_OCRAM_MCU2_0_SIZE - 256*1024)
     
     #define DDR_HEAP_MEM_SIZE               (DDR_MCU2_0_LOCAL_HEAP_SIZE)
     
    diff --git a/vision_apps/platform/j721s2/rtos/common/app_init.c b/vision_apps/platform/j721s2/rtos/common/app_init.c
    index e826195d2..8d6ebab59 100755
    --- a/vision_apps/platform/j721s2/rtos/common/app_init.c
    +++ b/vision_apps/platform/j721s2/rtos/common/app_init.c
    @@ -423,7 +423,7 @@ int32_t appInit()
         #if defined(CPU_mcu2_0) || defined(CPU_mcu2_1)
         #ifdef L3_MEM_SIZE
     
    -    mem_rat_prm.size        = L3_MEM_SIZE;
    +    mem_rat_prm.size        = MAIN_OCRAM_MCU2_0_SIZE;
     
         #if defined(CPU_mcu2_0)
         mem_rat_prm.baseAddress       = MAIN_OCRAM_MCU2_0_ADDR;
    diff --git a/vision_apps/platform/j721s2/rtos/mcu2_0/j721s2_linker_freertos.cmd b/vision_apps/platform/j721s2/rtos/mcu2_0/j721s2_linker_freertos.cmd
    index 678d54895..c3c5302aa 100644
    --- a/vision_apps/platform/j721s2/rtos/mcu2_0/j721s2_linker_freertos.cmd
    +++ b/vision_apps/platform/j721s2/rtos/mcu2_0/j721s2_linker_freertos.cmd
    @@ -79,6 +79,7 @@ SECTIONS
         .bss:app_log_mem        (NOLOAD) : {} > APP_LOG_MEM
         .bss:tiovx_obj_desc_mem (NOLOAD) : {} > TIOVX_OBJ_DESC_MEM
         .bss:ipc_vring_mem      (NOLOAD) : {} > IPC_VRING_MEM
    +    .csirx_desc_mem         (NOLOAD) : {} > MAIN_OCRAM_MCU2_0
     
         .irqStack   : {. = . + __IRQ_STACK_SIZE;} align(4)      > DDR_MCU2_0  (HIGH)
         RUN_START(__IRQ_STACK_START)

         出现了一个新问题、 在运行 vxGraphParameterEnqueueReadyRef  4次后、demo vx_app_multi_cam.out 卡在 vxGraphParameterDequeueDoneRef ()中。 我 在 CsiDrv_udmaCQEventCb ( ) pdk_j721s2_08_06_01_03/packages/ti/drv/crxx/crxx_dma_debug_c 中添加 src 调试" GT_0trace (CsirxTrace、GT_ERR、"CsirxDrv_udmaCQEventCb receive。 DMA 完成事件\r\n");"

    此致、
    Zhao Li

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

    尊敬的 Zhao Li:

    是的、需要映射它、由于它是映射的、我们需要稍微不同地执行它。 当它被映射时、 只有 MCU2_0可以使用此映射地址、但 对于 DMA 引擎、我们需要使用物理地址、因此该更改需要在驱动程序中进行。  

    当描述符提交到 Ring 并且对通道使用 Ring 时、这两个位置都必须是实际的物理地址。 您是否可以尝试在 CSIRX 驱动程序中进行这些更改、看看是否有帮助?  

    此致、

    Brijesh

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

    尊敬的专家:  
       过去几天、我们尝试了几种方式、例如在 Linux 内核中的 arch/arm64/boot/dts/iMOTION_D4/K3-j721s2-rtos-memory-map.dtsi 中添加存储器映射。但不能使 MCU2_0和 DMA 引擎都工作文件、
       您能否帮助共享完整的更改(包括以前的 OCRAM 补丁?)


    此致、
    Zhao Li

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

    尊敬的 Zhao Li:

    当然、让我在 EVM 上尝试该操作并提供准确的补丁。  

    此致、

    Brijesh