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/DS90UB964-Q1:在Linux中需要用户机架帧捕获;内核空间设备驱动程序问题

Guru**** 1510070 points
Other Parts Discussed in Thread: DS90UB964-Q1, ALP
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/596754/linux-ds90ub964-q1-wanting-userpsace-frame-capture-in-linux-kernelspace-device-driver-issue

部件号:DS90UB964-Q1
主题中讨论的其他部件: Alp.

工具/软件:Linux

您好,

我相信我 需要有关DS90UB964-Q1四路摄像机集线器CSI-2输出的Linux内核驱动程序的帮助。 如果有任何适用于DS90UB964-Q1的Linux设备驱动程序,或有关编写驱动程序的文档, 请直接告诉我,因为我找不到它们。

不过,我的问题可能在其他地方。 因此,我将提供有关我的项目的更多信息:

项目规格:

在 嵌入式设备上使用多个摄像机输入(本例中为4个)运行机器视觉软件(基于OpenCV)

(一旦/dev/video*( 在Linux中)中提供了摄像机设备的句柄,OpenCV即可访问摄像机)

因此,目的是通过/dev/video*使摄像机设备可用。

材料:

嵌入式设备:

NVIDIA TX1.

操作系统:

Linux4Tegra (L4T)版本24.2 ................................................................1.

四路摄像头集线器:
DS90UB964-Q1

摄像机:
4x OV1.0635万串行同轴电缆

连接:


DS90UB964-Q1 (以下称为UB964)通过(TX1) J21 GPIO扩展接头 (用于I2C连接) 和(TX1) J22摄像头连接器(用于MIPI-CSI2连接)连接到Nvidia TX1。 OV1.0635万通过同轴电缆连接到UB964板。 在TX1 (L4T R 24.2 .1)上的Linux操作系统上完成开发。

测试的方法:


首先,通过使用Linux 程序i2c-tools检查用户空间中的可见性,确认了i2c连接。 以下i2cdetect命令:

i2cdetect-y-r 0 

已显示位于(7位) i2c地址0x30的UB964。 这在Windows中进行了双重检查,通过使用(总相) Aardvark I2C至USB连接器和德州仪器(TI)模拟启动板程序连接到I2C。 使用这两种方法显示的寄存器将根据DS90UB964-Q1四路FPD链路III解串器集线器pdf中的预期默认值进行检查。 在电气方面,检查了示波器上的连接(连接到UB964上的SDA和SCL, 如有必要,可以找到所用的引脚编号),并向此i2c地址写入命令,从而在 示波器上产生预期的时钟和数据波形。

由此看来,我们通过TX1上的Linux连接到UB964 I2C总线。 接下来,我们要 测试与OV1.0635万 (通过UB964连接)的连接。 因此,下一步是将UB964设置 为将OV1.0635万作为I2C 总线的别名(在TX1用户空间中可见)。 DS90UB96X-Q1EVM用户指南pdf (第22页)显示了用于锁定端口,在I2C上设置CSI参数和别名接收器的ALP python示例脚本。 此示例在Linux中使用相同的寄存器和值,但使用由i2cset命令组成的shell脚本进行设置,例如:

i2cset -y -r 0 0x30 0x10 0x81 

此i2cset命令示例引用地址0x30 (UB964),寄存器0x10,值0x81上的i2cbus 0 (在TX1上)。 如有必要,可以提供此处使用的所有i2cset命令的副本。

运行这些命令(作为shell脚本(.sh))后,在i2c总线上找到了两个额外的i2c地址(每个连接的摄像机)。  这两个新的i2c地址都是通过i2ctet命令(读取i2cbus地址的寄存器)“ping”的,两个新地址(每个摄像机)中的一个在示波器上显示预期数据/时钟响应(连接 到OV1.0635万串行同轴电缆上的SDA/SCL线路) 而另一个寄存器在示波器上没有显示任何内容。

此时,我相信我的下一步是开始研究如何从UB964到TX1获取CSI 2数据。 根据我在Nvidia论坛和Linux上读到的内容,我认为我需要获得设备驱动程序,以便TX1内核空间可以识别 设备树中的i2c连接(通过其在TX1 i2c总线上的i2c地址), 并且(使用dtsi文件中的"compatible"参数)将此文件链接到包含 传入帧信息(高度,宽度,时钟等)的驱动程序文件(.c), *应该*允许 Video4Linux2 (V4L2)框架在/dev/video*下创建一个节点,通过该节点可以读取摄像机帧。 我对这一过程的假设可能不正确。

我尝试生成设备驱动程序文件并使用这些设备驱动程序重新编译Linux内核,但没有结果。 我不确定  TI处理器SDK (http://www.ti.com/lsds/ti/tools-software/processor_sw.page?DCMP=epd-gen&HQS=processorsdk )中有关UB964的任何内容是否有用。

我还计划在Nvidia TX1论坛上发帖,因为我相信我可能需要TI和Nvidia帮助才能使此主板正常工作。

感谢您的抽出时间,

此致,

彼得。

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

    您好,Peter,

    我们不提供用于FPD-Link III SerDes的Linux设备驱动程序。  Python脚本示例在DS90UB964-Q1数据表和用户指南中给出。  有关传入帧的信息(行数和行长度)在寄存器0x73-0x76中报告。

    此致,

    达沃尔