zoukankan      html  css  js  c++  java
  • 《精通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
  • 相关阅读:
    最新的Delphi版本号对照
    SuperObject生成示例
    Why does Delphi XE7 IDE hangs and fails on out of memory exception?
    使用 TRESTClient 与 TRESTRequest 作为 HTTP Client(转)
    Delphi提取PDF文本
    (3)PyCharm中Flask工程逆向生成数据库表
    (2)PyCharm开发Flash项目之蓝图构建
    (1)PyCharm开发工具安装Flask并创建helloworld程序
    使用localStorage写一个简单的备忘录
    一个Redis实例适合存储不同应用程序的数据吗?
  • 原文地址:https://www.cnblogs.com/zygote/p/13799749.html
Copyright © 2011-2022 走看看