萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> Linux操作系統下顯示模式刷新率怎麼改

Linux操作系統下顯示模式刷新率怎麼改

  經常在bbs上看到有新手問到刷新率怎麼改法,其實很簡單.

  在XFree86下,需要一個modeline的概念,雖然通過配置 HorizSync ,和VertRefresh能讓XFree86自動把刷新搞定,可是還是不可能細細調整,比如我顯示器在800x600下可以上到108Hz可是,XFree86的自動配置卻只有85Hz.

  於是,你需要在給你的XF86Config-4文件的Monitor Section加上一條象

  ModeLine "800x600@102" 73.61 800 832 1104 1136 600 610 620 631

  的ModeLine參數,來告訴X你顯示器有這麼一個模式.具體的數字,每台現實器都不一樣b,不過大多顯示器只給了Horizontal Sync Rate 和Refresh Rate(中文好象是行頻和場頻)兩個參數,自己換算的話麻煩死,還好有這樣一個頁面 http://xtiming.sourceforge.net/cgi-bin/xtiming.pl,你把你所要的設置填好(dotclock不知道的可以不填),可以幫你作好換算.注意別太貪心,會燒掉你的Monitor的

  OK,X下的Refresh解決了,到FrameBuffer了,我只說說vesa模式的其他的也差不多.FrameBuffer和X用的參數又不一樣了(真麻煩)不過還在(Linux Kernel Code Path)/Docmentation/fb/framebuffer.txt有個轉化的公式,不下面的數值算出來.

  pixclock left_margin right_margin hsync_len upper_margin lower_margin

  vsync_len

  然後,用那些數字去改(Linux Kernel Code Path)/drivers/video/vesafb.c

  先是又這樣一個struct:

  static struct fb_var_screeninfo vesafb_defined __initdata = {

  .activate = FB_ACTIVATE_NOW,

  .height = -1,

  .width = -1,

  .right_margin = 32,

  .upper_margin = 16,

  .lower_margin = 4,

  .vsync_len = 4,

  .vmode = FB_VMODE_NONINTERLACED,

  };

  然後是:

  vesafb_defined.pixclock = 10000000 / vesafb_defined.xres * 1000 / vesafb_defined.yres;

  vesafb_defined.left_margin = (vesafb_defined.xres / 8) & 0xf8;

  vesafb_defined.hsync_len = (vesafb_defined.xres / 8) & 0xf8;

  的幾行.

  對應的相應的變量把他們改了(建議原來的注釋掉),當然要在編譯一下kernel. Reboot,haha,all ok now.

copyright © 萬盛學電腦網 all rights reserved