如果您的机器上安装了 XFree86 (X11) 并且可以成功使用,那么将 XF86Config 文件中的模式行转换为帧缓冲设备所需的时序就非常简单。
帧缓冲设备需要以下字段
pixclock - 像素时钟,单位为皮秒
left_margin - 从同步到显示之间的时间
right_margin - 从显示到同步之间的时间
upper_margin - 从同步到显示之间的时间
lower_margin - 从显示到同步之间的时间
hsync_len - 水平同步长度
vsync_len - 垂直同步长度
XFree86 模式行包含以下字段
Modeline "1280x1024" DCF HR SH1 SH2 HFL VR SV1 SV2 VFL
要将 XF86 模式行转换为一组帧缓冲设备时序,需要进行一些简单的计算。 例如,我们将研究如何转换从我的 XF86Config 文件中提取的模式行
Modeline "1280x1024" 110.0 1280 1328 1512 1712 1024 1025 1028 1054
首先,计算所需的像素时钟频率。 XFree86 使用兆赫兹,而帧缓冲设备使用皮秒(原因我也不知道)。 用一百万除以 DCF。 例如:1,000,000 / 110.0 = 9090.9091
现在我们需要计算水平时序
left_margin = HFL - SH2
right_margin = SH1 - HR
hsync_len = SH2 - SH1
在我们的示例中,这将是
left_margin = 1712 - 1512 = 200
right_margin = 1328 - 1280 = 48
hsync_len = 1512 - 1328 = 184
现在我们需要计算垂直时序。
upper_margin = VFL - SV2
lower_margin = SV1 - VR
vsync_len = SV2 - SV1
对于我们的示例,这将是
upper_margin = 1054 - 1028 = 26
lower_margin = 1025 - 1024 = 1
vsync_len = 1028 - 1025 = 3
现在我们可以使用这些信息来为所需的模式设置帧缓冲。 例如,对于 matroxfb 帧缓冲驱动程序,它需要以下内容
video=matrox:xres:<>,yres:<>,depth:<>,left:<>,right:<>,hslen:<>,upper:<>,lower:<>,vslen:<>
我将以下行放入我的 /etc/lilo.conf 文件中
append = "video=matroxfb:xres:1280,yres:1024,depth:32,left:200,right:48,hslen:184,upper:26,lower:0,vslen:3"
请注意,在这种情况下,像素时钟没有被使用。 只有当您不喜欢默认的像素时钟频率时,它才是必要的。 您也可以将此作为参数提供。 设置像素时钟的文档位于本 HOWTO 的其他部分。