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.

[参考译文] Linux/AM5728:自定义摄像头连接的 GStreamer 问题

Guru**** 2589265 points
Other Parts Discussed in Thread: TLV320AIC3104

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/586619/linux-am5728-gstreamer-issues-with-custom-camera-connection

器件型号:AM5728
主题中讨论的其他器件:TLV320AIC3104

工具/软件:Linux

大家好、  

我们使用的是 AM572x GP EVM 的摄像头模块和处理器模块。

processors.wiki.ti.com/.../AM572x_GP_EVM_Hardware_Setup

我们开发了定制摄像头连接板、通过该板、我们可以将摄像头模块与处理器模块连接起来、而无需使用 LCD 模块。

要检查引脚多路复用器和器件树更改、请 访问 https://e2e.ti.com/support/arm/sitara_arm/f/791/t/584261 

摄像头模块成功连接、 并成功加载 mt9t11x 驱动程序...

[8.120157] mt9t11x 4-003c:输入时钟频率:32000000
[8.126192] mt9t11x 4-003c:像素时钟频率:96000000
[8.155980] mt9t11x 4-003c:GPIO 查找以进行使用者复位
[8.155991] mt911x 4-003c:使用器件树进行 GPIO 查找
[8.15606060] of _get_named_gpio_FLAGS:已解析节点'/ocp/i2c@4807c000/mt9t11x@3C[0]的'reset-GPIO'属性-状态(0)
[8.156078] mt9t11x 4-003c:GPIO 查找用于消费类断电
[8.156084] mt9t11x 4-003c:使用器件树进行 GPIO 查找
[8.156103] of _get_named_gpio_FLAGS:解析了节点'/ocp/i2c@4807c000/mt9t11x@3C[0]的'POWERDOS-GPIO'属性-状态(0)
[8.156115] mt9t11x 4-003c:用于消费类示波器的 GPIO 查找
[8.156120] mt9t11x 4-003c:使用器件树进行 GPIO 查找
[8.156136] of _get_named_gpio_FLAGS:解析了节点'/ocp/i2c@4807c000/mt9t11x@3C[0]的'oscen-GPIO'属性-状态(0)
[8.156149] mt9t11x 4-003c:消费类 bufen 的 GPIO 查找
[8.156154] mt9t11x 4-003c:使用器件树进行 GPIO 查找
[8.156170] of _get_named_gpio_FLAGS:解析了节点'/ocp/i2c@4807c000/mt9t11x@3C[0]的'bufen-GPIO'属性-状态(0)
[8.156181] mt9t11x 4-003c:这里是 Pallab。 尽情享受吧
[8.181634] of _get_named_gpiod_flags:无法解析节点'/ocp/i2c@48070000/tlv320aic3104@18[0]的'GPIO-reset'属性
[8.181786] AIC_DVDD_FIXED:由 VDD_3V3供电
[8.228153] mt9t11x 4-003c:mt9t111芯片 ID 2680
[8.236862] mt9t11x 4-003c:已注册 mt9t11x 传感器驱动程序!!

[11.216514] VIP 48990000.VIP:正在加载固件 vpdma-1b8.bin
[11.237694] VIP 48990000.VIP:已加载 VPDMA 固件
[11.242818] vip2-s0:端口 A:使用 subdev mt9t11x 进行捕获
[11.267939] vip2-s0:器件注册为 video1

此外、i2cdetect 还显示 i2c 线路上存在摄像头传感器  

root@am57xx-EVM:~# i2cdetect -r 4.
警告! 该程序会使您的 I2C 总线混淆、导致数据丢失和更糟糕的情况!
我将使用读取字节命令探测文件/dev/i2c-4。
我将探测地址范围0x03-0x77。
继续? [y/n] y
0 1 2 3 4 5 6 7 8 9 A b c d e f
00:------------ ------------ ------
10:------------ ------------ ------------ --
20:------------ ------------ ------------ --
30:------------ ------------ ---- UU ------
40:------------ ------------ ------------ --
50:---------- ------------ ------------ --
60:------------ ------------ ------------ --
70:------------ ------

但是、只要我想使用摄像头并启动任何 gstreamer 流水线、设备就会挂起、下面的消息就会出现在 dmesg 中

[549.385245] OMAP_i2c 4807c000。i2c:控制器超时


[549.40527]------ [在此处剪切]-----
[549.409922]警告:CPU:1 PID:1148 at drivers/media/v4l2-core/video/buf2-core.c:1315 vb2_start_stream+0xe0/0x15c ()
[549.420824]模块链接于: bc_example (O) usbhid rpmsg_RPC rpmsg_proto rpmsg_pru xhci_plat_hcd xhci_hcd usbcore CBC drbg xfrm_user xfrm4_tunnel pc3 udc_core ipcomp xfrm_ipcomp vtio_stabti_bbus 命令 xfrm_rmc_sbot_cr_a1_sbot_pr_a1_unic vap_a2_pru_a2_pru_pru_a2_pru_pru_pru_pru_a2_rk_pru_pru_pru_pru_pru_a1_a2_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_ap_ap_ap_ap_ap_ap_ap_pru_pru_pru_ap_ap_pru_ap_ap_pru_ap_pru_ap_ap_pru_a1 TI_csc_vpdma extcon_Palmas OMA_DES RTC_OMAP extcon OMAP-rng RTC_Palmas snd_soc_tlv320aic3x mt9t11x rng_core debugproc_kmodule (O) OMAP-remoteproc remotio virstire_ring memo_fq_cdel uio (drom_odr)(drom_drgc)(drom_remotio)
[549.491147] CPU:1 PID:1148 Comm:v4l2src0:src 被污染:G O 4.4.3.32-gadde2ca9f8 #1
[549.499882]硬件名称:通用 DRA74X (平展器件树)
[549.505998]回溯:
[549.508473][ ](dump_backtrace)从[ ](show_stack+0x18/0x1c)
[549.516073] r7:c04aa82c r6:600e0013 r5:00000000 r4:c0952dcc
[549.521798][ ](show_stack)从[ ](dump_stack+0x8c/0xa0)
[5495229057][ ](dump_stack)从[ ](warn_slESpath_common+0x88/b8)
[549.537180] r7:c04aa82c R6:00000523 R5:00000009 R4:00000000
[549.542900][ ](warn_slowpath_common)、来自[ ](WARN_RASPEK_NULL_0x24/0x2C)
[549.551721] R8:c096dc14 r7:ffffff92 R6:ec709c68 R5:ec709ebc R4:ec709dc4
[549.558495][ ](warn_slowpath_null)、来自[ ](vb2_start_stream+0xe0/0x15c)
[549.567322][ ](vb2_start_streaming),来自[ ](vb2_core_streamon + 0x114/0x160)
[549.576142] r7:c0496edc r6:ed5c6c00 r5:ed9b8d80 r4:ec709c68
[549581862][ ](vb2_core_streamon)、来自[ ](vb2_streamon/0x38/0x58)
[549.589897] R5:ed9b8d80 R4:00000001
[549.593505][ ](vb2_streamon)从[ ](vb2_ioctl_streamon/0x44/0x48)
[549.601632][ ](vb2_ioctl_streamon)、从[ ](V4L_streamon/0x24/0x28)
[549.609754] R5:40045612 R4:c04ae2a8
[549.613361][ ](V4L_streamon)、来自[ ](_VIDEO_DO _ioctl+0x2c0/0x334)
[549.621484] R5:40045612 R4:00000001
[549625091][ ](__VIDEO_DO _ioctl)从[ ](VIDEO_userccopy+0x1d4/0x4c4)
[549.633387] R10:00000001 R9:00148014 R8:d1c03e30 r7:00000000 R6:00000004 R5:00000004
[549.641289] R4:40045612
[549.643840][ ](视频_usercopy)、来自[ ](VIDEO_ioctl2+0x18/0x1c)
[549.651614] R10:00000000 R9:d1c02000 R8:ed73a6cc r7:00148014 R6:40045612 R5:ed9b8d80
[549.659514] R4:ed5c6c00
[549.662074][ ](video_ioctl2)、来自[ ](v4l2_ioctl+0xa8/0xe0)
[549.669506][ ](v4l2_ioctl)从[ ](do_vfs_ioctl+0x3f0/0x614)
[549.677104] R9:d1c02000 R8:00148014 r7:0000000a R6:ed9b8d80 R5:ed4b6988 R4:00148014
[549.684924][ ](do _vfs_ioctl)、从[ ](sys_ioctl+0x3c/0x64)
[549.692262] R10:00000000 R9:d1c02000 R8:00148014 r7:40045612 R6:ed9b8d80 R5:0000000a
[549.700163] R4:ed9b8d81
[549.702715][ ](sys_ioctl)从[ ](RET_FAST_SYSCALL+0x0/0x34)
[549.710315] R9:d1c02000 R8:c000fbc4 r7:00000036 R6:b6b003c8 R5:b53120c8 R4:00000000
[549.718307]

--[结束线迹4c286026f3a769d2 ]---

如果有人能建议一些指针,它会非常有帮助!!

附加的问题日志:- e2e.ti.com/.../4747.log2.txt

此致

Pallab Sarkar

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    为了进一步确认我的引脚复用设置是否正确、我在下面的实验中做了一些。

    1.已在我的引脚多路复用 i2c5线路上连接 IMU (MPU9150)。 它运行良好、我获得了传感器数据、因此 i2c5引脚多路复用似乎正常。

    2.接下来,我验证了摄像头正常工作所需的 GPIO 引脚复用。 更改在 mux_data.h 和 am57xx-beagle-x15-common.dtsi (在 e2e.ti.com/.../584261中共享)中完成。

    更改看起来不错,但当我检查这些 GPIO 引脚的引脚复用状态时

    root@am57xx-EVM:/sys/kernel/debug/pinctrl/4a003400.pinmux cat pinmux-pins
    引脚12 (4a003430.0):(MUX 未声明)(GPIO 未声明)
    引脚13 (4a003434.0):(MUX 未声明)(GPIO 未声明)
    引脚14 (4a003438.0):(MUX 未声明)(GPIO 未声明)
    引脚15 (4a00343c.0):(MUX 未声明)(GPIO 未声明)
    这是否可以成为关注点????

    此外、为了确保不会出现 gstreamer 等问题、我还尝试使用 dmabuftest 命令
    processors.wiki.ti.com/.../DRA7xx_GLSDK_Software_Developers_Guide

    但系统在这之后挂起。 无日志/错误!

    请分享我是否遗漏了任何内容、或者进一步的指导将会有所帮助

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

    您的问题开始于:
    [549.385245] OMAP_i2c 4807c000。i2c:控制器超时
    您是否正在使用未修改的 EVM 和摄像头模块?
    是否可以使用逻辑分析仪或示波器探测摄像机和处理器之间的 i2c 通信?

    您是否正在使用航迹同步?
    以下内容适用于我的 GP EVM:
    root@am57xx-EVM:~# gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=4! '视频/x-raw、\
    > format=(string) YUY2、width=(int) 1280、height=(int) 720'! VPE num-input-buffers=8! 排队! 陆上接收机

    我正在使用:
    root@am57xx-EVM:~# uname -a
    Linux am57xx-EVM 4.4.4.5.19-gdb0b54cdad #1 SMP 挤占监视器10月3日18:04:11 EDT 2016 armv7l GNU/Linux

    SDK03.01官方文件

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

    Yordan、您好!

    我们检查了摄像头模块中的振荡器输出、奇怪的是它显示的正弦波频率非常低。 我想它必须是频率约为 MHz 的方波。 这是晶体振荡器的问题吗?

    我们还假设必须从 BeagleBoard 输出以下 GPIO 以控制摄像头模块-

    GPIO5_10 (McASP1_axr8)

    GPIO5_12 (McASP1_axr10)

    GPIO4_17 (McASP1_axr11)

    GPIO5_11 (McASP1_axr9)

    但在 mux_data.h 文件中、这些引脚被声明为输入引脚。 我们是否应该通过声明为输出来纠正这些引脚?

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

    您好!

    [引用]我们检查了摄像头模块中的振荡器输出、奇怪的是它显示的正弦波频率非常低[/引用]

    这很奇怪。 我的 EVM 上的测量结果显示了来自振荡器的32MHz 方波信号(摄像头板上的 Y1)、因此您可能会遇到硬件问题、请参阅下图:  

      

    很抱歉、我的示波器上没有 USB。  

    您是否使用自定义摄像头板? 至于 GPIO 设置、您应该参考预编译设置(如果您使用的是参考硬件)。  

    此致、  
    Yordan

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

    感谢您的宝贵意见、

    我们在发现 CAM HW 似乎可以正常工作时再次确认、
    我已启用其他日志,可以从驱动程序中看到以下重要的调试消息。

    [232.591210] VB2:vb2_verify_memory_type:不支持当前设置的 USERPTR
    [232.600496] VB2:vb2_core_reqbufs:call_qop (ec7cb468、queue_setup)
    [232.606711] VB2:__vb2_buf_mem_alloc:call_memop (ec7cb468、0、alloc)
    [232.614373] VB2:__vb2_queue_alloc:call_vb_qop (ec7cb468、0、buf_init)(nop)
    [232.621502] VB2:__vb2_buf_mem_alloc:call_memop (ec7cb468、1、alloc)
    [232.629341] VB2:__vb2_queue_alloc:call_vb_qop (ec7cb468、1、buf_init)(nop)
    [232.636423] VB2:__vb2_buf_mem_alloc:call_memop (ec7cb468、2、alloc)
    [232.644169] VB2:__vb2_queue_alloc:call_vb_qop (ec7cb468、2、buf_init)(nop)
    [232.651320] VB2:__setup_offsets:缓冲区0,平面0偏移量0x00000000
    [232.657836] VB2:__setup_offset:缓冲区1,平面0偏移量0x001c2000
    [232.664358] VB2:__setup_offsets:缓冲区2,平面0偏移量0x00384000
    [232.670902] VB2:__Vb2_queue_alloc:分配了3个缓冲区,每个缓冲区1个平面
    [232.677643] VB2:vb2_buffer_in_use:call_memop (ec7cb468、0、num_users)
    [232.684221] VB2:vb2_buffer_in_use:call_memop (ec7cb468、1、num_users)
    [232.690857] VB2:vb2_buffer_in_use:call_memop (ec7cb468、2、num_users)
    [232.697439] VB2:vb2_core_expbuf:call_memop (ec7cb468、0、get_dabuf)
    [232.703933] VB2:vb2_core_expbuf:缓冲区0、平面0导出为20个描述符
    [232.711237] VB2:__qbuf_mmap:call_vb_qop (ec7cb468、0、buf_prepare)
    [232.717533] VB2:vb2_buffer_in_use:call_memop (ec7cb468、0、num_users)
    [232.724109] VB2:Vb2_core_qbuf:缓冲器0的 qbuf 成功
    [232.729739] VB2:vb2_core_expbuf:call_memop (ec7cb468、1、get_dabuf)
    [232.736223] VB2:vb2_core_expbuf:缓冲区1、平面0导出为22描述符
    [232.743457] VB2:__qbuf_mmap:call_vb_qop (ec7cb468、1、buf_prepare)
    [232.749802] VB2:vb2_buffer_in_use:call_memop (ec7cb468、1、num_users)
    [232.756385] VB2:Vb2_core_qbuf:缓冲器1的 qbuf 成功
    [232.761937] VB2:vb2_core_expbuf:call_memop (ec7cb468、2、get_dabuf)
    [232.768465] VB2:vb2_core_expbuf:缓冲区2、平面0导出为24个描述符
    [232.775666] VB2:__qbuf_mmap:call_vb_qop (ec7cb468、2、buf_prepare)
    [232.782025] VB2:vb2_buffer_in_use:call_memop (ec7cb468、2、num_users)
    [232.78878] VB2:Vb2_core_qbuf:缓冲区2的 qbuf 成功
    [232.794127] VB2:__enqueue_in_driver:call_memop (ec7cb468、0、prepare)
    [232.800752] VB2:__enqueue_in_driver:call_vb_qop (ec7cb468、0、buf_queue)
    [232.807568] VB2:__enqueue_in_driver:call_memop (ec7cb468、1、prepare)
    [232.814158] VB2:__enqueue_in_driver:call_vb_qop (ec7cb468、1、buf_queue)
    [232.821044] vB2:__enqueue_in_driver:call_memop (ec7cb468、2、prepare)
    [232.827598] VB2:__enqueue_in_driver:call_vb_qop (ec7cb468、2、buf_queue)
    [232.834437] VB2:vb2_start_streaming: call_qop (ec7cb468、start_streaming)
    [232.841607] mt9t11x 4-003c:mt9t11x_s_stream:enable:1.
    [232.846855] mt9t11x 4-003c:_mt9t11x_set_power:on:1.
    [232.878057] mt9t11x 4-003c:mt9t11x_init_camera_optimized:
    [232.883595] mt9t11x 4-003c:mt9t11x_reset:
    [232.904380] mt9t11x 4-003c:mt9t11x_set_pll_dividers:
    [232.938482] VB2:vb2_start_streaming:驱动程序拒绝开始流式传输
    [232.945136]------ [在此处剪切]-----
    [232.951448]警告:CPU:0 PID:1110 at drivers/media/v4l2-core/video/buf2-core.c:1315 vb2_start_stream+0xec/0x1c4 ()



    有一点我注意到,即使我在 gstreamer 命令中使用"IO-mode=4",即 DMA,为什么我可以看到下面的错误

    [232.591210] VB2:vb2_verify_memory_type:不支持当前设置的 USERPTR

    我是否遗漏了一些东西?
    附加详细日志 e2e.ti.com/.../8080.dmesg.txt

    此致
    Pallab Sarkar