《精通linux设备驱动程序开发》 第12章视频驱动程序 学习笔记

主要内容:

  • 显示框架
  • Linux视频子系统
  • 显示参数
  • 帧缓冲API

1.显示框架

VGAVideo Graphics Array,视频图形阵列)是IBM提出的早期显示标准,现在更多体现为分辨率规范。嵌入式SoC通常有一个片上LCD控制器,在LCD控制器上输出的是TTL信号,许多手持设备和电话使用QVGA类型的内部LCD面板,他们直接接收LCD控制器输出的TTL平板视频数据。

2.Linux视频子系统

帧缓冲(frame buffer)是Linux视频系统的核心概念,它进行了一般化的抽象并规定编程接口,可以与平台无关的方式编写应用层和较高内核层的程序。

因此,内核的帧缓冲接口允许应用程序与底层图形硬件的变化无关,通用帧缓冲编程接口也使内核层与硬件无关。

3.显示参数

有时,为了让设备能播放视频,在编写驱动程序的时候,只需要配置与显示面板相关的属性即可。

4.帧缓冲API

帧缓冲核心层向用户空间输出设备结点,以便应用程序能访问每个支持的视频设备。使用帧缓冲API主要要关心的数据结构定义在内核的include/linux/fb.h文件中,而用户侧的定义在/usr/include/linux/fb.h文件中。

4.1视频卡的各个属性保存在struct fb_var_screeninfo内,该结构包含了很多字段,比如X向分辨率、一个像素的位数、pixclockHSYNC范围、VSYNC范围和空边长度。

struct fb_var_screeninfo {

    __u32 xres;

    __u32 yres;

    /* ... */

    __u32 bits_per_pixel;

    /* ... */

    __u32 pixclock;

    __u32 left_margin;

    __u32 right_margin;

    /* ... */

    __u32 hsync_len;
    
    __u32 vsync_len;

    /* ... */

};

4.2视频硬件的固定信息

struct fb_fix_screeninfo {
    char id[16];

    unsigned long smem_start;

    __u32 smem_len;

    /* ... */

};
stay hungry, stay foolish
原文地址:https://www.cnblogs.com/zygote/p/13799749.html