                        ե졼ХåեǥХ
                        ------------------------
Maintained by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
Last revised: November 7, 1998

Translated by FUJIWARA Teruyoshi (fujiwara@linux.or.jp)
Last revised: March 17, 1999

0. Ϥ
-----------

ե졼ХåեǥХϡեåϡɥݲԤ
ΥǥХ餫ΥӥǥϡɥΥե졼Хåեɽ
Ȥˤäơ줿󥿥ե̤ƥץꥱ
եåϡɥ˥Ǥ褦ˤޤäơ
եȥ٥(ϡɥ쥸)λݤ˴ؤƲΤɬפ
ޤ

ǥХؤΥüǥХΡɤ̤ƹԤޤǥХΡ
ɤ̾ /dev ǥ쥯ȥ֤졢ե졼ХåեǥХб
Τ /dev/fb* ʤɤȤʤޤ


1. 桼鸫 /dev/fb*
--------------------------
桼λ鸫ȡե졼ХåեǥХ /dev ˤ¾Υǥ
ȤۤȤƱ˸ޤϥ᥸㡼ֹ 29 Ȥ饯
ǥХǡޥʡֹǥե졼Хåեֹꤷޤ

ˤꡢʲΥǥХΡɤȤޤ(ϥǥХΥޥʡ
ֹ򼨤ޤ):

      0 = /dev/fb0	ǽΥե졼Хåե
     32 = /dev/fb1	2ܤΥե졼Хåե
	  ...
    224 = /dev/fb7	8ܤΥե졼Хåե

ߴΤᡢ/dev/fb0current ʲΥܥå󥯤뤳
Ȥˤʤ뤫⤷ޤ:

    /dev/fb0current -> fb0
    /dev/fb1current -> fb1

ʤɡġ
ե졼ХåեǥХϡ̾ΡץǥХǤ⤢ޤĤޤꡢ
Ƥɤ߽񤭤뤳ȤǤޤ㤨СʲΥޥɤǲ̤Υʥ
ץåȤ뤳ȤǤޤ:

   cp /dev/fb0 myfile

ƱʣΥե졼ХåեĤȤǤޤ㤨СȹߤΥϡ
ɥʳɲäΥեåɤäƤǤ줾
бե졼Хåե(/dev/fb0/dev/fb1 ʤ)Ωư


ե졼ХåեǥХȤץꥱ󥽥եȥ(: X 
)ϡǥեȤ /dev/fb0 Ȥޤ(Ťեȥ 
/dev/fb0current Ȥޤ)Ķѿ $FRAMEBUFFER ˥ե졼Хåե
ǥХΥѥ̾ꤹ뤳Ȥˤꡢ̤Υե졼ХåեǥХ
ꤹ뤳ȤǤޤ(sh/bash 桼ξ):

     export FRAMEBUFFER=/dev/fb1

ޤ(csh 桼ξ):

     setenv FRAMEBUFFER /dev/fb1

ꤷϡX Ф 2 ܤΥե졼ХåեȤ褦ˤ
ޤ


2. ץޤ鸫 /dev/fb*
------------------------------

褦ˡե졼ХåեǥХ /dev/mem Τ褦ʥ
ǥХǤꡢƱǽäƤޤɤ߽񤭤䡢ɤΰ
򥷡뤳ȡmmap() 뤳(줬ʻˡ)Ǥޤͣ
ΰ㤤ϡüե˸ϡƤΥɽƤΤ
Ϥʤ餫ΥӥǥϡɥΥե졼Хåե̣Ƥ뤳
Ǥ

/dev/fb* ФƻȤȤǤ ioctl ĤޤȤ
ơϡɥ˴ؤ򤿤䤤碌뤳Ȥꤹ뤳Ȥ
Ǥޤ顼ޥå׽ ioctl ͳǹԤޤإå <linux/fb.h> 
򸫤Сɤ ioctl äơɤʹ¤ΤȤΤȤܺ
狼ޤǡǤϳפñ뤳Ȥˤޤ:

     - ϡɥ˴ؤѹԲǽʾꥯȤ뤳ȤǤ
       ޤΤ褦ʾȤƤϡ̾䥹꡼ι(ץ졼
       packed ԥ롢...)꡼Υɥ쥹Ĺ
       ʤɤޤ

     - ϡɥ˴ؤѹǽʾꥯȤѹ뤳Ȥ
       ǤޤΤ褦ʾȤƤϡĻ른ȥ䲾ۥ
       ꡢο顼ޥåפΥեޥåȡߥͤʤɤ
       ޤΤ褦ʾѹ褦Ȥ硢ɥ饤ФϤ֤
       ϡɥεǽ˹碌ͤ򤤤餫ݤǤ礦(줬
       ǽʤ EINVAL ֤ޤ)

     - 顼ޥåפΰꤹ뤳ȤǤޤ¸ߤ
       Υϡɥ򥵥ݡȤ뤿ᡢ黻Ͽγʬ(֡Сġ
       Ʃ)ˤĤ 16 ӥåȤǹԤޤɥ饤ФϤϡɥ
       Ϳ뤿Ƥ̿Ԥޤ(ӥåȤ򸺤餹˴ݤ᤬
       Ԥ졢餯Ʃ٤˴ޤ)

ʾΤ褦ݲΤǡץꥱץ
ܿΤڤˤʤ櫓Ǥ㤨СX Ф /dev/fb* Ȥäƴ
ưΤǡŪʥϡɥο쥸ɤΤ褦˹
Ƥ뤫ΤɬפޤXF68_FBDev ϥӥåȥޥåפѤ
졼̵ӥǥϡɥѤѤ X ФǤ
ץꥱץȤ߹ޤʤФʤʤΤϡ̤ι(ӥ
ȥץ졼󡢤ޤȤޤäԥ)Ǥʤʤ顢ץꥱ
ľܥե졼ХåեΥ᡼ǡ뤫Ǥ

ŪˤϡեåΥե졼Хåեɥ饤Ф򥫡ͥ
⥸塼ȤƼ¹Ի˥ɤ뤳ȤͤƤޤ
褦ʥɥ饤Фϡ register_framebuffer() ƤӽФ餫εǽ
󶡤Ǥ褯ʤޤΤ褦ʥɥ饤ФΩ˺ۤ
Сͥ뤬ȥ֥˴ޤ뤳Ȥ⾯ʤǤ礦ġ


3. ե졼Хåեβ٤δ
---------------------------------

ե졼Хåեβ٤ fbset Ȥ桼ƥƥȤäƴ
Υ桼ƥƥȤäƥե졼ХåեǥХΥӥǥ⡼ɤ
ץѥƥѹ뤳ȤǤޤμʻȤϡ㤨еư 
/etc/rc.*  /etc/init.d/* ΥեǡߤΥӥǥ⡼ɤѹ
뤳ȤǤ

fbset ϡե˳ǼƤӥǥ⡼ɤΥǡ١
ޤäơȼΥ⡼ɤñɲä뤳Ȥ䡢⡼ɤñ
̻ҤǻȤ뤳ȤǤޤ


4. X 
-----------

X (XF68_FBDev)ϡե졼ХåեǥХѤκǤͭ̾ʥץꥱ
ץǤXFree86 ꡼ 3.2 ʹߡ X Ф 
XFree86 ΰǤꡢ2 ĤΥ⡼ͤäƤޤ

     - /etc/XF86Config ե `fbdev/' ɥ饤ФФ 
       `Display/' ֥


       ȤƤǤ硢X ФҤˡȤޤĤޤꡢ
       /dev/fb0 (ꤵƤ $FRAMEBUFFER)ˤäƷ줿
       ٤ǵưޤξǤ⡢ο(Depth ɤȤ
       )Ȳ۲(Virtual Ȥޤ)ϻꤷʤФʤޤ
        XFree86 ѰդƤեΥǥեȤǤ
       ϺǤñǤ¤Ĥޤ

     - äơ/etc/XF86Config եǲ٤ꤹ뤳Ȥ
       Ǥޤˤꡢۥǥȥåפ礭Ʊݤäޤޡ
       ¹˲٤ڤؤԤȤǤޤξȤ
       ե졼ХåեǥХ /dev/fb0 (ޤ $FRAMEBUFFER)Τ
       ޤǤξѤǤ٤ /etc/XF86Config 
       ƤޤȤƤϡۤʤեޥåȤǥߥͤ
       ꤷʤФʤʤȤ󤲤ޤ(`fbset -x' 
       ͤˤʤǤ礦)

ӥǥ⡼ɤ塼󤹤뤿 fbset  xvidtune ѤǤޤ 
xvidtune  XF68_FBDev Ǥ 100% ưʤդƤ
륯åͤɬְäƤޤ


5. ӥǥ⡼ɥߥ
---------------------------

˥ŻѤƥ᡼̤褷ޤ(顼ǥʤŻ
 3 ĤǡΥ˥ʤŻ 1 ĤǤ)꡼̤Ͽ
ηָ(ԥ)ΥѥʤƤޤָΤŻҤ
ҤФơ褦ˤʤޤ

ŻϿʿ(饤)̤κ鱦夫鲼˸ä
褷ޤŻζ٤Ѥ뤳Ȥˤꡢ͡ʿ뤵Υԥ
褹뤳ȤǤޤ

ƥ饤θˤϡŻϲ̤κ¦ꡢιԤ˰ưʤ
Фʤޤ󡣤Ͽʿ(horizontal retrace)ȸƤФޤ
(ե졼)ΤˤϡŻϲ̤κޤϿ
ľ(vertical retrace)ȸƤФޤʿľδ֤ˤϡŻ
ϻߤޤޤ(֥󥯾֤ˤʤޤ)

Żԥ褹®٤ϡեåܡɤΥɥåȥå
ͤˤäƷޤޤ㤨Хɥåȥåͤ 28.37516 MHz(ä
ɴ)ξˤϡ줾Υԥ뤢Ĺ 35242 ps
(ԥ)Ǥ:

     1/(28.37516E6 Hz) = 35.242E-9 s

̤β٤ 640x480 ʤС1 饤ʬ 640(xres)ԥ
褹Τˤ֤

     640*35.242E-9 s = 22.555E-6 s

ȤʤޤǤʿˤ֤(㤨 272 ֥ԥ)
Τǡ1 饤ΤǤ֤

     (640+272)*35.242E-9 s = 32.141E-6 s

ȤʤޤǤʿ졼Ȥ 31 kHz ȸޤ:

     1/(32.141E-6 s) = 31.113E3 Hz

ΤǤ 480(yres)Ԥޤľ(㤨 49 ֥ԥ)
ͤʤФʤޤ󡣤Ǥ顢ΤǤ

     (480+49)*32.141E-6 s = 17.002E-3 s

ޤ
ľ졼Ȥ 50 Hz ˤʤޤ:

     1/(17.002E-3 s) = 58.815 Hz

Ĥޤꡢ̤Υǡ 1 ä 59 ľȤȤǤ
ܤ˸褦ʤĤ򵯤˰ꤷԥ뤿 VESA 
侩Ƥľ졼ȤϺ 72 Hz ǤǤ
ĤȤΤϿͤ줾Ǥ50Hz ǻȤäƤʤȤ
⤤СɮԤΤ褦 80 Hz 꾮ȵդƤޤȤͤ⤤


饤󤬤ĻϤޤ뤫ϥ˥ˤʬʤΤǡե
ܡɤϥ饤󤴤ȤƱ(ʿƱޤ hsync)Ф
Ʊͤˡե졼ऴȤˤƱ(ľƱޤ vsync)Ф
ޤ̤ˤΰ֤ϡƱ椬ȯ륿ߥ󥰤αƶ
ޤ

ƤΥߥ󥰤ʲοޤˤޤȤޤʿ֤Ϻޡ
(left margin)ޡ(right margin)ʿƱĹ(hsync len)ι
פǤľ֤Ͼޡ(upper_margin)ޡ
(lower_margin)ľƱĹ(vsync_len)ιפǤ

  +----------+---------------------------------------------+----------+-------+
  |          |                ^                            |          |       |
  |          |                |upper_margin                |          |       |
  |          |                                            |          |       |
  +----------###############################################----------+-------+
  |          #                ^                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |   left   #                |                            #  right   | hsync |
  |  margin  #                |       xres                 #  margin  |  len  |
  |<-------->#<---------------+--------------------------->#<-------->|<----->|
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |yres                        #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                                            #          |       |
  +----------###############################################----------+-------+
  |          |                ^                            |          |       |
  |          |                |lower_margin                |          |       |
  |          |                                            |          |       |
  +----------+---------------------------------------------+----------+-------+
  |          |                ^                            |          |       |
  |          |                |vsync_len                   |          |       |
  |          |                                            |          |       |
  +----------+---------------------------------------------+----------+-------+

ե졼ХåեǥХϡƤοʿߥͤɥåȥå(
(1E-12 )ñ)οǤ뤳ȤȡƤοľߥͤ
饤οǤ뤳ȤԤޤ


6. XFree86 ΥߥͤΥե졼ХåեǥХΥߥͤؤѴ
-------------------------------------------------------------------------

XFree86 Υ⡼ɥ饤ϰʲΥեɤ鹽Ƥޤ:
 "800x600"     50      800  856  976 1040    600  637  643  666
 < name >     DCF       HR  SH1  SH2  HFL     VR  SV1  SV2  VFL

ե졼ХåեǥХϰʲΥեɤѤޤ:

  - pixclock: ps (ԥ)ñ̤Υԥ륯å
  - left_margin: ƱޤǤλ
  - right_margin: 褫ƱޤǤλ
  - upper_margin: ƱޤǤλ
  - lower_margin: 褫ƱޤǤλ
  - hsync_len: ʿƱĹ
  - vsync_len: ľƱĹ

1) Pixelclock:
   xfree: MHz ñ
   fb: ԥ(ps)ñ 

   pixclock = 1000000 / DCF

2) ʿߥ:
   left_margin = HFL - SH2
   right_margin = SH1 - HR
   hsync_len = SH2 - SH1

3) ľߥ:
   upper_margin = VFL - SV2
   lower_margin = SV1 - VR
   vsync_len = SV2 - SV1

VESA ߥͤɤϡXFree86 Υĥ꡼
xc/programs/Xserver/hw/xfree86/doc/modeDB.txt ˤޤ


7. ʸ
-----------

ե졼ХåեǥХȡαѤ˴ؤܤˤĤƤϡ
ʲʸ򻲾ȤƤ:

  - fbset Υ饤ޥ˥奢: fbset(8), fb.modes(5)
  - XFree86 Υ饤ޥ˥奢: XF68_FBDev(1), XF86Config(4/5)
  - ǽΥͥ륽:
      o linux/drivers/video/
      o linux/include/linux/fb.h
      o linux/include/video/


8. 
---------------

ɬפʥեƤ

    ftp://ftp.uni-erlangen.de/pub/Linux/LOCAL/680x0/

ȤΥߥ顼Ȥˤޤ


9. 쥸å
------------

 README ʸ Geert Uytterhoeven 񤭤ޤƤΰϡ
Roman Hodek  Martin Schaller 󤬽񤫤줿ꥸʥ
`X-framebuffer.README' ˴ŤƤޤ 6 Ϥ Frank Neumann 
󶡤Ƥޤ

ե졼ХåեǥХˤݲؤ߷פΤ Martin Schaller 
Ǥ
