与afreez一起学习DirectFB之:framebuffer相关基础

原创 2006年06月06日 20:39:00
在学习DirectFB的过程中,其中很重要的一部分就是framebuffer的学习,下面把我收集到的一些自己认为比较有价值的文字列出,希望也对大家有帮助!
---------------------------------------------------------------------------------------------------------------------
声明:
       此文为原创,欢迎转载,转载请保留如下信息
       作者:聂飞(afreez)
       联系方式:afreez@sina.com (欢迎与作者交流)
       初次发布时间:2006-06-06
      不经本人同意,不得用语商业或赢利性质目的,否则,作者有权追究相关责任!
-----------------------------------------------------------------------------

framebuffer相关知识总结

Vesafb介绍

VESAVideo Electronic Standards Association影像电子工程标准协会的缩,由多家计算机芯片制造商于1989年联合创立,1994年底,VESA发表了64位架构的VESA Local Bus标准,80486以后的PC机大多采用这一标准的显卡。

Vesafb is a framebuffer driver for Intel architecture that works with VESA 2.0 compliant graphic cards

Linear frame buffering simply means that the system's CPU is able to access every bit of the display.

 

显卡简介

显示适配卡Video cardGraphics card),又称为显示适配器video adapter),中国大陆简称为显卡显示卡香港台湾简称为显示卡,是个人电脑最基本组成部分之一。-{A|zh-cn:显卡;zh-tw:显示卡}-的用途是将计算机系统所需要的显示信息进行转换驱动显示器,并向显示器提供行扫描信号,控制显示器的正确显示,是联接显示器和个人电脑主板的重要组件,是人机对话的重要设备之一。

显卡是插在主板上的扩展槽里的(现在一般是PCI-EAGP插槽)。它主要负责把主机向显示器发出的显示信号转化为一般电信号,使得显示器能明白个人电脑在让它干什么。显卡的主要芯片叫显示芯片Video chipset,也叫GPUVPU,图形处理器或视觉处理器),是显卡的主要处理单元。显卡上也有和电脑内存相似的存储器,称为显示内存,简称显存

早期的显卡只是单纯意义的显卡,只起到信号转换的作用;目前我们一般使用的显卡都带有3D画面运算和图形加速功能,所以也叫做图形加速卡

显卡通常由总线接口、PCB板、显示芯片、显存、RAMDACVGA BIOSVGA功能插针、VGA插座及其它外围组件构成,现在的显卡大多还具有DVI显示器插头及S-video端子插头。

ISA显卡

ISA显卡是现在最普遍使用的VGA显示器所能支持的最为古老的显卡。

VESA显卡

VESAVideo Electronic Standards Association影像电子工程标准协会的缩写,由多家计算机芯片制造商于1989联合创立,1994底,VESA发表了64位架构的VESA Local Bus标准,80486以后的PC机大多采用这一标准的显卡。

PCI显卡

AGP显卡

AGP(Accelerated Graphics Port)Intel公司在1996开发的32位总线接口,用来增进计算机系统中的显示效能。分有AGP 1X , AGP 2X ,AGP 4X 及最后的AGP 8X , 频宽分别为 266MB/s ,533MB/s ,1066MB/2133 MB/s。其中 AGP 4X 以后已跟之前电压不兼容。性能最好的AGP显示卡是nVIDIA公司的GeForce 6800 Ultra ATi公司的Radeon X850 XT PE

PCI Express显卡

PCI Express是显示卡最新的图形接口,用来取代AGP显示卡的,因为面对日后3D显示技术的不断进步,AGP的宽带已经不能再满足庞大的数据运算。目前性能最高的PCI-Express显示卡是Nvidia公司的GeForce 7800GTX 512MBATi公司的X1900XTX。此外, 现时部分显示卡可-{zh-tw:支援;zh-cn:支持}-双显示卡(nVidiaSLiATiCrossfire). 当中, Crossfire大部分都需要一张子卡和一张主卡去运行, X1300就无此限制,而此限制也即将解封。

 

MTRR含义

MTRR (Memory Type Range Register) support (CONFIG_MTRR) [N/y/?]

选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供X server使用。

Intel p6家族的处理器中(Ppro PII和更新的)有一个内存类型范围寄存器,可用来控制处理器访问的内存范围。打开它一般可以提升显卡的显示性能

It speeds up memory copies between the processor and the graphic card

linux framebuffer相关


又学习到结构体初始化定义的一个绝招,具体如下:
结构体定义(见
/include/linux/fb.h

struct fb_fix_screeninfo {

       char id[16];                  /* identification string eg "TT Builtin" */

       unsigned long smem_start;    /* Start of frame buffer mem */

                                   /* (physical address) */

       __u32 smem_len;                 /* Length of frame buffer mem */

       __u32 type;                  /* see FB_TYPE_*        */

       __u32 type_aux;                   /* Interleave for interleaved Planes */

       __u32 visual;                /* see FB_VISUAL_*            */

       __u16 xpanstep;                   /* zero if no hardware panning  */

       __u16 ypanstep;                   /* zero if no hardware panning  */

       __u16 ywrapstep;          /* zero if no hardware ywrap    */

       __u32 line_length;         /* length of a line in bytes    */

       unsigned long mmio_start;     /* Start of Memory Mapped I/O   */

                                   /* (physical address) */

       __u32 mmio_len;                  /* Length of Memory Mapped I/O  */

       __u32 accel;                 /* Type of acceleration available */

       __u16 reserved[3];        /* Reserved for future compatibility */

};

/drivers/video/Anakinfb.c

结构体初始化,注意并不是初始化全部成员变量,而是一部分,这是一种简捷的定义方式,注意每个成员变量前有一个“.”号,你有更好的定义方式吗?欢迎指教:)

static struct fb_fix_screeninfo anakinfb_fix = {

       .id          = "AnakinFB",

       .smem_start   = VGA_START,

       .smem_len     = VGA_SIZE,

       .type             = FB_TYPE_PACKED_PIXELS,

       .visual    = FB_VISUAL_TRUECOLOR,

       .line_length    = 400*2,

       .accel            = FB_ACCEL_NONE,

};

 下面是一个操作符优先级问题

anakinfb_setcolreg()

{

// green & 0xfc00 >> 5green & 0xfc00 >> 5)相同,注意操作符的优先级

((u16 *)(info->pseudo_palette))[regno] = (red & 0xf800) | (green & 0xfc00 >> 5) | (blue & 0xf800 >> 11);

}
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

与afreez一起学习DSP中浮点转定点运算--浮点数的存储格式

二:浮点数的存储格式 2.1 IEEE floating point standard 上面我们说了,浮点数的小数点是不固定的,如果每个人都按照自己的爱好存储在电脑里,那不就乱套了吗?那么怎么在计...

Framebuffer原理、使用、测试系列文章,非常好的资料,大家一起学习

*一、FrameBuffer的原理*  FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。  Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIO...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Framebuffer,Xorg,directFB,openGL,QT,GTK关系

问:Xserver使用的是Framebuffer吗?答:Xserver有多种实现,如Xfree86、Xorg等,Xfree86默认不采用Framebuffer;而对于Xorg,可以根据xorg.con...

Linux内核的framebuffer相关的内核代码注释

Linux内核的framebuffer相关的内核代码注释 转自:http://m.blog.csdn.net/article/details?id=49259589&from=singlemessa...
  • daway
  • daway
  • 2017-03-22 17:53
  • 95

s3c2410 framebuffer 设备驱动 相关结构体

include/linux/fb.h struct fb_info { int node; /* node成员域标示了特定的FrameBuffer, * 实际上也就是一个Frame...

linux-framebuffer设备相关参数

如果应用程序需要知道Framebuffer设备的相关参数,必须通过ioctl()系统调用来完成。 在头文件中定义了所有的ioctl命令字,不过,最常用的ioctl命令字是下面这两个:FBIOGET_...

我与你一起学习JSP(三)——JSP的基础语法【一】

转自:http://blog.csdn.net/yangzhencheng_001/article/details/7317719 近日,看《林师傅在首尔》,感觉越看越饿。没办法,最后改成边看边...

大家一起学习PHP(一)【基础知识1】

PHP开发环境搭建1.XAMPP下载安装: 百度搜索XAMPP,然后下载对应的系统安装包,一路next安装即可;2.PhpStorm下载安装,以及使用激活码激活: 百度PhpSto...

Linux内核的framebuffer相关的内核代码注释

由于现在正在进行framebuffer的一个项目开发,所以需要学习framebuffer的内核代码,今天现在这里上传我的相关注释,后面再将我的学习内容和相关framebuffer的操作提交上来.位置:...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)