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:adv7180的 yavta 测试会中断内核

Guru**** 2583445 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/594422/linux-am5728-yavta-test-of-adv7180-breaks-the-kernel

器件型号:AM5728

工具/软件:Linux

我正在尝试将 adv7180视频解码器与 vip2绑定。
我在 DTS 文件中添加了以下字符串:

i2c4{(&I)
时钟频率=<400000>;
pinctrl-names ="default";
pinctrl-0 =<&i2c4_PINS_DEFAULT>;
状态="正常";

/*从地址为0x20的 Adv 视频解码器*/
 VIDEO 解码器:adv7180@20{
 兼容="Adi、adv7180";
 reg =<0x20>;
 端口{
  VIDEO 输入:端点{
   远程端点=<&V vin3a>;
   pclk-sample =<0>;
   CHANNELS =<0>;
  };
 };
};

vin3a{(&V)
 状态="正常";
 端点{
  从模式;
  远程端点=<&VIDEO_INPUT>;
 };
};

adv7180注册为 video1:

[0.564240] Linux 视频捕捉接口:v2.00
[10.444046] VPE 489d0000.VPE:器件注册为/dev/video0
[10.053927] adv7180 3-0020:找到的芯片@ 0x20 (OMAP I2C 适配器)
[10.696094] vip2-s0:端口 A:使用 subdev adv7180 3-0020进行捕获
[10.706569] vip2-s0:器件注册为 video1

但是、当我尝试启动 yavta 测试时、例如"yavta -C10 -fYUYV -Fvout_test.yUV -s720x576 /dev/video1 " 、内核会中断日志、如下所示。
如何解决此问题?

e2e.ti.com/.../5164.vip_2D00_log.txt

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

    引导后,VIP 日志似乎可以进行初始化:
    [0.000000]内核命令行:console=ttyO2,115200n8 root=/dev/nfs rootfstype=NFS IP=DHCP nfsroot=192.168.0.111:/srv/ti-rootfs ti_vip.debug=3
    [10.782603] vip2-s0:vIP_set_slice_path:
    [10.782616] vip2-s0:vip_set_slice_path:data_path_select (0000010C):80008000
    [10.783134] vip2-s1:vip_set_slice_path:
    [10.783144] vip2-s1:vip_set_slice_path:data_path_select (00000110):80008000
    [10.783179] VIP 48990000.VIP:正在加载固件 vpdma-1b8.bin
    [10.807345] VIP 48990000.VIP:已加载 VPDMA 固件
    [10.814179] vip2-s0:无法获取下一个端点:loop:1.
    [10.814189] vip2-s0:为1个子设备注册异步通知器
    [10.814197] vip2-s0:vIP_async_bound
    [10.814202] vip2-s0:端口 A:使用 subdev adv7180 3-0020进行捕获
    [10.838398] vip2-s0:subdev adv7180 3-0020:代码:2006 idx:0
    [10.838408] vip2-s0:匹配的 fourcc:NV12:代码:2006 idx:0
    [10.838414] vip2-s0:匹配的 fourcc:UYVY:代码:2006 idx:1.
    [10.838422] vip2-s0:匹配的 fourcc:YUYV:代码:2006 idx:2.
    [10.838426] vip2-s0:匹配的 fourcc:VYUY:代码:2006 idx:3.
    [10.838431] vip2-s0:匹配的 fourcc:YVYU:代码:2006 idx:4.
    [10.838438] vip2-s0:匹配的 fourcc:RGB3:代码:2006 idx:5
    [10.838442] vip2-s0:匹配的 fourcc:RGB4:代码:2006 idx:6.
    [10.838448] vip2-s0:匹配的 fourcc:BGR3:代码:2006 idx:7.
    [10.838454] vip2-s0:匹配的 fourcc:BGR4:代码:2006 idx:8.
    [10.846012] vip2-s0:器件注册为 video1
    [10.859931] vip2-s0:vIP_async_complete
    [13.429777] vip2-s0:vIP_open
    [13.429796] vip2-s0:vip_init_port:g_MBUS_fmt subdev MBUS_code:2006 fourcc:NV12大小:720x576

    有人能帮我吗、请

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我假设这一问题是 VIP 驱动程序在将视频数据读取到缓冲区时引起的,因为我可以为 adv7180设置 v4l2-CtrlS,并且 i2c 转储确认这一控制设置正确,因此 adv7180驱动程序工作正常。
    出现此问题的原因可能是 adv7180输出上的数据格式不匹配以及 VIP 等待输入。
    我知道、以下 DTS 说明足以为子设备注册 bt.656输出数据:
    VIDEO 解码器:adv7180@20{
    兼容="Adi、adv7180";
    reg =<0x20>;
    端口{
    VIDEO 输入:端点{
    远程端点=<&V vin3a>;
    };
    };
    };
    但没有任何采用此配置的/dev/video 捕获器件。

    如果我补充
    pclk-sample =<0>;
    CHANNELS =<0>;
    然后出现/dev/video1、但据我所知、VIP 驱动程序会在没有嵌入式同步的情况下等待数据、这可能是出现此问题的原因。
    我是对的吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我建议您查看以下指南:
    您可以查看 video-interfaces.txt:/board-support/linux。。/Documentation/devicetree/bindings/media
    processors.wiki.ti.com/.../Processor_SDK_VIP_Driver

    processors.wiki.ti.com/.../Linux_Core_VIP_User's_Guide

    此外、请检查此主题:
    e2e.ti.com/.../524349

    希望这对您有所帮助。

    BR
    玛格丽塔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经看过所有这些内容、没有得到明确的答案、因为 ti.wiki 指南不提供有关配置视频接口的各种参数的任何信息、在上面的 e2e 线程 Abhishek Kumar47中、他只说他解决了这个问题、但不要与他的解决方案分享。