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.

DM385 HDVPSS VOUT1口上后端HDMI在LCD pinmux配置后出现显示异常问题

Expert 1041 points


hi all.

目前遇到一个比较奇怪的现象,我们参考DM8127给的RDK,基本导通了dm385上ISP采集到显示的过程。

在显示时输出HDMI和LCD,我们硬件上LCD输出设计在了VOUT1上,目前遇到比较奇怪的现象是:

一旦我们配置VOUT1与LCD相关的pinmux后,HDMI这一路显示就出现随机的红色横向条纹,而且位置大小都是随机的。一旦LCD的pinmux不开启的,HDMI这一路显示出来的图像是完全正确的。

下面是DM385中我们参考rdk给出的配置,这个pinmux配置一开显示就出现异常红色条纹,而且这个一配置后偶然还会导致我们的ISP工作出现异常一直输出黑色图像。但只要单独只输出HDMI时,整个采集显示工作都是正常的,所以不知道这个pinmux到底影响了那些模块或者耦合到了什么,请指教下,谢谢。

REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0AB4) = 0x00040000+0x1; /* vout1_fid_mux1 */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B2C) = 0x00040000+0x1; /* vout1_clk */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B30) = 0x00040000+0x1; /* vout1_hsync */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B34) = 0x00040000+0x1; /* vout1_vsync */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B38) = 0x00040000+0x1; /* vout1_avid */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B98) = 0x00060000+0x1; /* vout1_b_cb_c[2] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B3C) = 0x00040000+0x1; /* vout1_b_cb_c[3] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B40) = 0x00040000+0x1; /* vout1_b_cb_c[4] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B44) = 0x00040000+0x1; /* vout1_b_cb_c[5] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B48) = 0x00040000+0x1; /* vout1_b_cb_c[6] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B4C) = 0x00040000+0x1; /* vout1_b_cb_c[7] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B50) = 0x00040000+0x1; /* vout1_b_cb_c[8] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B54) = 0x00040000+0x1; /* vout1_b_cb_c[9] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B8C) = 0x00060000+0x1; /* vout1_g_y_yc[2] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B58) = 0x00040000+0x1; /* vout1_g_y_yc[3] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B5C) = 0x00040000+0x1; /* vout1_g_y_yc[4] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B60) = 0x00040000+0x1; /* vout1_g_y_yc[5] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B64) = 0x00040000+0x1; /* vout1_g_y_yc[6] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B68) = 0x00040000+0x1; /* vout1_g_y_yc[7] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B6C) = 0x00040000+0x1; /* vout1_g_y_yc[8] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B70) = 0x00040000+0x1; /* vout1_g_y_yc[9] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B94) = 0x00040000+0x1; /* vout1_r_cr[2] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B90) = 0x00060000+0x1; /* vout1_r_cr[3] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B74) = 0x00040000+0x1; /* vout1_r_cr[4] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B78) = 0x00040000+0x1; /* vout1_r_cr[5] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B7C) = 0x00040000+0x1; /* vout1_r_cr[6] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B80) = 0x00040000+0x1; /* vout1_r_cr[7] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B84) = 0x00040000+0x1; /* vout1_r_cr[8] */
REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B88) = 0x00040000+0x1; /* vout1_r_cr[9] */

  • 出现的红色条纹都是随机,感觉是影响到了前段ISP的采集输出过程。

  • 还要目前DM385专用的SDK开发包吗?因为都是参考dm8127的rdk来搭建平台的,所以不知道是否哪里有区别和纰漏

  • 你好;

           是使用 IPNC RDK 来进行开发,这个没有问题的;

           你现在显示的图像是通过 isp 采集的图像显示的吗? 如果是通过网络解码显示的视频,视频播放是否是正常的呢 ?

  • 你好,我们是通过ISP采集sensor后来显示的,目前这个现象的问题很是奇怪。我们是从RDK里面剥离出来了一些处理逻辑,然后说实话在DM8127上之前验证的时候是不存在这种类型的问题的,所以不知道区别在哪儿才导致这个问题的出现

  • 现在HDMI这路配置的74.25M的时钟,只有LCD RGB888相关的pinmux打开的话,这个现象就出现了。

  • 如果是 采集图像编码后导出到电脑上面也是这样红色的吗?

  • 你好,我们的整个过程可以描述为只对采集的图像做一些类似对比度增强算法后,直接输出显示,不涉及到所谓的编码。

    我们怀疑可能是ISS和VPSS出现了耦合,而耦合点只能是对DDR的访问了,但问题又说回来只是开启一个VOUT1的pinmux来输出RGB888,怎么还会对前段ISS造成影响呢???

    此外,我们实验过,如果只是配置RGB888小部分的pinmux有效的话, HDMI这一路显示就完全不会出现红色条纹干扰,所以问题回到就是pinmux难道还会反馈回VPSS来影响他的一些输出和性能???

    对于这个内部VOU1的DV0口和pinmux之间是怎么连接的,我们也说不上来到底为何!

    #if 1
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0AB4) = 0x00040000+0x1; /* vout1_fid_mux1 */
    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B2C) = 0x00040000+0x1; /* vout1_clk */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B30) = 0x00040000+0x1; /* vout1_hsync */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B34) = 0x00040000+0x1; /* vout1_vsync */
    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B38) = 0x00040000+0x1; /* vout1_avid */

    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0AB0) = 0x00060000; /* vout1_b_cb_c[0] */
    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0AAC) = 0x00040000; /* vout1_b_cb_c[1] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B98) = 0x00060000+0x1; /* vout1_b_cb_c[2] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B3C) = 0x00040000+0x1; /* vout1_b_cb_c[3] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B40) = 0x00040000+0x1; /* vout1_b_cb_c[4] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B44) = 0x00040000+0x1; /* vout1_b_cb_c[5] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B48) = 0x00040000+0x1; /* vout1_b_cb_c[6] */
    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B4C) = 0x00040000+0x1; /* vout1_b_cb_c[7] */
    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B50) = 0x00040000+0x1; /* vout1_b_cb_c[8] */
    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B54) = 0x00040000+0x1; /* vout1_b_cb_c[9] */

    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0AA0) = 0x00040000; /* vout1_g_y_yc[0] */
    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0A9C) = 0x00060000; /* vout1_g_y_yc[1] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B8C) = 0x00060000+0x1; /* vout1_g_y_yc[2] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B58) = 0x00040000+0x1; /* vout1_g_y_yc[3] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B5C) = 0x00040000+0x1; /* vout1_g_y_yc[4] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B60) = 0x00040000+0x1; /* vout1_g_y_yc[5] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B64) = 0x00040000+0x1; /* vout1_g_y_yc[6] */
    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B68) = 0x00040000+0x1; /* vout1_g_y_yc[7] */
    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B6C) = 0x00040000+0x1; /* vout1_g_y_yc[8] */
    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B70) = 0x00040000+0x1; /* vout1_g_y_yc[9] */

    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0AA8) = 0x00040000; /* vout1_r_cr[0] */
    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0AA4) = 0x00040000; /* vout1_r_cr[1] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B94) = 0x00040000+0x1; /* vout1_r_cr[2] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B90) = 0x00060000+0x1; /* vout1_r_cr[3] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B74) = 0x00040000+0x1; /* vout1_r_cr[4] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B78) = 0x00040000+0x1; /* vout1_r_cr[5] */
    // REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B7C) = 0x00040000+0x1; /* vout1_r_cr[6] */
    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B80) = 0x00040000+0x1; /* vout1_r_cr[7] */
    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B84) = 0x00040000+0x1; /* vout1_r_cr[8] */
    REG32_DK(CSL_TI814x_CTRL_MODULE_BASE_DK + 0x0B88) = 0x00040000+0x1; /* vout1_r_cr[9] */
    #endif