Thread:TDA4VM 中讨论的其他器件
工具/软件:
您好、TI 专家、
SDK 版本:10.1
我们编写了一个演示:(1920x1280@30fps UYVY) Capture -> LDC -> msc -> msc -> csitx (1280x720@30fps RGB888)、这个简单的演示可以运行一整晚(超过12小时)
但是、当我们所有的业务功能应用程序都在运行时、在捕获节点的出队功能将被卡住的可能性相对较高。
BRS
注意
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.
工具/软件:
您好、TI 专家、
SDK 版本:10.1
我们编写了一个演示:(1920x1280@30fps UYVY) Capture -> LDC -> msc -> msc -> csitx (1280x720@30fps RGB888)、这个简单的演示可以运行一整晚(超过12小时)
但是、当我们所有的业务功能应用程序都在运行时、在捕获节点的出队功能将被卡住的可能性相对较高。
BRS
注意
您好、Brijesh、
请参阅以下图片。
BRS
您好、xie JC、
但捕获完全没有错误。 在所有打印中、我看不到捕获中出现任何错误、没有 CRC/ECC/溢出错误。 唯一的变化是丢弃的帧递增、它不断丢弃帧、很可能是输出缓冲区耗尽、这意味着
- 链中的一个组件不工作,因此整个图形停止运行,但捕获仍将运行 并丢弃帧。
-或者节点没有将缓冲区归还 给驱动程序,因此它会丢弃所有缓冲区,然后当节点调用出队时,它将挂起。
是否将捕获输出用作图形参数? 然后、您是否与其他一些组件共享了捕获输出? 您能否确保此组件正确地将缓冲区返回给应用程序?
此致、
Brijesh
您好、Brijesh、
我们进行了以下测试:
1.摄像头应用:RM LDC 节点和共享地址部分、使用摄像头缓冲区的其他应用更改为读取 pic、而不是使用摄像头缓冲区。 ---测试整晚是否未出现问题(相机图形帧速率可达30fps 并保持稳定)
2.摄像头应用程序:保持 LDC 和捕捉节点与 rm 共享地址部分, 其他使用相机缓冲器的应用程序更改为读取 pic 而不是使用相机缓冲器——很容易重现问题
BRS
是否可以删除 capture output 作为图形参数、只需使用 LDC output 作为图形参数、看看它是否有帮助? [/报价]您好、Brijesh、
我们将尝试此操作
是否可以共享这部分代码用于审核? [/报价]您好、Brijesh、
当然、您可以 私下向我发送您的电子邮件地址吗?
BRS
您好、xie JC、
这是正确的地址、根据文件 source/drivers/hw_include/j722s/cslr_soc_baseaddress.h、macro、CSL_VPAC0_IVAC0_TOP_0_CFG_SLV_HTS_VBUSP_BASE、设置为 0x2c010000、因此应该可以访问。
您是否尝试在引导 R5F 后读取该寄存器?
此外、是否可以通过 R5F 检查此寄存器值、或许可以使用 JTAG+CCS?
此致、
Brijesh
您好、Brijesh、
当块 occrur 时、我读取0xf008000 - 0xf00802C
您好、Brijesh、
no,它的另一种方式,由于 LDC 被 卡住,捕获最终将耗尽缓冲区并开始丢弃所有帧,这就是为什么要对捕获进行出队操作也会被卡住的原因。 [/报价]很有道理。
0xF0020000 offset您是指这个寄存器吗? #define CSL_VPAC0_PAR_VPAC_LDC0_S_VBUSP_MMR_VBUSP_BASE (0xf020000UL)
[/quote]
您好、Brijesh、
您能否从0xF0020000偏移转储128个寄存器? 这包含 LDC 配置、让我们看看此配置是否设置为正确的值。 [/报价]我在发生 Issuse 时读取这些寄存器
您好、Brijesh、
寄存器中的0xBB392000。 此内存是否可访问?
这是可访问存储器、您可以参阅我们现在使用的系统映射 html 文件
对于输出地址、我们可能需要打印输出地址、因为它是在 DMA 引擎中进行编程的。
是否可以通过调试会话来检查所有 LDC 参数?
[/报价]您好、Brijesh、
如何执行此步骤?
BRS
您好、xie JC、
我们可以在 LDC 节点中打印输出地址。 我们可以 在 imaging\kernels\hwa\vpac_LDC\vx_vpac_drc_target.c 文件中的 tivxVpacLdcProcess API 中放置打印件、如下所示。
for (out_cnt = 0u; out_cnt < ldc_obj->num_output; out_cnt ++) { frm = &ldc_obj->outFrm[out_cnt]; for (plane_cnt = 0u; plane_cnt < TIVX_IMAGE_MAX_PLANES; plane_cnt ++) { frm->addr[plane_cnt] = tivxMemShared2PhysPtr( out_frm_desc[out_cnt]->mem_ptr[plane_cnt].shared_ptr, (int32_t)out_frm_desc[out_cnt]->mem_ptr[plane_cnt].mem_heap_region); } #if defined(VPAC3) || defined(VPAC3L) if(out_cnt == 0) { if(out_frm_desc[0] != NULL && out_frm_desc[1] != NULL && NULL != in_frm_desc[1]) { if((((vx_df_image)VX_DF_IMAGE_U8 == out_frm_desc[0]->format && (vx_df_image)TIVX_DF_IMAGE_P12 == out_frm_desc[1]->format) || ((vx_df_image)TIVX_DF_IMAGE_P12 == out_frm_desc[0]->format && (vx_df_image)VX_DF_IMAGE_U8 == out_frm_desc[1]->format) || ((vx_df_image)TIVX_DF_IMAGE_P12 ==out_frm_desc[0]->format && (vx_df_image)VX_DF_IMAGE_U16 == out_frm_desc[1]->format) || ((vx_df_image)VX_DF_IMAGE_U16 == out_frm_desc[0]->format && (vx_df_image)TIVX_DF_IMAGE_P12 == out_frm_desc[1]->format) || ((vx_df_image)VX_DF_IMAGE_U16 == out_frm_desc[0]->format && (vx_df_image)VX_DF_IMAGE_U8 == out_frm_desc[1]->format) || ((vx_df_image)VX_DF_IMAGE_U8 == out_frm_desc[0]->format && (vx_df_image)VX_DF_IMAGE_U16 == out_frm_desc[1]->format) || ((vx_df_image)TIVX_DF_IMAGE_P12 == out_frm_desc[0]->format && (vx_df_image)TIVX_DF_IMAGE_P12 == out_frm_desc[1]->format) || ((vx_df_image)VX_DF_IMAGE_U8 == out_frm_desc[0]->format && (vx_df_image)VX_DF_IMAGE_U8 == out_frm_desc[1]->format) || ((vx_df_image)VX_DF_IMAGE_U16 == out_frm_desc[0]->format && (vx_df_image)VX_DF_IMAGE_U16 == out_frm_desc[1]->format))) { frm->addr[0] = tivxMemShared2PhysPtr( out_frm_desc[0]->mem_ptr[0].shared_ptr, (int32_t)out_frm_desc[0]->mem_ptr[0].mem_heap_region); frm->addr[1] = tivxMemShared2PhysPtr( out_frm_desc[1]->mem_ptr[0].shared_ptr, (int32_t)out_frm_desc[1]->mem_ptr[0].mem_heap_region); } } } else { if(out_frm_desc[2] != NULL && out_frm_desc[3] != NULL && NULL != in_frm_desc[1]) { if((((vx_df_image)VX_DF_IMAGE_U8 == out_frm_desc[2]->format && (vx_df_image)TIVX_DF_IMAGE_P12 == out_frm_desc[3]->format) || ((vx_df_image)TIVX_DF_IMAGE_P12 == out_frm_desc[2]->format && (vx_df_image)VX_DF_IMAGE_U8 == out_frm_desc[3]->format) || ((vx_df_image)TIVX_DF_IMAGE_P12 ==out_frm_desc[2]->format && (vx_df_image)VX_DF_IMAGE_U16 == out_frm_desc[3]->format) || ((vx_df_image)VX_DF_IMAGE_U16 == out_frm_desc[2]->format && (vx_df_image)TIVX_DF_IMAGE_P12 == out_frm_desc[3]->format) || ((vx_df_image)VX_DF_IMAGE_U16 == out_frm_desc[2]->format && (vx_df_image)VX_DF_IMAGE_U8 == out_frm_desc[3]->format) || ((vx_df_image)VX_DF_IMAGE_U8 == out_frm_desc[2]->format && (vx_df_image)VX_DF_IMAGE_U16 == out_frm_desc[3]->format) || ((vx_df_image)TIVX_DF_IMAGE_P12 == out_frm_desc[2]->format && (vx_df_image)TIVX_DF_IMAGE_P12 == out_frm_desc[3]->format) || ((vx_df_image)VX_DF_IMAGE_U8 == out_frm_desc[2]->format && (vx_df_image)VX_DF_IMAGE_U8 == out_frm_desc[3]->format) || ((vx_df_image)VX_DF_IMAGE_U16 == out_frm_desc[2]->format && (vx_df_image)VX_DF_IMAGE_U16 == out_frm_desc[3]->format))) { frm->addr[0] = tivxMemShared2PhysPtr( out_frm_desc[2]->mem_ptr[0].shared_ptr, (int32_t)out_frm_desc[2]->mem_ptr[0].mem_heap_region); frm->addr[1] = tivxMemShared2PhysPtr( out_frm_desc[3]->mem_ptr[0].shared_ptr, (int32_t)out_frm_desc[3]->mem_ptr[0].mem_heap_region); } } } #endif VX_PRINT(VX_ZONE_ERROR, "LDC Output Address 0x%x 0x%x\n", frm->addr[0], frm->addr[1]); outFrmList->numFrames ++; }
此致、
Brijesh
您好、Brijesh、
LDC 输出地址打印如下:
您好、xie JC、
在打印日志中、我看到 LDC 获得的最后一个输出缓冲区地址为 0xbf082000、并且此地址 之前已经使用过、因此很可能已经可以访问。
[MCU2_0] 157.326102 s: vx_zone_error:[tivxVpacLdcProcess:543] LDC 输出地址0xbf082000 0x0
是否对 LDC 使用了正确的输出图像? 因为色度的输出地址为0x0。
此外、 是否将 LDC 输出用作图形参数?
此致、
Brijesh
您好、Brijesh、
您是否为 LDC 使用了正确的输出映像? 因为色度的输出地址为0x0
如何知道详细信息是否正确? 您能帮助检查我们之前发送给您的代码吗?
您是否也在使用 LDC 输出作为图形参数?
是的、因为我们需要共享 LDC 缓冲器
您好、Brijesh、
您是否为 LDC 使用了正确的输出映像? 因为色度的输出地址为0x0。 [/报价]在哪里控制色度?
那么、您能否检查并确认是否使用 NV12作为 LDC 的输出格式? [/报价]您好、Brijesh、
是的、我们使用 NV12作为 LDC 的输出格式
您好、Brijesh、
那么在下面的语句中打印 ie 时是否出现错误? [/报价]编号
重现日志:
e2e.ti.com/.../ldc_5F00_block_5F00_reproduce.txt
vx_target_ldc.c