主题中讨论的其他器件: TFP410、 SN65DSI86、AM68、AM68A 、 TDA4VM、AM69
工具与软件:
我在运行 Linux SDK 09.02.00.05 (www.ti.com/.../09.02.00.05) 、并且我开发了适用于 ar0823摄像头传感器的驱动程序。 我在 J16和 J17上的 SK-AM68开发套件上连接了摄像头。 大约70%的时间都能正常工作。 我已经注意到、在下电上电或重启之后、使用 v4l2-ctl 时、J17上的摄像头有时会出现捕获问题。
我已经把我的驱动程序列入黑名单`/etc/modprobe.d/blacklist.conf `,这样我就可以通过`modprobe`手动启动。 驱动程序和两个摄像头实例在我的设备树中定义。 为了启动、我执行以下操作:
modprobe ar0823
# configure /dev/media0 for the J16 instance
media-ctl -d /dev/media0 --set-v4l2 "'cdns_csi2rx.4504000.csi-bridge':0[fmt:SGRBG12_1X12/3840x2168 field:none colorspace:srgb]"media-ctl -d /dev/media0 --set-v4l2 "'cdns_csi2rx.4504000.csi-bridge':1[fmt:SGRBG12_1X12/3840x2168 field:none colorspace:srgb]"
# configure /dev/media1 for the J17 instance
media-ctl -d /dev/media1 --set-v4l2 "'cdns_csi2rx.4514000.csi-bridge':0[fmt:SGRBG12_1X12/3840x2168 field:none colorspace:srgb]"media-ctl -d /dev/media1 --set-v4l2 "'cdns_csi2rx.4514000.csi-bridge':1[fmt:SGRBG12_1X12/3840x2168 field:none colorspace:srgb]"
v4l2-ctl -d /dev/video2 --set-fmt-video=width=3840,height=2168,pixelformat=BA12 --stream-mmap --stream-count=1 --stream-to=/dev/null # capture a single frame from the J16 camera as a sanity check
v4l2-ctl -d /dev/video10 --set-fmt-video=width=3840,height=2168,pixelformat=BA12 --stream-mmap --stream-count=1 --stream-to=/dev/null # capture a single frame from the J17 camera as a sanity check
J16实例 可以完美运行。 J17实例在大约70%的时间内正常运行。 当`失败时、` v4l2-ctl 命令会返回
VIDIOC_STREAMON returned -1 (Invalid argument)
此外、当`d出现上述错误时、` mesg μ s 会报告此情况:
[ 32.731201] ------------[ cut here ]------------[ 32.735824] WARNING: CPU: 0 PID: 1295 at drivers/media/common/videobuf2/videobuf2-core.c:1627 vb2_start_streaming+0xe0/0x15c [videobuf2_common][ 32.748687] Modules linked in: ar0823 xhci_plat_hcd pci_endpoint_test rpmsg_ctrl panel_edp rpmsg_char cdns_csi2rx v4l2_fwnode omap_rng cdns3 cdns_usb_common overlay crct10dif_ce ti_tfp410 display_connector phy_can_transceiver cfg80211 bluetooth ecdh_generic ecc rfkill ti_sn65dsi86 drm_display_helper ti_k3_r5_remoteproc drm_dp_aux_bus k3_j72xx_bandgap at24 wave5 v4l2_mem2mem j721e_csi2rx videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 tidss v4l2_async videobuf2_common cdns_dsi drm_dma_helper ti_k3_dsp_remoteproc virtio_rpmsg_bus rpmsg_ns drm_kms_helper pvrsrvkm(O) ti_k3_common syscopyarea sysfillrect m_can_platform videodev sysimgblt fb_sys_fops sa2ul pci_j721e_host m_can cdns_dphy_rx pci_j721e mc pcie_cadence_host cdns_dphy can_dev pcie_cadence cdns3_ti pwm_tiehrpwm rti_wdt optee_rng rng_core cryptodev(O) fuse drm drm_panel_orientation_quirks ipv6[ 32.824120] CPU: 0 PID: 1295 Comm: v4l2-ctl Tainted: G O 6.1.80-ti-g2e423244f8c0 #1[ 32.833145] Hardware name: Texas Instruments AM68 SK (DT)[ 32.838528] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)[ 32.845472] pc : vb2_start_streaming+0xe0/0x15c [videobuf2_common][ 32.851644] lr : vb2_start_streaming+0x68/0x15c [videobuf2_common][ 32.857812] sp : ffff80000b08bb60[ 32.861111] x29: ffff80000b08bb60 x28: ffff0008310a0a00 x27: ffff0008311c14b8[ 32.868230] x26: 0000000000000000 x25: 0000000040045612 x24: 0000000000000000[ 32.875348] x23: ffff80000b08bcc8 x22: ffff00082ea7a800 x21: ffff0008311c1438[ 32.882466] x20: ffff0008311c1260 x19: 00000000ffffffea x18: 0000000000000000[ 32.889584] x17: 0000000000000000 x16: 0000000000000000 x15: 0000fffffe2a73d0[ 32.896701] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000[ 32.903819] x11: 0000000000000000 x10: 0000000000000000 x9 : 0000000000000000[ 32.910936] x8 : 0000000000000000 x7 : 0000000000000005 x6 : 0000000000000012[ 32.918054] x5 : 0000000000000000 x4 : 0000000000000001 x3 : ffff00082cd089c0[ 32.925171] x2 : 0000000000000000 x1 : ffff800001033000 x0 : 0000000000000004[ 32.932289] Call trace:[ 32.934724] vb2_start_streaming+0xe0/0x15c [videobuf2_common][ 32.940546] vb2_core_streamon+0x90/0x190 [videobuf2_common][ 32.946196] vb2_ioctl_streamon+0x5c/0xb0 [videobuf2_v4l2][ 32.951674] v4l_streamon+0x24/0x30 [videodev][ 32.956134] __video_do_ioctl+0x18c/0x3dc [videodev][ 32.961106] video_usercopy+0x21c/0x6d0 [videodev][ 32.965905] video_ioctl2+0x18/0x30 [videodev][ 32.970355] v4l2_ioctl+0x40/0x60 [videodev][ 32.974631] __arm64_sys_ioctl+0xa8/0xf0[ 32.978553] invoke_syscall+0x48/0x114[ 32.982293] el0_svc_common.constprop.0+0xd4/0xfc[ 32.986984] do_el0_svc+0x20/0x30[ 32.990288] el0_svc+0x28/0xa0[ 32.993334] el0t_64_sync_handler+0xbc/0x140[ 32.997592] el0t_64_sync+0x18c/0x190[ 33.001242] ---[ end trace 0000000000000000 ]---
需要重新引导(有时需要多次重新引导)才能解决此问题。 如果 J17 在重新启动后正常工作、则它将继续运行完美。 似乎重新启动或关机后再开机偶尔会使事情处于不良状态。
有一次、我在 J16和 J17上配置了两个 IMX219摄像头、可以调用类似的行为。 我要将该配置设置备份并确认确实如此。
有什么想法可能会导致这种情况发生?