如何在Linux下实现设备的配置下.doc
文本预览下载声明
如何在Linux下实现设备的配置(下)
本文是《如何在Linux下实现设备的配置》的第二部分,将接着向您介绍窗口系统(XFree86)的配置过程。
窗口系统(XFree86)的配置过程
6.1 显示卡的描述文件介绍(CardDB)
CardDB 是X配置程序使用的显示卡数据文件。在对XFree86进行配置时,配置程序一般都需要读取其上的内容完成显示卡的配置。它的内容与使用的XFree86 的版本密切相关。一般而言,它保存的位置是在/usr/X11R6/lib/X11/目录下。现在我们就对XFree86 4.1.0的CardDB文件进行简单的介绍:
NAME 显示卡的描述名称 CHIPSET 描述显示卡使用的芯片集 SERVER 为了和3.x版本的XFree86向下兼容,由此字段指定此显示卡在XFree86 3.x下的X服务器,例如VGA16,SVGA等。 DRIVER 描述在4.x版本的XFree86下显示卡的驱动程序模块。 LINE 设置显示卡特定的选项信息,这样的选项信息出现在XF86Config的Device节,对应设备的Option参数。 SEE 是指此显示卡的配置信息与SEE字段所制定的显示卡完全相同,例如 NAME Number Nine GXE64 with S3 Trio64 SEE S3 Trio64 (generic) 表示 Number Nine GXE64 的显示卡配置与 S3 Trio64 (generic) 的配置完全相同。 RAMDAC RAM直接存取控制的控制芯片型号 DACSPEED 直接存取控制的速度 CLOCKCHIP 此显示卡的时钟芯片的 NOCLOCKCHIP 此显示卡无时钟芯片 UNSUPPORTED 此类型的显卡,此版本的XFree86不能提供支持 COMMENT 注释
例如,对于RIVA TNT显卡,XFree86 4.1.0中的信息如下:
NAME RIVA TNT CHIPSET RIVATNT SERVER SVGA DRIVER nv NOCLOCKPROBE
6.2 显示器信息检测
显示器的信息在XFree86系统中时非常重要的,它对应XFree86配置文件的Monitor节。在这一节中包含监视器的水平扫描频率范围,垂直扫描频率范围,显示器支持的显示模式等信息。同样的,显示器的自动检测也就是通过程序自动读出显示器的上述信息。它的正确设置对于XFree86能否正常显示起到很重要的作用。
对于显示器的信息检测,要求它必须支持vbe(VESA的BIOS级扩展)。在显示器支持此扩展时,通过系统实模式下的BIOS调用INT 10H,可以取得显示器的详细信息。
可能需要的BIOS子功能调用为:
AH = 0x4F00 获得关于监视器的VESA的BIOS级扩展信息
AH = 0x4F01 获得监视器支持的特定显示模式
AH = 0x4F02 设置当前的视频模式
AH = 0x4F03 获得当前的视频模式
AH = 0x4F04 保存/还原svga显示方式
AH = 0x4F15 获得监视器的EDID扩展信息
一般的显示器使用上述中断的方式是:先检查显示器是否支持VESA的BIOS级扩展,如果显示器支持BIOS级扩展,就查看显示器支持的显示模式,然后获得显示器的EDID扩展信息。在读出的EDID扩展信息中,可以查出显示器的垂直回扫频率范围和水平回扫频率范围,也可以计算出显示器的大小,对于一部分显示器还可以从此信息中读出监视器的制造商信息。
由显示器读出的信息可以设置XF86Config的Monitor节,对于设置了正确的垂直回扫频率范围和水平回扫频率范围的显示器,X自动设置为当前显示分辨率下支持的最高扫描频率的显示模式(此显示模式要求有对应的Modeline)。
但是如果您的显示器不支持EDID扩展信息,那么您就只有根据经验来设置显示器的垂直回扫频率范围和水平回扫频率范围。如果设置的范围高于监视器的实际支持范围,那么显示器会出现黑屏的现象。
对于编程实现,如果您要调用上述bios中断,那么必须使用lrmi这个实模式接口,并设置正确的寄存器信息,完成系统调用。具体的检测显示器信息的例子,您可以参考Xconfigurator下ddcprobe的源程序,也可以参考Mandrake系统下的ddcxinfos命令的源程序。
6.3 窗口系统的配置过程
要正确的在Linux下配置窗口系统,实际上就是生成正确的XFree86配置文件,这个文件一般保存在/etc/X11/下,在X版本是3.x时,它的文件名为XF86Config,在X版本是4.x时,它的文件名一般为XF86Config-4。在
显示全部