-
Interact Methods (open/close, ioctls, mmap)
-
DMABUF (V4L2 Streaming I/O)
-
Image Formats
- v4l2_pix_format vs drm_format (V4L2_PIX_FMT_ in videodev2.h vs DRM_FORMAT_ in drm_fourcc.h)
- FourCC (Four Character Codes)
- ColorSpaces
- Depth Format (V4L2_PIX_FMT_Z16 vs DRM 没有 Depth Format)
- Popular Data Formats
- RGB565
-
Platform-specific Device Support
- 对于那些 Embedded SoC 场景下,它们的驱动模型都是 Platform device
-
Kernel Mode Driver Framework
- V4L2
layer data structure description 2/3 CSIPHY struct csiphy_device CSIPHY 的主要功能是连接和处理来自 camera sensor 的数据流,一个CSIPHY 可以连接一个独立 camera sensor 2/4 CSID struct csid_device Decoder 2/4 ISPIF struct ispif_device ISP Interface 4/8 VFE struct vfe_device Video Front End - for example drivers/media/platform/qcom/camss
Kconfig Makefile camss-csid-4-1.c camss-csid-4-7.c camss-csid-gen1.h camss-csid-gen2.c camss-csid-gen2.h camss-csid.c camss-csid.h camss-csiphy-2ph-1-0.c camss-csiphy-3ph-1-0.c camss-csiphy.c camss-csiphy.h camss-format.c camss-format.h camss-ispif.c camss-ispif.h camss-vfe-17x.c camss-vfe-4-1.c camss-vfe-4-7.c camss-vfe-4-8.c camss-vfe-480.c camss-vfe-gen1.c camss-vfe-gen1.h camss-vfe.c camss-vfe.h camss-video.c camss-video.h camss.c camss.h
- KMS
layer data structure description 1~n Framebuffer struct drm_framebuffer FB 1~n Plane struct drm_plane Where pixels come from 1 CRTC struct drm_crtc Overall Display Pipeline (blending & display timings ) 1~n Encoder struct drm_encoder Where pixels go to 1~n Connector struct drm_connector Display sinks - 为什么前者是 Decoder, 而后者是 Encoder?
- 首先 camera sensor (CMOS/CCD) 将光信号,转换成电信号再经过ADC 输出 digital value (0/1),CSIPHY 起的作用是连接和处理来自 sensor 的0/1数据以及通道管理 lane management,功耗控制 LP,传输速率 Gbps 等, 接下来由 CSI Decoder 将 MIPI CSI-2 串行数据流解码成并行数据流(图像帧格式)并输出给 ISP 芯片。不管是 CSIPHY 还是 CSI Decoder 都是 CSI-2 协议里的一个实体。
- 后者则是将 framebuffer 里的并行 RGB 数据转换成另一种数据格式(如HDMI 的 TMDS),这个过程是一种数据格式到另一种数据格式的 Encoder 编码。
- V4L2
-
Mode Setting vs Set Control (V4L2_CID_)
- KMS
- 显示分辨率, Fresh Hz, hblank(hsync), vblank(vsync)
- framebuffer size
- V4L2 set control
- hblank, vblank
- KMS
-
片上互连 (SoC 内部 IP 互连)
- Qualcomm CAMSS 使用 On-Chip Interconnect 框架 (ICC), Inter-Integrated Circuit (I2C,双向,串行)
- 龙芯 LSDC 驱动使用Component 框架
-
Vertical Blanking Interval (垂直同步)
-
Libraries
- libv4l
- libv4lconvert
- libv4l1
- libv4l2
- libkms (deprecated)
- libv4l
-
Utilities
-
Pipeline
- Camera pipeline of image processing vs GPU pipeline of triangle rendering vs Display pipeline of framebuffer presenting
-
Interface vs Infrastructure
- CSI/2/3 (Camera Serial Interface) vs DRI/2/3 (Direct Rendering Infrastructure) (仅仅字面上的共同点,它俩一个是图像数据传输协议,一个是驱动框架,但它们都有 3 个版本,目前 CSI2 使用应该最多,DRI2/DRI3 都有在使用)
-
Standards
- MIPI (Mobile Industry Processor Interface 联盟)
- MIPI CSI (Camera Serial Interface, 包括 Camera Control Interface (CCI) 实现 v4l2-cci.c)
- MIPI DSI (Display Serial Interface, 实现 drm_mipi_dsi.c)
- MIPI DBI (Display Bus Interface, 实现 drm_mipi_dbi.c)
- MIPI CCS (Camera Command Set)
- MIPI DCS (Display Command Set)
- SMIA (Standard Mobile Imaging Architecture)
- SMIA++
- VESA (Video Electronic Standards Association 视频电子标准协会)
- FDMI (Flat Display Mounting Interface)
- DisplayPort
- DisplayHDR
- MIPI (Mobile Industry Processor Interface 联盟)
-
Specifications
-
Ecosystem (Open-Sourced drivers)
-
驱动知识点
- camera
- DT
- I2C
- V4L2
- MIPI_D-PHY, MIPI_CSI-2
- ISP 驱动
- gpu
- DT (Linux 嵌入式应该都会涉及到)
- PCIe
- DRM
- ??? (五花八门,似乎没有一个统一的标准规定 gpu 应该如何如何)
- GPU 驱动
- camera
-
相似的数据结构
struct v4l2_rect
vsstruct drm_rect
V4L2_PIX_FMT_
宏 vsDRM_FORMAT_
宏 (都使用 fourcc)
-
都使用到的数据结构
struct fb_info
-
Data Struct
- media_device
- media_pipeline
- media_entity
- media_link
- media_interface
-
Subdevice Operations
- v4l2_subdev_video_ops
- v4l2_subdev_vbi_ops
- v4l2_subdev_sensor_ops
-
Media Bus
- V4L2_MBUS_PARALLEL
- V4L2_MBUS_BT656
- V4L2_MBUS_CSI1
- V4L2_MBUS_CCP2 (Compact Camera Port 2)
- V4L2_MBUS_CSI2_DPHY
- D-PHY 将每个字节串行化,并以最低有效位(LSB) 优先的顺序进行传输,速率 2.5Gbps, 低速低功耗
- V4L2_MBUS_CSI2_CPHY
- C-PHY 将每 16 位字组成 7 个符号,并以最低有效符号(LSS) 优先的顺序进行传输,速率 17.1Gbps, 高速高带宽
- V4L2_MBUS_DPI (MIPI VIDEO DPI 接口)
-
- LP-11
- 指数据通道和时钟通道同时处于高电平状态,多数设备在数据传输完成后会返回此状态,所以它相当于是一个 Stop State
- LP-111
- 是扩展的低功能状态,通常用于更复杂的控制信号序列
- LP-11
Last active
September 13, 2024 04:30
-
-
Save lucmann/bc2a970e0d5700b0e4da3bde7a8cf4f8 to your computer and use it in GitHub Desktop.
similarities between media and DRM subsystems
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Photoelectric 光电的