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.

[参考译文] AM5728:将 ov5640 摄像头移植到 TI Linux SDK 9.03。

Guru**** 2568585 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1542118/am5728-porting-ov5640-camera-onto-to-ti-linux-sdk-9-03

器件型号:AM5728


工具/软件:

您好、

我有基于 TI AM5728 EVM 的 (e2e.ti.com/.../am5728-unable-to-get-correct-capture-with-ov5640-green-pink-screen-issue 中提到的相同定制电路板。

我运行的是最新版本  Linux PSDK 9.03  写出来。 我做了与上述文章中描述的相同 DTS 更改。 (请参阅下面的 DTS 更改:-)

clk_ov5640_fixed: clk_ov5640_fixed {
                          compatible = "fixed-clock";
                          #clock-cells = <0>;
                          clock-frequency = <24000000>;
                  };
clk_ov5640: clk_ov5640 {
                    compatible = "gpio-gate-clock";
                    #clock-cells = <0>;
                    clocks = <&clk_ov5640_fixed>;
                    enable-gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>; //[04] changed in VIC2 from ACTIVE_LOW
                };


&vip2 {
    status = "okay";
};

&vin3a {
    status = "okay";

    port {
        vin3a_ep: endpoint {
            remote-endpoint = <&cam>;
            slave-mode;
            bus-width = <8>;
            data-shift = <0>;
            hsync-active = <1>;
            vsync-active = <0>;
            pclk-sample = <0>;
        };
    };
};

&i2c3 {
        status = "okay";
        clock-frequency = <400000>;

        ov5640@3c {
                compatible = "ovti,ov5640";
                reg = <0x3c>;
                status="okay";
                clocks = <&clk_ov5640>;
                clock-names = "xclk";
                powerdown-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;

                port {
                        cam: endpoint {
                                bus-width = <8>;
                                data-shift = <0>;
                                hsync-active = <1>;
                                vsync-active = <0>;
                                pclk-sample = <0>;
                                remote-endpoint = <&vin3a_ep>;
                        };
                };
        };
};

我在内核中启用了 ov5640 驱动程序、我也在处理它的所有依赖项。 我使用的驱动程序代码与中的驱动程序代码相同  Linux 9.03 PSDK 。 驱动程序的路径为:   

/opt/ti-processor-sdk-linux-am57xx-evm-09_03_06_05/board-support/ti-linux-kernel-6.1.119 +gitAUTOINC+e4e8b16e66-ti/drivers/media/i2c/ov5640.c  


但摄像机设备未注册为/dev/video1(捕获设备)。 系统 /dev/video0 。  

我已在每个函数中放入打印件 drivers/media/i2c/ov5640.c  和  /drivers/media/platform/ti/vpe/vip.c  (请参阅下面的 dmesg 日志)

[    0.326049] VM********************* File: drivers/input/keyboard/omap4-keypad.c, Line: 358, Function: omap4_keypad_probe ****************************
[    9.326629] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3850, Function: ov5640_probe ****************************
[    9.362701] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3814, Function: ov5640_get_regulators ****************************
[    9.496124] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3937, Function: vip_probe ****************************
[    9.597930] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3442, Function: ov5640_init_controls ****************************
[    9.660461] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3782, Function: vip_endpoint_scan ****************************
[    9.686187] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 333, Function: vip_init_format_info ****************************
[    9.817169] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3617, Function: get_field ****************************
[    9.884002] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 529, Function: vip_shared_set_clock_enable ****************************
[    9.938079] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 569, Function: vip_top_vpdma_reset ****************************
[   10.002136] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.018829] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.044342] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3867, Function: vip_probe_slice ****************************
[   10.065155] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 540, Function: vip_top_reset ****************************
[   10.087524] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.102722] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.118164] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 629, Function: vip_set_slice_path ****************************
[   10.158843] VM********************* File: drivers/media/i2c/ov5640.c, Line: 3827, Function: ov5640_check_chip_id ****************************
[   10.207580] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.267791] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3867, Function: vip_probe_slice ****************************
[   10.400909] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 540, Function: vip_top_reset ****************************
[   10.490997] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.583160] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.583160] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 629, Function: vip_set_slice_path ****************************
[   10.583160] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 451, Function: insert_field ****************************
[   10.588836] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3937, Function: vip_probe ****************************
[   10.588867] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3782, Function: vip_endpoint_scan ****************************
[   10.604034] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3624, Function: vip_vpdma_fw_cb ****************************
[   10.604064] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3801, Function: vip_probe_complete ****************************
[   10.604064] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************
[   10.604095] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3583, Function: alloc_port ****************************
[   10.604095] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3712, Function: vip_register_subdev_notif ****************************
[   10.604095] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************
[   10.604125] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************
[   10.604125] VM********************* File: drivers/media/platform/ti/vpe/vip.c, Line: 3704, Function: fwnode_graph_get_next_endpoint_by_regs ****************************


什么是我的缺失?  

请帮助解决此问题!

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

    你好、Vishal、

    [引述 userid=“436452" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1542118/am5728-porting-ov5640-camera-onto-to-ti-linux-sdk-9-03/6046417

    我已经告诉过你,我添加了一个 printk 函数在 9.03 和 6.03 SDK 在我之前的答复。

    [/报价]

    我只想查看代码本身。

    我将在 9.03 SDK 中向您发送此输出、因为在 6.03 SDK 中、函数在启动时不会被调用。 尽管我不确定它是否会得到编译。  
    [/报价]

    这是什么意思? 是否未在引导时调用 ov5640 的探测器功能? 它不是作为模块编译的吗?

    此致、
    Jared

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

    你好、Vishal、

    我已经了解了 6.03 驱动程序 (ti-linux-4.19.y)。 只有 3 个 地方发生 i2c_transfe 是在 ov5640_init_slave_id、 ov5640_write_reg 和 ov5640_read_reg 中。  必须在摄像机初始化过程中调用 ov5640_write_reg。

    在 6.03 映像上重建驱动程序后是否重新安装?

    此致、
    Jared

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

    Jared

    [报价 userid=“574088" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1542118/am5728-porting-ov5640-camera-onto-to-ti-linux-sdk-9-03/6048273

    在 6.03 映像上重建驱动程序后是否重新安装?

    [/报价]

    是的、我ov5640.ko使用将新编译的scp内容复制到电路板上并重新启动。 当我打开摄像头馈送时、ov5640_write_reg函数 会被调用—我可以从调试打印中确认这一点。

    但是、在引导期间似乎不会调用该函数。

    这就是我询问您是否需要 6.03 SDK 中修改后的摄像头驱动程序的源代码的原因。   更改后、其初始化流程可能会受到影响。

    - Vishal

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

    你好、Vishal、

    请发送修改后的摄像头驱动程序。

    如果在引导期间未调用该函数、则表示探测器函数未运行。 这怎么可能?

    此致、
    Jared

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

    您好 Jared、  

    我的答复被推迟了。 我又不是很好。

    [报价 userid=“574088" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1542118/am5728-porting-ov5640-camera-onto-to-ti-linux-sdk-9-03/6050335

    如果在引导期间未调用该函数、则表示探测器函数未运行。 这怎么可能?

    [/报价]

    如果探针功能未运行、则摄像头  在 6.03 SDK 中如何正常工作。 我认为 6.03 的初始化流程与 9.03 的流程有所不同。  

    无论如何、PFA 6.03 SDK 的 ov4640.c 文件。

    e2e.ti.com/.../6472.ov5640.c

    您可以从 6.03 SDK 的原始 ov5640.c 驱动程序获取 diff。

     

    - Vishal

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

    您好 Jared、  

    我的答复被推迟了。 我又不是很好。

    [报价 userid=“574088" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1542118/am5728-porting-ov5640-camera-onto-to-ti-linux-sdk-9-03/6050335

    如果在引导期间未调用该函数、则表示探测器函数未运行。 这怎么可能?

    [/报价]

    如果探针功能未运行、则摄像头  在 6.03 SDK 中如何正常工作。 我认为 6.03 的初始化流程与 9.03 的流程有所不同。  

    无论如何、PFA 6.03 SDK 的 ov5640.c 文件。

    e2e.ti.com/.../3247.ov5640.c

    您可以从 6.03 SDK 的原始 ov5640.c 驱动程序获取 diff。

     请注意、上传驱动程序文件后、其名称被修改为 3247.ov5640.c

    - Vishal

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

    你好、Vishal、

    看起来在流开/关功能期间设置了寄存器。

    您能否运行摄像头(并启动流式传输)、然后发送 I2C 写入的 dmesg 日志?

    如果您针对传感器启动和停止流式传输时添加 DEV_INFO、也会很有帮助。  

    此致、
    Jared

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

    Jared

    [报价 userid=“574088" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1542118/am5728-porting-ov5640-camera-onto-to-ti-linux-sdk-9-03/6052871

    看起来在流开/关功能期间设置了寄存器。

    [/报价]

    是的、但您能否弄清楚在引导期间没有设置寄存器的原因? 它是 6.03 SDK 的 ov5640 驱动程序中的默认设计吗? 我问她。

    [报价 userid=“574088" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1542118/am5728-porting-ov5640-camera-onto-to-ti-linux-sdk-9-03/6052871

    您能否运行摄像头(并启动流式传输)、然后发送 I2C 写入的 dmesg 日志?

    [/报价]

    好的、我会发送给您。

    [报价 userid=“574088" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1542118/am5728-porting-ov5640-camera-onto-to-ti-linux-sdk-9-03/6052871

    如果您针对传感器启动和停止流式传输时添加 DEV_INFO、也会很有帮助。  

    [/报价]

    我想这是流启动时的函数。  “你要我帮你! DEV_INFO   它里面的陈述?

    此外、告知要运行的 DEV_INFO 命令的确切语句。  

    static int ov5640_s_stream(struct v4l2_subdev *sd, int enable)
    {
            //printk(KERN_ALERT  "\nCDOT: Inside %s %d \n", __FUNCTION__,__LINE__);
            struct ov5640_dev *sensor = to_ov5640_dev(sd);
            int ret = 0;
    
            mutex_lock(&sensor->lock);
    
            if (sensor->streaming == !enable) {
                    if (enable && sensor->pending_mode_change) {
                            ret = ov5640_set_mode(sensor);
                            if (ret)
                                    goto out;
                    }
    
                    if (enable && sensor->pending_fmt_change) {
                            ret = ov5640_set_framefmt(sensor, &sensor->fmt);
                            if (ret)
                                    goto out;
                            sensor->pending_fmt_change = false;
                    }
    
                    if (sensor->ep.bus_type == V4L2_MBUS_CSI2)
                            ret = ov5640_set_stream_mipi(sensor, enable);
                    else
                            ret = ov5640_set_stream_dvp(sensor, enable);
    
                    if (!ret)
                            sensor->streaming = enable;
    
                    //CDOT - Changes Start 
                    ret = ov5640_load_regs(sensor, &ov5640_mode_init_data);
                    if(sensor->current_mode->hact == 640 && sensor->current_mode->vact == 480)
                    {
                            printk("Resolution set to 640 x 480\n");
                            ret = ov5640_load_regs(sensor, &ov5640_mode_data[OV5640_MODE_VGA_640_480]);
                    }
                    else if(sensor->current_mode->hact == 1280 && sensor->current_mode->vact == 720)
                    {
                            printk("Resolution set to 1280 x 720\n");
                            ret = ov5640_load_regs(sensor, &ov5640_mode_data[OV5640_MODE_720P_1280_720]);
                    }
                    //CDOT - Changes End
                    else if(sensor->current_mode->hact == 1920 && sensor->current_mode->vact == 1080)
                    {
                            printk("Resolution set to 1920 x 1080\n");
                            ret = ov5640_load_regs(sensor, &ov5640_mode_data[OV5640_MODE_1080P_1920_1080]);   //VM_AK Changes
                    }
                    else if(sensor->current_mode->hact == 2592 && sensor->current_mode->vact == 1944)
                            ret = ov5640_load_regs(sensor, &ov5640_mode_data[OV5640_MODE_QSXGA_2592_1944]);   //VM_AK Changes
                    else if(sensor->current_mode->hact == 1024 && sensor->current_mode->vact == 768)
                            ret = ov5640_load_regs(sensor, &ov5640_mode_data[OV5640_MODE_XGA_1024_768]);   //VM_AK Changes
            }
    out:
            mutex_unlock(&sensor->lock);
            return ret;
    }
    

    我看不到任何用于停止流媒体的函数。 请 告知流停止过程中涉及的特定函数的名称以及 EXACT DEV_INFO 命令放入它内部。  

    - Vishal

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

    你好、Vishal、

    [引述 userid=“436452" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1542118/am5728-porting-ov5640-camera-onto-to-ti-linux-sdk-9-03/6053112

    是的、但您能否弄清楚在引导期间没有设置寄存器的原因? 它是 6.03 SDK 的 ov5640 驱动程序中的默认设计吗? 我问她。

    [/报价]

    这只是驱动程序的编写方式。

    [引述 userid=“436452" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1542118/am5728-porting-ov5640-camera-onto-to-ti-linux-sdk-9-03/6053112

    我想这是流启动时的函数。  “你要我帮你! DEV_INFO   它里面的陈述?

    [/报价]

    将 DEV_INFO 保留在 ov5640_write_reg 函数中。 ov5640_write_reg 函数将 由 ov5640_s_stream 调用。

    [引述 userid=“436452" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1542118/am5728-porting-ov5640-camera-onto-to-ti-linux-sdk-9-03/6053112

    我看不到任何用于停止流媒体的函数。 请 告知流停止过程中涉及的特定函数的名称以及 EXACT DEV_INFO 命令放入它内部。  

    [/报价]

     ov5640_s_stream 函数根据使能值启动和停止传感器流式传输。 您只需输入如下内容:

    dev_info(sensor->i2c_client->dev, "stream enable: %d\n", enable);

    解决方案

    mutex_lock(&sensor->lock);

    此致、
    Jared

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

    你好、Vishal、

    感谢您的日志。 如果可能、重新添加 printks/dev_info 以查看在特定函数中发送哪些寄存器会很有帮助。 例如、分辨率寄存器、AWE 寄存器等是什么?

    但现在、以下 2 个寄存器的差异与我有关:

    寄存器 6.03 值 9.03 值 差值
    0x380e 0x3 0x4 总垂直尺寸[15:8]
    0x380f 0xd8 0x38 总垂直尺寸[7:0]

    这可能是造成该差异的原因、但也很难知道当前写入寄存器的时间。 一些寄存器会在日志中写入和覆盖、我不确定原因。

    如果有日志来显示在何时写入的内容、则会更容易。

    数据表: https://cdn.sparkfun.com/datasheets/Sensors/LightImaging/OV5640_datasheet.pdf 

    此致、
    Jared

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

    Jared McArthur ,

    感谢您提供的日志。 如果可能、重新添加 printks/dev_info 以查看在特定函数中发送哪些寄存器会很有帮助。 例如、什么是分辨率寄存器、AWE 寄存器等?

    那个 打印 ks/dev_infos 您指的是什么?  

    我不完全确定放置打印件以获取所需寄存器值的位置。

    它们可能是造成这种差异的原因、但也很难知道当前何时写入寄存器。 一些寄存器在日志中被写入和覆盖、我不确定原因。

    我想您可以更好地了解某些寄存器何时被写入。 如果提前了解整体流程、那么写入和重写这些寄存器背后的原因就会更清晰。

    [报价 userid=“574088" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1542118/am5728-porting-ov5640-camera-onto-to-ti-linux-sdk-9-03/6054964

    如果有日志来显示在何时写入的内容、则会更容易。

    [/报价]

    您能否指导我或自己添加调试打印并在此处共享更新后的文件? 我们就可以使用我们的 I 网络进行虚拟讨论 natural 平台 价值 Microsoft Teams —无论哪一个对您来说更方便。



    - Vishal

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

     Jared McArthur ,  

    好的  第 3 次目标时间早上   在应用补丁后、我将为您提供两个 SDK 的日志。  

    我希望您能 保留您之前建议的现有 dev_info 打印件!!

    对于 9.03、我将为您提供启动日志;对于 6.03、我将在摄像头流式传输后为您提供打印(与我之前提供的相同)。  

    一旦你阅读了这个答复, 请告诉我,如果你需要任何其他的东西,如果不是上面 以粗体显示 !  


    此外,这些打印在新的位置会有什么帮助? 因为您已经 放好了、所以想问这个问题  DEV_INFO 在同一函数中打印在不同的位置。  鉴于我之前已经共享了日志、这些打印件实际上会有什么不同 ?  

    - Vishal

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

    尊敬的 Vishal Maheshwari

    这些修补程序假定驱动程序以前没有应用任何更改。 即增补程序包含以前的更改。

    我希望日志从引导到流再到结束流。 以下全部 4 个步骤:

    1. 探测/初始化驱动程序
    2. 驱动程序开始流式传输
    3. 驱动程序正在流式传输
    4. 驱动程序停止流式传输

    此致、
    Jared

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

     Jared McArthur ,  

    当然、我会在一段时间内提供从引导到流式传输的 dmesg 日志、以便结束两个 SDK 的流。


    但是、在 6.03 SDK 中、您将看到我们 在成功移植 6.03 摄像头驱动程序时放置的所有额外调试打印件。


    我还注意到、如果我删除了与这些打印件相关的 printk 语句、则不会创建/dev/video1。 (我猜是由于打印件或我可能不知道的任何其他逻辑原因导致的延迟被删除。    总之,我不能删除在 6.03 SDK 的相机驱动程序中随时间添加的 printk 语句,以使其正常工作)。

    那么、 对于 6.03 SDK、您能否 发布 我与您分享的 6.03 SDK 摄像头驱动程序的差异? 这将是我更容易修补它!

    否则、我必须手动修补您的更改! (手动修补没有问题,但使用以前的方法会更快。)   

    希望您  只需要我修补当前的 6.03 SDK 摄像头驱动程序(已与您共享)、而不是默认的 6.03 SDK 摄像头驱动程序。

    因为默认摄像头驱动程序无法正常工作。 它只有在我们做了这么多修改之后才起作用。 我们可以在 9.03 相机驱动程序中进行相同的修改,但 9.03 相机驱动程序的结构/源代码 是相当不同的,所以跳过了,你也不建议做同样的.  

    - Vishal

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

    你好 Jared McArthur ,  

    希望您已阅读我的 答复。

    这是一个温柔的提醒、如果您有任何解决问题的见解/建议、请回复。

    - Vishal

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

    Jared McArthur ,

    我有一定的怀疑。  

    运行 gstreamer 命令时、为什么只有 1280x720 分辨率的源打开、而没有任何其他源(如 640x480/1920x1080)?

    也在如下所示的 1280x720 的 gstreamer 命令运行后、我尝试 使用某些寄存器进行播放、以便能够将图像全屏显示:-


    gst-launch-1.0 v4l2src device=/dev/video1 ! video/x-raw,width=1280,height=720 ! videoconvert ! waylandsink


    我设置以下命令来设置 gstreamer 流水线/命令运行时的两个寄存器 (0x380c 和 0x380d)、并获得了以下图像:

    /usr/sbin/i2cset -f -y 2 0x3c 0x38 0x0c 0x06 i
    /usr/sbin/i2cset -f -y 2 0x3c 0x38 0x0d 0x00 i

    我不能再进一步减少了!  

    请帮助我将其全屏显示。 还可以帮助我解决为什么其他解决方案不起作用!

    - Vishal

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

    你好 Vishal Maheshwari ,

    我不知道她在说什么。

    摄像机的计时对于特定分辨率可能不正确。 有关将窗口化寄存器设置为正确值的详细信息、请参阅摄像头数据表的第 4-2 节。

    您必须为不同的窗口设置正确的值:

    假设您没有进行缩放、以下公式应给出相应的值。 该示例假设 X_ADDR_ST 和 X_ADDR_END 保持默认值(整个物理像素大小):

    成正比 数据表中 1280x720 示例
    X_offset ((X_ADDR_END - X_ADDR_ST)- X_OUTPUT_SIZE)/2 672.
    Y_offset ((Y_ADDR_END - Y_ADDR_ST)- Y_OUTPUT_SIZE)/2 622.
    X_OUTPUT_SIZE OUT_WIDTH 1280
    Y_OUTPUT_SIZE OUT_HEIGHT 720

    这些值以十进制(而不是十六进制)表示。

    此致、
    Jared