7.10. mgb4 驱动程序¶
7.10.1. sysfs 接口¶
mgb4 驱动程序提供一个 sysfs 接口,用于配置视频流相关参数(其中一些参数必须在打开 v4l2 设备之前正确设置)并获取视频设备/流状态。
有两种类型的参数 - 全局/PCI 卡相关参数,位于 /sys/class/video4linux/videoX/device
下,以及模块特定参数,位于 /sys/class/video4linux/videoX
下。
7.10.1.1. 全局 (PCI 卡) 参数¶
- module_type (R)
模块类型。
0 - 无模块1 - FPDL32 - GMSL- module_version (R)
模块版本号。如果模块缺失,则为零。
- fw_type (R)
固件类型。
1 - FPDL32 - GMSL- fw_version (R)
固件版本号。
- serial_number (R)
卡序列号。格式为
PRODUCT-REVISION-SERIES-SERIAL
其中每个组件都是一个 8 位数字。
7.10.1.2. 通用 FPDL3/GMSL 输入参数¶
- input_id (R)
输入编号 ID,从零开始。
- oldi_lane_width (RW)
解串器输出通道数。
0 - 单通道1 - 双通道(默认)- color_mapping (RW)
信号中传入的位到像素颜色位的映射。
0 - OLDI/JEIDA1 - SPWG/VESA(默认)- link_status (R)
视频链路状态。如果链路已锁定,则芯片已正确连接并以相同的速度和协议进行通信。链路可以在没有活动视频流的情况下锁定。
值为 0 等同于 V4L2 VIDIOC_ENUMINPUT 状态位的 V4L2_IN_ST_NO_SYNC 标志。
0 - 未锁定1 - 已锁定- stream_status (R)
视频流状态。如果链路已锁定、输入像素时钟正在运行且 DE 信号正在移动,则会检测到流。
值为 0 等同于 V4L2 VIDIOC_ENUMINPUT 状态位的 V4L2_IN_ST_NO_SIGNAL 标志。
0 - 未检测到1 - 已检测到- video_width (R)
视频流宽度。这是硬件检测到的实际宽度。
该值与 VIDIOC_QUERY_DV_TIMINGS 在 v4l2_bt_timings 结构的 width 字段中返回的值相同。
- video_height (R)
视频流高度。这是硬件检测到的实际高度。
该值与 VIDIOC_QUERY_DV_TIMINGS 在 v4l2_bt_timings 结构的 height 字段中返回的值相同。
- vsync_status (R)
视频格式检测器检测到的 VSYNC 脉冲类型。
该值等同于 VIDIOC_QUERY_DV_TIMINGS 在 v4l2_bt_timings 结构的 polarities 字段中返回的标志。
0 - 低电平有效1 - 高电平有效2 - 不可用- hsync_status (R)
视频格式检测器检测到的 HSYNC 脉冲类型。
该值等同于 VIDIOC_QUERY_DV_TIMINGS 在 v4l2_bt_timings 结构的 polarities 字段中返回的标志。
0 - 低电平有效1 - 高电平有效2 - 不可用- vsync_gap_length (RW)
如果传入的视频信号不包含同步 VSYNC 和 HSYNC 脉冲,则必须在 FPGA 内部生成这些脉冲才能实现正确的帧排序。此值表示生成内部 VSYNC 脉冲所需的多少“空”像素(具有取消断言的数据使能信号的像素)。
- hsync_gap_length (RW)
如果传入的视频信号不包含同步 VSYNC 和 HSYNC 脉冲,则必须在 FPGA 内部生成这些脉冲才能实现正确的帧排序。此值表示生成内部 HSYNC 脉冲所需的多少“空”像素(具有取消断言的数据使能信号的像素)。该值必须大于 1 且小于 vsync_gap_length。
- pclk_frequency (R)
输入像素时钟频率,以 kHz 为单位。
该值与 VIDIOC_QUERY_DV_TIMINGS 在 v4l2_bt_timings 结构的 pixelclock 字段中返回的值相同。
注意:必须首先正确设置 frequency_range 参数,才能在此处获得有效频率。
- hsync_width (R)
HSYNC 信号的宽度,以 PCLK 时钟周期为单位。
该值与 VIDIOC_QUERY_DV_TIMINGS 在 v4l2_bt_timings 结构的 hsync 字段中返回的值相同。
- vsync_width (R)
VSYNC 信号的宽度,以 PCLK 时钟周期为单位。
该值与 VIDIOC_QUERY_DV_TIMINGS 在 v4l2_bt_timings 结构的 vsync 字段中返回的值相同。
- hback_porch (R)
HSYNC 信号取消断言和视频行中第一个有效像素(以 DE=1 标记)之间的 PCLK 脉冲数。
该值与 VIDIOC_QUERY_DV_TIMINGS 在 v4l2_bt_timings 结构的 hbackporch 字段中返回的值相同。
- hfront_porch (R)
视频行中最后一个有效像素(以 DE=1 标记)结束和 HSYNC 信号断言之间的 PCLK 脉冲数。
该值与 VIDIOC_QUERY_DV_TIMINGS 在 v4l2_bt_timings 结构的 hfrontporch 字段中返回的值相同。
- vback_porch (R)
VSYNC 信号取消断言和带有第一个有效像素的视频行(以 DE=1 标记)之间的视频行数。
该值与 VIDIOC_QUERY_DV_TIMINGS 在 v4l2_bt_timings 结构的 vbackporch 字段中返回的值相同。
- vfront_porch (R)
最后一个有效像素行(以 DE=1 标记)结束和 VSYNC 信号断言之间的视频行数。
该值与 VIDIOC_QUERY_DV_TIMINGS 在 v4l2_bt_timings 结构的 vfrontporch 字段中返回的值相同。
- frequency_range (RW)
OLDI 输入时钟发生器的 PLL 频率范围。如果 oldi_lane_width 设置为“单通道”,则 PLL 频率来自像素时钟频率 (PCLK),并且等于 PCLK;如果 oldi_lane_width 设置为“双通道”,则 PLL 频率等于 PCLK/2。
0 - PLL < 50MHz(默认)1 - PLL >= 50MHz注意:当输入 v4l2 设备打开时,无法更改此参数。
7.10.1.3. 通用 FPDL3/GMSL 输出参数¶
- output_id (R)
输出编号 ID,从零开始。
- video_source (RW)
输出视频源。如果设置为 0 或 1,则源是相应的卡输入,并且 v4l2 输出设备将被禁用。如果设置为 2 或 3,则源是相应的 v4l2 视频输出设备。默认值为相应的 v4l2 输出,即 OUT1 为 2,OUT2 为 3。
0 - 输入 01 - 输入 12 - v4l2 输出 03 - v4l2 输出 1注意:当任何输入/输出 v4l2 设备打开时,此参数无法更改。
- display_width (RW)
显示宽度。没有连接显示的自动检测功能,因此必须在开始流式传输之前设置正确的值。默认宽度为 1280。
注意:当输出 v4l2 设备打开时,此参数无法更改。
- display_height (RW)
显示高度。没有连接显示的自动检测功能,因此必须在开始流式传输之前设置正确的值。默认高度为 640。
注意:当输出 v4l2 设备打开时,此参数无法更改。
- frame_rate (RW)
输出视频信号的帧率限制,单位为帧/秒。由于输出像素时钟步长的限制,卡片无法始终生成与连接显示器所需的帧率完全匹配的帧率。使用此参数可以限制帧率,通过“削弱”信号,使行不相等(最后一行边沿不同),但信号看起来具有连接显示器所需的确切帧率。默认帧率限制为 60Hz。
- hsync_polarity (RW)
HSYNC 信号极性。
0 - 低电平有效(默认)1 - 高电平有效- vsync_polarity (RW)
VSYNC 信号极性。
0 - 低电平有效(默认)1 - 高电平有效- de_polarity (RW)
DE 信号极性。
0 - 低电平有效1 - 高电平有效(默认)- pclk_frequency (RW)
输出像素时钟频率。允许的值介于 25000-190000 (kHz) 之间,并且两个连续的允许频率之间存在非线性步进。驱动程序会找到最接近给定值的允许频率并进行设置。读取此属性时,您会获得驱动程序设置的确切频率。默认频率为 61150kHz。
注意:当输出 v4l2 设备打开时,此参数无法更改。
- hsync_width (RW)
HSYNC 信号的宽度,单位为像素。默认值为 40。
- vsync_width (RW)
VSYNC 信号的宽度,单位为视频行。默认值为 20。
- hback_porch (RW)
HSYNC 信号取消置位和视频行中第一个有效像素(用 DE=1 标记)之间的 PCLK 脉冲数。默认值为 50。
- hfront_porch (RW)
视频行中最后一个有效像素(用 DE=1 标记)结束和 HSYNC 信号置位之间的 PCLK 脉冲数。默认值为 50。
- vback_porch (RW)
VSYNC 信号取消置位和具有第一个有效像素(用 DE=1 标记)的视频行之间的视频行数。默认值为 31。
- vfront_porch (RW)
最后一行有效像素(用 DE=1 标记)结束和 VSYNC 信号置位之间的视频行数。默认值为 30。
7.10.1.4. FPDL3 特定的输入参数¶
- fpdl3_input_width (RW)
解串器输入线的数量。
0 - 自动(默认)1 - 单路2 - 双路
7.10.1.5. FPDL3 特定的输出参数¶
- fpdl3_output_width (RW)
串行器输出线的数量。
0 - 自动(默认)1 - 单路2 - 双路
7.10.1.6. GMSL 特定的输入参数¶
- gmsl_mode (RW)
GMSL 速度模式。
0 - 12Gb/s(默认)1 - 6Gb/s2 - 3Gb/s3 - 1.5Gb/s- gmsl_stream_id (RW)
GMSL 多流最多包含四个视频流。此参数选择视频输入捕获哪个流。该值为流的从零开始的索引。默认流 ID 为 0。
注意:当输入 v4l2 设备打开时,无法更改此参数。
- gmsl_fec (RW)
GMSL 前向纠错 (FEC)。
0 - 禁用1 - 启用(默认)
7.10.2. MTD 分区¶
- mgb4 驱动程序创建一个包含两个分区的 MTD 设备
mgb4-fw.X - FPGA 固件。
mgb4-data.X - 工厂设置,例如卡序列号。
mgb4-fw 分区是可写的,用于固件更新,mgb4-data 是只读的。附加到分区名称的 X 代表卡号。根据 CONFIG_MTD_PARTITIONED_MASTER 内核配置,您还可能在系统中拥有第三个名为 mgb4-flash 的分区。此分区表示整个未分区的卡 FLASH 存储器,不应随意使用...
7.10.3. IIO(触发器)¶
mgb4 驱动程序创建一个工业 I/O (IIO) 设备,该设备提供触发器和信号电平状态功能。以下扫描元素可用
- activity:
触发器电平和挂起状态。
位 1 - 触发器 1 挂起位 2 - 触发器 2 挂起位 5 - 触发器 1 电平位 6 - 触发器 2 电平- timestamp:
触发器事件时间戳。
iio 设备可以在“原始”模式下运行,您可以使用 sysfs 访问来获取信号电平(活动位 5 和 6),也可以在触发缓冲区模式下运行。在触发缓冲区模式下,您可以使用 /dev 中的 iio 设备跟踪信号电平变化(活动位 1 和 2)。如果启用时间戳,您还将获得与视频帧匹配的精确触发事件时间(每个 mgb4 视频帧都有一个具有相同时钟源的时间戳)。
注意:虽然活动样本始终包含所有状态位,但在原始模式下获取挂起位或在触发缓冲区模式下获取电平位是没有意义的 - 在这种情况下,这些值不代表有效数据。