荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: ykwch.bbs@bbs.cqupt.edu.cn (心蓝--想你), 信区: Linux
标  题: 开机画面之一--原理
发信站: 幽幽黄桷兰 (Tue Mar 18 11:31:15 2003)
转信站: SZU!news.tiaozhan.com!news.happynet.org!CQUPT

主题:开机画面之一:原理 (2002-06-03 15:41:00)
----------------------------------------------------------------------------
----
2.2版本以后的内核中内置了对视频缓冲区的通用驱动,不需加载特定显卡驱动就可以显
示图片(没有视频加速)。
视频缓冲区被映射成一段线性连续的内存地址,低位从屏幕左上角开始。
在模拟彩色模式下,每显示一张显示图片前要先设置调色板;在真彩色模式下,直接把
各像素的颜色值写到视频缓冲区就可以了。
有关的文件:
drivers/video/fbcon.c
include/linux/fb.h
include/video/fb*.h
有关的内核全局变量和数据结构:
struct display fb_display[];
int fg_console;
有关视频缓冲区的信息被 struct display 这个结构封装。
fg_console 是当前的虚拟控制台(0-63之间的一个数字),fb_display[fg_console]
就是当前控制台对应的视频缓冲区控制结构。
这个结构的成员 struct fb_var_screeninfo var 含有一些运行时视频缓冲区信息,
包括当前显示模式下描述一个像素所用的位数 bits_per_pixel,以及红、绿、蓝三种颜
色分量在每个像素的 bits_per_pixel 位色彩值中所占的位置与长度
(例如,在16位真彩色模式下,每个像素占2个字节,正好16位,前5位是红色值,中间
6位是绿色值,后面5位是蓝色值);
 var 的 另一个成员 unsigned char * screen_base 就是视频缓冲区映射在内存中的地
址。

--
心当如水般平静
无风无浪
不急不躁
视万物非物
看万事非事
只当空闻一生 空见一生而已
※ 来源:·幽幽黄桷兰 bbs.cqupt.edu.cn·[FROM: BlueCrystal]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店