%!PS %%Title: Guide pratique du Plug-and-Play %%Creator: html2ps version 1.0 beta5 %%EndComments save 2000 dict begin /d {bind def} bind def /D {def} d /t true D /f false D /FL [/Times-Roman /Times-Italic /Times-Bold /Times-BoldItalic /Courier /Courier-Oblique /Courier-Bold /Courier-BoldOblique /Helvetica /Helvetica-Oblique /Helvetica-Bold /Helvetica-BoldOblique] D /WF t D /WI 0 D /F 1 D /IW 471 F div D /IL 621 F div D /PS 791 D /EF [0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 2] D /EZ [11 9 19 17 15 13 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 8 8] D /Ey [0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] D /EG [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] D /Tm [1 1 0.8 0.8 0.8 0.8 0.8 0.8 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1.3 0 0] D /Bm [1 1 0.5 0.5 0.5 0.5 0.5 0.5 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1 0 0] D /Lm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 2 0 0 0] D /Rm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0] D /EU [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0] D /NO f D /YY [[{()}1][{()}0][{()}2]] D /ZZ [[{()}1][{()}0][{()}2]] D /Ts EZ 0 get D /TU f D /Xp t D /AU f D /SN 0 D /Cf f D /Tp f D /Fe f D /TI 1 Ts mul D /Fm 14 D /xL 71 D /xR 71 D /yL 706 D /yR 706 D /Wl 471 F div D /Wr 471 F div D /hL 621 F div D /hR 621 F div D /FE {newpath Fm neg Fm M CP BB IW Fm add Fm L IW Fm add IL Fm add neg L CP BB Fm neg IL Fm add neg L closepath} D /LA {PM 0 eq{/IW Wl D /IL hL D}{/IW Wr D /IL hR D}ie /W IW D /LL W D /LS W D TU PM 0 eq and{IW 56 F div add SA{Sf div}if 0 translate} {PM 0 eq{xL yL}{xR yR}ie translate F SA{Sf mul}if dup scale CS CF FS Cf{CA CL get VC}if /Bb f D}ie 0 0 M TF not Tc or {Cf{gsave SA{1 Sf div dup scale}if Cb VC FE fill grestore}if}if}D /Pi 0 Ts mul D /SG [0.8 1 1] D /Ab 15 D /J 0 D /Tc f D /NH 6 D /Nf f D /Pa f D /LH 1.2 D /XR f D /Xr {/pN E D ( [p ] )WB} D /Db [16#FF 16#FF 16#FF] D /Dt [16#00 16#00 16#00] D /eA f D /Fi f D /bT f D /Lc t D /Dl [16#00 16#00 16#00] D /LX f D /Br 0.25 D /IA ([IMAGE]) D /DS {/PF f D()WB NL NP()pop RC ZF} D /Gb f D /Mb t D /Hc [16#00 16#00 16#00] D /Bl 3 D /MI -15.2 D /DX (DRAFT) D /Di 0 D /Tt 113.385826771654 D /Th {()2 Al()BR ( ) 0 1 -1 H()4 FZ()ES()EH ( ) 0 2 -1 H (0author]) EH()Ea()BR()} D /tH {()0 1 -1 H (Table of Contents) EH()} D /FD 2 D /Dy 2 D /cD [16#F0 16#F0 16#F0] D /FW 0.6 D /FU [16#00 16#00 16#00] D /ET {/RM f D /A0 0 D /PN SN D /OU t D /Ou t D /W IW D /LL W D D1 Ms not TP and{Ip}if /TF f D} D %-- End of variable part -- /MySymbol 10 dict dup begin /FontType 3 D /FontMatrix [.001 0 0 .001 0 0 ] D /FontBBox [25 -10 600 600] D /Encoding 256 array D 0 1 255{Encoding exch /.notdef put}for Encoding (e) 0 get /euro put /Metrics 2 dict D Metrics begin /.notdef 0 D /euro 651 D end /BBox 2 dict D BBox begin /.notdef [0 0 0 0] D /euro [25 -10 600 600] D end /CharacterDefs 2 dict D CharacterDefs begin /.notdef {} D /euro{newpath 114 600 moveto 631 600 lineto 464 200 lineto 573 200 lineto 573 0 lineto -94 0 lineto 31 300 lineto -10 300 lineto closepath clip 50 setlinewidth newpath 656 300 moveto 381 300 275 0 360 arc stroke -19 350 moveto 600 0 rlineto -19 250 moveto 600 0 rlineto stroke}d end /BuildChar{0 begin /char E D /fontdict E D /charname fontdict /Encoding get char get D fontdict begin Metrics charname get 0 BBox charname get aload pop setcachedevice CharacterDefs charname get exec end end}D /BuildChar load 0 3 dict put /UniqueID 1 D end definefont pop /Cd {aload length 2 idiv dup dict begin {D} repeat currentdict end} D /EX {EC cvx exec} D /DU {} d /BB {pop pop}d /ie {ifelse} d /E {exch} d /M {moveto} d /R {rmoveto} d /L {lineto} d /RL {rlineto} d /CP {currentpoint} d /SW {stringwidth} d /GI {getinterval} d /PI {putinterval} d /Sg {setgray} d /LW {setlinewidth} d /S {dup () ne OU and{0 Co R AT 3 eq LB and HF not and A1 0 ne A2 0 ne or and {A2 0 32 A1 0 6 -1 roll awidthshow}{show}ie 0 Co neg R}{pop}ie OU PH 3 eq or{/Ms t D}if} D /U {OU{gsave CP currentfont /FontInfo get /UnderlinePosition get 0 E currentfont /FontMatrix get dtransform E pop add newpath M dup SW pop CJ 0 RL stroke grestore}if} D /B {OU Br 0 gt and{CP Ts neg Ts .33 mul R gsave 0 Sg CP newpath Ts Br mul 0 360 arc closepath UI 2 mod 0 eq{stroke}{fill}ie grestore M CP E Ts Br 1 add mul sub E BB /Ms t D}if}D /NP {Ms TP not or PA and OU and{TP{OR}if f1{mF k2 /mF E D /YC 0 D}if TP TU not PM 0 eq or and{showpage}if DU Ip TE not{LA}if 0.6 LW /CI 0 D /TP t D /Hs f D /hl 6 D /Hv 6 D /HI hi D /Ms f D}if Bs XO BO M} D /Np {LE sub CP E pop gt PL 0 eq and{NP}if}D /Ip {/PN PN 1 add D /Pn RM{1}{4}ie PN Ns D /PM PN SN sub 2 mod D} D /GP {E dup 3 -1 roll get PN 1 add 2 mod get dup type /integertype eq {get 0 get}{E pop}ie}d /Fc {dup 2 GP exec SW pop /S1 E D dup 1 GP exec SW pop /S2 E D 0 GP exec SW pop /S3 E D S1 0 gt{S2 2 mul S1 add S3 2 mul S1 add 2 copy lt{E}if pop}{0}ie S2 S3 add 2 copy lt{E}if pop IW .9 mul div dup 1 gt{1 E div}{pop 1}ie}D /OR {Df{Sd}if tp not{gsave SA{1 Sf div dup scale}if Fe{Cf{FU VC}if FW LW 1 setlinejoin FE stroke}if /YO {60 F div dup 40 gt{pop 40}if}D /cs CS D /cf CF D /CF 0 D /pf PF D /PF f D /Fn FN D /At AT D /AT 0 D /FN EF Hf 1 add get D Fz Fs FS ZZ Fc Fz mul Fs FS EU Hf 1 add get dup type /arraytype eq Cf and{VC}{pop 0 Sg}ie IW IL neg YO sub M ZZ 1 GP exec dup SW pop neg 0 R Sh 0 IL neg YO sub M ZZ 0 GP exec Sh ZZ 2 GP exec dup SW pop IW E sub 2 div IL neg YO sub M Sh Fz Fs FS NO{/AW IW Pn SW pop sub D AW 2 div IL neg YO sub S1 0 gt S2 AW .45 mul gt or S3 AW .45 mul gt or{Fz 2 mul sub}if M Pn Sh}if EU Hf get dup type /arraytype eq Cf and{VC}{pop 0 Sg}ie YY Fc /FN EF Hf get D Hz mul HS FS IW YO M YY 1 GP exec dup SW pop neg 0 R Sh 0 YO M YY 0 GP exec Sh YY 2 GP exec dup SW pop IW E sub 2 div YO M Sh /FN Fn D /AT At D t Pb XO SZ SL get neg R /PF pf D grestore /CF 0 D cs cf FS}if}D /Sh {dup () ne{CP Hz 4 div sub BB show CP CS add BB}{pop}ie}D /Pb {/OU E D /Ou OU D /PB t D 0 0 M Ba{/Sa save D /BP t D /Fl t D RC /PL 0 D /PH 0 D /W IW D /LE IL .7 mul D /EO 0 D SI ZF /YA 0 D /BO 0 D /C1 () D BA 0 Ts neg R Bb{Xl Yl Xh Yh}if Bb CP Sa restore M {/Yh E D /Xh E D /Yl E D /Xl E D}if /Fl t D}if BL /OU t D /HM f D /Ou t D /PB f D} D /Bs {/BP Ba not D}D /reencodeISO { dup dup findfont dup length dict begin{1 index /FID ne{D}{pop pop}ie}forall /Encoding ISOLatin1Encoding D currentdict end definefont} D /ISOLatin1Encoding [ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright /parenleft/parenright/asterisk/plus/comma/hyphen/period/slash /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] D [128/backslash 129/parenleft 130/parenright 141/circumflex 142/tilde 143/perthousand 144/dagger 145/daggerdbl 146/Ydieresis 147/scaron 148/Scaron 149/oe 150/OE 151/guilsinglleft 152/guilsinglright 153/quotesinglbase 154/quotedblbase 155/quotedblleft 156/quotedblright 157/endash 158/emdash 159/trademark] aload length 2 idiv 1 1 3 -1 roll{pop ISOLatin1Encoding 3 1 roll put}for /colorimage where{pop}{ /colorimage { pop pop /Pr E D {/Cv Pr D /Gr Cv length 3 idiv string D 0 1 Gr length 1 sub {Gr E dup /i E 3 mul D Cv i get 0.299 mul Cv i 1 add get 0.587 mul add Cv i 2 add get 0.114 mul add cvi put}for Gr} image} D }ie /pdfmark where{pop}{userdict /pdfmark /cleartomark load put}ie WF{FL{reencodeISO D}forall}{4 1 FL length 1 sub{FL E get reencodeISO D}for}ie /Symbol dup dup findfont dup length dict begin {1 index /FID ne{D}{pop pop}ie}forall /Encoding [Encoding aload pop] dup 128 /therefore put D currentdict end definefont D /SF {/CS E D SZ SL CS put FO SL FN put /YI CS LH neg mul D dup ST cvs ( ) join CS ST cvs join C1 E join ( NF ) join /C1 E D CS NF /Wf WF FN 0 gt or D /BW Wf{( ) SW pop}{0}ie D}D /NF {/cS E D /cF E D cF 0 ge{FL cF get}{cF -1 eq{/Symbol}{/MySymbol}ie}ie findfont cS scalefont setfont} D /FS {CF or /CF E D FR SL CF put CF CF 0 ge{FN 4 mul add}if E SF} D /PC {SH /BP f D fin not GL not and{NL}if /HM t D /LL LS D} D /BS {/TX E D Wf{/fin f D /CW 0 D /LK 0 D /SC 0 D /RT TX D {RT ( ) search{/NW E D pop /RT E D /WH NW SW pop D CW WH add LL gt {TX SC LK SC sub 1 sub NN GI GL{SH cF cS OC 2 copy cS ne E cF ne or{NF}{pop pop}ie}{PC /CW WH BW add D}ie /SC LK D} {GL{JC}if /CW CW WH add BW add D /HM t D}ie /GL f D /Ph f D /LK LK NW length 1 add add D}{pop exit}ie}loop /fin t D TX SC LK SC sub GI SH RT () ne{GL not{CC}if}if /LC TX length D /WH RT SW pop D CW WH add Hy{HC SW pop add}if LL gt {RT GL{SH cF cS OC 2 copy cS ne E cF ne or{NF}{pop pop}ie Hy{/Ph t D}if /LL LS D}{NL /LL LS D SH}ie} {RT PC Hy{CC}if /Ph Ph Hy or D}ie RT () ne{/GL t D /HM t D}if} {TX SW pop LL le{TX SH}{/NW () D 0 2 TX length 1 sub {/CW E D TX 0 CW GI dup SW pop LL gt{pop NW SH /HM t D NL/LL W XO sub MR sub D /CW CW 2 sub NN D /TX TX CW TX length CW sub GI D TX BS exit} {/NW E D}ie}for}ie}ie /HM t D}D /CC {C0 length 0 gt{JC}if /C0 [C1 L1 YA YB Mf NS NB TB AF Bw] D /C1 () D /L0 L1 D /YA 0 D /YB 0 D /Mf 0 D /NS 0 D /NB 0 D}D /JC {C0 aload length 0 gt{pop pop pop NB add /NB E D NS add /NS E D dup Mf gt{/Mf E D}{pop}ie dup YB gt{/YB E D}{pop}ie dup YA gt{/YA E D}{pop}ie pop C1 join /C1 E D /C0 [] D}if}D /OC {C0 length 0 gt{C1 L1 L0 sub YA YB Mf NS NB TB AF Bw GL C0 aload pop /Bw E D /AF E D /TB E D /NB E D /NS E D /Mf E D /YB E D /YA E D /C0 [] D /L1 E D /C1 E D Ph{HC SH}if NL /GL E D /Bw E D /AF E D /TB E D /NB E D /NS E D /Mf E D /YB E D /YA E D /L1 E D /LL W L1 sub XO sub MR sub WH sub D /CW 0 D C1 E join /C1 E D}if}D /BT {/LB t D dup length string copy RS dup dup () ne E ( ) ne and {/CI 0 D /LS LL D /LL W L1 sub XO sub MR sub D BS} {dup ( ) eq{/GL f D}if dup () eq L1 0 eq or{pop}{SH /BP f D /Ph f D}ie}ie /LB f D} D /BL {CP E pop XO E M} D /NL {JC /GL f D /SK W XO sub MR sub L1 sub TB{Bw add}if D /YA LF{Mf HM Fl not and PF or{LH mul}if}{0 /LF t D}ie YA 2 copy lt{E}if pop D C1 () ne{/FB YB Mf SA{Sf mul}if 4 div 2 copy lt{E}if pop D}if Fl{/Ya YA D}if CP E pop YA sub YB sub LE neg lt Fl not and PB not and{NP}if NT TL BL OU PF not and PB or{/RE L1 TB{Bw sub}if W XO sub MR sub div YA YB add LE BO add div 2 copy lt{E}if pop D RE 1 gt{BL 1 RE div dup scale}if}if AT 2 le{SK AT mul 2 div YA neg R}if AT 3 eq{0 YA neg R TB{/NB NB 1 sub D /NS NS 1 sub D}if /NB NB 1 sub NN D /A3 NS 6 mul NB add D NS NB add 0 eq {/A1 0 D /A2 0 D} {NS 0 eq{/A1 SK NB div dup J gt{pop 0}if D /A2 0 D}{J A3 mul SK lt {/A1 J D /A2 SK J NB mul sub NS div dup Ab gt{/A1 0 D pop 0}if D} {/A1 SK A3 div D /A2 A1 6 mul D}ie}ie}ie /A1 A1 NN D /A2 A2 NN D}if AT 4 eq{0 YA neg R PH 2 le{PD 0 lt{/PD L1 D}if PD M1 gt{/M1 PD D}if L1 PD sub M2 gt{/M2 L1 PD sub D}if}{DV ID 1 sub get 0 ge{Lo 0 R}if}ie}if F0 cF ne Cs cS ne or{F0 Cs NF}if /ms Ms D /Ms f D CP FB sub C1 cvx exec XO EO sub L1 add TB{BW sub}if dup LM gt{/LM E D}{pop}ie PH 0 eq PH 4 eq or Ms and{HF not{/PO t D /AH t D}if BB CP YA add E AT 3 eq LB and{A1 sub}if TB{BW sub}if E BB} {pop pop}ie Ms HM PH 3 eq and or{/BP f D /Fl f D}if /Lo 0 D /L1 0 D /F0 cF D /Cs cS D BP not{0 YB NN neg R}if OU f1 and mF not and{k2 /f1 f D}if OU PF not and PB or{RE 1 gt{RE dup scale}if}if /Ms ms Ms or D /C1 AF{(Cp )}{()}ie D /YA 0 D /YB 0 D BL AT 4 eq LB not and PH 3 ge and {ID DV length lt{DV ID get dup 0 ge{DO E sub /Lo E D /L1 Lo D}{pop}ie /ID ID 1 add D}if}if /T t D CD{/LN LN 1 add D PD}if /PD -1 D /NS 0 D /NB 0 D /TB f D /Ph f D /Mf 0 D /HM f D} D /RS {/TM E D /CN 0 D TM{10 eq{TM CN ( ) PI}if /CN CN 1 add D}forall /CN 0 D /BK HM EN and{0}{1}ie D TM {dup 32 ne{TM CN 3 2 roll put /CN CN 1 add D /BK 0 D} {pop BK 0 eq{TM CN 32 put /CN CN 1 add D}if /BK 1 D}ie}forall TM 0 CN GI dup dup () ne E ( ) ne and {dup CN 1 sub get 32 eq{/EN f D}{/EN t D}ie}if} D /join {2 copy length E length add string dup 4 2 roll 2 index 0 3 index PI E length E PI}d /WR {(\n) search{dup () ne BP not or {Li 4 le CP E pop YI Li mul add LE add 0 lt and PL 0 eq and{NP}if SH NL pop /Li Li 1 sub D WR}{pop pop WR}ie}{SH}ie /CI 0 D /BP f D} D /SH {dup dup () ne E ( ) ne and PF or CS Mf gt and{/Mf CS D}if T not Wf and{( ) E join /T t D}if dup BP{/MF CS D}if AT 3 eq{2 copy length dup 0 gt{/NB E NB add D {( ) search{/NS NS 1 add D pop pop}{pop exit}ie}loop}{pop pop}ie}if CD PD 0 lt and{dup DC search{SW pop /PD E L1 add D pop pop}{pop}ie}if 0 Np dup SW pop L1 add /L1 E D dup () ne {C1 (\() join E join (\)) join AU AF and UF or Wf and{( U ) join}if sF{( s ) join}if ( S ) join /C1 E D dup length 1 sub get 32 eq /TB E D /Bw BW D}{pop pop}ie} D /BG {AI LG BC add add 0 eq} D /ON {OU{Ty AR AI NN get dup 1 add Ln Ns Ty 2 mod 0 eq{(. )}{(\) )}ie join dup SW pop neg 0 R CP E 0 lt{0 E M}{pop}ie CP BB show /Ms t D}if} D /Ln {AR AI 3 -1 roll put}D /SP {dup CI lt BP not and{dup CI sub 0 E R /CI E D}{pop}ie} D /BN {PF{WR /HM f D}{BT NL}ie} D /NN {dup 0 lt{pop 0}if} D /h {(h) HI ST cvs join cvx exec dup 1 get E Nf{0 get E join}{pop}ie} D /H {/fn FN D /Hi E 1 add D 1 sub /HL E D /H2 HL 2 add D /GS EZ H2 get D E Tm H2 get GS mul BE dup 0 gt{1 sub}{pop EG H2 get dup 0 lt{pop AT}if}ie NA WW Np /SL SL 1 add D /FN EF H2 get D GS Ey H2 get FS EU H2 get Sc Hs not HL Hl lt and Hs HL hl lt and or Hi 0 eq or {/HI Hi D /Hs t D /hl HL D /Hv HL D}if HL Hl lt{/hi Hi D}if Nf HI 0 gt and{(h) Hi ST cvs join cvx exec 0 get WB}if /HF t D /AH f D /PO f D} D /EH {Bm H2 get GS mul BE OA /SL SL 1 sub NN D /CF 0 D /FN fn D SZ SL get FR SL get FS /HF f D /GS Ts D ()Ec} D /P {E PF{WR}{PO{EP}{BN}ie Ts 4 mul Np AE not{Tm 0 get Ts mul neg SP}if dup 0 ge AH and{Pi Pd}if}ie 1 sub dup 0 lt{pop AV AL get}if /AT E D /PO t D} D /EP {PF{WR}{BN Ts 4 mul Np}ie AE not{Bm 0 get Ts mul neg SP}if /AT AV AL get D /PO f D} D /BE {E PO{EP}{BN}ie Ts 4 mul Np neg SP} D /HR {/Aw W EO sub D /RW E dup 0 gt{Aw mul}{neg}ie dup Aw gt{pop Aw}if D /RZ E D E BN Ts neg SP 1 sub 2 div Aw RW sub mul EO add CP E pop M PF{0 Ps neg R}if 0 Np OU{gsave RZ LW Cf{Hc VC}{0 Sg}ie CP BB RW 0 RL CP BB stroke grestore}if /CI 0 D /BP f D PF not{Ts neg SP}if /Ms t D} D /AD {I NL EG 14 get dup 0 lt{pop AT}if NA /AE t D Tm 14 get Ts mul neg SP Cf{EU 14 get dup -1 eq{pop CA CL get}if Sc}if} D /DA {BN ()ES OA /AE f D ()Ec Bm 14 get Ts mul neg SP} D /PR {/MW E D /Li E D Tm 1 get Ps mul BE 0 NA /FN Fp D /PF t D SI /SL SL 1 add D /CF 0 D Ps CS mul Ts div MW WC mul CS mul Ts div dup LL gt PL 0 eq and {LL div div}{pop}ie Ey 1 get FS CP E pop LE add YI neg div cvi dup Li lt AH and{4 lt YI Li mul 5 mul LE add 0 gt or PL 0 eq and{NP}if}{pop}ie EU 1 get Sc /GS Ps D}D /RP {WR NL () /PF f D SI /FN 0 D ES Bm 1 get Ps mul neg SP OA /GS Ts D} D /SI {/XO Lm 15 get BC NN mul Lm 16 get AI UI sub NN mul add Lm 17 get UI NN mul add Lm 20 get LG NN mul add Ts mul PF{Lm 1 get Ps mul add}if EO add D /MR Rm 15 get BC NN mul Rm 16 get AI UI sub NN mul add Rm 17 get UI NN mul add Rm 20 get LG NN mul add Ts mul PF{Rm 1 get Ps mul add}if D /LL W XO sub MR sub D} D /DT {/cC E D BN /LG LG 1 sub D SI /LG LG 1 add D WW 2 div Np BL} D /DD {WB Cc 0 eq cC 0 eq and L1 0 eq or Lm 20 get Ts mul L1 sub TB{BW add}if Ts 2 div lt or NL /LF E D SI BL /cC 0 D} D /DL {Dc LG Cc put /Cc E D BG{Tm 18 get Ts mul BE}{BN}ie /LG LG 1 add D BL} D /LD {BN LG 0 gt{/LG LG 1 sub D}if /Cc Dc LG get D SI BG{()Bm 18 get Ts mul BE}if BL} D /UL {BG{Tm 17 get Ts mul BE}{BN}ie NR AI NN 0 put /UI UI 1 add D /AI AI 1 add D SI BL} D /LU {BN /UI UI 1 sub D /AI AI 1 sub D SI BG{()Bm 17 get Ts mul BE}if BL} D /OL {E BG{Tm 16 get Ts mul BE}{BN}ie TR AI NN Ty put /Ty E D NR AI NN 1 put /AI AI 1 add D SI BL 1 Ln} D /LO {BN /AI AI 1 sub D /Ty TR AI get D SI BG{()Bm 16 get Ts mul BE}if BL} D /LI {E BN -1 SP /BP f D /CI 0 D 0 Np NR AI 1 sub NN get 1 eq {dup dup 0 gt E 4 le and{/Ty E D}{pop}ie /L1 L1 Ty AR AI NN get Ns SW pop XO sub dup 0 lt{pop 0}if add D ( ON )} {pop ( B )}ie C1 E join /C1 E D CS Mf gt{/Mf CS D}if BL} D /BQ {Tm 15 get Ts mul BE /BC BC 1 add D SI BL} D /QB {Bm 15 get Ts mul BE /BC BC 1 sub D SI BL} D /Al {E EP 1 sub dup 0 lt{pop AV AL get}if NA} D /Ea {EP OA} D /WB {PF{WR}{BT}ie} D /F1 {WB /FN 0 D CS 0 FS} D /F2 {WB /FN WI D CS 0 FS} D /HY {/Hy t D WB /Hy f D} D /YH {WB} D /A {/LT E D LT 1 eq{/RN E D}if /Lh E D WB /C1 C1 ( Cp ) join D Lc AF not and{Cl Sc}if /AF t D} D /EA {Lc AF and{Ec}{WB}ie TL Pa AF and Lh 0 ne and {( \() Lh join (\)) join /AF f D WB}if /AF f D} D /TL {C1 ( Tl ) apa /C1 E D} d /apa {AF OU and Lh 0 ne LT 1 eq or and{LT 1 eq{RN ( /) E ST cvs join} {(\() Lh join (\)) join}ie E join join}{pop}ie} d /Cp {/Xc CP /Yc E D D} D /SS {Cf{dup 0 ge{EU E get dup -1 eq{pop CA CL get}if}{pop CA CL get}ie Sc} {pop}ie SZ SL get /SL SL 1 add D} D /I {WB 8 SS 1 FS} D /EM {WB 8 SS /CF CF 1 xor D 0 FS} D /BD {WB 9 SS 2 FS} D /TT {WB 10 SS /FN Fp D 0 FS} D /KB {WB 11 SS /FN Fp D 2 FS} D /CT {WB 12 SS 1 FS} D /SM {WB 13 SS /FN Fp D 0 FS} D /Q {/QL QL 1 add D QO QL 2 mod get La get join WB} D /EQ {QC QL 2 mod get La get join WB /QL QL 1 sub D} D /RO {WB -1 SS /CF 0 D 0 FS} D /SY {WB -1 SS -1 FS} D /MY {WB -1 SS -2 FS} D /ES {WB /SL SL 1 sub NN D /CF 0 D /FN FO SL get D SZ SL get FR SL get FS ()Ec}D /FZ {3 sub 1.2 E exp GS mul E WB TL /C1 C1 ( Cp ) join D /SL SL 1 add D 0 FS} D /Ef {WB TL ()ES /C1 C1 ( Cp ) join D} D /BZ {dup /Bf E D FZ}D /Sc {dup -1 ne Cf and{/CL CL 1 add D dup 0 eq{pop [0 0 0]}if dup CA E CL E put VS ( VC ) join C1 E join /C1 E D}{pop}ie} D /Ec {WB Cf{/CL CL 1 sub NN D CA CL get VS ( VC ) join C1 E join /C1 E D}if} D /VS {dup type /arraytype eq{([) E {ST cvs join ( ) join}forall (]) join}if} D /VC {{255 div}forall setrgbcolor} D /Sl {dup type /integertype ne{Ds}if /La E D WB}d /UN {WB /UF t D} D /NU {WB /UF f D} D /SE {WB /sF t D} D /XE {WB /sF f D} D /sM {/C1 C1 ( k1 ) join D}d /eM {/C1 C1 ( k2 ) join D}d /k1 {/YC CP E pop Ts add D /mF t D /f1 t D}d /k2 {gsave 3 LW -9 CP E pop Ts 0.2 mul sub M -9 YC L stroke grestore /mF f D}d /Ac {/AC E D WB}d /Ca {eA{( \()join AC join(\) )join}if WB}d /s {OU{gsave 0 CS .25 mul R dup SW pop CJ 0 RL stroke grestore}if}D /CJ {AT 3 eq LB and{E dup dup length 1 sub A1 mul E {( ) search{pop pop E A2 add E}{pop exit}ie}loop 3 -1 roll add W CP pop sub 2 copy gt{E}if pop}if}D /So {/Co E D} D /SO {C1 Yo ST cvs join ( So ) join /C1 E D (j) SW pop 2 div Pd} D /Se {E WB CS E div Pd}D /Pd {dup type /stringtype eq{SW pop}if dup /L1 E L1 add D ST cvs ( 0 R ) join C1 E join /C1 E D} D /Sp {0.35 CO} D /Sb {-0.2 CO} D /CO {OV Io Yo put /Yo E CS mul Yo add D /Io Io 1 add D -1.5 Io mul 3 add FZ SO CS Yo add dup YA gt{/YA E D}{pop}ie Yo neg dup YB gt{/YB E D}{pop}ie} D /Es {ES /Io Io 1 sub NN D /Yo OV Io get D SO} D /SB {/N2 0 D 0 1 NI{/N E D{IX N2 get 0 lt{/N2 N2 1 add D}{exit}ie}loop /K WS N get FC N get mul D /NY AY N2 get D /BV NY array D 0 1 NY 1 sub{/TM K string D currentfile TM readhexstring pop pop BV E TM put} for BM N BV put /N2 N2 1 add D}for} D /IC [{/MA E D /MB 0 D}{2 div /MA E D /MB MA D}{/MB E CS sub D /MA CS D} {pop /MA YS AB mul D /MB 1 AB sub YS mul D}{pop /MA 0 D /MB 0 D}] D /IP {BV N get /N N 1 add D} D /II {/K E D IX K get 0 lt{/EC E D}if /TY E D TY 4 eq{/Y E D /X E D}if TY 3 eq{/AB E D}if /XW AX K get D /YW AY K get D /IS SG IT K get get D /XS XW IS mul D /YS YW IS mul D YS IC TY get exec /MA MA Fl not{3 add}if D} D /IM {II /ty TY D /xs XS D /ys YS D /ya YA D /yb YB D /ma MA D /mb MB D /k K D /ec EC D /BP f D /CI 0 D WB TL L1 xs add dup XO add MR add W gt {pop /ma ma Fl{3 add}if D NL /YA ma D /YB mb D /YS ys D /L1 xs D} {/L1 E D ma YA gt{/YA ma D}if mb YB gt{/YB mb D}if}ie /TB f D OU{CP E pop YS sub LE neg lt Fl not and PB not and{NP /YA ma D /YB mb D}if /BP f D ty ST cvs ( ) join IX k get 0 lt{(\() join ec join (\) ) join}if k ST cvs join ty 3 eq{AB ST cvs ( ) join E join}if ty 4 eq{X ST cvs ( ) join Y ST cvs join ( ) join E join}if C1 E join ( DI ) join FP 2 eq FP 1 eq AF and or{( FM ) join}if ( Il Cp ) apa /C1 E D /EN f D}if /HM t D /T f D} D /DI {II /Xc CP /Yc E D D /YN YW neg D /HM t D /CI 0 D /K2 IX K get D gsave TY 4 eq{OX X IS mul add OY FY add YS sub Y IS mul sub} {/FY YS D CP MB sub 2 copy /OY E D /OX E D}ie translate K2 0 ge{/DP AZ K2 get D /BV BM K2 get D XS YS scale /N 0 D XW YW DP [XW 0 0 YN 0 YW] {IP} FC K2 get 1 eq{image}{f 3 colorimage}ie} {EX}ie grestore XS 0 R /Ms t D} D /FM {gsave 0 Sg CP MB sub translate XS neg 0 M 0 YS RL XS 0 RL 0 YS neg RL XS neg 0 RL stroke grestore} D /NA {/AT E D /AL AL 1 add D AV AL AT put} D /OA {AL 0 gt{/AL AL 1 sub D /AT AV AL get D}if} D /D1 {/BR {CP E pop E BN Mb{CP E pop eq{0 YI R}if}{pop}ie} D /Sn {OU{C1 E ST cvs join ( Ld ) join /C1 E D}{pop}ie} D} D /D1 {/BR {BN} D /Sn {OU {C1 E ST cvs join ( Ld ) join /C1 E D} {pop} ie} D} D /TC {/TF t D /ML 0 D HN{SW pop dup ML gt{/ML E D}{pop}ie}forall NP /RM RM not D RC /OU Tc D Ep /PN 0 D Ms not TP and{Ip}if /W IW ML sub Ts sub D /A0 0 D TH{/BR {( ) join BT} D /Sn {pop} D /Au () D}if} D /TN {0 eq{E EA PF HF or not XR and{HN E get Xr}{pop}ie} {OU{Tn 0 ge{() BN}if /Tn E D}{pop}ie WB}ie} D /NT {OU LB not and Tn 0 ge and{PL 0 eq{Ms not{CS CF FS}if CP dup /y E YA sub D W 9 sub CS -1.8 mul XO L1 add 2 add{y M (.) show}for HN Tn get dup SW pop IW E sub y M show CP BB M}if /Tn -1 D}if} D /Ld {/DN E D HN DN Pn put [/View [/XYZ -4 Fl{PS}{CP YA add US E pop}ie null] /Dest DN ST cvs cvn /DEST pdfmark} D /C {ND 1 eq{1 sub}if TI mul /XO E D NL Nf not{pop()}if 0 3 -1 roll 1 A} D /OP {BP not{NP}if PN 2 mod 0 eq{/Ms t D NP}if}D /Ep {Xp PN 2 mod 0 eq and OU and{/Pn (-) D showpage /PM 1 D LA}if}D /Dg [73 86 88 76 67 68 77] D /Rd [0 [1 1 0][2 1 0][3 1 0][2 1 1][1 1 1][2 2 1][3 3 1][4 4 1][2 1 2]] D /Ns {/m E D /c E 32 mul D /j m 1000 idiv D /p j 12 add string D c 96 le m 0 gt and{c 32 le {/i 0 D /d 77 D /l 100 D /m m j 1000 mul sub D j -1 1 {pop p i d c add put /i i 1 add D}for 4 -2 0 {/j E D /n m l idiv D /m m n l mul sub D /d Dg j get D n 0 gt {/x Rd n get D x 0 get -1 1 {pop p i d c add put /i i 1 add D}for p i x 1 get sub Dg x 2 get j add get c add put}if /l l 10 idiv D }for p 0 i GI} {/i ST length 1 sub D m {1 sub dup 0 ge{dup 26 mod c add 1 add ST i 3 -1 roll put 26 idiv dup 0 eq{pop exit}if}if /i i 1 sub D}loop ST i ST length i sub GI}ie} {m p cvs}ie} D /US {matrix currentmatrix matrix defaultmatrix matrix invertmatrix matrix concatmatrix transform} D /GB {Gb{US}if}D /Tl {/Rn E D Xc CP pop ne{ [/Rect [Xc 1 sub Yc cS 0.25 mul sub GB CP E 1 add E cS 0.85 mul add GB] /Subtype /Link /Border [0 0 Cf Lc and LX and AU or{0}{1}ie] Rn type /nametype eq {/Dest Rn}{/Action [/Subtype /URI /URI Rn] Cd}ie /ANN pdfmark}if} D /Il {/Rn E D [/Rect [Xc Yc GB Xc XS add Yc YS add GB] /Subtype /Link /Border [0 0 0] Rn type /nametype eq{/Dest Rn} {/Action [/Subtype /URI /URI Rn] Cd}ie /ANN pdfmark} D /XP {[{/Z Bz 2 div D Z 0 R Z Z RL Z neg Z RL Z neg Z neg RL Z Z neg RL Fi cH 1 eq and{fill}if} {Bz 0 RL 0 Bz RL Bz neg 0 RL 0 Bz neg RL Fi cH 1 eq and{fill}if} {0 -5 R Bz 0 RL 0 21 RL Bz neg 0 RL 0 -21 RL}]} D /MS {/Sm E D WB}D /O {BN()0 Sm BX} D /BX {/Bt E D Bt 2 lt{/Ch E D CS 0.8 mul}{11 mul}ie W XO sub MR sub 2 copy gt{E}if pop /HZ E D Bt 2 eq{Fi not{pop()}if ( )E join /Ft E D TT /PF t D /MW 1 D /Li 1 D /Fw Ft SW pop D Fw HZ gt{/HZ Fw 8 add D}if HZ ST cvs( )join}{WB Ch ST cvs( )join}ie L1 HZ add XO add MR add W gt{NL}if Bt 2 eq{Ft ES Fw neg HM{CS sub}if Pd}if Bt ST cvs join( Bx )join Bt 2 eq HM and{CS Pd}if C1 E join /C1 E D /L1 L1 HZ add D /T f D ( ) Pd /PF f D Bt 2 lt{YA CS .8 mul lt{/YA CS .8 mul D}if} {YB 5 lt{/YB 5 D}if YA 21 lt{/YA 21 D}if}ie /CI 0 D} D /Bx {dup 2 eq{E /Bz E D}{E /cH E D /Bz CS .8 mul D}ie OU {gsave 0 Sg XP E get exec stroke grestore}{pop}ie Bz 0 R /Ms t D}D /SD {FD 4 mul Dy add DZ NF newpath 0 0 M DX t charpath pathbbox 3 -1 roll sub /DY E D E dup /X1 E D sub WM mul WX DY mul add WM DG mul E div /DF E D /DR WX DF mul DY mul WM div 2 div D} d /Sd {gsave 0 IL Di mul neg translate IL IW atan Di 0 eq{neg}if rotate FD 4 mul Dy add DZ NF DR X1 sub DY 2 div neg M cD VC DX show grestore} d /Pt {/tp t D Tp{NP /Pn (TP) D 0 Tt neg R Th BN NP Ep ET RC ZF}if /tp f D} D /RC {/AI 0 D /LG 0 D /BC 0 D /UI 0 D /PF f D /Cc 0 D /cC 0 D /Dc 10 array D /NR [0 1 9{pop 0}for] D /La Ds D /AR 10 array D /TR 10 array D /AV 30 array D SI /AL -1 D /AT A0 D AT NA /OV 9 array D /Yo 0 D /Co 0 D /Io 0 D /Hy f D /Ph f D /CL -1 D Ct Sc}D /ZF {/FR [0 1 30{pop 0}for] D /SZ [0 1 30{pop 0}for] D /FO [0 1 30{pop 0}for] D /SL 0 D /CF 0 D /FN 0 D 0 Ts SF}D /QO [[(\234)(\233)(\253\240)(\232)(\273)(\253)][(')(`)(\253\240)(\231)(\273)(\253)]] D /QC [[(\234)(\234)(\240\273)(\233)(\253)(\273)][(')(')(\240\273)(`)(\253)(\273)]] D /Hf EF length 2 sub D /Hz EZ Hf get D /HS Ey Hf get D /Fz EZ Hf 1 add get D /Fs Ey Hf 1 add get D /LE IL D /Ps EZ 1 get D /Fp EF 1 get D /XO 0 D /YI 0 D /CI 0 D /FP 0 D /WW Ts 7 mul D /Mf 0 D /YA 0 D /YB 0 D /Cs Ts D /GS Ts D /F0 0 D /NS 0 D /NB 0 D /N 0 D /C0 [] D /C1 () D /Lo 0 D /L1 0 D /LM 0 D /PH 0 D /EC 0 D /Lh 0 D /LT 0 D /CH 1 string D /ST 16 string D /CA 9 array D /HC (\255) D /HM f D /PF f D /EN f D /TB f D /UF f D /sF f D /AE f D /AF f D /BP t D /CD f D /PA t D /GL f D /T t D /HF f D /AH f D /SA f D /PB f D /f1 f D /mF f D /OX 0 D /OY 0 D /FY 0 D /EO 0 D /FB 0 D /PL 0 D /Bw 0 D /PD -1 D /TP f D /tp f D /TH t D /Ty 4 D /Tn -1 D /Fl t D /LB t D /PM 1 D /Ms f D /Ba f D /Bb f D /Hl 3 D /hl 6 D /Hv 6 D /Hs f D /HI 0 D /hi 0 D /PO t D /TE f D /LF t D /BO 0 D /Sm 1 D /Bf 3 D /A1 0 D /A2 0 D /Ds 1 D /QL -1 D /Cb Db D /Ct Dt D /Cl Dl D /AX [24] D /AY [24] D /IX [0] D /IT [0] D /AZ [8] D /WS [24] D /FC [3] D /NI 0 D /BM 1 array D SB ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffe7e7e7c6c6c6a5a5a5949494a5a5a5a5a5a5a5a5a5949494a5a5a5 cececef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffff7f7f7bdbdbd8c8c8ca5a584dede31efef10efef10 efef10efef10efef10bdbd9c9c9c7b8c8c8ccececeffffffffffffffffff ffffffffffffffffffffffffffffffffffffe7e7e7949494a5a563e7e763 ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00d6d652 9c9c5aa5a5a5f7f7f7fffffffffffffffffffffffffffffffffffff7f7f7 949494bdbd84efef10ffff00ffff00ffff00ffff00ffff00ffff00ffff00 ffff00ffff00ffff00ffff00efef10adad7bb5b5b5ffffffffffffffffff fffffffffffff7f7f7949494bdbd84ffff00ffff00ffff00ffff00ffff00 efef008c8c39737352dede00ffff00ffff00ffff00ffff00ffff00ffff00 9c9c63b5b5b5ffffffffffffffffffffffffcececeadad6befef10ffff00 ffff00ffff00ffff00ffff008c8c391000001000005a5a29efef10ffff00 ffff00ffff00ffff00ffff00efef10a5a563dededeffffffffffffe7e7e7 a5a59ce7e763ffff00ffff00ffff00ffff00ffff00ffff00636363100000 100000393939dede31ffff00ffff00ffff00ffff00ffff00ffff00d6d652 adada5ffffffffffffcececeadad8cffff00ffff00ffff00ffff00ffff00 ffff00ffff00848484100000100000525252efef31ffff00ffff00ffff00 ffff00ffff00ffff00ffff009c9c7be7e7e7ffffffa5a5a5dede39ffff00 ffff00ffff00ffff00ffff00ffff00ffff00adad21100000100000636318 ffff10ffff00ffff00ffff00ffff00ffff00ffff00ffff00adad8ccecece e7e7e7a5a5a5efef10ffff00ffff00ffff00ffff00ffff00ffff00ffff00 bdbd081010101000008c8c18ffff00ffff00ffff00ffff00ffff00ffff00 ffff00ffff00e7e708949494e7e7e7a5a5a5efef10ffff00ffff00ffff00 ffff00ffff00ffff00ffff00d6d618292929101010adad39ffff00ffff00 ffff00ffff00ffff00ffff00ffff00ffff00e7e708949494e7e7e7a5a5a5 efef10ffff00ffff00ffff00ffff00ffff00ffff00ffff00dede21393939 101010b5b54affff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00 e7e708949494e7e7e7a5a5a5efef10ffff00ffff00ffff00ffff00ffff00 ffff00ffff00e7e729424242181818d6d663ffff00ffff00ffff00ffff00 ffff00ffff00ffff00ffff00e7e708949494e7e7e7a5a5a5efef10ffff00 ffff00ffff00ffff00ffff00ffff00ffff00efef428c8c8c6b6b6be7e77b ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00e7e708a5a5a5 ffffffb5b5b5dede31ffff00ffff00ffff00ffff00ffff00ffff00ffff00 e7e7318c8c39737352d6d618ffff10ffff00ffff00ffff00ffff00ffff00 ffff00ffff00adad8ccececeffffffd6d6d6a5a584ffff00ffff00ffff00 ffff00ffff00ffff00ffff007b7b7b100000100000525252e7e731ffff00 ffff00ffff00ffff00ffff00ffff00efef42a5a594e7e7e7fffffff7f7f7 a5a59cd6d652ffff00ffff00ffff00ffff00ffff00ffff00737352100000 100000424231dede21ffff00ffff00ffff00ffff00ffff00ffff08bdbd5a b5b5b5ffffffffffffffffffd6d6d6a5a563efef10ffff00ffff00ffff00 ffff00ffff00dede006b6b42636352bdbd08ffff00ffff00ffff00ffff00 ffff00ffff00d6d66ba5a5a5efefefffffffffffffffffffffffffa5a5a5 adad7bffff00ffff00ffff00ffff00ffff00ffff00ffff21efef31ffff00 ffff00ffff00ffff00ffff00ffff00ffff008c8c8ccececeffffffffffff ffffffffffffffffffffffffa5a5a59c9c63efef10ffff00ffff00ffff00 ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff08d6d66b848484 cececeffffffffffffffffffffffffffffffffffffffffffffffffa5a5a5 9c9c5ac6c65aefef42ffff00ffff00ffff00ffff00ffff00ffff00ffff00 efef42b5b552949494c6c6c6ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffd6d6d6a5a5a58c8c7badad8ce7e708e7e708 e7e708e7e708cece739c9c7b8c8c7badadade7e7e7ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff e7e7e7c6c6c6949494949494949494949494a5a5a5cececee7e7e7ffffff ffffffffffffffffffffffffffffffffffff [/Creator (html2ps version 1.0 beta5) /Author () /Keywords () /Subject () /Title (Guide pratique du Plug-and-Play) /DOCINFO pdfmark /ND 1 D /HN [1 1 251{pop (??)}for] D /h0 [()(Table of Contents)] D /h1 [(0.1\240\240)(Guide pratique du Plug-and-Play)] D /h2 [(0.1.1\240\240)( Adaptation fran\347aise du Plug-and-Play HOWTO )] D /h3 [(0.1.2\240\240)(David S. Lawyer)] D /h4 [(0.1.3\240\240)(Guillaume Lelarge)] D /h5 [(0.1.4\240\240)(Jean-Philippe Gu\351rard)] D /h6 [(0.2\240\240)(1.\240Introduction)] D /h7 [(0.2.1\240\240)(1.1.\240Droits d'utilisation, avertissements et remerciements)] D /h8 [(0.2.1.1\240\240)(1.1.1.\240Copyright)] D /h9 [(0.2.1.2\240\240)(1.1.2.\240Droits d'utilisation)] D /h10 [(0.2.1.3\240\240)(1.1.3.\240Avertissements)] D /h11 [(0.2.1.4\240\240)(1.1.4.\240Marques d\351pos\351es)] D /h12 [(0.2.1.5\240\240)(1.1.5.\240Remerciements)] D /h13 [(0.2.2\240\240)(1.2.\240Plans futurs\240: vous pouvez aider)] D /h14 [(0.2.3\240\240)(1.3.\240Nouvelles versions de ce guide pratique)] D /h15 [(0.2.4\240\240)(1.4.\240Nouveaut\351s des derni\350res versions)] D /h16 [(0.2.5\240\240)(1.5.\240Introduction g\351n\351rale. Avez-vous besoin de ce guide pratique\240?)] D /h17 [(0.3\240\240)(2.\240Ce que PnP doit faire\240: allouer des \253\240ressources bus\240\273)] D /h18 [(0.3.1\240\240)(2.1.\240En quoi consiste le Plug-and-Play \(PnP\)\240?)] D /h19 [(0.3.2\240\240)(2.2.\240P\351riph\351riques mat\351riels et la communication avec ces derniers)] D /h20 [(0.3.3\240\240)(2.3.\240Adresses)] D /h21 [(0.3.4\240\240)(2.4.\240Adresses d'entr\351es/sorties \(principes relatifs \340 d'autres ressources\))] D /h22 [(0.3.5\240\240)(2.5.\240Plages m\351moire)] D /h23 [(0.3.6\240\240)(2.6.\240IRQ - un aper\347u)] D /h24 [(0.3.7\240\240)(2.7.\240DMA \(acc\350s direct \340 la m\351moire\) ou ma\356trise du bus)] D /h25 [(0.3.8\240\240)(2.8.\240Canaux DMA \(non pas pour le bus PCI\))] D /h26 [(0.3.9\240\240)(2.9.\240\253\240Ressources\240\273 du p\351riph\351rique et du pilote)] D /h27 [(0.3.10\240\240)(2.10.\240Les ressources sont limit\351es)] D /h28 [(0.3.10.1\240\240)(2.10.1.\240L'ordinateur id\351al)] D /h29 [(0.3.10.2\240\240)(2.10.2.\240L'ordinateur r\351el)] D /h30 [(0.4\240\240)(3.\240Deuxi\350me introduction au Plug-and-Play \(PnP\))] D /h31 [(0.4.1\240\240)(3.1.\240Introduction \340 PnP)] D /h32 [(0.4.2\240\240)(3.2.\240Comment fonctionne le PnP \(explication simplifi\351e\))] D /h33 [(0.4.3\240\240)(3.3.\240D\351marrer le PC)] D /h34 [(0.4.4\240\240)(3.4.\240Les bus)] D /h35 [(0.4.5\240\240)(3.5.\240Comment Linux g\350re-t-il le PnP)] D /h36 [(0.4.6\240\240)(3.6.\240Probl\350mes avec Linux PnP)] D /h37 [(0.5\240\240)(4.\240Configurer un BIOS PnP)] D /h38 [(0.5.1\240\240)(4.1.\240Avez-vous un syst\350me d'exploitation PnP\240?)] D /h39 [(0.5.1.1\240\240)(4.1.1.\240Linux avant le noyau 2.4)] D /h40 [(0.5.1.2\240\240)(4.1.2.\240Windows 2000 et XP)] D /h41 [(0.5.1.3\240\240)(4.1.3.\240MS Windows 95, 98 \(et Me\240?\))] D /h42 [(0.5.2\240\240)(4.2.\240Affecter les ressources par le BIOS\240?)] D /h43 [(0.5.3\240\240)(4.3.\240R\351initialiser la configuration)] D /h44 [(0.6\240\240)(5.\240G\351rer les cartes PnP)] D /h45 [(0.6.1\240\240)(5.1.\240Introduction \340 la gestion des p\351riph\351riques PnP)] D /h46 [(0.6.2\240\240)(5.2.\240Configuration du pilote de p\351riph\351rique, r\351servation des ressources)] D /h47 [(0.6.3\240\240)(5.3.\240/sys\240: interface de configuration pour l'utilisateur)] D /h48 [(0.6.4\240\240)(5.4.\240Configuration du BIOS)] D /h49 [(0.6.4.1\240\240)(5.4.1.\240Introduction \340 l'utilisation de la configuration PnP faite par le BIOS)] D /h50 [(0.6.4.2\240\240)(5.4.2.\240La base de donn\351es ESCD du BIOS)] D /h51 [(0.6.4.3\240\240)(5.4.3.\240Utiliser Windows pour configurer l'ESCD)] D /h52 [(0.6.4.4\240\240)(5.4.4.\240Ajouter un nouveau p\351riph\351rique \(sous Linux ou Windows\))] D /h53 [(0.6.5\240\240)(5.5.\240ISA seulement\240: D\351sactiver PnP\240?)] D /h54 [(0.6.6\240\240)(5.6.\240Bus ISA\240: Isapnp \(outil faisant partie d'isapnptools\))] D /h55 [(0.6.7\240\240)(5.7.\240Les utilitaires PCI)] D /h56 [(0.6.8\240\240)(5.8.\240Configuration de Windows)] D /h57 [(0.6.9\240\240)(5.9.\240Documents/Logiciels PnP)] D /h58 [(0.7\240\240)(6.\240Indiquer au pilote la configuration\240??)] D /h59 [(0.7.1\240\240)(6.1.\240Introduction)] D /h60 [(0.7.2\240\240)(6.2.\240Exemple de pilote de port s\351rie)] D /h61 [(0.8\240\240)(7.\240Comment puis-je trouver les p\351riph\351riques et comment sont-ils configur\351s\240?)] D /h62 [(0.8.1\240\240)(7.1.\240La recherche des p\351riph\351riques et la d\351couverte de la configuration sont li\351s)] D /h63 [(0.8.2\240\240)(7.2.\240Les p\351riph\351riques pourraient avoir deux \253\240configurations\240\273)] D /h64 [(0.8.3\240\240)(7.3.\240Trouver le mat\351riel)] D /h65 [(0.8.4\240\240)(7.4.\240Messages de d\351marrage)] D /h66 [(0.8.5\240\240)(7.5.\240Le r\351pertoire /proc)] D /h67 [(0.8.6\240\240)(7.6.\240Le r\351pertoire /sys)] D /h68 [(0.8.7\240\240)(7.7.\240Inspection du bus PCI)] D /h69 [(0.8.8\240\240)(7.8.\240Introduction au bus ISA)] D /h70 [(0.8.9\240\240)(7.9.\240Cartes ISA PnP)] D /h71 [(0.8.10\240\240)(7.10.\240Bus LPC)] D /h72 [(0.8.11\240\240)(7.11.\240X-bus)] D /h73 [(0.8.12\240\240)(7.12.\240Cartes non PnP)] D /h74 [(0.8.13\240\240)(7.13.\240Cartes non PnP avec cavaliers)] D /h75 [(0.8.14\240\240)(7.14.\240Cartes non PnP et sans cavaliers)] D /h76 [(0.8.15\240\240)(7.15.\240Outils pour d\351tecter ou configurer le mat\351riel)] D /h77 [(0.8.16\240\240)(7.16.\240Outils pour d\351tecter et configurer un type de mat\351riel)] D /h78 [(0.8.17\240\240)(7.17.\240Utilisez MS Windows)] D /h79 [(0.9\240\240)(8.\240Interruptions PCI)] D /h80 [(0.9.1\240\240)(8.1.\240Introduction)] D /h81 [(0.9.2\240\240)(8.2.\240Historique\240: des interruptions ISA aux PCI)] D /h82 [(0.9.3\240\240)(8.3.\240Contr\364leur avanc\351 d'interruptions programm\351es \(APIC, acronyme de Advanced Programmable Interrupt Controller\))] D /h83 [(0.9.4\240\240)(8.4.\240Interruptions signal\351es par message \(MSI\))] D /h84 [(0.9.5\240\240)(8.5.\240Partage des interruptions PCI)] D /h85 [(0.9.6\240\240)(8.6.\240Recherche dans les tables de routage)] D /h86 [(0.9.7\240\240)(8.7.\240Pour plus d'informations)] D /h87 [(0.10\240\240)(9.\240Lier les interruptions PCI)] D /h88 [(0.11\240\240)(10.\240PnP pour les p\351riph\351riques externes et ajout\351s)] D /h89 [(0.11.1\240\240)(10.1.\240Bus USB)] D /h90 [(0.11.2\240\240)(10.2.\240Hot Plug)] D /h91 [(0.11.3\240\240)(10.3.\240Hot Swap)] D /h92 [(0.11.4\240\240)(10.4.\240PnP d\351tecte les p\351riph\351riques connect\351s aux ports s\351ries)] D /h93 [(0.12\240\240)(11.\240Messages d'erreurs)] D /h94 [(0.12.1\240\240)(11.1.\240Unexpected Interrupt \(Interruption inattendue\))] D /h95 [(0.12.2\240\240)(11.2.\240Erreur de configuration Plug and Play \(BIOS Dell\))] D /h96 [(0.12.3\240\240)(11.3.\240isapnp: Write Data Register 0xa79 already used \(\340 partir des journaux\))] D /h97 [(0.12.4\240\240)(11.4.\240Impossible d'allouer la r\351gion \(PCI\))] D /h98 [(0.13\240\240)(12.\240Partage et conflit d'interruption)] D /h99 [(0.13.1\240\240)(12.1.\240Introduction)] D /h100 [(0.13.2\240\240)(12.2.\240Vrai conflit d'interruption)] D /h101 [(0.13.3\240\240)(12.3.\240Aucune interruption disponible)] D /h102 [(0.14\240\240)(13.\240Annexe)] D /h103 [(0.14.1\240\240)(13.1.\240Universal Plug and Play \(UPnP\))] D /h104 [(0.14.2\240\240)(13.2.\240D\351tails des adresses)] D /h105 [(0.14.2.1\240\240)(13.2.1.\240Plages d'adresses)] D /h106 [(0.14.2.2\240\240)(13.2.2.\240Plage d'adresses)] D /h107 [(0.14.2.3\240\240)(13.2.3.\240Espace d'adresses pour la configuration PCI)] D /h108 [(0.14.2.4\240\240)(13.2.4.\240V\351rification de la plage \(test ISA pour les conflits d'adresses d'entr\351es/sorties\))] D /h109 [(0.14.2.5\240\240)(13.2.5.\240Communiquer directement via la m\351moire)] D /h110 [(0.14.3\240\240)(13.3.\240Adresses de configuration du bus ISA \(Port de lecture et c\346tera\))] D /h111 [(0.14.4\240\240)(13.4.\240D\351tails sur les interruptions)] D /h112 [(0.14.4.1\240\240)(13.4.1.\240Interruptions s\351rialis\351es)] D /h113 [(0.14.4.2\240\240)(13.4.2.\240DMA)] D /h114 [(0.14.4.3\240\240)(13.4.3.\240Interruptions logicielles)] D /h115 [(0.14.4.4\240\240)(13.4.4.\240Interruptions mat\351rielles)] D /h116 [(0.14.5\240\240)(13.5.\240Comment le pilote de p\351riph\351rique r\351cup\350re son interruption)] D /h117 [(0.14.6\240\240)(13.6.\240Isolation ISA)] D /h118 [(0.14.7\240\240)(13.7.\240Ma\356trise du bus et ressources DMA)] D /h119 [(0.14.8\240\240)(13.8.\240Historique et obsolescence)] D /h120 [(0.14.8.1\240\240)(13.8.1.\240Pilote son OSS-Lite)] D /h121 [(0.14.8.2\240\240)(13.8.2.\240ALSA \(Architecture son avanc\351e pour Linux\) en l'an 2000)] D /h122 [(0.14.8.3\240\240)(13.8.3.\240Notes sur MS Windows Notes)] D /h123 [(0.15\240\240)(A.\240Adaptation fran\347aise)] D /h124 [(0.16\240\240)(1.\240Traduction)] D /h125 [(0.17\240\240)(2.\240Pr\351paration de la publication)] D /Hr [-126 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250]D /HV [1 2 3 3 3 3 2 3 4 4 4 4 4 3 3 3 3 2 3 3 3 3 3 3 3 3 3 3 4 4 2 3 3 3 3 3 3 2 3 4 4 4 3 3 2 3 3 3 3 4 4 4 4 3 3 3 3 3 2 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 2 3 3 3 3 2 3 3 3 3 2 3 3 3 2 3 3 4 4 4 4 4 3 3 4 4 4 4 3 3 3 3 4 4 4 2 2 2]D /Cn [17 4 0 0 0 0 5 5 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 2 0 0 6 0 0 0 0 0 0 3 3 0 0 0 0 0 9 0 0 0 4 0 0 0 0 0 0 0 0 0 2 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 4 0 0 0 0 4 0 0 0 0 3 0 0 0 8 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 0 3 0 0 0 0 0 0]D Hr length 0 gt{[/PageMode /UseOutlines /DOCVIEW pdfmark}if /Hn 1 D 0 1 Hr length 1 sub{ /Bn E D [Cn Bn get dup 0 gt{/Count E HV Bn get Bl ge{neg}if}{pop}ie /Dest Hr Bn get dup abs ST cvs cvn E 0 ge{(h)Hn ST cvs join cvx exec dup 1 get E Nf{0 get E join}{pop}ie /Hn Hn 1 add D}{()}ie /Title E dup length 255 gt{0 255 getinterval}if /OUT pdfmark}for ZF /FN Fp D Ps 0 FS /WC Wf{( )}{}ie SW pop D ET RC ZF /Df f D /R1 (http://www.tldp.org/mirrors.html) D /R2 (http://www.traduc.org/docs/howto/lecture/Plug-and-Play-HOWTO.html) D /R3 (http://cvsview.tldp.org/index.cgi/LDP/howto/linuxdoc/Plug-and-Play-HOWTO.sgml.) D /R4 (http://www.linuxgazette.com/issue38/blanchard.html) D /R5 (http://www.astarte.free-online.co.uk/) D /R6 (http://www.traduc.org/docs/howto/lecture/BootPrompt-HOWTO.html) D /R7 (http://home.t-online.de/home/gunther.mayer/lsescd/) D /R8 (http://www.traduc.org/docs/howto/lecture//BootPrompt-HOWTO.html/) D /R9 (http://www.roestock.demon.co.uk/isapnptools/) D /R10 (http://www.microsoft.com/hwdev/tech/pnp/default.asp) D /R11 (http://www.traduc.org/docs/howto/lecture/Serial-Programming-HOWTO.html) D /R12 (http://people.freebsd.org/~jhb/papers/bsdcan/2007/article/article.html) D /R13 (http://www.microsoft.com/whdc/system/sysperf/apic.mspx) D /R14 (http://www.cs.umbc.edu/~dchakr1/papers/mcommerce.html) D /R15 (http://sourceforge.net/projects/upnp/) D /TS { tables E get /table E D table aload pop /rdesc E D /cdesc E D /tdesc E D tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D /flow E D /clear E D /tclass E D pop pop /w W D /eps 0.1 D /OU f D /PL 1 D /FN EF 21 get D EZ 21 get Ey 21 get FS 0 1 1{ /pass E D 0 1 nrow{ /irow E D /cells rdesc irow get 6 get D 0 1 ncol{ /icol E D /cell cells icol get D cell 0 ne{ cell aload pop /ang E D /CB E D pop pop pop /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D /cmin E D /proc E D rspan 0 eq{/rspan nrow irow sub 1 add D}if cspan 0 eq{/cspan ncol icol sub 1 add D}if pass 0 eq cspan 1 eq and pass 1 eq cspan 1 gt and or{ /W 1e5 D /LL W D /PH 1 D ctype 1 eq{() BD}if RC align NA AT 4 eq{/CD t D /DC dp D /LN 0 D /M1 0 D /M2 0 D}{/CD f D}ie 0 0 M /LM 0 D proc exec BN AT 4 eq{ LN array astore cell 15 3 -1 roll put cdesc icol get dup dup 5 get M1 lt{5 M1 put}{5 get /M1 E D}ie dup 6 get M2 lt{6 M2 put}{6 get /M2 E D}ie /LM M1 M2 add D }if /CD f D ang 0 ne{/LM CP E pop neg D}if /thiswid LM left add right add eps add D /oldmin 0 D /oldmax 0 D 0 1 cspan 1 sub{ icol add cdesc E get dup 2 get /oldmax E oldmax add D 1 get /oldmin E oldmin add D }for thiswid oldmax ge{ 0 1 cspan 1 sub{ icol add cdesc E get dup 2 E 2 get oldmax 0 eq {pop thiswid cspan div}{thiswid mul oldmax div}ie put }for }if nowrap 1 eq{ thiswid oldmin ge{ 0 1 cspan 1 sub{ icol add cdesc E get dup 1 E 1 get oldmin 0 eq {pop thiswid cspan div}{thiswid mul oldmin div}ie put }for }if }{ /W 0 D /LL W D /PH 2 D ctype 1 eq{() ES () BD}if 0 0 M /LM 0 D RC proc exec BN /thiswid LM left add right add eps add D thiswid oldmin ge{ 0 1 cspan 1 sub{ icol add cdesc E get dup 1 E 1 get oldmin 0 eq {pop thiswid cspan div}{thiswid mul oldmin div}ie put }for }if }ie ctype 1 eq{() ES}if }if }if }for }for }for /tmin 0 D /tmax 0 D 0 1 ncol{ cdesc E get dup 1 get E 2 get 2 copy gt{pop dup}if tmax add /tmax E D tmin add /tmin E D }for twid 0 lt{twid neg IW gt{IW neg}{twid}ie /twid E D}if tdesc 0 twid neg tmin 2 copy lt{E}if pop put tdesc 1 twid neg tmax 2 copy lt{E}if pop put /W w D /LL W D /OU t D /PH 0 D /PL 0 D } D /PT { /PL PL 1 add D tables E get /table E D Tm 21 get Ts mul BE PL 2 ge{save}if /SL SL 1 add D /FN EF 21 get D EZ 21 get Ey 21 get FS table aload pop /rdesc E D /cdesc E D /tdesc E D tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D /flow E D /clear E D /tclass E D /tmax E D /tmin E D /w W D /xo XO D /mr MR D /ll LL D /lg LG D /ai AI D /bc BC D /nr NR D /ar AR D /tr TR D /ui UI D /ph PH D /a0 A0 D /pf PF D /at AT D /av AV D /al AL D /Le LE D /la La D talign 0 lt{/talign AL 0 gt{AV AL get}{A0 2 le{A0}{0}ie}ie D}if ph 1 eq ph 2 eq or{ NL ph 1 eq{tmax}{tmin}ie dup XO add LM gt{/LM E XO add D}{pop}ie LM E }{ /PH 3 D /LE 1e5 D RC %ZF border 0 gt{/border 1 D}if /twidth 0 D /avail W xo sub D twid 0 eq{0 1 ncol{cdesc E get dup 2 get E 3 get dup 0 gt{div neg dup twid lt {/twid E D}{pop}ie}{pop pop}ie}for}if /twid twid dup 0 lt{neg avail 2 copy gt{E}if pop}{avail mul}ie D /OK t D 0 1 ncol{cdesc E get dup 1 get E 3 get twid mul gt{/OK f D}if}for 0 1 ncol{ cdesc E get dup 1 get /colmin E D dup 3 get /cwid E twid mul D dup tmax avail le{2 get}if tmin avail le tmax avail gt and{ dup 2 get E 1 get dup 3 1 roll sub avail tmin sub mul tmax tmin sub div add }if tmin avail gt{1 get}if 0 E colmin cwid lt OK and{pop cwid}if dup /twidth E twidth add D put }for /OU f D CP tmin twid le{ 0 1 ncol{cdesc E get dup 0 get twidth div twid mul 0 E put}for /twidth twid D }if CP printcap CP E pop sub /caphig E D pop 0 1 1{ /pass E D 0 1 nrow{ /irow E D /cells rdesc irow get 6 get D 0 1 ncol{ /icol E D /cell cells icol get D cell 0 ne{ cell aload pop /ang E D /CB E D pop pop pop /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D /cmin E D /proc E D rspan 0 eq{/rspan nrow irow sub 1 add D}if cspan 0 eq{/cspan ncol icol sub 1 add D}if /W 0 D 0 1 cspan 1 sub{icol add cdesc E get 0 get /W E W add D}for pass 0 eq rspan 1 eq and pass 1 eq rspan 1 gt and or{ ctype 1 eq{() BD}if /W W left sub right sub D /XO 0 D /EO 0 D SI /A0 align D RC align NA AT 4 eq{ /DC dp D /DO 0 D /ID 1 D 0 1 DV length 1 sub{DV E get dup DO gt{/DO E D}{pop}ie}for /Lo DO DV 0 get sub D /L1 Lo D }if 0 0 M /BP t D /Fl t D /MF 0 D /FB 0 D proc exec T not{/CI 0 D}if BN 0 FB neg R MF 0 eq{/MF CS D}if CP /thishig E neg bot add top add CI add D pop ang 0 ne{/thishig LM bot add top add D}if cell 16 MF put cell 17 Ya put cell 18 thishig put valign 4 eq{ /below thishig Ya sub D rdesc irow get dup dup 4 get Ya lt {4 Ya put}{4 get /Ya E D}ie dup 5 get below lt{5 below put}{5 get /below E D}ie /thishig Ya below add D }if ctype 1 eq{()ES}if /oldhig 0 D 0 1 rspan 1 sub{ irow add rdesc E get 0 get /oldhig E oldhig add D }for thishig oldhig ge{ 0 1 rspan 1 sub{ irow add rdesc E get dup 0 E 0 get oldhig 0 eq {pop thishig rspan div}{thishig mul oldhig div}ie put }for }if }if }if }for }for }for M RC %ZF /thight 0 D /racc 0 D /maxh 0 D /brk 0 D /rbeg nhead nfoot add D 0 1 nrow{ rdesc E get dup 0 get dup /thight E thight add D brk 0 eq{/racc E D}{/racc E racc add D}ie racc maxh gt{/maxh racc D}if 2 get /brk E D }for ph 3 ge{thight caphig add E}if ph 0 eq ph 4 eq or{ /PH 4 D /LE Le D /OU Ou D /yoff 0 D /headsz 0 D 0 1 nhead 1 sub{rdesc E get 0 get headsz add /headsz E D}for /footsz 0 D 0 1 nfoot 1 sub{rdesc E nhead add get 0 get footsz add /footsz E D}for /ahig LE BO add MI add D /maxh maxh headsz add footsz add D /thight thight headsz add footsz add D tmin avail gt maxh ahig gt or {/Sf avail tmin div dup ahig maxh div gt{pop ahig maxh div}if D /SA t D} {/Sf 1 D}ie tclass 1 eq thight LE 15 sub gt and {/SA t D LE 15 sub thight div dup Sf lt{/Sf E D}{pop}ie}if SA{Sf Sf scale /ll ll Sf div D /xo xo Sf div D /LE LE Sf div D /mr mr Sf div D /BO BO Sf div D /ahig ahig Sf div D}if nhead nfoot add getwid LE CP E pop add capalg 0 eq{caphig sub}if bT{f}{dup thight lt thight ahig lt and}ie E headsz sub footsz sub rwid lt or{NP}if capalg 0 eq{printcap -8 SP}if CP /ycur E D pop printhead rbeg 1 nrow{/row E D row getwid ycur yoff add rwid sub footsz sub LE add 0 lt {nfoot 0 gt{printfoot}if Tf NP /rbeg irow1 D Ba{MI /MI MI SA{Sf div}if D MI SP /MI E D}if CP /ycur E D pop /yoff 0 D printhead}if irow1 printrow }for printfoot /row row 1 add D Tf 0 ycur yoff add M capalg 1 eq{/EO 0 D SI -3 SP printcap}if Sf 1 lt{1 Sf div dup scale /ll ll Sf mul D /xo xo Sf mul D /LE LE Sf mul D /mr mr Sf mul D /BO BO Sf mul D /SA f D}if /EO 0 D }if }ie /W w D /XO xo D /MR mr D /LL ll D /LG lg D /AI ai D /BC bc D /NR nr D /AR ar D /TR tr D /UI ui D /PH ph D /A0 a0 D /PF pf D /AT at D /AV av D /AL al D /La la D /SL SL 1 sub NN D /CF 0 D /FN 0 D SZ SL get FR SL get FS Wf not{()F2}if PL 2 ge{Ms E restore Ms or /Ms E D PH 1 eq PH 2 eq or {/LM E D}if PH 3 ge{/CI 0 D NL 0 E neg R}if }if /PL PL 1 sub D /CI 0 D /BP f D /PO f D () Bm 21 get Ts mul BE BL %CF CS SF } D /printcap{ capalg 0 ge{ SA{/W w Sf div D} {talign 1 eq{/XO xo ll twidth sub 2 div add D}if talign 2 eq{/XO xo ll twidth sub add D}if /W XO twidth add D }ie /XO xo D /LL W XO sub MR sub D /PA f D /Fl capalg 0 eq D 1 NA BL caption exec BN OA /PA t D }if } D /getwid{ /irow1 E D /irow2 irow1 D /rwid 0 D {rdesc irow2 get dup 0 get rwid add /rwid E D 2 get 0 eq {exit}{/irow2 irow2 1 add D}ie }loop } D /printrow{ /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D /xleft xoff xo add D /irow E D /cells rdesc irow get 6 get D 0 1 ncol{ /icol E D /cell cells icol get D cell 0 ne{ cell aload pop /ang E D /CB E D /cvsize E D /above E D /fontsz E D /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D /cmin E D /proc E D rspan 0 eq{/rspan nrow irow sub 1 add D}if cspan 0 eq{/cspan ncol icol sub 1 add D}if /width 0 D 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for /rhight rdesc irow get 0 get D /hight rhight D 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for /W xo xoff add width add right sub D ang 0 ne{/W xo xoff add hight add right sub D}if /EO xo xoff add left add D SI Cf{ gsave CB VC xo xoff add ycur yoff add M 0 hight neg RL width 0 RL 0 hight RL width neg 0 RL fill grestore }if ctype 1 eq{() BD}if /A0 align D RC AT 4 eq{ /DC dp D /ID 1 D /DO cdesc icol get 5 get D /Lo DO DV 0 get sub D /L1 Lo D }if ang 0 ne{ gsave ang 90 eq {xoff ycur add hight cvsize sub 2 div sub ycur hight sub xoff sub} {xoff ycur sub width add hight cvsize sub 2 div add ycur xoff add}ie translate ang rotate }if valign 3 le{0 ycur yoff add top sub hight cvsize sub valign 1 sub mul 2 div sub M} {0 ycur yoff add top sub above add rdesc irow get 4 get sub M}ie /PA f D /BP t D /Fl t D BL proc exec BN ang 0 ne{grestore}if /PA t D ctype 1 eq{() ES}if }if /xoff xoff cdesc icol get 0 get add D }for /yoff yoff rhight sub D } D /printhead {0 1 nhead 1 sub{printrow}for} D /printfoot {nhead 1 nhead nfoot add 1 sub{printrow}for} D /Tf { OU{rules 2 ge{/yoff 0 D gsave 0 Sg [0 1 nhead 1 sub{}for rbeg 1 row 1 sub{}for nhead 1 nhead nfoot add 1 sub{}for]{ /irow E D /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D /cells rdesc irow get 6 get D 0 1 ncol{ /icol E D /cell cells icol get D cell 0 ne{ /rspan cell 6 get D /cspan cell 5 get D rspan 0 eq{/rspan nrow irow sub 1 add D}if cspan 0 eq{/cspan ncol icol sub 1 add D}if /width 0 D 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for /rhight rdesc irow get 0 get D /hight rhight D 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for xo xoff add width add ycur yoff add M 0 hight neg icol cspan add 1 sub ncol lt {cdesc icol 1 add get 4 get dup rules 3 le{1 eq}{pop t}ie {1 eq{0.8}{0.3}ie LW RL CP stroke M}{pop R}ie}{R}ie irow nhead nfoot add 1 sub ne nfoot 0 eq or {irow rspan add 1 sub nrow lt {rdesc irow rspan add get 3 get}{nfoot 0 eq{0}{1}ie}ie dup rules 2 mod 0 eq{1 eq}{pop t}ie {1 eq irow rspan add nhead eq or irow rspan add row eq nfoot 0 gt and or {0.8}{0.3}ie LW width neg 0 RL CP stroke M}{pop}ie}if }if /xoff xoff cdesc icol get 0 get add D }for /yoff yoff rhight sub D }forall grestore /Ms t D }if frame 1 gt{ gsave 1 LW 0 Sg xleft ycur M CP BB 0 yoff frame 5 eq frame 7 ge or{RL}{R}ie twidth 0 frame 3 eq frame 4 eq or frame 8 ge or{RL}{R}ie CP BB 0 yoff neg frame 6 ge{RL}{R}ie twidth neg 0 frame 2 eq frame 4 eq or frame 8 ge or{RL}{R}ie closepath stroke grestore /Ms t D }if }if } D /tables [[[0 0 0 0 0 -1 0 1 1 21 2 0 0 9 5 {()} -1] [[0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0]] [[0 0 0 0 0 0 [[{()2 Sl()WB()BD(Histo)HY(rique)YH( des versions)ES()} 0 0 1 0 3 1 0 (.) 1 0 4 4 2 6 0 0 0 0 Db 0 ] 0 0 ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.15.fr.0.9)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2007-09-04)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(GL, JPG)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB( Version fran\347aise mise \340 jour mais non relue. )} 0 0 0 0 3 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] 0 0 ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.15)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2007-08-??)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(DSL)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.14.fr.0.9)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2006-03-07)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(GL, JPG)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB( Version fran\347aise mise \340 jour mais non relue. Prise en compte des correc)HY(tions)YH( sugg\351)HY(r\351es)YH( par Jean-Philippe Gu\351rard et par Bernard Adrian. )} 0 0 0 0 3 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] 0 0 ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.14)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2006-02-??)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(DSL)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.13.fr.0.9)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2005-08-22)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(GL, JPG)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB( Version fran\347aise non relue. Prise en compte des correc)HY(tions)YH( sugg\351)HY(r\351es)YH( par Black Myst. )} 0 0 0 0 3 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] 0 0 ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.13)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2005-08-??)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(DSL)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.12)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2005-03-??)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(DSL)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.11.fr.0.9)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2004-11-20)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(GL, JPG)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.11)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2004-11-??)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(DSL)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.10.fr.0.9)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2004-09-11)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(GL, JPG)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.10)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2004-08-??)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(DSL)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.09)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2004-08-??)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(DSL)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.08.fr.0.9)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2004-07-22)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(GL)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.08)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2004-06-??)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(DSL)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.07.fr.0.9)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2003-09-27)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(GL)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.07)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2002-08-??)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(DSL)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.06.fr.0.9)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2003-05-08)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(GL)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [[{()2 Sl()WB(Version 1.06)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(2002-09-??)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(DSL)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ] ]] ]] [[0 0 0 0 0 -1 0 0 0 1 1 0 0 1 1 {()} -1] [[0 0 0 25 0 0 0][0 0 0 0 0 0 0]] [[0 0 1 0 0 0 [[{()2 Sl()WB()0 0 IM()} 0 0 0 0 1 2 1 (.) 1 0 8 8 2 6 0 0 0 0 Db 0 ] [{()2 Sl()WB(Impor)HY(tant)YH()} 0 0 1 0 1 1 0 (.) 2 0 8 8 2 6 0 0 0 0 Db 0 ] ]] [0 0 0 0 0 0 [0 [{()2 Sl()WB()0 P(Le texte ci-dessous est la licence de ce docu)HY(ment)YH(. Ce texte fait foi. Il est compos\351 de la licence \201en anglais\202 du docu)HY(ment)YH( original, suivi de la licence \201en fran\347ais\202 de sa traduc)HY(tion)YH(.)EP()} 0 0 0 0 1 1 0 (.) 1 0 8 8 2 6 0 0 0 0 Db 0 ] ]] ]] ] D 0 1 1{TS}for RC ZF /Ba f D /BO 0 D Bs /UR (Plug-and-Play-HOWTO.html.iso-8859-1) D /Ti (Guide pratique du Plug-and-Play) D /Au () D /Df f D /ME [] D /Cb Db D /Ct [16#00 16#00 16#00] D /Cl [16#00 16#00 16#00] D /CL -1 D Ct Sc Pt /Ba f D /BO 0 D Bs /UR (Plug-and-Play-HOWTO.html.iso-8859-1) D /Ti (Guide pratique du Plug-and-Play) D /Au () D /Df f D /ME [] D NP RC ZF ()1 Sl()WB 0 Sn()2 Sl()BR()BR()BR()BR()0 2 0 H(Guide)WB 126 Sn()WB 1 Sn( pratique du Plug-and-Play)EH()BR()BR()0 3 1 H()WB 127 Sn()I( Adap)HY(ta)HY(tion)YH( fran\347aise du )EM(Plug-and-Play HOWTO)ES( )ES()EH()BR()BR()BR()BR()0 3 2 H(David)WB 128 Sn( S. Lawyer)EH()BR()BR()0 P( )SM(<)0 2 A(dave CHEZ lafn POINT org)EA(>)ES( )EP()BR()BR()BR()BR()BR()BR()BR()0 3 3 H(Guillaume)WB 129 Sn( Lelarge)EH(Traduc)HY(tion)YH( fran\347aise\240)SM(<)0 2 A(gleu CHEZ wanadoo POINT fr)EA(>)ES()BR()BR()BR()BR()0 3 4 H(Jean-Philippe)WB 130 Sn( Gu\351rard)EH(Pr\351pa)HY(ra)HY(tion)YH( de la publi)HY(ca)HY(tion)YH( de la v.f.\240)SM(<)0 2 A(fevrier CHEZ tigre)HY(raye)YH( POINT org)EA(>)ES()BR()BR()BR()0 P(Version\240: 1.15.fr.0.9)EP()BR()BR()0 P(Copy)HY(right)YH( \251 1998-2007 David S. Lawyer)EP()BR()BR()0 P(Copy)HY(right)YH( \251 2003-2007 Guillaume Lelarge, Jean-Philippe Gu\351rard)EP()BR()BR()0 P(2006-09-04)EP()BR()BR()BR()0 PT()BR()BR()BR()BR()0 P()BD(R\351sum\351)ES()EP()0 P( Le Plug-and-Play \201ou PnP\202 est un syst\350me de d\351tec)HY(tion)YH( et de confi)HY(gu)HY(ra)HY(tion)YH( auto)HY(ma)HY(tique)YH( du mat\351)HY(riel)YH( PC. Ce guide pratique pr\351sente en d\351tail les diff\351)HY(rentes)YH( ressources bas niveau g\351r\351es par le Plug-and-Play, telles que les adresses, les inter)HY(rup)HY(tions)YH(, et c\346tera. Ce guide couvre le bus PCI \201qui a \351t\351 con\347u d\350s le d\351part pour le Plug-and-Play\202 et l'utili)HY(sa)HY(tion)YH( du Plug-and-Play sur l'ancien bus ISA. Si le Plug-and-Play faisait son travail correc)HY(te)HY(ment)YH(, vous n'auriez pas besoin de ce guide pratique. Dans le cas contraire ou si vous dispo)HY(sez)YH( d'un vieux mat\351)HY(riel)YH( qui n'utilise pas le Plug-and-Play pour toutes les cartes, ce guide pratique vous aidera. Il ne couvre pas le UPnP \201)EM(Univer)HY(sal)YH( Plug and Play)ES(\202. )EP()BR()BR()BR()2 0.6 1 HR()BR()BR()0 P()BD(Table des mati\350res)ES()EP()0 DL()0 DT()0 2 1 A(1. Intro)HY(duc)HY(tion)YH()2 0 TN TL()Ec /AF f D()DD()0 DL()0 DT()0 3 1 A(1.1. Droits d'utili)HY(sa)HY(tion)YH(, aver)HY(tis)HY(se)HY(ments)YH( et remer)HY(cie)HY(ments)YH()3 0 TN TL()Ec /AF f D()0 DT()0 9 1 A(1.2. Plans futurs\240: vous pouvez aider)9 0 TN TL()Ec /AF f D()0 DT()0 10 1 A(1.3. Nouvelles versions de ce guide pratique)10 0 TN TL()Ec /AF f D()0 DT()0 11 1 A(1.4. Nouveau)HY(t\351s)YH( des derni\350res versions)11 0 TN TL()Ec /AF f D()0 DT()0 12 1 A(1.5. Intro)HY(duc)HY(tion)YH( g\351n\351)HY(rale)YH(. Avez-vous besoin de ce guide pratique\240?)12 0 TN TL()Ec /AF f D()LD()0 DT()0 13 1 A(2. Ce que PnP)Ca( doit faire\240: allouer des \253\240ressources bus\240\273)13 0 TN TL()Ec /AF f D()DD()0 DL()0 DT()0 14 1 A(2.1. En quoi consiste le Plug-and-Play \201PnP)Ca(\202\240?)14 0 TN TL()Ec /AF f D()0 DT()0 15 1 A(2.2. P\351ri)HY(ph\351)HY(riques)YH( mat\351)HY(riels)YH( et la commu)HY(ni)HY(ca)HY(tion)YH( avec ces derniers)15 0 TN TL()Ec /AF f D()0 DT()0 16 1 A(2.3. Adresses)16 0 TN TL()Ec /AF f D()0 DT()0 17 1 A(2.4. Adresses d'entr\351es/sorties \201prin)HY(cipes)YH( rela)HY(tifs)YH( \340 d'autres ressources\202)17 0 TN TL()Ec /AF f D()0 DT()0 18 1 A(2.5. Plages m\351moire)18 0 TN TL()Ec /AF f D()0 DT()0 19 1 A(2.6. IRQ)Ca( - un aper\347u)19 0 TN TL()Ec /AF f D()0 DT()0 20 1 A(2.7. DMA)Ca( \201acc\350s direct \340 la m\351moire\202 ou ma\356trise du bus)20 0 TN TL()Ec /AF f D()0 DT()0 21 1 A(2.8. Canaux DMA)Ca( \201non pas pour le bus PCI)Ca(\202)21 0 TN TL()Ec /AF f D()0 DT()0 22 1 A(2.9. \253\240Ressources\240\273 du p\351ri)HY(ph\351)HY(rique)YH( et du pilote)22 0 TN TL()Ec /AF f D()0 DT()0 23 1 A(2.10. Les ressources sont limi)HY(t\351es)YH()23 0 TN TL()Ec /AF f D()LD()0 DT()0 26 1 A(3. Deuxi\350me intro)HY(duc)HY(tion)YH( au Plug-and-Play \201PnP)Ca(\202)26 0 TN TL()Ec /AF f D()DD()0 DL()0 DT()0 27 1 A(3.1. Intro)HY(duc)HY(tion)YH( \340 PnP)Ca()27 0 TN TL()Ec /AF f D()0 DT()0 28 1 A(3.2. Comment fonc)HY(tionne)YH( le PnP)Ca( \201expli)HY(ca)HY(tion)YH( simpli)HY(fi\351e)YH(\202)28 0 TN TL()Ec /AF f D()0 DT()0 29 1 A(3.3. D\351mar)HY(rer)YH( le PC)29 0 TN TL()Ec /AF f D()0 DT()0 30 1 A(3.4. Les bus)30 0 TN TL()Ec /AF f D()0 DT()0 31 1 A(3.5. Comment Linux g\350re-t-il le PnP)Ca()31 0 TN TL()Ec /AF f D()0 DT()0 32 1 A(3.6. Probl\350mes avec Linux PnP)Ca()32 0 TN TL()Ec /AF f D()LD()0 DT()0 33 1 A(4. Confi)HY(gu)HY(rer)YH( un BIOS)Ca( PnP)Ca()33 0 TN TL()Ec /AF f D()DD()0 DL()0 DT()0 34 1 A(4.1. Avez-vous un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(\240?)34 0 TN TL()Ec /AF f D()0 DT()0 38 1 A(4.2. Affec)HY(ter)YH( les ressources par le BIOS)Ca(\240?)38 0 TN TL()Ec /AF f D()0 DT()0 39 1 A(4.3. R\351ini)HY(tia)HY(li)HY(ser)YH( la confi)HY(gu)HY(ra)HY(tion)YH()39 0 TN TL()Ec /AF f D()LD()0 DT()0 40 1 A(5. G\351rer les cartes PnP)Ca()40 0 TN TL()Ec /AF f D()DD()0 DL()0 DT()0 41 1 A(5.1. Intro)HY(duc)HY(tion)YH( \340 la gestion des p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca()41 0 TN TL()Ec /AF f D()0 DT()0 42 1 A(5.2. Confi)HY(gu)HY(ra)HY(tion)YH( du pilote de p\351ri)HY(ph\351)HY(rique)YH(, r\351ser)HY(va)HY(tion)YH( des ressources)42 0 TN TL()Ec /AF f D()0 DT()0 43 1 A(5.3. /sys\240: inter)HY(face)YH( de confi)HY(gu)HY(ra)HY(tion)YH( pour l'utili)HY(sa)HY(teur)YH()43 0 TN TL()Ec /AF f D()0 DT()0 44 1 A(5.4. Confi)HY(gu)HY(ra)HY(tion)YH( du BIOS)Ca()44 0 TN TL()Ec /AF f D()0 DT()0 49 1 A(5.5. ISA)Ca( seule)HY(ment)YH(\240: D\351sac)HY(ti)HY(ver)YH( PnP)Ca(\240?)49 0 TN TL()Ec /AF f D()0 DT()0 50 1 A(5.6. Bus ISA)Ca(\240: Isapnp \201outil faisant partie d'isapnp)HY(tools)YH(\202)50 0 TN TL()Ec /AF f D()0 DT()0 51 1 A(5.7. Les utili)HY(taires)YH( PCI)Ca()51 0 TN TL()Ec /AF f D()0 DT()0 52 1 A(5.8. Confi)HY(gu)HY(ra)HY(tion)YH( de Windows)52 0 TN TL()Ec /AF f D()0 DT()0 53 1 A(5.9. Docu)HY(ments)YH(/Logi)HY(ciels)YH( PnP)Ca()53 0 TN TL()Ec /AF f D()LD()0 DT()0 55 1 A(6. Indiquer au pilote la confi)HY(gu)HY(ra)HY(tion)YH(\240??)55 0 TN TL()Ec /AF f D()DD()0 DL()0 DT()0 56 1 A(6.1. Intro)HY(duc)HY(tion)YH()56 0 TN TL()Ec /AF f D()0 DT()0 57 1 A(6.2. Exemple de pilote de port s\351rie)57 0 TN TL()Ec /AF f D()LD()0 DT()0 58 1 A(7. Comment puis-je trouver les p\351ri)HY(ph\351)HY(riques)YH( et comment sont-ils confi)HY(gu)HY(r\351s)YH(\240?)58 0 TN TL()Ec /AF f D()DD()0 DL()0 DT()0 59 1 A(7.1. La recherche des p\351ri)HY(ph\351)HY(riques)YH( et la d\351cou)HY(verte)YH( de la confi)HY(gu)HY(ra)HY(tion)YH( sont li\351s)59 0 TN TL()Ec /AF f D()0 DT()0 60 1 A(7.2. Les p\351ri)HY(ph\351)HY(riques)YH( pour)HY(raient)YH( avoir deux \253\240confi)HY(gu)HY(ra)HY(tions)YH(\240\273)60 0 TN TL()Ec /AF f D()0 DT()0 61 1 A(7.3. Trouver le mat\351)HY(riel)YH()61 0 TN TL()Ec /AF f D()0 DT()0 62 1 A(7.4. Messages de d\351mar)HY(rage)YH()62 0 TN TL()Ec /AF f D()0 DT()0 64 1 A(7.5. Le r\351per)HY(toire)YH( /proc)64 0 TN TL()Ec /AF f D()0 DT()0 65 1 A(7.6. Le r\351per)HY(toire)YH( /sys)65 0 TN TL()Ec /AF f D()0 DT()0 66 1 A(7.7. Inspec)HY(tion)YH( du bus PCI)Ca()66 0 TN TL()Ec /AF f D()0 DT()0 67 1 A(7.8. Intro)HY(duc)HY(tion)YH( au bus ISA)Ca()67 0 TN TL()Ec /AF f D()0 DT()0 68 1 A(7.9. Cartes ISA)Ca( PnP)Ca()68 0 TN TL()Ec /AF f D()0 DT()0 69 1 A(7.10. Bus LPC)Ca()69 0 TN TL()Ec /AF f D()0 DT()0 70 1 A(7.11. X-bus)70 0 TN TL()Ec /AF f D()0 DT()0 71 1 A(7.12. Cartes non PnP)Ca()71 0 TN TL()Ec /AF f D()0 DT()0 72 1 A(7.13. Cartes non PnP)Ca( avec cava)HY(liers)YH()72 0 TN TL()Ec /AF f D()0 DT()0 73 1 A(7.14. Cartes non PnP)Ca( et sans cava)HY(liers)YH()73 0 TN TL()Ec /AF f D()0 DT()0 74 1 A(7.15. Outils pour d\351tec)HY(ter)YH( ou confi)HY(gu)HY(rer)YH( le mat\351)HY(riel)YH()74 0 TN TL()Ec /AF f D()0 DT()0 75 1 A(7.16. Outils pour d\351tec)HY(ter)YH( et confi)HY(gu)HY(rer)YH( un type de mat\351)HY(riel)YH()75 0 TN TL()Ec /AF f D()0 DT()0 76 1 A(7.17. Utili)HY(sez)YH( MS Windows)76 0 TN TL()Ec /AF f D()LD()0 DT()0 77 1 A(8. Inter)HY(rup)HY(tions)YH( PCI)77 0 TN TL()Ec /AF f D()DD()0 DL()0 DT()0 78 1 A(8.1. Intro)HY(duc)HY(tion)YH()78 0 TN TL()Ec /AF f D()0 DT()0 79 1 A(8.2. Histo)HY(rique)YH(\240: des inter)HY(rup)HY(tions)YH( ISA aux PCI)79 0 TN TL()Ec /AF f D()0 DT()0 80 1 A(8.3. Contr\364)HY(leur)YH( avanc\351 d'inter)HY(rup)HY(tions)YH( program)HY(m\351es)YH( \201APIC)Ca(, acro)HY(nyme)YH( de )EM(Advan)HY(ced)YH( Program)HY(mable)YH( Inter)HY(rupt)YH( Control)HY(ler)YH()ES(\202)80 0 TN TL()Ec /AF f D()0 DT()0 81 1 A(8.4. Inter)HY(rup)HY(tions)YH( signa)HY(l\351es)YH( par message \201MSI\202)81 0 TN TL()Ec /AF f D()0 DT()0 82 1 A(8.5. Partage des inter)HY(rup)HY(tions)YH( PCI)82 0 TN TL()Ec /AF f D()0 DT()0 83 1 A(8.6. Recherche dans les tables de routage)83 0 TN TL()Ec /AF f D()0 DT()0 84 1 A(8.7. Pour plus d'infor)HY(ma)HY(tions)YH()84 0 TN TL()Ec /AF f D()LD()0 DT()0 85 1 A(9. Lier les inter)HY(rup)HY(tions)YH( PCI)85 0 TN TL()Ec /AF f D()0 DT()0 86 1 A(10. PnP)Ca( pour les p\351ri)HY(ph\351)HY(riques)YH( externes et ajout\351s)86 0 TN TL()Ec /AF f D()DD()0 DL()0 DT()0 87 1 A(10.1. Bus USB)Ca()87 0 TN TL()Ec /AF f D()0 DT()0 88 1 A(10.2. Hot Plug)88 0 TN TL()Ec /AF f D()0 DT()0 89 1 A(10.3. Hot Swap)89 0 TN TL()Ec /AF f D()0 DT()0 90 1 A(10.4. PnP)Ca( d\351tecte les p\351ri)HY(ph\351)HY(riques)YH( connec)HY(t\351s)YH( aux ports s\351ries)90 0 TN TL()Ec /AF f D()LD()0 DT()0 91 1 A(11. Messages d'erreurs)91 0 TN TL()Ec /AF f D()DD()0 DL()0 DT()0 92 1 A(11.1. Unex)HY(pec)HY(ted)YH( Inter)HY(rupt)YH( \201Inter)HY(rup)HY(tion)YH( inat)HY(ten)HY(due)YH(\202)92 0 TN TL()Ec /AF f D()0 DT()0 93 1 A(11.2. Erreur de confi)HY(gu)HY(ra)HY(tion)YH( Plug and Play \201BIOS)Ca( Dell\202)93 0 TN TL()Ec /AF f D()0 DT()0 94 1 A(11.3. isapnp: Write Data Regis)HY(ter)YH( 0xa79 already used \201\340 partir des jour)HY(naux)YH(\202)94 0 TN TL()Ec /AF f D()0 DT()0 95 1 A(11.4. Impos)HY(sible)YH( d'allouer la r\351gion \201PCI)Ca(\202)95 0 TN TL()Ec /AF f D()LD()0 DT()0 96 1 A(12. Partage et conflit d'inter)HY(rup)HY(tion)YH()96 0 TN TL()Ec /AF f D()DD()0 DL()0 DT()0 97 1 A(12.1. Intro)HY(duc)HY(tion)YH()97 0 TN TL()Ec /AF f D()0 DT()0 98 1 A(12.2. Vrai conflit d'inter)HY(rup)HY(tion)YH()98 0 TN TL()Ec /AF f D()0 DT()0 99 1 A(12.3. Aucune inter)HY(rup)HY(tion)YH( dispo)HY(nible)YH()99 0 TN TL()Ec /AF f D()LD()0 DT()0 100 1 A(13. Annexe)100 0 TN TL()Ec /AF f D()DD()0 DL()0 DT()0 101 1 A(13.1. Univer)HY(sal)YH( Plug and Play \201UPnP)Ca(\202)101 0 TN TL()Ec /AF f D()0 DT()0 102 1 A(13.2. D\351tails des adresses)102 0 TN TL()Ec /AF f D()0 DT()0 108 1 A(13.3. Adresses de confi)HY(gu)HY(ra)HY(tion)YH( du bus ISA)Ca( \201Port de lecture et c\346tera\202)108 0 TN TL()Ec /AF f D()0 DT()0 109 1 A(13.4. D\351tails sur les inter)HY(rup)HY(tions)YH()109 0 TN TL()Ec /AF f D()0 DT()0 115 1 A(13.5. Comment le pilote de p\351ri)HY(ph\351)HY(rique)YH( r\351cu)HY(p\350re)YH( son inter)HY(rup)HY(tion)YH()115 0 TN TL()Ec /AF f D()0 DT()0 116 1 A(13.6. Isola)HY(tion)YH( ISA)Ca()116 0 TN TL()Ec /AF f D()0 DT()0 117 1 A(13.7. Ma\356trise du bus et ressources DMA)Ca()117 0 TN TL()Ec /AF f D()0 DT()0 118 1 A(13.8. Histo)HY(rique)YH( et obso)HY(les)HY(cence)YH()118 0 TN TL()Ec /AF f D()LD()0 DT()0 122 1 A(A. Adap)HY(ta)HY(tion)YH( fran\347aise)122 0 TN TL()Ec /AF f D()DD()0 DL()0 DT()0 123 1 A(1. Traduc)HY(tion)YH()123 0 TN TL()Ec /AF f D()0 DT()0 124 1 A(2. Pr\351pa)HY(ra)HY(tion)YH( de la publi)HY(ca)HY(tion)YH()124 0 TN TL()Ec /AF f D()LD()LD()BR()2 Sl()BR()BR()BR()BR()0 2 5 H(1.\240Intro)WB 131 Sn()HY(duc)HY(tion)YH()WB 2 Sn()EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 3 6 H(1.1.\240Droits)WB 132 Sn()WB 3 Sn( d'utili)HY(sa)HY(tion)YH(, aver)HY(tis)HY(se)HY(ments)YH( et remer)HY(cie)HY(ments)YH()EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 4 7 H(1.1.1.\240Copy)WB 133 Sn()HY(right)YH()WB 4 Sn()EH()BR()BR()BR()BR()1 PT()BR()0 P(Copy)HY(right)YH( \251 1998-2005 by David S. Lawyer )SM(<)0 2 A(dave CHEZ lafn POINT org)EA(>)ES(.)EP()0 P(Please freely copy and distri)HY(bute)YH( \201sell or give away\202 this docu)HY(ment)YH( in any format. Send any correc)HY(tions)YH( and comments to the docu)HY(ment)YH( main)HY(tai)HY(ner)YH(. You may create a deri)HY(va)HY(tive)YH( work and distri)HY(bute)YH( it provi)HY(ded)YH( that you:)EP()BR()UL()0 P()-1 LI( If it's not a trans)HY(la)HY(tion)YH(: Email a copy of your deri)HY(va)HY(tive)YH( work \201in a format LDP accepts\202 to the author\201s\202 and main)HY(tai)HY(ner)YH( \201could be the same person\202. If you don't get a response then email the LDP \201Linux Docu)HY(men)HY(ta)HY(tion)YH( Project\202: )SM(<)0 2 A(submit CHEZ en POINT tldp POINT org)EA(>)ES(. )EP()0 P()-1 LI( License the deri)HY(va)HY(tive)YH( work in the spirit of this license or use GPL. Include a copy)HY(right)YH( notice and at least a pointer to the license used.)EP()0 P()-1 LI(Give due credit to previous authors and major contri)HY(bu)HY(tors)YH(. )EP()LU()BR()0 P(If you're consi)HY(de)HY(ring)YH( making a derived work other than a trans)HY(la)HY(tion)YH(, it's reques)HY(ted)YH( that you discuss your plans with the current main)HY(tai)HY(ner)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 8 H(1.1.2.\240Droits)WB 134 Sn()WB 5 Sn( d'utili)HY(sa)HY(tion)YH()EH()BR()BR()BR()0 P(Copy)HY(right)YH( \251 1998-2005 par David S. Lawyer )SM(<)0 2 A(dave CHEZ lafn POINT org)EA(>)ES(. )EP()0 P(Copy)HY(right)YH( \251 2003-2005 par Guillaume Lelarge )SM(<)0 2 A(gleu CHEZ wanadoo POINT fr)EA(>)ES( & ? )SM(<)0 2 A(?)EA(>)ES(.)EP()0 P(Vous pouvez copier et distri)HY(buer)YH( libre)HY(ment)YH( \201vendre ou donner\202 ce docu)HY(ment)YH( quel que soit son format. Envoyez toute correc)HY(tion)YH( ou tout commen)HY(taire)YH( \340 l'auteur du docu)HY(ment)YH(. Vous pouvez cr\351er et distri)HY(buer)YH( une version d\351riv\351e \340 condi)HY(tion)YH( que\240: )BR()UL()0 P()-1 LI( vous envoyez au gestion)HY(naire)YH( et \340 l'auteur \201s'il ne s'agit pas de la m\352me personne\202 une copie de votre travail par cour)HY(rier)YH( \351lec)HY(tro)HY(nique)YH( \201s'il ne s'agit pas d'une traduc)HY(tion)YH(\202 dans un format que le LDP accepte. Si vous n'obtenez pas de r\351ponse, alors envoyez votre message au LDP \201Linux Docu)HY(men)HY(ta)HY(tion)YH( Project\202\240: )SM(<)0 2 A(submit CHEZ en POINT tldp POINT org)EA(>)ES(\240; )EP()0 P()-1 LI( la licence utili)HY(s\351e)YH( pour votre travail soit dans le m\352me esprit que cette licence ou utilise la licence GPL. Incluez les infor)HY(ma)HY(tions)YH( de droit d'utili)HY(sa)HY(tion)YH( ou au moins un poin)HY(teur)YH( vers la licence utili)HY(s\351e)YH(\240; )EP()0 P()-1 LI(vous donnez cr\351dit aux auteurs pr\351c\351)HY(dents)YH( et aux contri)HY(bu)HY(teurs)YH( majeurs.)EP()LU()BR()EP()0 P(Si vous pensez faire un travail d\351riv\351 autre qu'une traduc)HY(tion)YH(, vous devez en discu)HY(ter)YH( avec le gestion)HY(naire)YH( actuel.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 9 H(1.1.3.\240Aver)WB 135 Sn()HY(tis)HY(se)HY(ments)YH()WB 6 Sn()EH()BR()BR()BR()0 P(Bien que je n'aie pas essay\351 de vous tromper inten)HY(tion)HY(nel)HY(le)HY(ment)YH(, il est probable que des erreurs restent dans ce docu)HY(ment)YH(. Faites-le moi savoir si vous en trouvez. Comme il s'agit d'une docu)HY(men)HY(ta)HY(tion)YH( libre, il est \351vident que je ne peux pas \352tre tenu respon)HY(sable)YH( des erreurs conte)HY(nues)YH( dans ce texte.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 10 H(1.1.4.\240Marques)WB 136 Sn()WB 7 Sn( d\351po)HY(s\351es)YH()EH()BR()BR()BR()0 P(Tout nom de marque \201avec une majus)HY(cule)YH( initiale tel que MS Windows\202 sera suppos\351 \352tre une marque d\351pos\351e. Elles appar)HY(tiennent)YH( \340 leur propri\351)HY(taires)YH( respec)HY(tifs)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 11 H(1.1.5.\240Remer)WB 137 Sn()HY(cie)HY(ments)YH()WB 8 Sn()EH()BR()BR()BR()0 P()BR()UL()0 P()-1 LI( Daniel Scott a relu ce docu)HY(ment)YH( en mars 2000 et y a trouv\351 de nombreuses erreurs\240; )EP()0 P()-1 LI( Pete Barrett a donn\351 une astuce pour emp\352)HY(cher)YH( Windows de r\351ini)HY(tia)HY(li)HY(ser)YH( les IRQ)Ca( PCI)Ca(\240; )EP()0 P()-1 LI( Ao\373t 2004\240: Ross Boylan a trouv\351 des erreurs et a indiqu\351 un manque de clart\351 dans la partie o\371 on indique au BIOS)Ca( qu'il s'agit d'un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(. )EP()LU()BR()EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 12 H(1.2.\240Plans)WB 138 Sn()WB 9 Sn( futurs\240: vous pouvez aider)EH()BR()BR()BR()0 P( Merci de m'indiquer toute erreur, que ce soit dans les faits, les opinions, la logique, l'ortho)HY(graphe)YH(, la gram)HY(maire)YH(, la clart\351, les liens, et c\346tera. Mais tout d'abord, si la date du docu)HY(ment)YH( est vieille de plus de plusieurs mois, v\351ri)HY(fiez)YH( que vous poss\351)HY(dez)YH( bien la derni\350re version. Envoyez-moi toute infor)HY(ma)HY(tion)YH( que vous trouvez int\351)HY(res)HY(sante)YH( pour ce docu)HY(ment)YH(. )EP()0 P(Je n'ai pas encore \351tudi\351 le code utilis\351 par les diff\351)HY(rents)YH( pilotes Linux et par le noyau pour impl\351)HY(men)HY(ter)YH( le Plug-and-Play. Mais, j'ai commenc\351 \340 jeter un \275il, notam)HY(ment)YH( aux commen)HY(taires)YH(. Donc, ce guide pratique est encore incom)HY(plet)YH(. Il devrait expliquer plus en profon)HY(deur)YH( le \253\240hot swap)HY(ping)YH(\240\273, le \253\240hot-plug\240\273 et le nouveau logi)HY(ciel)YH( PnP)Ca( du noyau 2.6. Et il ne couvre pas le fire)HY(wire)YH(. Il comporte certai)HY(ne)HY(ment)YH( quelques erreurs \201faites-moi savoir o\371 je me trompe\202. Dans ce guide pratique, j'ai utilis\351 deux points d'inter)HY(ro)HY(ga)HY(tion)YH( \201??\202 pour signa)HY(ler)YH( que je n'ai pas vrai)HY(ment)YH( la r\351ponse.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 13 H(1.3.\240Nouvelles)WB 139 Sn()WB 10 Sn( versions de ce guide pratique)EH()BR()BR()BR()0 P(De nouvelles versions du guide pratique Plug-and-Play devraient appa)HY(ra\356tre)YH( tous les ans et seront dispo)HY(nibles)YH( \340 la navi)HY(ga)HY(tion)YH( et en t\351l\351)HY(char)HY(ge)HY(ment)YH( sur les sites miroirs du LDP. Pour une liste des sites miroirs, voir )R1 2 A(http://www.tldp.org/mirrors.html)EA(. Diff\351)HY(rents)YH( formats sont dispo)HY(nibles)YH(. Si vous voulez seule)HY(ment)YH( v\351ri)HY(fier)YH( rapi)HY(de)HY(ment)YH( la date de la derni\350re version, regar)HY(dez)YH( sur )R2 2 A(http://www.traduc.org/docs/howto/lecture/Plug-and-Play-HOWTO.html)EA(. La version que vous lisez actuel)HY(le)HY(ment)YH( est la traduc)HY(tion)YH( fran\347aise de la v1.15, d'ao\373t 2007.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 14 H(1.4.\240Nouveau)WB 140 Sn()HY(t\351s)YH()WB 11 Sn( des derni\350res versions)EH()BR()BR()BR()0 P(Pour un histo)HY(rique)YH( complet des r\351vi)HY(sions)YH(, voir le fichier source \201dans son format DocBook SGML\202 sur )R3 2 A(http://cvsview.tldp.org/index.cgi/LDP/howto/linux)HY(doc)YH(/Plug-and-Play-HOWTO.sgml.)EA(. )BR()UL()0 P()-1 LI(v1.15, Ao\373t 2007\240: R\351vi)HY(sion)YH( de la section sur les inter)HY(rup)HY(tions)YH(. Suppres)HY(sion)YH( de deux para)HY(graphes)YH( redon)HY(dants)YH( et confus portant sur une myst\351)HY(rieuse)YH( fonc)HY(tion)YH( \253 h\201\202 \273.)EP()0 P()-1 LI(v1.14, F\351vrier 2006\240: R\351vi)HY(sion)YH( de \253\240Comment Linux g\350re-t'il le PnP)Ca(\240\273\240; LPC devait \352tre confi)HY(gur\351)YH( par le BIOS. Balance des IRQ)Ca(. Linux peut trouver des pilotes pour les p\351ri)HY(ph\351)HY(riques)YH( d\351tec)HY(t\351s)YH(.)EP()0 P()-1 LI(v1.13, Juillet 2005\240: Conflit d'IRQ. Plus grande clart\351 dans les descrip)HY(tions)YH( des ressources. /proc/bus. Espace de confi)HY(gu)HY(ra)HY(tion)YH( PCI acc\351d\351 via l'espace d'adres)HY(sage)YH( des entr\351es/sorties. Plus d'outils de d\351tec)HY(tion)YH( de mat\351)HY(riel)YH(. Message d'erreur )EM(Can't allo)HY(cate)YH( region)ES(.)EP()0 P()-1 LI(v1.12, Mars 2005\240: /dev/eth0 n'existe plus. Infor)HY(ma)HY(tions)YH( modi)HY(fi\351es)YH( dans /sys et /proc depuis le noyau 2.6. L'espace d'adres)HY(sage)YH( de la confi)HY(gu)HY(ra)HY(tion)YH( PCI est \253\240g\351ogra)HY(phique)YH(\240\273. scanpci pour)HY(rait)YH( trouver un p\351ri)HY(ph\351)HY(rique)YH( que lspci ne voit pas. Le noyau peut affec)HY(ter)YH( des adresses au d\351mar)HY(rage)YH(.)EP()LU()BR()EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 15 H(1.5.\240Intro)WB 141 Sn()HY(duc)HY(tion)YH()WB 12 Sn( g\351n\351)HY(rale)YH(. Avez-vous besoin de ce guide pratique\240?)EH()BR()BR()BR()0 P( Le Plug-and-Play \201PnP)Ca(\202 est un syst\350me d\351tec)HY(tant)YH( auto)HY(ma)HY(tique)HY(ment)YH( les p\351ri)HY(ph\351)HY(riques)YH( tels que les disques, les cartes son, les cartes r\351seau, les modems, et c\346tera. Il trouve tous les p\351ri)HY(ph\351)HY(riques)YH( du bus PCI)Ca( et tous les p\351ri)HY(ph\351)HY(riques)YH( suppor)HY(tant)YH( PnP)Ca( sur l'ancien bus ISA)Ca(. Avant PnP)Ca(, beau)HY(coup)YH( de p\351ri)HY(ph\351)HY(riques)YH( \351taient auto)HY(ma)HY(tique)HY(ment)YH( recher)HY(ch\351s)YH( en utili)HY(sant)YH( des m\351thodes non PnP)Ca( mais n'\351taient pas trouv\351s quelque fois. PnP)Ca( fournit un moyen de trouver tous les p\351ri)HY(ph\351)HY(riques)YH( suppor)HY(tant)YH( PnP)Ca(. Il r\351alise aussi une confi)HY(gu)HY(ra)HY(tion)YH( de bas niveau de ces p\351ri)HY(ph\351)HY(riques)YH(. Les p\351ri)HY(ph\351)HY(riques)YH( non PnP)Ca( \201et les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( ayant \351t\351 correc)HY(te)HY(ment)YH( confi)HY(gu)HY(r\351s)YH( avec PnP)Ca(\202 peuvent souvent \352tre d\351tec)HY(t\351s)YH( par des m\351thodes n'utili)HY(sant)YH( pas PnP)Ca(. Le bus PCI)Ca( a \351t\351 con\347u pour le PnP)Ca( alors que le vieux bus ISA)Ca( ne l'a pas \351t\351 \340 ses origines mais son support lui a \351t\351 ajout\351 plus tard. Donc, souvent, PnP)Ca( est utilis\351 pour signi)HY(fier)YH( unique)HY(ment)YH( PnP)Ca( pour l'ancien bus ISA)Ca(. Par exemple, lorsque vous aper)HY(ce)HY(vez)YH( au d\351mar)HY(rage)YH( des messages d'isapnp du style\240: \253\240Plug & Play device\240\273, cela signi)HY(fie)YH( seule)HY(ment)YH( qu'il y a un p\351ri)HY(ph\351)HY(rique)YH( ISA)Ca( PnP)Ca(. Dans ce guide pratique, nous trai)HY(tons)YH( \340 la fois le PnP du bus ISA)Ca( et du bus PCI)Ca(. )EP()0 P(Avec le temps, le noyau Linux am\351liore son support de PnP)Ca(. \300 la fin du 20\350 si\350cle, on pouvait dire que Linux n'\351tait pas un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(. Mais il est dit qu'avec la version 2.6 du noyau, Linux est main)HY(te)HY(nant)YH( tota)HY(le)HY(ment)YH( compa)HY(tible)YH( avec PnP)Ca( \201en suppo)HY(sant)YH( que le noyau est construit avec le support de PnP)Ca(\202. Bien que le syst\350me PnP)Ca( n'est pas centra)HY(lis\351)YH( comme cela peut l'\352tre avec MS Windows \201et son registre\202, le PnP)Ca( Linux d\351cen)HY(tra)HY(lis\351)YH( semble fonc)HY(tion)HY(ner)YH( correc)HY(te)HY(ment)YH(.)EP()0 P(Linux conserve la trace des affec)HY(ta)HY(tions)YH( de ressources deman)HY(d\351es)YH( par les pilotes de p\351ri)HY(ph\351)HY(riques)YH( et refuse toute requ\352te s'il estime que cela cause)HY(rait)YH( un conflit. Le noyau fournit aussi des programmes que les pilotes de p\351ri)HY(ph\351)HY(riques)YH( peuvent appeler pour effec)HY(tuer)YH( leurs op\351ra)HY(tions)YH( de plug-and-play. Le noyau lit aussi tous les registres de confi)HY(gu)HY(ra)HY(tion)YH( de tous les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( et main)HY(tient)YH( leur tables que les pilotes de p\351ri)HY(ph\351)HY(riques)YH( peuvent consul)HY(ter)YH(. Cette table aide les pilotes \340 trouver leur mat\351)HY(riel)YH(. Le noyau 2.6 fournit aussi un meilleur support pour le \253\240hot-plug\240\273.)EP()0 P(Le BIOS)Ca( de votre PC)Ca( travaillera certai)HY(ne)HY(ment)YH( un peu pour le plug-and-play. Donc, si tout fonc)HY(tionne)YH( en harmo)HY(nie)YH( avec PnP)Ca(, vous pouvez utili)HY(ser)YH( votre ordi)HY(na)HY(teur)YH( sans avoir besoin de tout conna\356tre sur le plug-and-play. Mais, si certains p\351ri)HY(ph\351)HY(riques)YH( suppor)HY(t\351s)YH( par Linux ne fonc)HY(tionnent)YH( pas \201parce qu'ils n'ont pas \351t\351 rep\351r\351s par Linux ou parce qu'ils ont \351t\351 mal confi)HY(gu)HY(r\351s)YH(\202, vous aurez besoin de lire au moins une partie de ce guide pratique. Vous en appren)HY(drez)YH( sur le PnP)Ca( mais aussi sur la fa\347on dont la commu)HY(ni)HY(ca)HY(tion)YH( prend place dans un ordi)HY(na)HY(teur)YH(. Si vous avez un ordi)HY(na)HY(teur)YH( moderne avec un bus PCI)Ca( mais sans bus ISA)Ca(, vous pouvez passer les parties sur le bus ISA)Ca(.)EP()0 P(Si vous avez des probl\350mes avec un p\351ri)HY(ph\351)HY(rique)YH(, regar)HY(dez)YH( les messages affi)HY(ch\351s)YH( lors du d\351mar)HY(rage)YH( \201remon)HY(tez)YH( la liste avec )BD(Shift)ES(+)BD(PageUp)ES(\202. Si cela n'affiche pas aussi les messages du lance)HY(ment)YH(, \340 partir du BIOS)Ca(, utili)HY(sez)YH( la touche Pause \201voir )0 63 1 A(Section\2407.4, \253\240Messages de d\351mar)HY(rage)YH(\240\273)63 0 TN TL()Ec /AF f D(\202.)EP()0 P(V\351ri)HY(fiez)YH( que vous utili)HY(sez)YH( le bon pilote pour un p\351ri)HY(ph\351)HY(rique)YH( et que ce pilote est trouv\351 et utilis\351. Si le pilote est un module, tapez )BD(insmod)ES( \201en tant qu'utili)HY(sa)HY(teur)YH( privi)HY(l\351)HY(gi\351)YH(\202 pour voir s'il est charg\351 \201et utilis\351\202. Si ce n'est pas un module, alors il doit \352tre int\351gr\351 au noyau.)EP()0 P(Ce guide pratique ne couvre pas le probl\350me de la recherche et de l'instal)HY(la)HY(tion)YH( de pilotes de p\351ri)HY(ph\351)HY(riques)YH(. Peut-\352tre qu'il devrait. Un des probl\350mes possibles est qu'une carte \201ou un autre p\351ri)HY(ph\351)HY(rique)YH( physique\202 peut ne pas dire le type de compo)HY(sants)YH( qu'elle utilise. Le nom du pilote corres)HY(pond)YH( souvent au nom de la puce et non pas au nom de la marque. Une fa\347on de commen)HY(cer)YH( la v\351ri)HY(fi)HY(ca)HY(tion)YH( du pilote est de regar)HY(der)YH( s'il en est ques)HY(tion)YH( dans la docu)HY(men)HY(ta)HY(tion)YH( du noyau, dans un autre guide pratique ou plus g\351n\351)HY(ra)HY(le)HY(ment)YH( sur Inter)HY(net)YH(. Atten)HY(tion)YH(\240: de telles docu)HY(men)HY(ta)HY(tions)YH( peuvent ne plus \352tre \340 jour.)EP()0 P(Les ordi)HY(na)HY(teurs)YH( dispo)HY(sant)YH( de bus PCI)Ca( \201et sans bus ISA)Ca(\202 ont signi)HY(fi)HY(ca)HY(ti)HY(ve)HY(ment)YH( r\351duit le nombre de points posant probl\350mes. Concer)HY(nant)YH( le bus ISA)Ca( et le manque de support au niveau noyau pour l'ISA)Ca( PnP)Ca( \201avant le noyau 2.4\202, beau)HY(coup)YH( de choses posaient probl\350mes. Rappe)HY(lez)YH(-vous que, parfois les probl\350mes semblant \352tre rela)HY(tifs)YH( \340 PnP)Ca( sont d\373s en r\351alit\351 \340 un mat\351)HY(riel)YH( d\351fec)HY(tueux)YH( ou \340 un mat\351)HY(riel)YH( non conforme aux sp\351ci)HY(fi)HY(ca)HY(tions)YH( PnP)Ca(.)EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 2 16 H(2.\240Ce)WB 142 Sn()WB 13 Sn( que PnP)Ca( doit faire\240: allouer des \253\240ressources bus\240\273)EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 3 17 H(2.1.\240En)WB 143 Sn()WB 14 Sn( quoi consiste le Plug-and-Play \201PnP)Ca(\202\240?)EH()BR()BR()BR()0 P(Si vous ne compre)HY(nez)YH( pas cette section, lisez )0 15 1 A(P\351ri)HY(ph\351)HY(riques)YH( mat\351)HY(riels)YH( et la commu)HY(ni)HY(ca)HY(tion)YH( avec ces derniers)15 0 TN TL()Ec /AF f D(.)EP()0 P(En simpli)HY(fiant)YH( \340 l'extr\352me, Plug-and-Play indique aux pilotes de p\351ri)HY(ph\351)HY(riques)YH( o\371 trouver les diff\351)HY(rents)YH( mat\351)HY(riels)YH( \201p\351ri)HY(ph\351)HY(riques)YH(\202 tels que modems, cartes r\351seau, cartes son, et c\346tera. La t\342che du Plug-and-Play est de faire corres)HY(pondre)YH( les p\351ri)HY(ph\351)HY(riques)YH( physiques avec les logi)HY(ciels)YH( \201pilotes de p\351ri)HY(ph\351)HY(riques)YH(\202 qui les font fonc)HY(tion)HY(ner)YH(, et d'\351tablir des canaux de commu)HY(ni)HY(ca)HY(tion)YH( entre chaque p\351ri)HY(ph\351)HY(rique)YH( physique et son pilote. Pour ce faire, PnP)Ca( alloue les \253\240ressources bus\240\273 suivantes aux mat\351)HY(riels)YH(\240: adresses d'entr\351e/sortie, plages m\351moire, IRQ)Ca(, canaux DMA)Ca( \201unique)HY(ment)YH( pour les bus LPC)Ca( et ISA)Ca(\202. Ces quatre derni\350res sont parfois appe)HY(l\351es)YH( des ressources de premier ordre ou simple)HY(ment)YH( des ressources. PnP)Ca( main)HY(tient)YH( un enre)HY(gis)HY(tre)HY(ment)YH( de ce qu'il fait et auto)HY(rise)YH( l'acc\350s \340 ces infor)HY(ma)HY(tions)YH( aux pilotes de p\351ri)HY(ph\351)HY(riques)YH(. Si vous ne compre)HY(nez)YH( pas ce que sont ces quatre ressources bus, lisez les sous-sections suivantes de ce guide pratique\240: Adresses d'entr\351e/sortie, IRQ)Ca(, Canaux DMA)Ca(, R\351gions m\351moire. Un article de la Linux Gazette parle de trois des ressources bus. Il est dispo)HY(nible)YH( sur )R4 2 A(Intro)HY(duc)HY(tion)YH( aux IRQ)Ca(, DMA)Ca( et adresses de base)EA( \201NdT\240: une traduc)HY(tion)YH( fran\347aise est dispo)HY(nible)YH( sur )R4 2 A(traduc.org)EA(\202. Une fois que ces ressources bus ont \351t\351 assi)HY(gn\351es)YH( \201et si le bon pilote est install\351\202, le pilote actuel et ses \253\240fichiers\240\273 du r\351per)HY(toire)YH( )SM(/dev)ES( sont pr\352t \340 \352tre utili)HY(s\351s)YH(.)EP()0 P(Cette m\351thode d'affec)HY(ta)HY(tion)YH( PnP)Ca( des ressources bus est parfois appel\351e \253\240confi)HY(gu)HY(ra)HY(tion)YH(\240\273 mais il s'agit seule)HY(ment)YH( d'une confi)HY(gu)HY(ra)HY(tion)YH( bas-niveau. Le r\351per)HY(toire)YH( )SM(/etc)ES( comprend beau)HY(coup)YH( de fichiers de confi)HY(gu)HY(ra)HY(tion)YH( mais un grand nombre d'entre eux ne concernent pas la confi)HY(gu)HY(ra)HY(tion)YH( de PnP)Ca(. Donc, la grande majo)HY(rit\351)YH( des confi)HY(gu)HY(ra)HY(tions)YH( de p\351ri)HY(ph\351)HY(riques)YH( physiques n'a rien \340 voir avec PnP)Ca( ou les ressources bus. Par exemple, l'initia)HY(li)HY(sa)HY(tion)YH( d'un modem par une phrase d'initia)HY(li)HY(sa)HY(tion)YH( ou la confi)HY(gu)HY(ra)HY(tion)YH( de sa vitesse ne concerne pas PnP)Ca(. Donc lorsque nous parlons de PnP)Ca(, la confi)HY(gu)HY(ra)HY(tion)YH( ne concerne qu'un seul type de confi)HY(gu)HY(ra)HY(tion)YH(. Alors que d'autres docu)HY(men)HY(ta)HY(tions)YH( \201telles que celles pour MS Windows\202 appellent les ressources bus \253\240ressources\240\273, j'ai utilis\351 le terme de ressources bus au lieu du simple \253\240ressources\240\273 pour les distin)HY(guer)YH( des nombreux autres types de ressources.)EP()0 P(PnP)Ca( est un long proces)HY(sus)YH( r\351alis\351 par diff\351)HY(rents)YH( logi)HY(ciels)YH( et mat\351)HY(riels)YH(. Si seul un programme g\351rait PnP)Ca( sur Linux, cela serait simple. Mais, avec Linux, chaque pilote de p\351ri)HY(ph\351)HY(rique)YH( fait son propre PnP)Ca( en utili)HY(sant)YH( le logi)HY(ciel)YH( fourni par le noyau. Le mat\351)HY(riel)YH( du BIOS du PC utilise PnP)Ca( au d\351mar)HY(rage)YH( du PC. Et il y a bien plus que cela.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 18 H(2.2.\240P\351ri)WB 144 Sn()HY(ph\351)HY(riques)YH()WB 15 Sn( mat\351)HY(riels)YH( et la commu)HY(ni)HY(ca)HY(tion)YH( avec ces derniers)EH()BR()BR()BR()0 P(Un ordi)HY(na)HY(teur)YH( est compos\351 d'un proces)HY(seur)YH( \201CPU)Ca(\202 r\351ali)HY(sant)YH( les op\351ra)HY(tions)YH( et de m\351moire vive \201RAM)Ca(\202 pour stocker les programmes et les donn\351es \201en acc\350s rapide\202. De plus, il existe de nombreux p\351ri)HY(ph\351)HY(riques)YH( tels que diff\351)HY(rents)YH( types de disques, une carte vid\351o, un clavier, des p\351ri)HY(ph\351)HY(riques)YH( r\351seaux, des cartes modem, des p\351ri)HY(ph\351)HY(riques)YH( sons, le bus USB)Ca(, les ports s\351ries et paral)HY(l\350les)YH(, et c\346tera. Dans les anciens temps, la plupart des p\351ri)HY(ph\351)HY(riques)YH( \351taient des cartes ins\351)HY(r\351es)YH( dans des empla)HY(ce)HY(ments)YH( du PC. Aujourd'hui, beau)HY(coup)YH( de p\351ri)HY(ph\351)HY(riques)YH(, qui \351taient aupa)HY(ra)HY(vant)YH( des cartes, sont main)HY(te)HY(nant)YH( compris dans les compo)HY(sants)YH( int\351)HY(gr\351s)YH( \340 la carte-m\350re. On trouve aussi une alimen)HY(ta)HY(tion)YH( appor)HY(tant)YH( l'\351lec)HY(tri)HY(cit\351)YH(, diff\351)HY(rents)YH( bus sur la carte m\350re pour connec)HY(ter)YH( les p\351ri)HY(ph\351)HY(riques)YH( au CPU)Ca( et une bo\356te pour conte)HY(nir)YH( le tout.)EP()0 P(Les cartes se connec)HY(tant)YH( sur la carte m\350re peuvent conte)HY(nir)YH( plus d'un p\351ri)HY(ph\351)HY(rique)YH(. Les cartes m\351moires sont quelque fois consi)HY(d\351)HY(r\351es)YH( comme des p\351ri)HY(ph\351)HY(riques)YH( mais ils ne sont pas Plug-and-Play si on suit le sens utilis\351 dans ce guide pratique.)EP()0 P(Pour que l'ordi)HY(na)HY(teur)YH( fonc)HY(tionne)YH( bien, chaque p\351ri)HY(ph\351)HY(rique)YH( doit \352tre sous le contr\364le de son \253\240pilote\240\273. Il s'agit d'un logi)HY(ciel)YH( faisant partie du syst\350me d'exploi)HY(ta)HY(tion)YH(, pouvant \352tre charg\351 en tant que module et ex\351cut\351 \340 partir du CPU)Ca(. Les pilotes de p\351ri)HY(ph\351)HY(riques)YH( sont asso)HY(ci\351s)YH( \340 des \253\240fichiers sp\351ciaux\240\273 rang\351s dans le r\351per)HY(toire)YH( )SM(/dev)ES(, bien qu'ils ne soient pas vrai)HY(ment)YH( des fichiers. Ils ont des noms tels que hda3 \201troi)HY(si\350me)YH( parti)HY(tion)YH( du disque a\202, ttyS1 \201deuxi\350me port s\351rie\202, eth0 \201premi\350re carte Ether)HY(net)YH(\202, et c\346tera.)EP()0 P(Le p\351ri)HY(ph\351)HY(rique)YH( eth0 est celui de la carte ether)HY(net)YH( \201carte r\351seau\202. Aupa)HY(ra)HY(vant)YH(, il s'agis)HY(sait)YH( de /dev/eth0 mais c'est main)HY(te)HY(nant)YH( un p\351ri)HY(ph\351)HY(rique)YH( virtuel du noyau. Ce que eth0 r\351f\351)HY(rence)YH( d\351pend du type de carte ether)HY(net)YH( que vous avez. Si le pilote est un module, cette affec)HY(ta)HY(tion)YH( se trouve proba)HY(ble)HY(ment)YH( dans une table interne du noyau mais pour)HY(rait)YH( aussi se trouver dans )SM(/etc/modules.conf)ES( \201appel\351 \253\240alias\240\273\202. Par exemple, si vous dispo)HY(sez)YH( d'une carte ether)HY(net)YH( utili)HY(sant)YH( le compo)HY(sant)YH( \253\240tulip\240\273, vous devez placer la ligne \253\240alias eth0 tulip\240\273 dans )SM(/etc/modules.conf)ES( pour que, lorsque votre PC cherche eth0, il trouve le pilote tulip. N\351an)HY(moins)YH(, les noyaux modernes peuvent g\351n\351)HY(ra)HY(le)HY(ment)YH( trouver le bon module du p\351ri)HY(ph\351)HY(rique)YH(. De cette fa\347on, vous n'aurez pas \340 le sp\351ci)HY(fier)YH( vous-m\352me.)EP()0 P(Pour contr\364)HY(ler)YH( un p\351ri)HY(ph\351)HY(rique)YH(, le CPU)Ca( \201sous le contr\364le du pilote de p\351ri)HY(ph\351)HY(rique)YH(\202 envoie des commandes et des donn\351es du p\351ri)HY(ph\351)HY(rique)YH(. Il re\347oit aussi l'\351tat et des donn\351es des diff\351)HY(rents)YH( p\351ri)HY(ph\351)HY(riques)YH(. Pour cela, chaque pilote doit conna\356tre l'adresse du p\351ri)HY(ph\351)HY(rique)YH( qu'il doit contr\364)HY(ler)YH(. Conna\356tre cette adresse revient \340 mettre en place un canal de commu)HY(ni)HY(ca)HY(tion)YH(, m\352me si le \253\240canal\240\273 physique se trouve \352tre le bus de donn\351es interne au PC, bus partag\351 avec beau)HY(coup)YH( d'autres p\351ri)HY(ph\351)HY(riques)YH(.)EP()0 P(Ce canal de commu)HY(ni)HY(ca)HY(tion)YH( est en fait un peu plus complexe que ce qui est d\351crit ci-dessus. Une \253\240adresse\240\273 est en fait une plage d'adresses, ce qui fait que, parfois, le mot \253\240plage\240\273 est utilis\351 \340 la place du mot \253\240adresse\240\273. Il peut exister plus d'une plage \201sans recou)HY(pe)HY(ment)YH(\202 pour un seul p\351ri)HY(ph\351)HY(rique)YH(. Il existe aussi un autre canal connu sous le nom d'inter)HY(rup)HY(tions)YH( permet)HY(tant)YH( au p\351ri)HY(ph\351)HY(rique)YH( d'envoyer une requ\352te de \253\240demande d'aide\240\273 urgente \340 leur pilote.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 19 H(2.3.\240Adresses)WB 145 Sn()WB 16 Sn()EH()BR()BR()BR()0 P(Le bus PCI a trois plages d'adres)HY(sage)YH(\240: les entr\351es/sorties, la m\351moire prin)HY(ci)HY(pale)YH( \201m\351moire d'entr\351es/sorties\202 et la confi)HY(gu)HY(ra)HY(tion)YH(. L'ancien bus ISA)Ca( ne dispose pas de cette derni\350re. Seules les entr\351es/sorties et la m\351moire prin)HY(ci)HY(pale)YH( sont utili)HY(s\351es)YH( pour les entr\351es/sorties du p\351ri)HY(ph\351)HY(rique)YH(. Les adresses de confi)HY(gu)HY(ra)HY(tion)YH( sont fixes et ne peuvent pas \352tre modi)HY(fi\351es)YH( donc elles n'ont pas besoin d'\352tre affec)HY(t\351es)YH(. Pour plus d'infor)HY(ma)HY(tions)YH(, voir )0 125 1 A(Espace d'adres)HY(sage)YH( de la confi)HY(gu)HY(ra)HY(tion)YH( PCI)125 0 TN TL()Ec /AF f D(.)EP()0 P(Quand le CPU veut acc\351der \340 un p\351ri)HY(ph\351)HY(rique)YH(, il place l'adresse du p\351ri)HY(ph\351)HY(rique)YH( sur un bus impor)HY(tant)YH( de l'ordi)HY(na)HY(teur)YH( \201pour le PCI\240: le bus d'adresse/donn\351es\202. Tous les types d'adresses \201tels que les entr\351es/sorties et la m\351moire prin)HY(ci)HY(pale)YH(\202 partagent le m\352me bus sur le PC. Mais la pr\351sence ou l'absence de voltage sur certains fils d\351di\351s sur le bus du PC indique l'espace occup\351e par une adresse\240: entr\351e/sortie, m\351moire prin)HY(ci)HY(pale)YH( \201voir )0 18 1 A(Espaces d'adres)HY(sage)YH()18 0 TN TL()Ec /AF f D(\202 ou la confi)HY(gu)HY(ra)HY(tion)YH( \201seule)HY(ment)YH( PCI\202. Ceci est un peu trop simpli)HY(fi\351)YH( car indiquer \340 un p\351ri)HY(ph\351)HY(rique)YH( PCI qu'il s'agit d'une adresse de confi)HY(gu)HY(ra)HY(tion)YH( est r\351el)HY(le)HY(ment)YH( plus complexe que la descrip)HY(tion)YH( ci-dessus. Voir )0 125 1 A(Espace d'adres)HY(sage)YH( pour la confi)HY(gu)HY(ra)HY(tion)YH( PCI)125 0 TN TL()Ec /AF f D( pour plus d'infor)HY(ma)HY(tions)YH(. Voir )0 102 1 A(D\351tails des adresses)102 0 TN TL()Ec /AF f D( pour plus d'infor)HY(ma)HY(tions)YH( sur l'adres)HY(sage)YH( en g\351n\351ral.)EP()0 P(Les adresses d'un p\351ri)HY(ph\351)HY(rique)YH( sont stock\351es dans les registres du mat\351)HY(riel)YH( physique. Elles peuvent \352tre chan)HY(g\351es)YH( par logi)HY(ciel)YH( et elles peuvent \352tre d\351sac)HY(ti)HY(v\351es)YH( pour que le p\351ri)HY(ph\351)HY(rique)YH( ne soit plus adres)HY(sable)YH(, sauf en ce qui concerne les adresses de confi)HY(gu)HY(ra)HY(tion)YH( du PCI qui ne peuvent \352tre ni modi)HY(fi\351es)YH( ni d\351sac)HY(ti)HY(v\351es)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 20 H(2.4.\240Adresses)WB 146 Sn()WB 17 Sn( d'entr\351es/sorties \201prin)HY(cipes)YH( rela)HY(tifs)YH( \340 d'autres ressources\202)EH()BR()BR()BR()0 P(Les p\351ri)HY(ph\351)HY(riques)YH( \351taient origi)HY(nel)HY(le)HY(ment)YH( situ\351s dans la plage d'adresses des entr\351es/sorties mais, aujourd'hui, ils peuvent utili)HY(ser)YH( la plage en m\351moire prin)HY(ci)HY(pale)YH(. Une adresse d'entr\351e/sortie est quelque fois simple)HY(ment)YH( appel\351e \253\240I/O\240\273, \253\240IO\240\273, \253\240i/o\240\273 ou \253\240io\240\273. Les termes \253\240port I/O\240\273 ou \253\240plage d'entr\351es/sorties\240\273 sont aussi utili)HY(s\351s)YH(. Ne confon)HY(dez)YH( pas ces ports d'entr\351es/sorties avec la m\351moire d'entr\351es/sorties situ\351e en m\351moire prin)HY(ci)HY(pale)YH(. Il existe deux \351tapes prin)HY(ci)HY(pales)YH( pour allouer des adresses I/O \201ou d'autres ressources bus telles que les inter)HY(rup)HY(tions)YH( sur le bus ISA)Ca(\202\240: )BR()UL()0 P()-1 LI(Initia)HY(li)HY(ser)YH( l'adresse I/O, et c\346tera. dans le mat\351)HY(riel)YH( \201dans un de ses registres\202,)EP()0 P()-1 LI(Laisser son pilote de p\351ri)HY(ph\351)HY(rique)YH( recon)HY(na\356tre)YH( l'adresse I/O, et c\346tera.)EP()LU()BR()EP()0 P(Souvent, le pilote du p\351ri)HY(ph\351)HY(rique)YH( fait les deux \201en quelque sorte\202. Le pilote de p\351ri)HY(ph\351)HY(rique)YH( n'a pas r\351el)HY(le)HY(ment)YH( besoin d'initia)HY(li)HY(ser)YH( une adresse d'entr\351e/sortie s'il d\351couvre que l'adresse a d\351j\340 \351t\351 initia)HY(li)HY(s\351e)YH( \201peut-\352tre par le BIOS)Ca(\202 et qu'il souhaite accep)HY(ter)YH( cette adresse. Une fois que le pilote a soit trouv\351 une adresse pr\351c\351)HY(dem)HY(ment)YH( confi)HY(gu)HY(r\351e)YH( soit confi)HY(gur\351)YH( l'adresse lui-m\352me, alors il sait \351videm)HY(ment)YH( de quelle adresse il s'agit, donc il n'est pas n\351ces)HY(saire)YH( de lui fournir cette infor)HY(ma)HY(tion)YH( -- il la conna\356t d\351j\340.)EP()0 P(Le proces)HY(sus)YH( en deux \351tapes ci-dessus \2011. confi)HY(gu)HY(rer)YH( l'adresse au niveau mat\351)HY(riel)YH(. 2. mettre au courant le pilote.\202 ressemble aux deux parties d'un probl\350me pour trouver le num\351ro de la maison d'une personne dans la rue. Quelqu'un doit instal)HY(ler)YH( un num\351ro sur l'entr\351e de la maison pour qu'elle puisse \352tre trouv\351e, puis les personnes qui souhaitent aller \340 cette adresse doivent obtenir \201et conser)HY(ver)YH(\202 ce num\351ro pour qu'elles puissent trouver la maison. En infor)HY(ma)HY(tique)YH(, le mat\351)HY(riel)YH( du p\351ri)HY(ph\351)HY(rique)YH( doit d'abord obtenir son adresse, qu'il placera dans un registre mat\351)HY(riel)YH( sp\351cial \201ce qui revient \340 conser)HY(ver)YH( le num\351ro dans notre exemple\202, puis le pilote de p\351ri)HY(ph\351)HY(rique)YH( doit obtenir cette adresse \201\351crire ce num\351ro dans son carnet d'adresses\202. Les deux doivent \352tre r\351ali)HY(s\351s)YH(, soit auto)HY(ma)HY(tique)HY(ment)YH( par le logi)HY(ciel)YH( soit en saisis)HY(sant)YH( manuel)HY(le)HY(ment)YH( des donn\351es dans des fichiers de confi)HY(gu)HY(ra)HY(tion)YH(. Des probl\350mes pour)HY(raient)YH( surve)HY(nir)YH( si seule)HY(ment)YH( un des deux est fait correc)HY(te)HY(ment)YH(.)EP()0 P(Pour la confi)HY(gu)HY(ra)HY(tion)YH( manuelle de PnP)Ca(, des personnes font l'erreur de ne faire qu'une de ces deux \351tapes et se demandent ensuite pourquoi l'ordi)HY(na)HY(teur)YH( ne peut pas trouver le p\351ri)HY(ph\351)HY(rique)YH(. Par exemple, ils utilisent )BD(setse)HY(rial)YH()ES( pour asso)HY(cier)YH( une adresse au port s\351rie sans r\351ali)HY(ser)YH( que ceci ne fait que donner une adresse au pilote. Cela n'enre)HY(gistre)YH( pas cette adresse au niveau du port s\351rie physique. Si vous avez dit une b\352tise au port s\351rie, alors vous avez un probl\350me. Une autre fa\347on de parler au pilote est de donner l'adresse comme option au module du noyau \201pilote de p\351ri)HY(ph\351)HY(rique)YH(\202. Si ce que vous dites est faux, il peut y avoir des probl\350mes. Un pilote intel)HY(li)HY(gent)YH( pour)HY(rait)YH( d\351tec)HY(ter)YH( comment le mat\351)HY(riel)YH( est r\351el)HY(le)HY(ment)YH( confi)HY(gur\351)YH( et rejeter les mauvaises infor)HY(ma)HY(tions)YH( four)HY(nies)YH( par l'option \201ou au moins affi)HY(cher)YH( un message d'erreur\202.)EP()0 P( Un pr\351-requis \351vident est que le p\351ri)HY(ph\351)HY(rique)YH( physique \201comme une carte\202 doit conna\356tre son adresse avant le pilote du p\351ri)HY(ph\351)HY(rique)YH(. Comme les pilotes de p\351ri)HY(ph\351)HY(rique)YH( se lancent souvent tout de suite apr\350s le d\351mar)HY(rage)YH( de l'ordi)HY(na)HY(teur)YH(, ils peuvent tenter d'acc\351der \340 une carte \201pour v\351ri)HY(fier)YH( sa pr\351sence, et c\346tera\202 avant que l'adresse ne soit enre)HY(gis)HY(tr\351e)YH( au niveau de la carte par le programme de confi)HY(gu)HY(ra)HY(tion)YH( PnP)Ca(. Et vous verrez un message d'erreur indiquant l'absence de la carte m\352me si elle est bien dans le PC \201mais n'a pas encore obtenue son adresse\202. )EP()0 P(Ce qui a \351t\351 dit dans les derniers para)HY(graphes)YH( concer)HY(nant)YH( les adresses I/O s'applique de la m\352me mani\350re \340 la majo)HY(rit\351)YH( des autres ressources bus\240: )0 18 1 A(Section\2402.5, \253\240Plages m\351moire\240\273)18 0 TN TL()Ec /AF f D(, )0 19 1 A(Section\2402.6, \253\240IRQ)Ca( - un aper\347u\240\273)19 0 TN TL()Ec /AF f D( et )0 20 1 A(Section\2402.7, \253\240DMA)Ca( \201acc\350s direct \340 la m\351moire\202 ou ma\356trise du bus\240\273)20 0 TN TL()Ec /AF f D(. Les trois prochaines sections explique)HY(ront)YH( ce qu'ils sont. La seule exception est que les inter)HY(rup)HY(tions)YH( du bus PCI)Ca( ne sont pas donn\351es par les registres d'une carte mais elles sont plut\364t d\351rou)HY(t\351es)YH( vers les IRQ)Ca( par un compo)HY(sant)YH( de la carte m\350re. Ensuite, l'IRQ)Ca( utili)HY(s\351e)YH( par cette carte PCI)Ca( est inscrite dans un registre de la carte dans un but unique d'infor)HY(mer)YH(.)EP()0 P(Pour voir quelles adresses d'entr\351es/sorties sont utili)HY(s\351es)YH( sur votre PC)Ca(, regar)HY(dez)YH( dans le fichier )SM(/proc/ioports)ES(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 21 H(2.5.\240Plages)WB 147 Sn()WB 18 Sn( m\351moire)EH()BR()BR()BR()0 P(Beau)HY(coup)YH( de p\351ri)HY(ph\351)HY(riques)YH( disposent d'une plage m\351moire en m\351moire prin)HY(ci)HY(pale)YH(. C'est quelque)HY(fois)YH( appel\351 \253\240m\351moire parta)HY(g\351e)YH(\240\273 ou \253\240m\351moire d'entr\351es/sorties\240\273. Cette m\351moire est situ\351e physique)HY(ment)YH( dans le p\351ri)HY(ph\351)HY(rique)YH( physique mais l'ordi)HY(na)HY(teur)YH( y acc\350de comme s'il acc\351)HY(dait)YH( \340 des compo)HY(sants)YH( m\351moire. En parlant de ressources bus, c'est souvent simple)HY(ment)YH( appel\351 \253\240m\351moire\240\273, \253\240mem\240\273, voire \253\240iomem\240\273. En plus de l'utili)HY(sa)HY(tion)YH( de cette \253\240m\351moire\240\273, un tel p\351ri)HY(ph\351)HY(rique)YH( peut aussi utili)HY(ser)YH( une plage m\351moire conven)HY(tion)HY(nelle)YH( d'entr\351es/sorties. Pour conna\356tre la m\351moire utili)HY(s\351e)YH( sur votre ordi)HY(na)HY(teur)YH(, cher)HY(chez)YH( dans )SM(/proc/iomem)ES(. Ce \253\240fichier\240\273 inclut la m\351moire utili)HY(s\351e)YH( par les compo)HY(sants)YH( m\351moire habi)HY(tuels)YH( de la RAM, donc il affiche l'allo)HY(ca)HY(tion)YH( m\351moire en g\351n\351ral et pas seule)HY(ment)YH( l'allo)HY(ca)HY(tion)YH( iomem. Si vous aper)HY(ce)HY(vez)YH( un num\351ro \351trange au lieu d'un nom, c'est proba)HY(ble)HY(ment)YH( le num\351ro d'un p\351ri)HY(ph\351)HY(rique)YH( PCI, ce que vous pouvez v\351ri)HY(fier)YH( en ex\351cu)HY(tant)YH( \253\240lspci\240\273.)EP()0 P(Lorsque vous ins\351rez une carte utili)HY(sant)YH( iomem, vous \352tes aussi en train d'ins\351rer un module m\351moire pour la m\351moire prin)HY(ci)HY(pale)YH(. Une adresse haute est s\351lec)HY(tion)HY(n\351e)YH( pour lui par PnP)Ca( de fa\347on \340 ce que cela ne rentre pas en conflit avec les modules de la m\351moire prin)HY(ci)HY(pale)YH( \201compo)HY(sants)YH(\202. Cette m\351moire peut \352tre de la m\351moire morte \201ROM)Ca( ou Read Only Memory\202 ou de la m\351moire parta)HY(g\351e)YH(. Cette derni\350re est parta)HY(g\351e)YH( entre le p\351ri)HY(ph\351)HY(rique)YH( et le CPU)Ca( \201ayant lanc\351 le pilote du p\351ri)HY(ph\351)HY(rique)YH(\202 de la m\352me fa\347on que la plage d'adresses d'entr\351es/sorties est parta)HY(g\351e)YH( entre le p\351ri)HY(ph\351)HY(rique)YH( et le CPU)Ca(. Cette m\351moire parta)HY(g\351e)YH( sert en tant que moyen de \253\240trans)HY(fert)YH(\240\273 de donn\351es entre le p\351ri)HY(ph\351)HY(rique)YH( et la m\351moire prin)HY(ci)HY(pale)YH(. C'est de l'entr\351e/sortie mais ce n'est pas fait dans la plage d'adresses des entr\351es/sorties. La carte et le pilote doivent conna\356tre la plage d'adresses.)EP()0 P(La ROM)Ca( \201)EM(Read-Only Memory)ES(, soit m\351moire en lecture seule\202 est un genre diff\351)HY(rent)YH( d'iomem. C'est plut\364t un programme \201parfois un pilote de p\351ri)HY(ph\351)HY(rique)YH(\202, utilis\351 avec ce p\351ri)HY(ph\351)HY(rique)YH(. Cela peut aussi \352tre un code d'initia)HY(li)HY(sa)HY(tion)YH( malgr\351 que le pilote soit encore n\351ces)HY(saire)YH(. Avec un peu de chance, il fonc)HY(tion)HY(nera)YH( aussi sous Linux, et pas seule)HY(ment)YH( sous MS Windows. Elle peut \352tre copi\351e en m\351moire prin)HY(ci)HY(pale)YH( pour fonc)HY(tion)HY(ner)YH( plus rapi)HY(de)HY(ment)YH(. Mais dans ce cas, elle n'est plus \253\240en lecture seule\240\273.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 22 H(2.6.\240)WB 148 Sn()WB 19 Sn(IRQ)Ca( - un aper\347u)EH()BR()BR()BR()0 P(Apr\350s avoir lu ceci, vous pouvez lire )0 109 1 A(Section\24013.4, \253\240D\351tails sur les inter)HY(rup)HY(tions)YH(\240\273)109 0 TN TL()Ec /AF f D( pour bien plus de d\351tails. Ce qui suit est volon)HY(tai)HY(re)HY(ment)YH( simpli)HY(fi\351)YH(\240: en plus des adresses, il existe aussi un num\351ro d'inter)HY(rup)HY(tion)YH( \340 g\351rer \201tel que l'IRQ)Ca( 5\202. Cela s'appelle un num\351ro d'IRQ)Ca( \201Inter)HY(rupt)YH( ReQuest, ou demande d'inter)HY(rup)HY(tion)YH(\202, ou plus simple)HY(ment)YH( une \253\240irq\240\273. Nous avons d\351j\340 mentionn\351 ci-dessus que le pilote de p\351ri)HY(ph\351)HY(rique)YH( doit conna\356tre l'adresse d'une carte pour \352tre capable de commu)HY(niquer)YH( avec elle. )EP()0 P(Mais qu'en est-il de la commu)HY(ni)HY(ca)HY(tion)YH( en sens inverse\240? Suppo)HY(sez)YH( que le p\351ri)HY(ph\351)HY(rique)YH( ait besoin de dire quelque chose \340 son pilote imm\351)HY(dia)HY(te)HY(ment)YH(. Par exemple, le p\351ri)HY(ph\351)HY(rique)YH( peut rece)HY(voir)YH( un grand nombre d'octets desti)HY(n\351s)YH( \340 la m\351moire prin)HY(ci)HY(pale)YH( et le tampon utilis\351 pour stocker ces octets est pratique)HY(ment)YH( plein. Du coup, le p\351ri)HY(ph\351)HY(rique)YH( a besoin de deman)HY(der)YH( \340 son pilote de r\351cu)HY(p\351)HY(rer)YH( ces octets avant que le tampon ne se voit d\351pass\351 par le flot continu d'octets. Un autre exemple serait de signa)HY(ler)YH( au pilote que le p\351ri)HY(ph\351)HY(rique)YH( a termin\351 d'envoyer un ensemble d'octets et qu'il attend main)HY(te)HY(nant)YH( de nouveaux octets \340 envoyer.)EP()0 P(Comment le p\351ri)HY(ph\351)HY(rique)YH( peut-il envoyer rapi)HY(de)HY(ment)YH( un signal \340 son pilote\240? Il peut ne pas \352tre capable d'utili)HY(ser)YH( le bus de donn\351es prin)HY(ci)HY(pal)YH( car il y a des chances qu'il soit d\351j\340 utilis\351. Au lieu de cela, il place un voltage sur un fil d'inter)HY(rup)HY(tion)YH( d\351di\351 \201aussi appel\351 ligne ou trace\202 qui est souvent r\351serv\351 pour ce seul p\351ri)HY(ph\351)HY(rique)YH(. Ce signal est appel\351 une demande d'inter)HY(rup)HY(tion)YH( \201IRQ)Ca(\202 ou plus simple)HY(ment)YH( une \253\240inter)HY(rup)HY(tion)YH(\240\273. Il existe l'\351qui)HY(valent)YH( de 16 \201ou 24, et c\346tera.\202 fils de ce type dans un PC et chaque fil am\350ne \201indi)HY(rec)HY(te)HY(ment)YH(\202 \340 un certain pilote de p\351ri)HY(ph\351)HY(rique)YH(. Chaque fil a un num\351ro d'IRQ)Ca( unique. Le p\351ri)HY(ph\351)HY(rique)YH( doit placer son inter)HY(rup)HY(tion)YH( sur le bon fil. Le fil sur lequel le p\351ri)HY(ph\351)HY(rique)YH( envoie ces demandes d'aide est d\351ter)HY(min\351)YH( par le num\351ro d'IRQ)Ca( enre)HY(gis)HY(tr\351)YH( dans le p\351ri)HY(ph\351)HY(rique)YH(. Ce m\352me num\351ro d'IRQ)Ca( doit \352tre connu par le pilote du p\351ri)HY(ph\351)HY(rique)YH( pour que celui-ci sache quelle inter)HY(rup)HY(tion)YH( \351couter.)EP()0 P(Une fois que le pilote re\347oit l'inter)HY(rup)HY(tion)YH( du p\351ri)HY(ph\351)HY(rique)YH(, il doit trouver pourquoi cette inter)HY(rup)HY(tion)YH( a \351t\351 g\351n\351r\351e et agir de mani\350re appro)HY(pri\351e)YH( pour r\351gler le probl\350me. Sur le bus ISA)Ca(, chaque p\351ri)HY(ph\351)HY(rique)YH( a habi)HY(tuel)HY(le)HY(ment)YH( besoin de son propre num\351ro unique d'IRQ)Ca(. Pour le bus PCI)Ca( et dans d'autres cas sp\351ciaux, le partage d'IRQ)Ca( est auto)HY(ris\351)YH( \201deux p\351ri)HY(ph\351)HY(riques)YH( PCI)Ca(, ou plus, pour)HY(raient)YH( avoir le m\352me num\351ro d'IRQ)Ca(\202. De m\352me, pour le PCI)Ca(, chaque p\351ri)HY(ph\351)HY(rique)YH( PCI)Ca( a un fil fixe )EM(PCI Inter)HY(rupt)YH()ES(. Mais un compo)HY(sant)YH( de routage program)HY(mable)YH( fait corres)HY(pondre)YH( les fils PCI)Ca( aux inter)HY(rup)HY(tions)YH( de type ISA)Ca(. Voir )0 109 1 A(Section\24013.4, \253\240D\351tails sur les inter)HY(rup)HY(tions)YH(\240\273)109 0 TN TL()Ec /AF f D( pour savoir comment cela fonc)HY(tionne)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 23 H(2.7.\240)WB 149 Sn()WB 20 Sn(DMA)Ca( \201acc\350s direct \340 la m\351moire\202 ou ma\356trise du bus)EH()BR()BR()BR()0 P(Pour le bus PCI)Ca(, DMA)Ca( et ma\356trise de bus signi)HY(fient)YH( la m\352me chose. Avant l'arriv\351e du bus PCI)Ca(, la ma\356trise du bus \351tait rare et le DMA)Ca( fonc)HY(tion)HY(nait)YH( diff\351)HY(rem)HY(ment)YH( et \351tait lent. L'acc\350s direct \340 la m\351moire \201DMA)Ca(, acro)HY(nyme)YH( de )EM(Direct Memory Access)ES(\202 est ce qui permet \340 un p\351ri)HY(ph\351)HY(rique)YH( de prendre la main sur le bus prin)HY(ci)HY(pal)YH( de l'ordi)HY(na)HY(teur)YH( et de trans)HY(f\351)HY(rer)YH( direc)HY(te)HY(ment)YH( des octets vers la m\351moire prin)HY(ci)HY(pale)YH( ou vers d'autres p\351ri)HY(ph\351)HY(riques)YH(. Norma)HY(le)HY(ment)YH(, le proces)HY(seur)YH( s'occupe des trans)HY(ferts)YH( d'un p\351ri)HY(ph\351)HY(rique)YH( vers la m\351moire prin)HY(ci)HY(pale)YH( par un proces)HY(sus)YH( en deux \351tapes\240:)EP()BR()UL()0 P()-1 LI(lire un ensemble d'octets \340 partir de la page m\351moire d'entr\351es/sorties et les stocker dans le CPU)Ca( lui-m\352me\240; )EP()0 P()-1 LI(\351crire ces octets dans la m\351moire prin)HY(ci)HY(pale)YH(.)EP()LU()BR()0 P(Avec le DMA)Ca(, il s'agit d'un proces)HY(sus)YH( en une seule \351tape consis)HY(tant)YH( en l'envoi des octets direc)HY(te)HY(ment)YH( du p\351ri)HY(ph\351)HY(rique)YH( \340 la m\351moire. Les p\351ri)HY(ph\351)HY(riques)YH( doivent dispo)HY(ser)YH( de capa)HY(ci)HY(t\351s)YH( DMA)Ca( int\351)HY(gr\351es)YH( et, du coup, tous les p\351ri)HY(ph\351)HY(riques)YH( ne peuvent pas faire de DMA)Ca(. Alors que le DMA)Ca( est en cours, le proces)HY(seur)YH( ne peut pas faire grand chose car le bus prin)HY(ci)HY(pal)YH( est en cours d'utili)HY(sa)HY(tion)YH( par le trans)HY(fert)YH( DMA)Ca(.)EP()0 P(L'ancien bus ISA)Ca( peut faire du DMA)Ca( lente)HY(ment)YH( alors que le bus PCI)Ca( peut faire du DMA)Ca( par ma\356trise du bus. Le bus LPC)Ca( a \340 la fois l'ancien et le nouveau DMA)Ca( \201ma\356trise du bus\202. Sur le bus PCI)Ca(, ce qui devrait \352tre appel\351 plus pr\351ci)HY(s\351)HY(ment)YH( \253 ma\356trise du bus \273 est souvent appel\351 \253 Ultra DMA \273, \253 BM-DNA \273, \253 udma \273 ou tout simple)HY(ment)YH( \253 DMA \273. Sur le bus PCI)Ca(, la ma\356trise du bus est souvent appel\351 DMA)Ca(. La ma\356trise du bus permet aux p\351ri)HY(ph\351)HY(riques)YH( de devenir tempo)HY(rai)HY(re)HY(ment)YH( les ma\356tres du bus et de trans)HY(f\351)HY(rer)YH( des octets un peu comme lorsque le ma\356tre du bus \351tait le proces)HY(seur)YH(. Il n'utilise aucun num\351ro de canal car l'orga)HY(ni)HY(sa)HY(tion)YH( du bus PCI)Ca( est telle que le mat\351)HY(riel)YH( PCI)Ca( sait quel p\351ri)HY(ph\351)HY(rique)YH( est actuel)HY(le)HY(ment)YH( le ma\356tre du bus et quel p\351ri)HY(ph\351)HY(rique)YH( r\351clame \340 devenir le ma\356tre du bus. Du coup, il n'y a pas d'allo)HY(ca)HY(tion)YH( de ressources pour les canaux DMA)Ca( pour le bus PCI)Ca( et aucune ressource de canaux DMA)Ca( n'existe pour ce bus. Le bus LPC)Ca( est suppos\351 \352tre confi)HY(gur\351)YH( par le BIOS)Ca( pour que les utili)HY(sa)HY(teurs)YH( n'aient pas \340 se soucier des canaux DMA)Ca(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 24 H(2.8.\240Canaux)WB 150 Sn()WB 21 Sn( DMA)Ca( \201non pas pour le bus PCI)Ca(\202)EH()BR()BR()BR()0 P(C'est seule)HY(ment)YH( pour l'ancien bus ISA et le bus LPC. Quand un p\351ri)HY(ph\351)HY(rique)YH( veut faire du DMA, il lance une requ\352te de DMA en utili)HY(sant)YH( les fils d\351di\351s \340 cela, un peu comme une requ\352te d'inter)HY(rup)HY(tion)YH(. En fait, le DMA aurait p\373 \352tre g\351r\351 en utili)HY(sant)YH( des inter)HY(rup)HY(tions)YH( mais cela aurait intro)HY(duit)YH( des d\351lais, donc il est plus rapide de faire cela en ayant un type sp\351cial d'inter)HY(rup)HY(tion)YH( connu en tant que requ\352te DMA. Comme les inter)HY(rup)HY(tions)YH(, les demandes DMA sont num\351)HY(ro)HY(t\351es)YH( pour iden)HY(ti)HY(fier)YH( le p\351ri)HY(ph\351)HY(rique)YH( lan\347ant la requ\352te. Ce nombre est appel\351 un canal DMA. Comme les trans)HY(ferts)YH( DMA utili)HY(sant)YH( tous le bus prin)HY(ci)HY(pal)YH( \201et qu'un seul peut \352tre lanc\351 \340 la fois\202, ils utilisent tous les m\352me canal pour le flot de donn\351es mais le num\351ro de \253\240canal DMA\240\273 sert \340 iden)HY(ti)HY(fier)YH( qui utilise le canal. Les registres mat\351)HY(riels)YH( existent sur la carte m\350re, qui enre)HY(gistre)YH( l'\351tat actuel de chaque canal. Du coup, pour lancer une requ\352te DMA, le p\351ri)HY(ph\351)HY(rique)YH( doit conna\356tre son num\351ro de canal DMA stock\351 dans un registre sp\351cial du p\351ri)HY(ph\351)HY(rique)YH( physique.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 25 H(2.9.\240\253\240)WB 151 Sn()WB 22 Sn(Ressources\240\273 du p\351ri)HY(ph\351)HY(rique)YH( et du pilote)EH()BR()BR()BR()0 P(Donc, les pilotes de p\351ri)HY(ph\351)HY(riques)YH( doivent \352tre \253\240atta)HY(ch\351s)YH(\240\273 d'une fa\347on quel)HY(conque)YH( au mat\351)HY(riel)YH( qu'ils contr\364lent. Ceci se fait en allouant des ressources bus \201I/O, m\351moire, IRQ)Ca(, DMA)Ca(\202 au p\351ri)HY(ph\351)HY(rique)YH( physique et en lais)HY(sant)YH( le pilote le d\351cou)HY(vrir)YH(. Par exemple, un port s\351rie utilise seule)HY(ment)YH( deux ressources\240: une IRQ)Ca( et une adresse d'entr\351es/sorties. Ces deux valeurs doivent \352tre four)HY(nies)YH( au pilote et au p\351ri)HY(ph\351)HY(rique)YH( physique. Le pilote \201et son p\351ri)HY(ph\351)HY(rique)YH(\202 dispose d'un nom dans le r\351per)HY(toire)YH( /dev \201tel que ttyS1\202. L'adresse et le num\351ro IRQ)Ca( sont stock\351s par le p\351ri)HY(ph\351)HY(rique)YH( physique dans ses registres de confi)HY(gu)HY(ra)HY(tion)YH( sur sa carte \201ou dans un compo)HY(sant)YH( de la carte m\350re\202. Les vieux mat\351)HY(riels)YH( \201dans les ann\351es 1990\202 utili)HY(saient)YH( des inter)HY(rup)HY(teurs)YH( \201ou des cava)HY(liers)YH(\202 pour confi)HY(gu)HY(rer)YH( physique)HY(ment)YH( l'IRQ)Ca( et l'adresse au niveau du mat\351)HY(riel)YH(. Ce para)HY(m\351)HY(trage)YH( restera fixe tant qu'une personne n'enle)HY(vera)YH( pas le bo\356tier pour d\351pla)HY(cer)YH( les cava)HY(liers)YH(.)EP()0 P(Mais, dans le cas de PnP)Ca( \201pas de cava)HY(liers)YH(\202, les donn\351es du registre de confi)HY(gu)HY(ra)HY(tion)YH( sont habi)HY(tuel)HY(le)HY(ment)YH( perdues lorsque le PC est \351teint, donc les donn\351es des ressources bus doivent \352tre four)HY(nies)YH( \340 chaque p\351ri)HY(ph\351)HY(rique)YH( \340 chaque allu)HY(mage)YH( du PC.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 26 H(2.10.\240Les)WB 152 Sn()WB 23 Sn( ressources sont limi)HY(t\351es)YH()EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 4 27 H(2.10.1.\240L'ordi)WB 153 Sn()HY(na)HY(teur)YH()WB 24 Sn( id\351al)EH()BR()BR()BR()0 P( L'archi)HY(tec)HY(ture)YH( du PC n'apporte qu'un nombre limit\351 de ressources\240: IRQ)Ca(, canaux DMA)Ca(, adresses d'entr\351es/sorties et de plages m\351moires. S'il n'exis)HY(tait)YH( qu'un nombre limit\351 de p\351ri)HY(ph\351)HY(riques)YH( et qu'ils aient tous des ressources bus stan)HY(dar)HY(di)HY(s\351es)YH( \201telles que des adresses d'entr\351es/sorties et des num\351ros d'IRQ)Ca( uniques\202, il n'y aurait aucun souci pour atta)HY(cher)YH( un pilote \340 son p\351ri)HY(ph\351)HY(rique)YH(. Chaque p\351ri)HY(ph\351)HY(rique)YH( devrait avoir un nombre fixe de ressources qui n'entre)HY(raient)YH( pas en conflit avec tout autre p\351ri)HY(ph\351)HY(rique)YH( sur votre ordi)HY(na)HY(teur)YH(. Deux p\351ri)HY(ph\351)HY(riques)YH( ne devraient pas avoir les m\352mes adresses, il n'y aurait pas de conflit d'IRQ)Ca( sur le bus ISA)Ca(, et c\346tera. Chaque pilote devrait \352tre d\351ve)HY(lopp\351)YH( avec des adresses, des IRQ)Ca(, et c\346tera, uniques cod\351es en dur dans le programme. La vie serait simple. )EP()0 P(Une autre fa\347on d'emp\352)HY(cher)YH( les conflits d'adresses serait d'avoir un num\351ro d'empla)HY(ce)HY(ment)YH(, inclus dans l'adresse, pour chaque carte. Du coup, il n'y aurait plus de conflits d'adresses entre deux cartes diff\351)HY(rentes)YH( \201car elles sont dans des empla)HY(ce)HY(ments)YH( diff\351)HY(rents)YH(\202. La concep)HY(tion)YH( des cartes ne permet)HY(trait)YH( pas les conflits d'adresses entre les diff\351)HY(rentes)YH( fonc)HY(tions)YH( de la carte. Il en ressort que l'espace d'adres)HY(sage)YH( \201utilis\351 pour la demande et l'affec)HY(ta)HY(tion)YH( de ressources\202 le fait r\351el)HY(le)HY(ment)YH(. Mais cela n'est pas pris en compte pour les adresses d'entr\351es/sorties et pour les r\351gions m\351moire. Parta)HY(ger)YH( des IRQ comme sur le bus PCI \351vite aussi des conflits mais peut poser d'autres probl\350mes.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 28 H(2.10.2.\240L'ordi)WB 154 Sn()HY(na)HY(teur)YH()WB 25 Sn( r\351el)EH()BR()BR()BR()0 P(Mais l'archi)HY(tec)HY(ture)YH( du PC a des probl\350mes de conflit. L'augmen)HY(ta)HY(tion)YH( du nombre de p\351ri)HY(ph\351)HY(riques)YH( \201incluant les multiples p\351ri)HY(ph\351)HY(riques)YH( de m\352me type\202 a tendance \340 augmen)HY(ter)YH( les conflits poten)HY(tiels)YH(. En m\352me temps, l'intro)HY(duc)HY(tion)YH( du bus PCI, o\371 deux p\351ri)HY(ph\351)HY(riques)YH( ou plus peuvent parta)HY(ger)YH( la m\352me inter)HY(rup)HY(tion)YH( et l'intro)HY(duc)HY(tion)YH( d'inter)HY(rup)HY(tions)YH( suppl\351)HY(men)HY(taires)YH(, a tendance \340 r\351duire les conflits. Le r\351sul)HY(tat)YH( global, d\373 au passage au PCI, a \351t\351 une r\351duc)HY(tion)YH( des conflits car les ressources les plus faibles sont les IRQ. N\351an)HY(moins)YH(, m\352me sur le bus PCI, c'est un peu plus effi)HY(cace)YH( pour \351viter le partage des IRQ. Dans certains cas o\371 les inter)HY(rup)HY(tions)YH( arrivent en une succes)HY(sion)YH( rapide et doivent \352tre trai)HY(t\351es)YH( rapi)HY(de)HY(ment)YH( \201comme en audio\202, le partage peut causer des d\351gra)HY(da)HY(tions)YH( dans les perfor)HY(mances)YH(. Donc, il n'est pas bon d'affec)HY(ter)YH( tous les p\351ri)HY(ph\351)HY(riques)YH( PCI)Ca( au m\352me IRQ)Ca(, l'affec)HY(ta)HY(tion)YH( doit \352tre parta)HY(g\351e)YH(. N\351an)HY(moins)YH(, certaines personnes trouvent que tous les p\351ri)HY(ph\351)HY(riques)YH( PCI)Ca( sont sur la m\352me IRQ)Ca(.)EP()0 P(Donc, les p\351ri)HY(ph\351)HY(riques)YH( ont besoin d'avoir de la flexi)HY(bi)HY(lit\351)YH( de fa\347on \340 ce qu'ils puissent \352tre initia)HY(li)HY(s\351s)YH( avec n'importe quelle adresse, IRQ)Ca(, et c\346tera. C'est n\351ces)HY(saire)YH( pour \351viter tout conflit et arriver \340 un point d'\351qui)HY(libre)YH(. Mais quelques IRQ)Ca( et adresses sont pratique)HY(ment)YH( des stan)HY(dards)YH(, comme ceux de l'horloge et du clavier. Ils n'ont pas besoin d'une telle flexi)HY(bi)HY(lit\351)YH(.)EP()0 P(En plus du probl\350me de conflit lors de l'allo)HY(ca)HY(tion)YH( des ressources bus, une indi)HY(ca)HY(tion)YH( erron\351e en indiquant au pilote de p\351ri)HY(ph\351)HY(rique)YH( quelles sont les ressources bus peut causer un autre probl\350me. Cela a plus de chances d'arriver dans le cas de la confi)HY(gu)HY(ra)HY(tion)YH( manuelle o\371 l'utili)HY(sa)HY(teur)YH( saisit les ressources utili)HY(s\351es)YH( dans un fichier de confi)HY(gu)HY(ra)HY(tion)YH( sur le disque dur. Ceci fonc)HY(tionne)YH( g\351n\351)HY(ra)HY(le)HY(ment)YH( bien quand les ressources sont initia)HY(li)HY(s\351es)YH( avec des cava)HY(liers)YH( sur les cartes \201en suppo)HY(sant)YH( que l'utili)HY(sa)HY(teur)YH( sache comment elles \351taient initia)HY(li)HY(s\351es)YH( et n'a fait aucune faute en saisis)HY(sant)YH( ces donn\351es dans les fichiers de confi)HY(gu)HY(ra)HY(tion)YH(\202. Mais, avec des ressources confi)HY(gu)HY(r\351es)YH( par un logi)HY(ciel)YH( PnP)Ca(, elles ne seront pas toujours iden)HY(tiques)YH( et cela pour)HY(rait)YH( poser probl\350me pour toute confi)HY(gu)HY(ra)HY(tion)YH( manuelle o\371 l'utili)HY(sa)HY(teur)YH( saisit les valeurs des ressources bus confi)HY(gu)HY(r\351es)YH( par PnP)Ca(.)EP()0 P(L'allo)HY(ca)HY(tion)YH( de ressources bus, lorsqu'elle est faite correc)HY(te)HY(ment)YH(, \351tablit des canaux de commu)HY(ni)HY(ca)HY(tions)YH( sans conflit entre le mat\351)HY(riel)YH( physique et le pilote associ\351. Par exemple, si une certaine plage m\351moire d'entr\351es/sorties \201ressource\202 est allou\351e \340 la fois au pilote de p\351ri)HY(ph\351)HY(rique)YH( et au mat\351)HY(riel)YH(, alors cela a \351tabli une commu)HY(ni)HY(ca)HY(tion)YH( sur une voie \340 sens unique entre eux. Le pilote peut envoyer des commandes et des infor)HY(ma)HY(tions)YH( au p\351ri)HY(ph\351)HY(rique)YH(. C'est donc un peu plus qu'une voie \340 sens unique car le pilote peut obtenir des infor)HY(ma)HY(tions)YH( du p\351ri)HY(ph\351)HY(rique)YH( en lisant ces registres. Mais le p\351ri)HY(ph\351)HY(rique)YH( ne peut pas initier une commu)HY(ni)HY(ca)HY(tion)YH( de cette fa\347on. Pour initier une commu)HY(ni)HY(ca)HY(tion)YH(, le p\351ri)HY(ph\351)HY(rique)YH( a besoin d'une IRQ)Ca( pour qu'il puisse envoyer une inter)HY(rup)HY(tion)YH( \340 son pilote. Ceci cr\351e un canal de commu)HY(ni)HY(ca)HY(tion)YH( \340 double-sens o\371 le p\351ri)HY(ph\351)HY(rique)YH( physique et son pilote peuvent initier une commu)HY(ni)HY(ca)HY(tion)YH(.)EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 2 29 H(3.\240Deuxi\350me)WB 155 Sn()WB 26 Sn( intro)HY(duc)HY(tion)YH( au Plug-and-Play \201PnP)Ca(\202)EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 3 30 H(3.1.\240Intro)WB 156 Sn()HY(duc)HY(tion)YH()WB 27 Sn( \340 PnP)Ca()EH()BR()BR()BR()0 P(Le terme Plug-and-Play \201PnP)Ca(\202 a diff\351)HY(rentes)YH( signi)HY(fi)HY(ca)HY(tions)YH(. Au sens g\351n\351ral, il s'agit de la confi)HY(gu)HY(ra)HY(tion)YH( auto)HY(ma)HY(tique)YH( lorsqu'une personne connecte un p\351ri)HY(ph\351)HY(rique)YH( et que celui-ci se confi)HY(gure)YH( lui-m\352me. Le sens utilis\351 dans ce livre est tout autre\240: PnP)Ca( signi)HY(fie)YH( la confi)HY(gu)HY(ra)HY(tion)YH( des ressources bus pour PnP)Ca( \201les confi)HY(gu)HY(rer)YH( au niveau des p\351ri)HY(ph\351)HY(riques)YH( physiques\202 et la commu)HY(ni)HY(ca)HY(tion)YH( de cette infor)HY(ma)HY(tion)YH( aux pilotes de p\351ri)HY(ph\351)HY(riques)YH(. Dans le cas de Linux, il s'agit souvent d'un pilote d\351ter)HY(mi)HY(nant)YH( la fa\347on dont le bus a initia)HY(lis\351)YH( les ressources bus et, si n\351ces)HY(saire)YH(, le pilote donnant une commande pour changer \201r\351ini)HY(tia)HY(li)HY(ser)YH(\202 les ressources bus. Souvent, \253\240PnP\240\273 ne signi)HY(fie)YH( que PnP)Ca( sur le bus ISA)Ca( donc le message d'isapnp, \253\240No Plug and Play device found\240\273, signi)HY(fie)YH( simple)HY(ment)YH( qu'aucun p\351ri)HY(ph\351)HY(rique)YH( ISA)Ca( PnP)Ca( n'a \351t\351 trouv\351. Les sp\351ci)HY(fi)HY(ca)HY(tions)YH( du PCI)Ca( stan)HY(dard)YH( \201invent\351 avant l'utili)HY(sa)HY(tion)YH( du terme \253\240PnP\240\273\202 apportent l'\351qui)HY(valent)YH( de PnP)Ca( au bus PCI)Ca(.)EP()0 P(PnP)Ca( fait corres)HY(pondre)YH( les p\351ri)HY(ph\351)HY(riques)YH( avec leur pilote et sp\351ci)HY(fie)YH( leurs canaux de commu)HY(ni)HY(ca)HY(tion)YH( \201en allouant des ressources bus\202. Il commu)HY(nique)YH( \351lec)HY(tro)HY(nique)HY(ment)YH( avec les registres de confi)HY(gu)HY(ra)HY(tion)YH( situ\351s \340 l'int\351)HY(rieur)YH( des p\351ri)HY(ph\351)HY(riques)YH( physiques en utili)HY(sant)YH( un proto)HY(cole)YH( stan)HY(dar)HY(dis\351)YH(. Sur le bus ISA)Ca( et avant le Plug-and-Play, les ressources bus \351taient simple)HY(ment)YH( initia)HY(li)HY(s\351es)YH( au niveau mat\351)HY(riel)YH( avec des inter)HY(rup)HY(teurs)YH( de diff\351)HY(rentes)YH( sortes. Quelque)HY(fois)YH(, les ressources bus pouvaient \352tre confi)HY(gu)HY(r\351es)YH( sur le mat\351)HY(riel)YH( par un pilote \201g\351n\351)HY(ra)HY(le)HY(ment)YH( \351crit seule)HY(ment)YH( pour un syst\350me MS mais dans de rares cas support\351 aussi par un pilote Linux\202. Cela ressem)HY(blait)YH( \340 du PnP)Ca( mais aucun proto)HY(cole)YH( stan)HY(dar)HY(dis\351)YH( n'\351tait utilis\351 donc il ne s'agis)HY(sait)YH( pas vrai)HY(ment)YH( de PnP)Ca(. Certaines cartes contiennent un para)HY(m\350)HY(trage)YH( par cava)HY(liers)YH( qui peut \352tre surcharg\351 par un tel pilote. Pour Linux avant le PnP)Ca(, les ressources bus \351taient affec)HY(t\351es)YH( aux pilotes logi)HY(ciels)YH( par des fichiers de confi)HY(gu)HY(ra)HY(tion)YH( \201ou autre chose de ce genre\202 ou en parcou)HY(rant)YH( le bus aux adresses o\371 il s'atten)HY(dait)YH( \340 trouver le p\351ri)HY(ph\351)HY(rique)YH(. Mais ces m\351thodes sont toujours utili)HY(s\351es)YH( de nos jours pour permettre \340 Linux d'utili)HY(ser)YH( du mat\351)HY(riel)YH( non PnP)Ca(. Et, quelque fois, ces vieilles m\351thodes sont toujours utili)HY(s\351es)YH( de nos jours sur du mat\351)HY(riel)YH( PnP)Ca( \201apr\350s que le BIOS)Ca( ait affect\351 des ressources aux mat\351)HY(riels)YH( par les m\351thodes PnP)Ca(\202.)EP()0 P(Le bus PCI ressem)HY(blait)YH( au PnP)Ca( d\350s le d\351but mais il n'a pas \351t\351 appel\351 PnP)Ca( ou \253 plug and play \273, ce qui a eu comme r\351sul)HY(tat)YH( que PnP)Ca( signi)HY(fie)YH( souvent PnP)Ca( sur le bus ISA)Ca(. Dans la docu)HY(men)HY(ta)HY(tion)YH(, PnP)Ca( signi)HY(fie)YH( habi)HY(tuel)HY(le)HY(ment)YH( PnP)Ca( sur le bus ISA)Ca( comme sur le bus PCI)Ca(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 31 H(3.2.\240Comment)WB 157 Sn()WB 28 Sn( fonc)HY(tionne)YH( le PnP)Ca( \201expli)HY(ca)HY(tion)YH( simpli)HY(fi\351e)YH(\202)EH()BR()BR()BR()0 P( Voici comment PnP)Ca( devrait fonc)HY(tion)HY(ner)YH(. L'hypo)HY(th\351)HY(tique)YH( programme de confi)HY(gu)HY(ra)HY(tion)YH( PnP)Ca( trouve tous les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( et demande \340 chacun les ressources bus dont il a besoin. Ensuite, il v\351rifie quelles sont les ressources bus qu'il peut affec)HY(ter)YH( \201IRQ)Ca(, et c\346tera\202. Bien s\373r, s'il a r\351serv\351 des ressources bus utili)HY(s\351es)YH( pour des p\351ri)HY(ph\351)HY(riques)YH( non PnP)Ca( \201s'il les conna\356t\202, il ne les donne pas. Il utilise certains crit\350res \201ne faisant pas partie des sp\351ci)HY(fi)HY(ca)HY(tions)YH( PnP)Ca(\202 pour donner les ressources bus de fa\347on \340 ce qu'il n'y ait pas de conflit et de fa\347on \340 ce que tous les p\351ri)HY(ph\351)HY(riques)YH( disposent de ce qu'ils ont demand\351 \201si possible\202. Il indique ensuite indi)HY(rec)HY(te)HY(ment)YH( \340 chaque p\351ri)HY(ph\351)HY(rique)YH( physique les ressources bus qui lui ont \351t\351 assi)HY(gn\351es)YH( et les p\351ri)HY(ph\351)HY(riques)YH( se confi)HY(gurent)YH( eux-m\352mes pour n'utili)HY(ser)YH( que ces ressources-l\340. Enfin, les pilotes de p\351ri)HY(ph\351)HY(riques)YH( trouvent d'une mani\350re ou d'une autre quelles ressources sont utili)HY(s\351es)YH( par leur p\351ri)HY(ph\351)HY(rique)YH( et sont donc capables de commu)HY(niquer)YH( avec les p\351ri)HY(ph\351)HY(riques)YH( qu'ils contr\364lent. )EP()0 P(Par exemple, prenons une carte ayant besoin d'une IRQ)Ca( \201d'un num\351ro d'IRQ)Ca(\202 et de 1\240Mo de m\351moire parta)HY(g\351e)YH(. Le programme PnP)Ca( lit cette requ\352te des registres de confi)HY(gu)HY(ra)HY(tion)YH( de la carte. Il lui affecte l'IRQ)Ca( 5 et 1\240Mo d'espace m\351moire, commen\347ant \340 partir de l'adresse 0xe9000000. Le programme PnP)Ca( lit aussi les infor)HY(ma)HY(tions)YH( d'iden)HY(ti)HY(fi)HY(ca)HY(tion)YH( de la carte, indiquant ainsi le type de p\351ri)HY(ph\351)HY(rique)YH(, son num\351ro d'iden)HY(ti)HY(fiant)YH(, et c\346tera. Ensuite, il informe, direc)HY(te)HY(ment)YH( ou indi)HY(rec)HY(te)HY(ment)YH(, le pilote de p\351ri)HY(ph\351)HY(rique)YH( conve)HY(nable)YH( pour ce mat\351)HY(riel)YH(, de ce qu'il a fait. Si le pilote lui-m\352me g\350re le PnP)Ca(, alors il n'est pas n\351ces)HY(saire)YH( de trouver un pilote pour le p\351ri)HY(ph\351)HY(rique)YH( \201car le pilote est d\351j\340 en cours d'ex\351cu)HY(tion)YH(\202. Sinon, le bon pilote de p\351ri)HY(ph\351)HY(rique)YH( doit \352tre trouv\351 et la confi)HY(gu)HY(ra)HY(tion)YH( du p\351ri)HY(ph\351)HY(rique)YH( doit lui \352tre commu)HY(niqu\351e)YH(.)EP()0 P(Ce n'est pas toujours aussi simple car la carte \201ou la table de routage pour le PCI\202 pour)HY(rait)YH( indiquer qu'elle ne peut utili)HY(ser)YH( que certains num\351ros d'IRQ)Ca( ou que les 1\240Mo de m\351moire doivent r\351sider dans un certain espace d'adresses. Les d\351tails sont diff\351)HY(rents)YH( pour les bus PCI)Ca( et ISA)Ca(, cette derni\350re \351tant la plus complexe.)EP()0 P(Une fa\347on habi)HY(tuel)HY(le)HY(ment)YH( utili)HY(s\351e)YH( pour allouer des ressources est de commen)HY(cer)YH( avec un p\351ri)HY(ph\351)HY(rique)YH( et de lui allouer des ressources bus. Puis de faire la m\352me chose avec le p\351ri)HY(ph\351)HY(rique)YH( suivant, et c\346tera. Ensuite, si fina)HY(le)HY(ment)YH( tous les p\351ri)HY(ph\351)HY(riques)YH( obtiennent les ressources allou\351es sans conflit, alors tout va bien. Mais si allouer une ressource requise cr\351ait un conflit, alors il serait n\351ces)HY(saire)YH( de revenir en arri\350re et d'essayer de faire quelques chan)HY(ge)HY(ments)YH( dans les allo)HY(ca)HY(tions)YH( pr\351c\351)HY(dentes)YH( de fa\347on \340 conser)HY(ver)YH( la ressource bus n\351ces)HY(saire)YH(. Ceci s'appelle le balan)HY(ce)HY(ment)YH(. Linux ne le fait pas mais MS Windows en est capable dans certains cas. Pour Linux, tout ceci est fait par le BIOS)Ca(, le noyau ou les pilotes de p\351ri)HY(ph\351)HY(riques)YH(. Avec Linux, le pilote du p\351ri)HY(ph\351)HY(rique)YH( n'obtient pas son allo)HY(ca)HY(tion)YH( finale de ressources tant que le pilote n'est pas lanc\351, donc une fa\347on d'\351viter les conflits est de ne pas lancer un p\351ri)HY(ph\351)HY(rique)YH( qui pour)HY(rait)YH( causer un conflit. N\351an)HY(moins)YH(, le BIOS)Ca( alloue fr\351quem)HY(ment)YH( des ressources au p\351ri)HY(ph\351)HY(rique)YH( physique avant que Linux ne soit compl\350)HY(te)HY(ment)YH( d\351marr\351 et le noyau v\351rifie les p\351ri)HY(ph\351)HY(riques)YH( PCI)Ca( pour les conflits d'adresse au d\351mar)HY(rage)YH(.)EP()0 P(Des raccour)HY(cis)YH( existent et le logi)HY(ciel)YH( PnP)Ca( peut les utili)HY(ser)YH(. Un d'eux est de garder la trace de la fa\347on dont sont assi)HY(gn\351es)YH( les ressources bus lors de la derni\350re confi)HY(gu)HY(ra)HY(tion)YH( \201lorsque l'ordi)HY(na)HY(teur)YH( a \351t\351 utilis\351 pour la derni\350re fois\202 et de r\351uti)HY(li)HY(ser)YH( cette infor)HY(ma)HY(tion)YH(. Les BIOS)Ca( le font ainsi que MS Windows mais le Linux stan)HY(dard)YH( ne le fait pas. Mais, d'une certaine fa\347on, il le fait car il utilise souvent ce que le BIOS)Ca( a fait. Windows stocke cette infor)HY(ma)HY(tion)YH( dans sa base de registres sur le disque dur et un BIOS)Ca( PnP/PCI)Ca( le stocke dans une m\351moire non vola)HY(tile)YH( de votre PC \201m\351moire appel\351e ESCD)Ca(\240; voir )0 46 1 A(Section\2405.4.2, \253\240La base de donn\351es ESCD)Ca( du BIOS)Ca(\240\273)46 0 TN TL()Ec /AF f D(\202. Certains disent que ne pas avoir de registres \201ce qui est le cas de Linux\202 est mieux car, avec Windows, la base de registres peut \352tre corrom)HY(pue)YH( et elle est de toute fa\347on diffi)HY(cile)YH( \340 \351diter. Mais PnP)Ca( sur Linux a aussi des probl\350mes.)EP()0 P(Alors que MS Windows \201sauf en ce qui concerne Windows 3.x et NT4\202 est un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(, Linux n'\351tait pas origi)HY(nel)HY(le)HY(ment)YH( un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca( mais l'est devenu graduel)HY(le)HY(ment)YH(. Au d\351but, PnP)Ca( a fonc)HY(tionn\351)YH( avec Linux parce qu'un BIOS)Ca( PnP)Ca( confi)HY(gu)HY(rait)YH( les ressources bus et que les pilotes de p\351ri)HY(ph\351)HY(riques)YH( r\351cu)HY(p\351)HY(raient)YH( cette infor)HY(ma)HY(tion)YH( en utili)HY(sant)YH( des programmes appor)HY(t\351s)YH( par le noyau Linux. Aujourd'hui, la plupart des pilotes peuvent envoyer des commandes pour r\351ali)HY(ser)YH( leur propre confi)HY(gu)HY(ra)HY(tion)YH( et n'ont pas besoin de se reposer toujours sur le BIOS)Ca(. Malheu)HY(reu)HY(se)HY(ment)YH(, un pilote pour)HY(rait)YH( utili)HY(ser)YH( une ressource bus dont un autre p\351ri)HY(ph\351)HY(rique)YH( aurait besoin plus tard. D'autres pilotes de p\351ri)HY(ph\351)HY(riques)YH( enre)HY(gistrent)YH( la derni\350re confi)HY(gu)HY(ra)HY(tion)YH( dans un fichier de confi)HY(gu)HY(ra)HY(tion)YH( et l'utilisent la prochaine fois que l'ordi)HY(na)HY(teur)YH( est allum\351.)EP()0 P(Si le p\351ri)HY(ph\351)HY(rique)YH( physique se rappelle de son ancienne confi)HY(gu)HY(ra)HY(tion)YH(, alors il n'y aura pas de mat\351)HY(riel)YH( \340 confi)HY(gu)HY(rer)YH( au prochain d\351mar)HY(rage)YH(, mais il semble oublier sa confi)HY(gu)HY(ra)HY(tion)YH( lors de l'arr\352t. Certains p\351ri)HY(ph\351)HY(riques)YH( disposent d'une confi)HY(gu)HY(ra)HY(tion)YH( par d\351faut \201mais pas n\351ces)HY(sai)HY(re)HY(ment)YH( la derni\350re utili)HY(s\351e)YH(\202. Donc, un p\351ri)HY(ph\351)HY(rique)YH( PnP)Ca( a besoin d'\352tre recon)HY(fi)HY(gur\351)YH( \340 chaque fois que le PC est allum\351. De la m\352me mani\350re, si un nouveau p\351ri)HY(ph\351)HY(rique)YH( est ajout\351, alors il a besoin d'\352tre confi)HY(gur\351)YH(. Allouer des ressources bus pour ce nouveau p\351ri)HY(ph\351)HY(rique)YH( peut n\351ces)HY(si)HY(ter)YH( de r\351cu)HY(p\351)HY(rer)YH( des ressources donn\351es aupa)HY(ra)HY(vant)YH( \340 un autre et d'affec)HY(ter)YH( \340 ce dernier de nouvelles ressources. Actuel)HY(le)HY(ment)YH(, Linux ne peut pas g\351rer ce niveau de sophis)HY(ti)HY(ca)HY(tion)YH( \201et MS Windows XP pour)HY(rait)YH( aussi ne pas en \352tre capable\202.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 32 H(3.3.\240D\351mar)WB 158 Sn()HY(rer)YH()WB 29 Sn( le PC)EH()BR()BR()BR()0 P(Quand le PC est lanc\351 la premi\350re fois, le BIOS)Ca( lance son programme pour d\351mar)HY(rer)YH( le PC \201la premi\350re \351tape \351tant de v\351ri)HY(fier)YH( le mat\351)HY(riel)YH( de la carte m\350re\202. Si le syst\350me d'exploi)HY(ta)HY(tion)YH( est stock\351 sur disque dur \201ce qui est habi)HY(tuel)HY(le)HY(ment)YH( le cas\202, alors le BIOS)Ca( doit dispo)HY(ser)YH( de certaines infor)HY(ma)HY(tions)YH( sur le disque dur. Si ce disque est PnP)Ca(, le BIOS)Ca( peut utili)HY(ser)YH( des m\351thodes PnP)Ca( pour le trouver. De m\352me, pour permettre \340 l'utili)HY(sa)HY(teur)YH( de confi)HY(gu)HY(rer)YH( manuel)HY(le)HY(ment)YH( le CMOS)Ca( du BIOS)Ca( et de r\351pondre aux messages d'erreur lors du d\351mar)HY(rage)YH(, un \351cran \201et donc une carte vid\351o\202 et un clavier sont aussi requis. Donc, le BIOS)Ca( doit toujours confi)HY(gu)HY(rer)YH( via PnP)Ca( les p\351ri)HY(ph\351)HY(riques)YH( n\351ces)HY(saires)YH( au char)HY(ge)HY(ment)YH( du syst\350me d'exploi)HY(ta)HY(tion)YH( \340 partir du disque dur.)EP()0 P(Une fois que le BIOS)Ca( a iden)HY(ti)HY(fi\351)YH( le disque dur, la carte vid\351o et le clavier, il est pr\352t \340 commen)HY(cer)YH( le d\351mar)HY(rage)YH( \201charger le syst\350me d'exploi)HY(ta)HY(tion)YH( en m\351moire\202. Si vous avez indiqu\351 au BIOS)Ca( que vous dispo)HY(sez)YH( d'un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(, il devrait commen)HY(cer)YH( le char)HY(ge)HY(ment)YH( comme indiqu\351 ci-dessus et laisser le syst\350me d'exploi)HY(ta)HY(tion)YH( finir la confi)HY(gu)HY(ra)HY(tion)YH( PnP)Ca(. Autre)HY(ment)YH(, un BIOS)Ca(-PnP)Ca( essaiera de confi)HY(gu)HY(rer)YH( le reste des p\351ri)HY(ph\351)HY(riques)YH( \201mais sans en infor)HY(mer)YH( leur pilote\202. peuvent toujours trouver les infor)HY(ma)HY(tions)YH( n\351ces)HY(saires)YH( en utili)HY(sant)YH( les fonc)HY(tions)YH( dispo)HY(nibles)YH( dans le noyau Linux.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 33 H(3.4.\240Les)WB 159 Sn()WB 30 Sn( bus)EH()BR()BR()BR()0 P(Pour voir ce qui se trouve sur le bus PCI)Ca(, ex\351cu)HY(tez)YH( )BD(lspci)ES( ou )BD(lspci -vv)ES(. Ou vous pouvez aussi saisir )BD(scanpci -v)ES( pour la m\352me infor)HY(ma)HY(tion)YH( dans le format de code num\351)HY(rique)YH( o\371 le p\351ri)HY(ph\351)HY(rique)YH( est indiqu\351 par num\351ro \201par exemple\240: \253\240device 0x122d\240\273\202 au lieu du nom, et c\346tera. Dans de rares cas, )BD(scanpci)ES( trou)HY(vera)YH( un p\351ri)HY(ph\351)HY(rique)YH( que )BD(lspci)ES( n'arrive pas \340 trouver.)EP()0 P(Les messages au d\351mar)HY(rage)YH( sur votre \351cran affichent les p\351ri)HY(ph\351)HY(riques)YH( qui ont \351t\351 trouv\351s sur les diff\351)HY(rents)YH( bus \201utili)HY(sez)YH( shift-PageUp pour les voir\202. Voir )0 62 1 A(Messages au d\351mar)HY(rage)YH()62 0 TN TL()Ec /AF f D(.)EP()0 P(ISA)Ca( est l'ancien bus des PC compa)HY(tibles)YH( IBM alors que PCI)Ca( est le nouveau bus, plus rapide, d'Intel. Le bus PCI)Ca( a \351t\351 con\347u pour ce qui est appel\351 de nos jours PnP)Ca(. Ceci rend facile \201compar\351 \340 ce qu'il faut faire pour le bus ISA)Ca(\202 la d\351cou)HY(verte)YH( de l'affec)HY(ta)HY(tion)YH( des ressources bus PnP)Ca( aux p\351ri)HY(ph\351)HY(riques)YH( mat\351)HY(riels)YH(.)EP()0 P(Pour le bus ISA)Ca(, il exis)HY(tait)YH( un probl\350me r\351el avec l'impl\351)HY(men)HY(ta)HY(tion)YH( de PnP)Ca( car personne n'avait en t\352te PnP)Ca( lorsque ce bus a \351t\351 con\347u et il existe encore moins d'adresses d'entr\351es/sorties dispo)HY(nibles)YH( pour PnP)Ca( pour envoyer des infor)HY(ma)HY(tions)YH( de confi)HY(gu)HY(ra)HY(tion)YH( \340 un p\351ri)HY(ph\351)HY(rique)YH( physique. Du coup, la fa\347on dont PnP)Ca( a \351t\351 r\351alis\351 pour le bus ISA)Ca( est tr\350s complexe. Des livres entiers ont \351t\351 \351crits \340 ce sujet. Voir notam)HY(ment)YH( )0 54 1 A(ce livre)54 0 TN TL()Ec /AF f D(. Entre autres choses, il requiert que soit assign\351 par le programme PnP)Ca( \340 chaque p\351ri)HY(ph\351)HY(rique)YH( PnP)Ca( un point d'ancrage tempo)HY(raire)YH( pour que tout le monde puisse faire la confi)HY(gu)HY(ra)HY(tion)YH( PnP)Ca(. Assi)HY(gner)YH( ces \253\240points d'ancrage\240\273 est appel\351 \253\240isola)HY(tion)YH(\240\273. Voir )0 116 1 A(Section\24013.6, \253\240Isola)HY(tion)YH( ISA)Ca(\240\273)116 0 TN TL()Ec /AF f D( pour des d\351tails complexes.)EP()0 P(Au fur et \340 mesure de la dispa)HY(ri)HY(tion)YH( du bus ISA)Ca(, PnP)Ca( sera un peu plus facile. Il ne sera pas seule)HY(ment)YH( plus simple de savoir comment le BIOS)Ca( a confi)HY(gur\351)YH( le mat\351)HY(riel)YH( mais il y aura aussi moins de conflits, le PCI)Ca( pouvant parta)HY(ger)YH( des inter)HY(rup)HY(tions)YH(. Il y aura toujours besoin de faire corres)HY(pondre)YH( un pilote de p\351ri)HY(ph\351)HY(rique)YH( \340 un mat\351)HY(riel)YH( et il y aura toujours besoin de confi)HY(gu)HY(rer)YH( les p\351ri)HY(ph\351)HY(riques)YH( ajout\351s lors du lance)HY(ment)YH( du PC. Le s\351rieux probl\350me des quelques p\351ri)HY(ph\351)HY(riques)YH( non suppor)HY(t\351s)YH( par Linux restera pr\351sent.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 34 H(3.5.\240Comment)WB 160 Sn()WB 31 Sn( Linux g\350re-t-il le PnP)Ca()EH()BR()BR()BR()0 P(Linux a eu de s\351rieux probl\350mes dans le pass\351 pour la gestion de PnP)Ca( mais la plupart de ces probl\350mes sont main)HY(te)HY(nant)YH( r\351solus \201vers mi-2004\202. Linux est parvenu d'un syst\350me non PnP)Ca( \340 un syst\350me qui peut \352tre PnP)Ca( si le noyau est compil\351 avec certaines options. Le BIOS peut affec)HY(ter)YH( des IRQ mais Linux peut aussi affec)HY(ter)YH( certains d'entre eux ou m\352me les refaire ce que le BIOS a d\351j\340 fait. La partie de confi)HY(gu)HY(ra)HY(tion)YH( de ACPI)Ca( \201)EM(Advance Confi)HY(gu)HY(ra)HY(tion)YH( and Power Inter)HY(face)YH()ES(\202 est con\347u pour faci)HY(li)HY(ter)YH( la propre confi)HY(gu)HY(ra)HY(tion)YH( des syst\350mes d'exploi)HY(ta)HY(tion)YH(. Linux peut utili)HY(ser)YH( l'ACPI si le noyau a \351t\351 compil\351 avec son support.)EP()0 P(Dans Linux, il est tradi)HY(tion)HY(nel)YH( qu'un pilote de p\351ri)HY(ph\351)HY(rique)YH( fasse sa propre confi)HY(gu)HY(ra)HY(tion)YH( de bas niveau. C'\351tait diffi)HY(cile)YH( jusqu'au moment o\371 le noyau Linux a fourni le logi)HY(ciel)YH( que les pilotes peuvent utili)HY(ser)YH( pour se faci)HY(li)HY(ter)YH( le travail. Aujourd'hui \2012005\202, c'est arriv\351 \340 un point o\371 le pilote peut simple)HY(ment)YH( appel\351 la fonc)HY(tion)YH( pci_enable_device\201\202 du noyau et o\371 le p\351ri)HY(ph\351)HY(rique)YH( se voit confi)HY(gur\351)YH( en \351tant activ\351 et en r\351cu)HY(p\351)HY(rant)YH( une IRQ)Ca( \201si n\351ces)HY(saire)YH(\202 et les adresses affec)HY(t\351es)YH( au p\351ri)HY(ph\351)HY(rique)YH(. Cette affec)HY(ta)HY(tion)YH( pour)HY(rait)YH( \352tre ce qui avait \351t\351 affect\351 aupa)HY(ra)HY(vant)YH( par le BIOS)Ca( ou ce que le noyau avait r\351serv\351 quand le p\351ri)HY(ph\351)HY(rique)YH( PCI ou ISAPNP a \351t\351 d\351tect\351 par le noyau. Il existe m\352me une option ACPI pour que le noyau affecte toutes les IRQ des p\351ri)HY(ph\351)HY(riques)YH( lors du d\351mar)HY(rage)YH(.)EP()0 P(Donc aujourd'hui, d'une certaine fa\347on, les pilotes font toujours la confi)HY(gu)HY(ra)HY(tion)YH( mais ils peuvent la faire en deman)HY(dant)YH( simple)HY(ment)YH( au noyau de s'en charger \201et Linux pour)HY(rait)YH( ne pas avoir besoin de faire grand chose car il est quelque fois capable d'utili)HY(ser)YH( ce qui a d\351j\340 \351t\351 confi)HY(gur\351)YH( par le BIOS ou par lui-m\352me\202. Donc, c'est vrai)HY(ment)YH( la partie du noyau, hors du pilote, qui fait la grande partie de confi)HY(gu)HY(ra)HY(tion)YH(. Du coup, il pour)HY(rait)YH( \352tre correct d'appeler Linux un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP, au moins pour les archi)HY(tec)HY(tures)YH( communes.)EP()0 P(Ensuite, lorsqu'un pilote d\351couvre son p\351ri)HY(ph\351)HY(rique)YH(, il demande \340 conna\356tre les adresses et IRQ affec)HY(t\351s)YH( \201par le BIOS)Ca( ou par Linux\202 et, habi)HY(tuel)HY(le)HY(ment)YH(, les accepte simple)HY(ment)YH(. Mais, si le pilote le souhaite, il peut essayer de modi)HY(fier)YH( les adresses en utili)HY(sant)YH( les fonc)HY(tions)YH( four)HY(nies)YH( par le noyau. Cepen)HY(dant)YH(, le noyau n'accep)HY(tera)YH( pas d'adresses entrant en conflit avec d'autres p\351ri)HY(ph\351)HY(riques)YH( ou des adresses que le mat\351)HY(riel)YH( ne peut pas suppor)HY(ter)YH(. Quand le PC d\351marre, vous pouvez noter les messages \340 l'\351cran montrant que certains pilotes de p\351ri)HY(ph\351)HY(riques)YH( Linux ont trouv\351 leurs p\351ri)HY(ph\351)HY(riques)YH( mat\351)HY(riels)YH( et quels sont leurs IRQ et adresses.)EP()0 P(Donc, le noyau fournit des fonc)HY(tions)YH( \201programmes\202 que les pilotes peuvent utili)HY(ser)YH( pour trouver si leur p\351ri)HY(ph\351)HY(rique)YH( est pr\351sent, la fa\347on dont il est confi)HY(gur\351)YH( et les fonc)HY(tions)YH( qui permettent de modi)HY(fier)YH( la confi)HY(gu)HY(ra)HY(tion)YH( si n\351ces)HY(saire)YH(. Le noyau 2.2 pouvait faire ceci pour le bus PCI)Ca( seule)HY(ment)YH( mais le noyau 2.4 contient cette fonc)HY(tion)HY(na)HY(lit\351)YH( pour les bus ISA et PCI \201\340 condi)HY(tion)YH( que les options PnP et PCI appro)HY(pri\351s)YH( ont \351t\351 s\351lec)HY(tion)HY(n\351es)YH( avant la compi)HY(la)HY(tion)YH( du noyau\202. Le noyau 2.6 est arriv\351 avec une meilleure utili)HY(sa)HY(tion)YH( de l'ACPI. Ceci ne garan)HY(tie)YH( en rien que tous les pilotes utilisent compl\350)HY(te)HY(ment)YH( et correc)HY(te)HY(ment)YH( ces fonc)HY(tion)HY(na)HY(li)HY(t\351s)YH(. Les p\351ri)HY(ph\351)HY(riques)YH( propri\351)HY(taires)YH( que le BIOS ne connait pas pour)HY(raient)YH( ne pas \352tre confi)HY(gu)HY(r\351s)YH( tant qu'une confi)HY(gu)HY(ra)HY(tion)YH( manuelle ne soit effec)HY(tu\351e)YH(.)EP()0 P(De plus, le noyau tente d'\351viter les conflits d'adresses en ne permet)HY(tant)YH( pas \340 deux p\351ri)HY(ph\351)HY(riques)YH( d'utili)HY(ser)YH( les m\352me ressources bus en m\352me temps. Au d\351but, ce n'\351tait valable que pour les IRQ et les DMA mais, main)HY(te)HY(nant)YH(, cela s'adresse aussi aux adresses.)EP()0 P(Si vous avez un ancien bus ISA, le programme isapnp doit \352tre ex\351cut\351 au d\351mar)HY(rage)YH( pour trouver et confi)HY(gu)HY(rer)YH( les p\351ri)HY(ph\351)HY(riques)YH( PnP sur le bus ISA. Regar)HY(dez)YH( les messages avec \253 dmesg \273.)EP()0 P(Pour voir quelle aide le noyau peut appor)HY(ter)YH( aux pilotes de p\351ri)HY(ph\351)HY(riques)YH(, consul)HY(tez)YH( le r\351per)HY(toire)YH( )SM(/usr/.../.../Docu)HY(men)HY(ta)HY(tion)YH()ES( o\371 un des \253\240...\240\273 contient le mot \253\240kernel-doc\240\273 ou quelque chose d'appro)HY(chant)YH(. Atten)HY(tion)YH(\240: cette docu)HY(men)HY(ta)HY(tion)YH( a tendance \340 ne plus \352tre \340 jour pour avoir les derni\350res infor)HY(ma)HY(tions)YH( donc vous aurez besoin de lire les messages des listes de diffu)HY(sion)YH( des d\351ve)HY(lop)HY(peurs)YH( du noyau et peut-\352tre aussi de lire le code source et les commen)HY(taires)YH( qu'ils ont \351crits. Dans le r\351per)HY(toire)YH( de la docu)HY(men)HY(ta)HY(tion)YH( du noyau, voir pci.txt \201\253\240How to Write Linux PCI)Ca( Drivers\240\273, c'est-\340-dire \253\240Comment \351crire des pilotes PCI)Ca( pour Linux\240\273\202 ainsi que le fichier )SM(/usr/include/linux/pci.h)ES(. Si vous \352tes un gourou des pilotes et si vous connais)HY(sez)YH( la program)HY(ma)HY(tion)YH( en C, ces fichiers sont \351crits d'une telle fa\347on qu'il ne vont pas vous permettre d'\351crire un pilote. Mais cela vous donnera une id\351e des fonc)HY(tions)YH( type PnP)Ca( dispo)HY(nibles)YH( pour les pilotes.)EP()0 P(Pour le noyau 2.4, voir )SM(isapnp.txt)ES(. Pour le noyau 2.6, )SM(isapnp.txt)ES( est remplac\351 par )SM(pnp.txt)ES( qui est tota)HY(le)HY(ment)YH( diff\351)HY(rent)YH( et g\350re en plus le bus PCI. Voir aussi le livre d'O'Reilly\240: Linux Device Drivers, 3\350 \351dition, 2005. Le texte complet est dispo)HY(nible)YH( sur Inter)HY(net)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 35 H(3.6.\240Probl\350mes)WB 161 Sn()WB 32 Sn( avec Linux PnP)Ca()EH()BR()BR()BR()0 P(Il existe un certain nombre d'autres points qu'un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca( devrait mieux g\351rer\240: )BR()UL()0 P()-1 LI(Allouer des ressources bus quand il en existe peu par une r\351al)HY(lo)HY(ca)HY(tion)YH( des ressources si n\351ces)HY(saire)YH(\240;)EP()0 P()-1 LI(G\351rer le choix d'un pilote lorsqu'il en existe plus d'un par p\351ri)HY(ph\351)HY(rique)YH(\240;)EP()LU()BR()EP()0 P(Comme chaque pilote s'occupe de lui mais pas des autres, un pilote pour)HY(rait)YH( r\351cu)HY(p\351)HY(rer)YH( les ressources bus n\351ces)HY(saires)YH( \340 d'autres p\351ri)HY(ph\351)HY(riques)YH( \201et non encore allou\351s \340 ceux-ci par le noyau\202. Donc un noyau Linux PnP)Ca( plus perfec)HY(tionn\351)YH( serait bien mieux, un noyau qui pour)HY(rait)YH( s'occuper de l'allo)HY(ca)HY(tion)YH( une fois toutes les requ\352tes envoy\351es. Une alter)HY(na)HY(tive)YH( serait d'essayer de r\351al)HY(louer)YH( les ressources d\351j\340 affec)HY(t\351es)YH( quand un pilote n'obtient pas toutes les ressources qu'il a deman)HY(d\351es)YH(.)EP()0 P(Le probl\350me de la \253\240raret\351 des ressources bus\240\273 devient de moins en moins r\351el pour deux raisons\240: la premi\350re est que le bus PCI)Ca( est en train de rempla)HY(cer)YH( le bus ISA)Ca(. Le bus PCI)Ca( n'a pas ce type de probl\350me pour les IRQ)Ca( car celles-ci peuvent \352tre parta)HY(g\351es)YH( \201bien que ce partage rende le syst\350me un peu moins effi)HY(cace)YH(\202. De plus, le PCI)Ca( n'utilise pas les ressources DMA)Ca( \201bien qu'il dispose d'un \351qui)HY(valent)YH( sans avoir besoin des ressources\202.)EP()0 P(La deuxi\350me raison est que plus d'espace d'adresses est dispo)HY(nible)YH( pour les entr\351es/sorties des p\351ri)HY(ph\351)HY(riques)YH(. Alors que l'espace d'adresses conven)HY(tion)HY(nel)YH( du bus ISA)Ca( \351tait limit\351 \340 64\240Ko, le bus PCI)Ca( dispose de 4\240Go. Comme plus de p\351ri)HY(ph\351)HY(riques)YH( physiques utilisent les adresses en m\351moire prin)HY(ci)HY(pale)YH( au lieu de l'espace d'adresses des entr\351es/sorties, il existe toujours un peu de place dispo)HY(nible)YH(, y compris sur le bus ISA)Ca(. Sur les PC 32 bits, il y a un espace d'adres)HY(sage)YH( de 4\240Go en m\351moire prin)HY(ci)HY(pale)YH( et la plupart de ces ressources bus est dispo)HY(nible)YH( pour les entr\351es/sorties des p\351ri)HY(ph\351)HY(riques)YH( \201\340 moins que vous ayez 4\240Go de m\351moire prin)HY(ci)HY(pale)YH( instal)HY(l\351e)YH(\202.)EP()0 P(Il y a eu au moins une tenta)HY(tive)YH( pour faire de Linux un vrai syst\350me d'exploi)HY(ta)HY(tion)YH( PnP. Voir )R5 2 A(http://www.astarte.free-online.co.uk)EA(. Bien que d\351ve)HY(lopp\351)YH( d\350s 1998, elle n'a jamais \351t\351 int\351)HY(gr\351e)YH( au noyau \201mais aurait certai)HY(ne)HY(ment)YH( d\373e l'\352tre\202.)EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 2 36 H(4.\240Confi)WB 162 Sn()HY(gu)HY(rer)YH()WB 33 Sn( un BIOS)Ca( PnP)Ca()EH()BR()BR()BR()0 P(Lorsque l'ordi)HY(na)HY(teur)YH( est d\351marr\351, le BIOS)Ca( est lanc\351 avant que le syst\350me d'exploi)HY(ta)HY(tion)YH( ne soit charg\351. Les BIOS)Ca( modernes sont PnP)Ca( et peuvent confi)HY(gu)HY(rer)YH( la plupart des p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca(. Quelques anciens BIOS)Ca( PCI)Ca( vont seule)HY(ment)YH( confi)HY(gu)HY(rer)YH( le bus PCI)Ca(. Voici quelques choix qui pour)HY(raient)YH( exister dans le menu CMOS)Ca( de votre BIOS)Ca(\240: )BR()UL()0 P()-1 LI()0 34 1 A(Section\2404.1, \253\240Avez-vous un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(\240?\240\273)34 0 TN TL()Ec /AF f D(\240;)EP()0 P()-1 LI()0 38 1 A(Section\2404.2, \253\240Affec)HY(ter)YH( les ressources par le BIOS)Ca(\240?\240\273)38 0 TN TL()Ec /AF f D(\240;)EP()0 P()-1 LI()0 39 1 A(Section\2404.3, \253\240R\351ini)HY(tia)HY(li)HY(ser)YH( la confi)HY(gu)HY(ra)HY(tion)YH(\240\273)39 0 TN TL()Ec /AF f D(.)EP()LU()BR()EP()2 Sl()BR()BR()BR()BR()0 3 37 H(4.1.\240Avez-vous)WB 163 Sn()WB 34 Sn( un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(\240?)EH()BR()BR()BR()0 P(Quelle que soit votre r\351ponse au BIOS)Ca(, le BIOS)Ca( PnP)Ca( utili)HY(sera)YH( PnP)Ca( pour para)HY(m\351)HY(trer)YH( le disque dur, le lecteur de disquette, la carte vid\351o et le clavier, afin de permettre au syst\350me de d\351mar)HY(rer)YH(. Si vous dites avoir un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(, il lais)HY(sera)YH( la fin de la confi)HY(gu)HY(ra)HY(tion)YH( au syst\350me d'exploi)HY(ta)HY(tion)YH( \201ou aux pilotes de p\351ri)HY(ph\351)HY(riques)YH(\202. Si vous dites ne pas avoir de syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(, alors le BIOS)Ca( devra tout confi)HY(gu)HY(rer)YH(.)EP()0 P(Comment r\351pondre \340 cette ques)HY(tion)YH( de votre BIOS)Ca(\240? Si vous avez au moins un noyau 2.4, vous pour)HY(riez)YH( r\351pondre ce que vous voulez et Linux fonc)HY(tion)HY(nera)YH( habi)HY(tuel)HY(le)HY(ment)YH( correc)HY(te)HY(ment)YH(. M\352me si vous avez Windows 2000 ou XP sur le m\352me PC, cela devrait fonc)HY(tion)HY(ner)YH( de toute fa\347on tout simple)HY(ment)YH( parce que Windows et Linux sont tous les deux \340 priori des syst\350mes d'exploi)HY(ta)HY(tion)YH( PnP)Ca( et que si le syst\350me d'exploi)HY(ta)HY(tion)YH( est PnP)Ca(, il devrait \352tre capable de g\351rer le cas o\371 le BIOS)Ca( a tout confi)HY(gur\351)YH( lui-m\352me \201si vous avez r\351pondu que le syst\350me d'exploi)HY(ta)HY(tion)YH( n'est pas PnP)Ca(\202. Mais, je conti)HY(nue)YH( \340 sugg\350)HY(rer)YH( de r\351pondre qu'il n'est pas PnP)Ca( sauf si une raison valable vous oblige \340 faire autre)HY(ment)YH(.)EP()2 Sl()BR()BR()BR()BR()0 4 38 H(4.1.1.\240Linux)WB 164 Sn()WB 35 Sn( avant le noyau 2.4)EH()BR()BR()BR()0 P(La r\351ponse n'est pas souvent claire dans ce cas. Si isapnp \351tait utilis\351 par Linux, alors Linux fera la confi)HY(gu)HY(ra)HY(tion)YH( et il \351tait indiqu\351 qu'il est mieux de dire qu'il s'agit d'un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(. La raison pour laquelle isapnp aurait des probl\350mes en pr\351sence de p\351ri)HY(ph\351)HY(riques)YH( d\351j\340 confi)HY(gu)HY(r\351s)YH( par le BIOS)Ca( n'est pas claire mais de tels probl\350mes arrivent quelque)HY(fois)YH( et sont corri)HY(g\351s)YH( en stop)HY(pant)YH( la confi)HY(gu)HY(ra)HY(tion)YH( du BIOS)Ca( \201en r\351pon)HY(dant)YH( oui, c'est un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(\202. Il existe quelques cas o\371 dire non r\351sol)HY(vait)YH( un probl\350me. Donc, si isapnp n'est pas utilis\351, non est g\351n\351)HY(ra)HY(le)HY(ment)YH( mieux. Les pilotes Linux de p\351ri)HY(ph\351)HY(riques)YH( PCI)Ca( devraient confi)HY(gu)HY(rer)YH( correc)HY(te)HY(ment)YH( ces p\351ri)HY(ph\351)HY(riques)YH(. Mais pour le cas o\371 les p\351ri)HY(ph\351)HY(riques)YH( PCI)Ca( pilot\351s par des pilotes non PCI)Ca(, alors vous pour)HY(riez)YH( dire que le syst\350me d'exploi)HY(ta)HY(tion)YH( n'est pas PnP)Ca( pour obtenir du BIOS)Ca( qu'il les confi)HY(gure)YH( direc)HY(te)HY(ment)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 39 H(4.1.2.\240Windows)WB 165 Sn()WB 36 Sn( 2000 et XP)EH()BR()BR()BR()0 P(Si vous utili)HY(sez)YH( aussi des syst\350mes d'exploi)HY(ta)HY(tion)YH( Windows sur le m\352me PC, vous pour)HY(riez)YH( dire que vous n'avez pas un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(. C'est ce que MS vous sugg\350re de faire. Peut-\352tre que MS souhaite que le BIOS)Ca( fasse un meilleur travail pour la confi)HY(gu)HY(ra)HY(tion)YH( que Windows ne le fera. Ceci est sens\351 parce que le BIOS)Ca( devrait \352tre con\347u pour les parti)HY(cu)HY(la)HY(ri)HY(t\351s)YH( sp\351ci)HY(fiques)YH( de la carte m\350re, et tout sp\351cia)HY(le)HY(ment)YH( de nos jours o\371 beau)HY(coup)YH( de p\351ri)HY(ph\351)HY(riques)YH( sont int\351)HY(gr\351s)YH( \340 celle-ci. Dire non devrait aussi \352tre bon pour les noyaux Linux 2.4 et ult\351)HY(rieurs)YH(. Mais pour les noyaux pr\351c\351)HY(dents)YH(, ce n'est pas si clair \201voir la section ci-dessous\202. Donc, si vous avez des probl\350mes avec Linux, vous pour)HY(riez)YH( essayer de dire que vous avez un syst\350me d'exploi)HY(ta)HY(tion)YH( Linux mais ceci va contre ce que raconte MS \201mais fonc)HY(tion)HY(nera)YH( proba)HY(ble)HY(ment)YH( bien de toute fa\347on\202.)EP()0 P(Lorsque le BIOS)Ca( confi)HY(gure)YH( un p\351ri)HY(ph\351)HY(rique)YH( diff\351)HY(rem)HY(ment)YH( de ce qui est stock\351 dans la base de registres de Windows, celui-ci vous dira qu'il a d\351cou)HY(vert)YH( un nouveau mat\351)HY(riel)YH(. Ce qu'il est r\351el)HY(le)HY(ment)YH( en train de faire est de trouver l'ancien mat\351)HY(riel)YH( qui a \351t\351 confi)HY(gur\351)YH( diff\351)HY(rem)HY(ment)YH(. De toute fa\347on, il enre)HY(gistre)YH( la confi)HY(gu)HY(ra)HY(tion)YH( que le BIOS)Ca( a utili)HY(s\351e)YH( dans ses registres et le p\351ri)HY(ph\351)HY(rique)YH( devrait bien fonc)HY(tion)HY(ner)YH( \340 partir de ce moment.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 40 H(4.1.3.\240MS)WB 166 Sn()WB 37 Sn( Windows 95, 98 \201et Me\240?\202)EH()BR()BR()BR()0 P(Pour Windows9x, MS sugg\350re de dire au BIOS)Ca( que vous avez un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca( \201l'oppos\351 complet du cas pour Windows 2000 et XP\202. Ceci devrait \352tre bon pour Linux si vous dispo)HY(sez)YH( d'un noyau 2.4 ou ult\351)HY(rieur)YH(. Mais si vous avez un noyau Linux pr\351c\351)HY(dent)YH( le 2.4, alors il est mieux pour Linux de dire qu'il ne s'agit pas d'un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(. Une fa\347on de r\351soudre ce dilemme est de le confi)HY(gu)HY(rer)YH( pour le syst\350me d'exploi)HY(ta)HY(tion)YH( que vous utili)HY(sez)YH( le plus fr\351quem)HY(ment)YH(. Ensuite, au d\351mar)HY(rage)YH( de l'autre syst\350me d'exploi)HY(ta)HY(tion)YH(, modi)HY(fiez)YH( manuel)HY(le)HY(ment)YH( la confi)HY(gu)HY(ra)HY(tion)YH( du BIOS)Ca(. C'est tr\350s ennuyant mais c'est faisable si vous n'utili)HY(sez)YH( pratique)HY(ment)YH( jamais l'autre syst\350me d'exploi)HY(ta)HY(tion)YH(. Sinon, il existe de meilleurs fa\347ons de r\351soudre ce dilemme.)EP()0 P(La deuxi\350me fa\347on de r\351soudre ce dilemme est de faire en sorte que Linux confi)HY(gure)YH( toutes les ressources. Voir )0 35 1 A(Section\2404.1.1, \253\240Linux avant le noyau 2.4\240\273)35 0 TN TL()Ec /AF f D(. Ensuite, vous dites au BIOS)Ca( qu'il s'agit d'un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(.)EP()0 P(La troi)HY(si\350me)YH( fa\347on de r\351soudre ce dilemme est de dire au BIOS)Ca( qu'il ne s'agit pas d'un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(. Ceci va \340 l'encontre de ce que dit MS mais il est possible d'obtenir un bon fonc)HY(tion)HY(ne)HY(ment)YH( de MS Windows9x si vous compre)HY(nez)YH( ce que vous faites \201et pourquoi\202. Si vous dites au BIOS)Ca( qu'il ne s'agit pas d'un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(, MS Windows ne devrait-il pas d\351tec)HY(ter)YH( la fa\347on dont le BIOS)Ca( a confi)HY(gur\351)YH( les p\351ri)HY(ph\351)HY(riques)YH( et modi)HY(fier)YH( cela s'il n'aime pas ce que le BIOS)Ca( a fait\240? Cela devrait, mais malheu)HY(reu)HY(se)HY(ment)YH(, cela ne semble pas fonc)HY(tion)HY(ner)YH( de cette fa\347on.)EP()0 P(Ce que Windows 9x semble faire lorsqu'il trouve un mat\351)HY(riel)YH( d\351j\340 confi)HY(gur\351)YH( par le BIOS)Ca( est de le laisser seul et de ne pas le recon)HY(fi)HY(gu)HY(rer)YH(. Main)HY(te)HY(nant)YH(, Windows 9x garde une trace de la confi)HY(gu)HY(ra)HY(tion)YH( des ressources bus dans sa base de registres. Si la confi)HY(gu)HY(ra)HY(tion)YH( du BIOS)Ca( est diff\351)HY(rent)YH(, il devrait soit corri)HY(ger)YH( ce qui se trouve dans sa base de registres soit tout recon)HY(fi)HY(gu)HY(rer)YH( suivant les indi)HY(ca)HY(tions)YH( de cette m\352me base. Mauvaise nouvelle\240: il semble ne rien faire et pense que la confi)HY(gu)HY(ra)HY(tion)YH( actuelle est la m\352me que celle de la base de registres alors qu'en fait elles sont diff\351)HY(rentes)YH(.)EP()0 P(Mais si la base de registre contient une confi)HY(gu)HY(ra)HY(tion)YH( des ressources bus iden)HY(tique)YH( \340 celle du BIOS)Ca(, alors tout fonc)HY(tion)HY(nera)YH( bien. Un p\351ri)HY(ph\351)HY(rique)YH( fonc)HY(tion)HY(nera)YH( bien si le BIOS)Ca( l'a confi)HY(gur\351)YH( de la m\352me fa\347on que ce qui est enre)HY(gis)HY(tr\351)YH( dans la base de registres. Donc, le moyen de faire fonc)HY(tion)HY(ner)YH( correc)HY(te)HY(ment)YH( MS Windows est d'obtenir que la base de registres soit synchro)HY(ni)HY(s\351e)YH( avec la confi)HY(gu)HY(ra)HY(tion)YH( du BIOS)Ca(. Comme mentionn\351 pr\351c\351)HY(dem)HY(ment)YH(, le BIOS)Ca( confi)HY(gure)YH( les \351l\351ments suivant son ESCD)Ca( \201qui est quelque chose comme la base de registres mais pour le BIOS)Ca(\202. Voir )0 46 1 A(Section\2405.4.2, \253\240La base de donn\351es ESCD)Ca( du BIOS)Ca(\240\273)46 0 TN TL()Ec /AF f D(. Donc, nous avons besoin d'obtenir la synchro)HY(ni)HY(sa)HY(tion)YH( des registres avec l'ESCD)Ca( du BIOS)Ca( pour que la base de registres et ESCD)Ca( contiennent la m\352me confi)HY(gu)HY(ra)HY(tion)YH(. Dans certains cas, ces deux arrivent \340 \352tre synchrones et vous n'avez pas besoin de faire quoi que ce soit.)EP()0 P(Une ques)HY(tion)YH( \340 laquelle vous pour)HY(riez)YH( penser est\240: comment l'ESCD)Ca( du BIOS)Ca( et la base de registres Windows peuvent-ils se d\351syn)HY(chro)HY(ni)HY(ser)YH(\240? Voici un sc\351na)HY(rio)YH(. Vous instal)HY(lez)YH( Windows avec le BIOS)Ca( confi)HY(gur\351)YH( pour un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(. Alors, Windows confi)HY(gure)YH( la plupart des \351l\351ments et sauve)HY(garde)YH( sa confi)HY(gu)HY(ra)HY(tion)YH( dans sa base de registres. Puis, plus tard, vous changez la confi)HY(gu)HY(ra)HY(tion)YH( du BIOS)Ca( en pr\351ci)HY(sant)YH( qu'il ne s'agit pas d'un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(. Ensuite, apr\350s un red\351)HY(mar)HY(rage)YH(, le BIOS)Ca( confi)HY(gure)YH( tout et il ne fait pas exac)HY(te)HY(ment)YH( ce que Windows a fait. Donc, la confi)HY(gu)HY(ra)HY(tion)YH( actuelle du mat\351)HY(riel)YH( et ce que Windows dispose dans sa base de registres sont main)HY(te)HY(nant)YH( diff\351)HY(rents)YH(.)EP()0 P(Une fa\347on d'essayer d'obtenir que la base de registres et l'ESCD disposent des m\352mes infor)HY(ma)HY(tions)YH( est d'instal)HY(ler)YH( \201ou de r\351ins)HY(tal)HY(ler)YH(\202 Windows lorsque le BIOS)Ca( est confi)HY(gur\351)YH( pour un syst\350me d'exploi)HY(ta)HY(tion)YH( non PnP)Ca(. De cette fa\347on, Windows dispo)HY(sera)YH( du mat\351)HY(riel)YH( confi)HY(gur\351)YH( par le BIOS)Ca(. Si cette confi)HY(gu)HY(ra)HY(tion)YH( est faite sans conflit, Windows n'en chan)HY(gera)YH( pas et la sauve)HY(gar)HY(dera)YH( dans sa base de registres. Et dans ce cas, l'ESCD)Ca( et la base de registres seront synchro)HY(ni)HY(s\351s)YH(.)EP()0 P( Une autre m\351thode est de suppri)HY(mer)YH( les p\351ri)HY(ph\351)HY(riques)YH( causant probl\350mes \340 Windows en cliquant \253\240Suppri)HY(mer)YH(\240\273 dans le gestion)HY(naire)YH( des p\351ri)HY(ph\351)HY(riques)YH(. Puis red\351)HY(mar)HY(rez)YH( avec \253\240OS non PnP)Ca(\240\273 \201enre)HY(gis)HY(tr\351)YH( dans la m\351moire CMOS)Ca( du BIOS)Ca( lorsque vous red\351)HY(mar)HY(rez)YH(\202. Windows va alors r\351ins)HY(tal)HY(ler)YH( les p\351ri)HY(ph\351)HY(riques)YH(, en utili)HY(sant)YH(, on l'esp\350re, les ressources bus confi)HY(gu)HY(r\351es)YH( par le BIOS)Ca(. Faites atten)HY(tion)YH( que Windows vous deman)HY(dera)YH( d'ins\351rer le CD d'instal)HY(la)HY(tion)YH( de Windows car il peut ne pas trouver les fichiers du pilote de p\351ri)HY(ph\351)HY(riques)YH(, m\352me s'il sont bien l\340. Un contour)HY(ne)HY(ment)YH( est de s\351lec)HY(tion)HY(ner)YH( \253\240skip file\240\273 ce qui \351vitera l'instal)HY(la)HY(tion)YH( du fichier \340 partir du CD. Si le fichier est toujours sur le disque dur, avec un peu de chance, le pilote et tout ira bien, m\352me si le programme d'instal)HY(la)HY(tion)YH( de Windows vous a demand\351 de l'instal)HY(ler)YH( \340 partir du CD \201ce que vous avez pass\351\202. )EP()0 P(Comme test, j'ai \253\240supprim\351\240\273 une carte r\351seau qui utili)HY(sait)YH( un pilote compa)HY(tible)YH( Novell. Au red\351)HY(mar)HY(rage)YH(, Windows l'a r\351ins)HY(tall\351)YH( avec le R\351seaux Micro)HY(soft)YH( plut\364t qu'avec Novell. Ceci signi)HY(fie)YH( que le client Novell a d\373 \352tre r\351ins)HY(tall\351)YH(, un gros travail inutile. Donc, il serait mieux de ne pas conti)HY(nuer)YH( avec Windows 95/98 mais laisser Linux confi)HY(gu)HY(rer)YH( les ressources bus.)EP()0 P(Lors de l'utili)HY(sa)HY(tion)YH( d'un PC Window-Linux \201)EM(dual boot)ES(\202, vous pouvez noter un chan)HY(ge)HY(ment)YH( dans la fa\347on dont le BIOS)Ca( confi)HY(gure)YH( \340 cause de Windows9x \201et des autres versions de Windows\240??\202 en modi)HY(fiant)YH( l'ESCD)Ca(. Il fait cela seule)HY(ment)YH( si vous \253\240forcez\240\273 une confi)HY(gu)HY(ra)HY(tion)YH( ou une instal)HY(la)HY(tion)YH( d'un p\351ri)HY(ph\351)HY(rique)YH( propri\351)HY(taire)YH(. Voir )0 47 1 A(Section\2405.4.3, \253\240Utili)HY(ser)YH( Windows pour confi)HY(gu)HY(rer)YH( l'ESCD\240\273)47 0 TN TL()Ec /AF f D(. Les pilotes de p\351ri)HY(ph\351)HY(riques)YH( r\351ali)HY(sant)YH( la confi)HY(gu)HY(ra)HY(tion)YH( pour)HY(raient)YH( modi)HY(fier)YH( ce que le BIOS)Ca( a fait comme le font les outils PCI)Ca( et isapnp.)EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 41 H(4.2.\240Affec)WB 167 Sn()HY(ter)YH()WB 38 Sn( les ressources par le BIOS)Ca(\240?)EH()BR()BR()BR()0 P(Les BIOS)Ca( modernes vous permettent d'allouer manuel)HY(le)HY(ment)YH( des ressources, prin)HY(ci)HY(pa)HY(le)HY(ment)YH( des IRQ)Ca(. Il existe norma)HY(le)HY(ment)YH( une option pour confi)HY(gu)HY(rer)YH( l'allo)HY(ca)HY(tion)YH( \340 \253\240auto\240\273 de fa\347on \340 ce que le BIOS)Ca( d\351cide de l'allo)HY(ca)HY(tion)YH( des ressources. \253\240Auto\240\273 est souvent un bon choix sauf si vous avez d'anciennes cartes ISA)Ca( propri\351)HY(taires)YH( non PnP)Ca(.)EP()0 P(Si vous avez de telles cartes non PnP)Ca(, alors il peut \352tre impor)HY(tant)YH( de r\351ser)HY(ver)YH( les ressources \201telles que les IRQ)Ca(\202 pour celles-ci dans le BIOS)Ca(. Sinon, le BIOS)Ca( pour)HY(rait)YH( utili)HY(ser)YH( ces ressources pour d'autres p\351ri)HY(ph\351)HY(riques)YH( et cr\351er ainsi des conflits. Une exception concerne quelques p\351ri)HY(ph\351)HY(riques)YH( propri\351)HY(taires)YH( communs, comme les ports paral)HY(l\350le)YH( et s\351ries, les disques durs. Le BIOS)Ca( pour)HY(rait)YH( les trouver \201jetez un \275il \340 l'\351cran au d\351mar)HY(rage)YH(\202 pour que vous n'ayez pas besoin de r\351ser)HY(ver)YH( les ressources pour eux. Si vous avez utilis\351 Windows sur votre PC, Windows pour)HY(rait)YH( d\351j\340 avoir rensei)HY(gn\351)YH( le BIOS)Ca( en utili)HY(sant)YH( l'outil ICU \201ou un outil iden)HY(tique)YH(\202 sous Windows.)EP()0 P(Pour le PCI)Ca(, le BIOS)Ca( devrait aussi vous permettre d'affec)HY(ter)YH( les IRQ)Ca( aux empla)HY(ce)HY(ments)YH( de cartes 1, 2, 3, 4, et c\346tera. Si vous le faites, vous devez conna\356tre les empla)HY(ce)HY(ments)YH( o\371 se trouvent les cartes. En fait, chaque empla)HY(ce)HY(ment)YH( dispose de quatre IRQ)Ca( PCI)Ca(\240: A, B, C et D. Si le menu du BIOS)Ca( ne vous dit pas laquelle \201A, B, C, D\202 est affec)HY(t\351e)YH( \340 un num\351ro d'IRQ, il est probable qu'il affecte seule)HY(ment)YH( le num\351ro d'IRQ)Ca( \340 l'IRQ)Ca( PCI)Ca( A. Mais, beau)HY(coup)YH( de cartes utilisent seule)HY(ment)YH( l'IRQ)Ca( A donc il s'agit surtout d'affec)HY(ter)YH( une IRQ)Ca( \340 un empla)HY(ce)HY(ment)YH(. Voir les )0 77 1 A(inter)HY(rup)HY(tions)YH( PCI)77 0 TN TL()Ec /AF f D(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 42 H(4.3.\240R\351ini)WB 168 Sn()HY(tia)HY(li)HY(ser)YH()WB 39 Sn( la confi)HY(gu)HY(ra)HY(tion)YH()EH()BR()BR()BR()0 P(C'est aussi un peu risqu\351. Ceci va \351craser les donn\351es du BIOS)Ca( conte)HY(nues)YH( dans l'ESCD)Ca( indiquant la fa\347on dont vos p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( ont \351t\351 confi)HY(gu)HY(r\351s)YH( et comment les p\351ri)HY(ph\351)HY(riques)YH( non PnP)Ca( ont \351t\351 confi)HY(gu)HY(r\351s)YH( manuel)HY(le)HY(ment)YH(. Ne faites jamais ceci \340 moins que vous ne soyez convaincu que la base de donn\351es est mauvaise et a besoin d'\352tre recons)HY(truite)YH(. Il \351tait indiqu\351 quelque part que vous deviez faire ceci seule)HY(ment)YH( lorsque vous n'arrivez plus \340 d\351mar)HY(rer)YH(. Si le BIOS)Ca( perd les donn\351es sur les p\351ri)HY(ph\351)HY(riques)YH( ISA)Ca( non PnP)Ca(, alors vous devrez relan)HY(cer)YH( ICA une nouvelle fois sous DOS/Windows pour r\351-enre)HY(gis)HY(trer)YH( les donn\351es.)EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 2 43 H(5.\240G\351rer)WB 169 Sn()WB 40 Sn( les cartes PnP)Ca()EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 3 44 H(5.1.\240Intro)WB 170 Sn()HY(duc)HY(tion)YH()WB 41 Sn( \340 la gestion des p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca()EH()BR()BR()BR()0 P(De nos jours, pratique)HY(ment)YH( toutes les nouvelles cartes internes sont Plug-and-Play. Du coup, la confi)HY(gu)HY(ra)HY(tion)YH( des ressources bus devraient \352tre dans la plupart des cas enti\350)HY(re)HY(ment)YH( auto)HY(ma)HY(tique)YH(. Si un p\351ri)HY(ph\351)HY(rique)YH( ne fonc)HY(tionne)YH( pas, v\351ri)HY(fiez)YH( s'il a \351t\351 d\351tect\351, par exemple en red\351)HY(mar)HY(rant)YH(. Si le pilote de p\351ri)HY(ph\351)HY(rique)YH( ne peut pas confi)HY(gu)HY(rer)YH( les ressources, alors proba)HY(ble)HY(ment)YH( une ou plus des m\351thodes du 2.6 le feront\240: )BR()UL()0 P()-1 LI()0 42 1 A(Section\2405.2, \253\240Confi)HY(gu)HY(ra)HY(tion)YH( du pilote de p\351ri)HY(ph\351)HY(rique)YH(, r\351ser)HY(va)HY(tion)YH( des ressources\240\273)42 0 TN TL()Ec /AF f D(\240;)EP()0 P()-1 LI()0 43 1 A(Section\2405.3, \253\240/sys\240: inter)HY(face)YH( de confi)HY(gu)HY(ra)HY(tion)YH( pour l'utili)HY(sa)HY(teur)YH(\240\273)43 0 TN TL()Ec /AF f D( le noyau 2.6+ \201pas encore pour le PCI)Ca( et quelques autres s\351v\350res limi)HY(ta)HY(tions)YH(\202\240;)EP()0 P()-1 LI()0 44 1 A(Section\2405.4, \253\240Confi)HY(gu)HY(ra)HY(tion)YH( du BIOS)Ca(\240\273)44 0 TN TL()Ec /AF f D( \201pour le bus PCI)Ca(, vous avez seule)HY(ment)YH( besoin d'un BIOS)Ca( PCI)Ca(, sinon vous avez besoin d'un BIOS)Ca( PnP)Ca(\202\240;)EP()0 P()-1 LI()0 49 1 A(Section\2405.5, \253\240ISA)Ca( seule)HY(ment)YH(\240: D\351sac)HY(ti)HY(ver)YH( PnP)Ca(\240?\240\273)49 0 TN TL()Ec /AF f D( par des cava)HY(liers)YH( ou avec un logi)HY(ciel)YH( DOS/Windows \201mais la plupart des cartes ne le font pas\202\240; )EP()0 P()-1 LI()0 50 1 A(Section\2405.6, \253\240Bus ISA)Ca(\240: Isapnp \201outil faisant partie d'isapnp)HY(tools)YH(\202\240\273)50 0 TN TL()Ec /AF f D( est un programme que vous pouvez toujours utili)HY(ser)YH( pour confi)HY(gu)HY(rer)YH( les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( du bus ISA)Ca( \201seule)HY(ment)YH(\202,)EP()0 P()-1 LI()0 51 1 A(Section\2405.7, \253\240Les utili)HY(taires)YH( PCI)Ca(\240\273)51 0 TN TL()Ec /AF f D( permet de confi)HY(gu)HY(rer)YH( le bus PCI)Ca( mais le pilote de p\351ri)HY(ph\351)HY(rique)YH( devrait le g\351rer\240; )EP()0 P()-1 LI()0 52 1 A(Section\2405.8, \253\240Confi)HY(gu)HY(ra)HY(tion)YH( de Windows\240\273)52 0 TN TL()Ec /AF f D( et alors vous d\351mar)HY(rez)YH( Linux \340 partir de Windows/DOS. A utili)HY(ser)YH( en dernier recours.)EP()LU()BR()EP()0 P(N'importe lequel confi)HY(gu)HY(rera)YH( les ressources bus au niveau mat\351)HY(riel)YH( mais seul le premier \201voire le second\202 indiquera au pilote ce qui a \351t\351 fait. La fa\347on dont le pilote est inform\351 d\351pend du pilote. Vous pouvez avoir besoin de faire quelque chose pour l'infor)HY(mer)YH(. Voir )0 55 1 A(Section\2406, \253\240Indiquer au pilote la confi)HY(gu)HY(ra)HY(tion)YH(\240??\240\273)55 0 TN TL()Ec /AF f D(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 45 H(5.2.\240Confi)WB 171 Sn()HY(gu)HY(ra)HY(tion)YH()WB 42 Sn( du pilote de p\351ri)HY(ph\351)HY(rique)YH(, r\351ser)HY(va)HY(tion)YH( des ressources)EH()BR()BR()BR()0 P(Les pilotes de p\351ri)HY(ph\351)HY(riques)YH( \201avec l'aide de fonc)HY(tions)YH( du noyau\202 peuvent \352tre \351crits pour utili)HY(ser)YH( des m\351thodes PnP)Ca( pour confi)HY(gu)HY(rer)YH( les ressources bus du mat\351)HY(riel)YH( mais seule)HY(ment)YH( pour le p\351ri)HY(ph\351)HY(rique)YH( qu'ils contr\364lent. Mais beau)HY(coup)YH( de pilotes de p\351ri)HY(ph\351)HY(riques)YH( acceptent direc)HY(te)HY(ment)YH( ce que le BIOS ou Linux a confi)HY(gur\351)YH( et utilise le code fourni par le noyau pour d\351cou)HY(vrir)YH( comme ce p\351ri)HY(ph\351)HY(rique)YH( a \351t\351 confi)HY(gur\351)YH(. Comme le pilote a v\351rifi\351 la confi)HY(gu)HY(ra)HY(tion)YH( et la certai)HY(ne)HY(ment)YH( recon)HY(fi)HY(gur\351)YH(, il conna\356t de fa\347on \351vidente la confi)HY(gu)HY(ra)HY(tion)YH( et il n'y a aucun besoin de lui donner cette infor)HY(ma)HY(tion)YH(. C'est dont la fa\347on la plus simple de le faire car vous n'avez rien \340 faire si le pilote fait tout.)EP()0 P(Si vous avez un mat\351)HY(riel)YH( datant d'avant l'ISA)Ca( PnP)Ca(, le logi)HY(ciel)YH( PnP)Ca( Linux pour)HY(rait)YH( ne pas le savoir et pour)HY(rait)YH( ne pas conna\356tre les ressources bus qu'il r\351clame. Donc, il pour)HY(rait)YH( allouer de fa\347on erron\351e des ressources dont cet ancien mat\351)HY(riel)YH( a besoin \340 un autre p\351ri)HY(ph\351)HY(rique)YH(. Le r\351sul)HY(tat)YH( est un conflit de ressources mais il existe un moyen de l'\351viter. Vous pouvez r\351ser)HY(ver)YH( les ressources dont cette ancienne carte ISA)Ca( a besoin en confi)HY(gu)HY(rant)YH( le BIOS)Ca( au d\351mar)HY(rage)YH( \201habi)HY(tuel)HY(le)HY(ment)YH(\202, au module isa-pnp ou au noyau \201si le support de PnP)Ca( est int\351gr\351 dans le noyau\202. Par exemple, pour r\351ser)HY(ver)YH( l'IRQ)Ca( 5, donnez cet argu)HY(ment)YH( au module isa-pnp \201ou au noyau\202\240: isapnp_reserve_irq=5. Voir le )R6 2 A(Guide pratique sur l'invite de d\351mar)HY(rage)YH( \201)EM(Boot)HY(Prompt)YH(-HOWTO)ES(\202)EA(. Au lieu de ..._irq, il existe aussi _io, _dma et _mem.)EP()0 P(Pour les p\351ri)HY(ph\351)HY(riques)YH( PCI)Ca(, la plupart des pilotes confi)HY(gu)HY(re)HY(ront)YH( PnP)Ca(. Malheu)HY(reu)HY(se)HY(ment)YH(, un pilote peut r\351cu)HY(p\351)HY(rer)YH( des ressources bus n\351ces)HY(saires)YH( \340 d'autres p\351ri)HY(ph\351)HY(riques)YH( \201mais non allou\351s \340 eux par le noyau\202. Donc, un noyau Linux PnP)Ca( plus perfec)HY(tionn\351)YH( serait meilleur l\340 o\371 le noyau fait l'allo)HY(ca)HY(tion)YH( pour toutes les demandes envoy\351es. Voir )0 31 1 A(Section\2403.5, \253\240Comment Linux g\350re-t-il le PnP)Ca(\240\273)31 0 TN TL()Ec /AF f D(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 46 H(5.3.\240/sys\240:)WB 172 Sn()WB 43 Sn( inter)HY(face)YH( de confi)HY(gu)HY(ra)HY(tion)YH( pour l'utili)HY(sa)HY(teur)YH()EH()BR()BR()BR()0 P(Depuis le noyau 2.6, il existe une nouvelle fa\347on pour que l'utili)HY(sa)HY(teur)YH( confi)HY(gure)YH( les ressources gr\342ce au r\351per)HY(toire)YH( /sys. Mais, jusqu'\340 ao\373t 2004, il ne peut pas \352tre utilis\351 pour une confi)HY(gu)HY(ra)HY(tion)YH( dans la plupart des cas. Voir )0 65 1 A(Section\2407.6, \253\240Le r\351per)HY(toire)YH( /sys\240\273)65 0 TN TL()Ec /AF f D(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 47 H(5.4.\240Confi)WB 173 Sn()HY(gu)HY(ra)HY(tion)YH()WB 44 Sn( du BIOS)Ca()EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 4 48 H(5.4.1.\240Intro)WB 174 Sn()HY(duc)HY(tion)YH()WB 45 Sn( \340 l'utili)HY(sa)HY(tion)YH( de la confi)HY(gu)HY(ra)HY(tion)YH( PnP)Ca( faite par le BIOS)Ca()EH()BR()BR()BR()0 P(Si vous avez un BIOS)Ca( PnP)Ca(, il peut confi)HY(gu)HY(rer)YH( le mat\351)HY(riel)YH(. Si le pilote ne peut pas le faire, le BIOS)Ca( le peut proba)HY(ble)HY(ment)YH(. Ceci veut dire que votre BIOS)Ca( lit les besoins en ressources de tous les p\351ri)HY(ph\351)HY(riques)YH( et les confi)HY(gure)YH( \201en leur allouant les ressources bus\202. C'est un substi)HY(tut)YH( pour l'OS PnP)Ca( sauf que le BIOS)Ca( ne peut faire corres)HY(pondre)YH( les pilotes avec leur p\351ri)HY(ph\351)HY(riques)YH( et ne peut pas non plus indiquer aux pilotes la fa\347on dont il a confi)HY(gur\351)YH( les p\351ri)HY(ph\351)HY(riques)YH(. Il devrait norma)HY(le)HY(ment)YH( utili)HY(ser)YH( la confi)HY(gu)HY(ra)HY(tion)YH( enre)HY(gis)HY(tr\351e)YH( dans sa m\351moire non vola)HY(tile)YH( \201ESCD\202. S'il trouve un nouveau p\351ri)HY(ph\351)HY(rique)YH( ou s'il existe un conflit, le BIOS)Ca( devra effec)HY(tuer)YH( les chan)HY(ge)HY(ments)YH( n\351ces)HY(saires)YH( et pour)HY(rait)YH( ne pas utili)HY(ser)YH( la m\352me confi)HY(gu)HY(ra)HY(tion)YH( que celle de l'ESCD. Dans ce cas, il devra mettre \340 jour l'ESCD)Ca( pour refl\351)HY(ter)YH( la situa)HY(tion)YH(.)EP()0 P(Votre BIOS)Ca( doit g\351rer une telle confi)HY(gu)HY(ra)HY(tion)YH(, mais il existe des cas o\371 il ne le fait pas correc)HY(te)HY(ment)YH( ou pas compl\350)HY(te)HY(ment)YH(. Le BIOS)Ca( a aussi besoin de savoir via le menu CMOS si le syst\350me d'exploi)HY(ta)HY(tion)YH( est PnP)Ca(. Alors que la plupart des pilotes de p\351ri)HY(ph\351)HY(riques)YH( seront capables de d\351tec)HY(ter)YH( auto)HY(ma)HY(tique)HY(ment)YH( ce que le BIOS)Ca( a fait, dans certains cas, vous aurez besoin de le d\351ter)HY(mi)HY(ner)YH( \201ce qui n'est pas toujours facile\202. Voir )0 58 1 A(Section\2407, \253\240Comment puis-je trouver les p\351ri)HY(ph\351)HY(riques)YH( et comment sont-ils confi)HY(gu)HY(r\351s)YH(\240?\240\273)58 0 TN TL()Ec /AF f D(. Un avan)HY(tage)YH( possible \340 laisser le BIOS)Ca( faire cette confi)HY(gu)HY(ra)HY(tion)YH( est qu'il fait son boulot avant de lancer Linux, donc c'est fait tr\350s t\364t dans le proces)HY(sus)YH( de d\351mar)HY(rage)YH(.)EP()0 P(La plupart des BIOS)Ca( cr\351\351s apr\350s 1996\240?? peuvent confi)HY(gu)HY(rer)YH( les ressources des bus PCI)Ca( et ISA)Ca(. Mais, il a \351t\351 dit que certains anciens BIOS)Ca( peuvent unique)HY(ment)YH( s'occuper du PCI)Ca(. Pour essayer d'en savoir plus sur votre BIOS)Ca(, cher)HY(chez)YH( sur le web. Merci de ne pas me deman)HY(der)YH( car je n'ai pas toutes les donn\351es l\340-dessus. Les d\351tails du BIOS)Ca( que vous souhai)HY(tez)YH( conna\356tre peuvent \352tre diffi)HY(ciles)YH( \340 trouver. Certains BIOS)Ca( pour)HY(raient)YH( avoir des capa)HY(ci)HY(t\351s)YH( PnP)Ca( mini)HY(males)YH( et attendre que le syst\350me d'exploi)HY(ta)HY(tion)YH( fasse la confi)HY(gu)HY(ra)HY(tion)YH( PnP)Ca(. Si cela arrive, vous devrez soit trouver une autre m\351thode soit essayer d'enre)HY(gis)HY(trer)YH( les infor)HY(ma)HY(tions)YH( dans la base de donn\351es ESCD)Ca( si le BIOS)Ca( en a une. Voir la prochaine section.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 49 H(5.4.2.\240La)WB 175 Sn()WB 46 Sn( base de donn\351es ESCD)Ca( du BIOS)Ca()EH()BR()BR()BR()0 P(Le BIOS)Ca( main)HY(tient)YH( une base de donn\351es non vola)HY(tile)YH( conte)HY(nant)YH( la confi)HY(gu)HY(ra)HY(tion)YH( PnP)Ca( qu'il essaiera d'utili)HY(ser)YH( \201si vous aviez indiqu\351 qu'il ne s'agit pas d'un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(\202. Elle s'appelle l'ESCD)Ca( \201acro)HY(nyme)YH( pour Exten)HY(ded)YH( System Confi)HY(gu)HY(ra)HY(tion)YH( Data, soit Donn\351es pour une Confi)HY(gu)HY(ra)HY(tion)YH( \311tendue du Syst\350me\202. Encore une fois, l'ESCD)Ca( est option)HY(nel)YH( mais la plupart des BIOS)Ca( PnP)Ca( en disposent. L'ESCD)Ca( enre)HY(gistre)YH( non seule)HY(ment)YH( la confi)HY(gu)HY(ra)HY(tion)YH( des ressources pour les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( mais aussi celle des p\351ri)HY(ph\351)HY(riques)YH( non PnP)Ca( \201et les indique en tant que tels\202 pour \351viter les conflits. Les donn\351es de l'ESCD)Ca( sont habi)HY(tuel)HY(le)HY(ment)YH( enre)HY(gis)HY(tr\351es)YH( sur un compo)HY(sant)YH( et restent intactes lorsque la machine est arr\352t\351e, mais c'est parfois stock\351 sur un disque dur\240??)EP()0 P(L'ESCD)Ca( a pour but de conser)HY(ver)YH( la derni\350re confi)HY(gu)HY(ra)HY(tion)YH( utili)HY(s\351e)YH(. Mais comme Linux peut modi)HY(fier)YH( la confi)HY(gu)HY(ra)HY(tion)YH( des p\351ri)HY(ph\351)HY(riques)YH( \201en incluant l'utili)HY(sa)HY(teur)YH( avec les outils PCI)Ca( ou isapnp\202, l'ESCD)Ca( ne sera pas au courant de cette modi)HY(fi)HY(ca)HY(tion)YH( et ne sauve)HY(gar)HY(dera)YH( pas cette confi)HY(gu)HY(ra)HY(tion)YH(. Un bon syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca( devrait mettre \340 jour l'ESCD, pour que les infor)HY(ma)HY(tions)YH( qui y sont stock\351es puissent \352tre utili)HY(s\351es)YH( par un syst\350me d'exploi)HY(ta)HY(tion)YH( non PnP)Ca( \201comme un Linux stan)HY(dard)YH(\202. MS Windows 9x ne le fait que dans certains pr\351cis. Voir )0 47 1 A(Section\2405.4.3, \253\240Utili)HY(ser)YH( Windows pour confi)HY(gu)HY(rer)YH( l'ESCD\240\273)47 0 TN TL()Ec /AF f D(. \300 partir du noyau 2.6, Linux est capable de modi)HY(fier)YH( l'ESCD)Ca( mais cela n'est pas encore utilis\351 \201ao\373t 2004\202.)EP()0 P(Pour utili)HY(ser)YH( ce qui a \351t\351 enre)HY(gis)HY(tr\351)YH( dans l'ESCD, assurez-vous d'avoir bien sp\351ci)HY(fi\351)YH( que l'OS n'est pas PnP)Ca( dans le CMOS)Ca( du BIOS)Ca(. Par la suite, \340 chaque fois que le BIOS)Ca( d\351marre \201avant que l'OS Linux ne soit charg\351\202, il devrait tout confi)HY(gu)HY(rer)YH( de cette fa\347on. Si le BIOS)Ca( d\351tecte une nouvelle carte PnP)Ca( non indiqu\351e dans l'ESCD, alors il allouera des ressources bus \340 la carte et mettra \340 jour l'ESCD. Il pour)HY(rait)YH( m\352me changer les ressources bus assi)HY(gn\351es)YH( aux cartes PnP)Ca( exis)HY(tantes)YH( et modi)HY(fier)YH( l'ESCD)Ca( de mani\350re concor)HY(dante)YH(.)EP()0 P(Un programme vous permet de visua)HY(li)HY(ser)YH( le contenu de l'ESCD. Il affiche les IRQ)Ca(, les adresses d'entr\351es/sorties, et c\346tera mais les noms de p\351ri)HY(ph\351)HY(riques)YH( manquent \201seule)HY(ment)YH( les num\351ros d'iden)HY(ti)HY(fiant)YH( des p\351ri)HY(ph\351)HY(riques)YH( EISA\202. Il est dispo)HY(nible)YH( sur l')R7 2 A(index de /home/gunther.mayer/lsescd)EA(.)EP()0 P(Si chaque p\351ri)HY(ph\351)HY(rique)YH( sauve)HY(gar)HY(dait)YH( sa derni\350re confi)HY(gu)HY(ra)HY(tion)YH( au niveau du mat\351)HY(riel)YH(, la confi)HY(gu)HY(ra)HY(tion)YH( mat\351)HY(rielle)YH( ne serait pas n\351ces)HY(saire)YH( \340 chaque d\351mar)HY(rage)YH( du PC. Mais cela ne fonc)HY(tionne)YH( pas ainsi. Donc, toutes les donn\351es de l'ESCD)Ca( ont besoin d'\352tre actua)HY(li)HY(s\351es)YH( si vous utili)HY(sez)YH( le BIOS)Ca( pour PnP)Ca(. Il existe des BIOS)Ca( ne dispo)HY(sant)YH( pas d'ESCD)Ca( mais ayant une m\351moire non vola)HY(tile)YH( pour stocker des infor)HY(ma)HY(tions)YH( concer)HY(nant)YH( l'attri)HY(bu)HY(tion)YH( des ressources bus aux cartes non PnP)Ca(. Beau)HY(coup)YH( de BIOS)Ca( disposent des deux.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 50 H(5.4.3.\240Utili)WB 176 Sn()HY(ser)YH()WB 47 Sn( Windows pour confi)HY(gu)HY(rer)YH( l'ESCD)EH()BR()BR()BR()0 P(\311ven)HY(tuel)HY(le)HY(ment)YH(, Linux pour)HY(rait)YH( initia)HY(li)HY(ser)YH( l'ESCD. Depuis Linux 2.6, une fonc)HY(tion)YH( du nouveau code pour)HY(rait)YH( le faire si le noyau a \351t\351 compil\351 avec PNPBIOS. Mais elle reste pour l'instant inuti)HY(li)HY(s\351e)YH(.)EP()0 P(Si le BIOS)Ca( ne confi)HY(gure)YH( pas l'ESCD)Ca( de la fa\347on souhai)HY(t\351e)YH( \201ou de la bonne fa\347on\202, alors il serait bien de dispo)HY(ser)YH( d'un utili)HY(taire)YH( Linux pour le faire. Donc, vous pour)HY(riez)YH( vouloir utili)HY(ser)YH( Windows \201si vous l'avez sur le m\352me PC\202 pour faire cela.)EP()0 P(Il existe trois fa\347ons d'utili)HY(ser)YH( Windows pour tenter de modi)HY(fier)YH( l'ESCD. La premi\350re est d'utili)HY(ser)YH( l'utili)HY(taire)YH( ICU pour DOS ou Windows 3.x. Il devrait aussi fonc)HY(tion)HY(ner)YH( pour Windows 9x/2k\240?? Une autre fa\347on est de confi)HY(gu)HY(rer)YH( les p\351ri)HY(ph\351)HY(riques)YH( manuel)HY(le)HY(ment)YH( \201\253\240en for\347ant\240\273\202 sous Windows 9x/2k de fa\347on \340 ce que Windows enre)HY(gistre)YH( les infor)HY(ma)HY(tions)YH( dans l'ESCD)Ca( lorsque Windows est arr\352t\351 norma)HY(le)HY(ment)YH(. La troi)HY(si\350me)YH( fa\347on est possible unique)HY(ment)YH( pour les p\351ri)HY(ph\351)HY(riques)YH( non PnP)Ca(. Si Windows conna\356t quelque chose sur eux, notam)HY(ment)YH( quelles ressources bus ils utilisent, alors Windows enre)HY(gis)HY(trera)YH( cette infor)HY(ma)HY(tion)YH( dans l'ESCD.)EP()0 P(Si les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( sont confi)HY(gu)HY(r\351s)YH( auto)HY(ma)HY(tique)HY(ment)YH( par Windows sans que l'utili)HY(sa)HY(teur)YH( ait besoin de forcer cette recon)HY(nais)HY(sance)YH(, alors ces para)HY(m\351)HY(trages)YH( ne se trou)HY(ve)HY(ront)YH( proba)HY(ble)HY(ment)YH( pas dans l'ESCD. Bien s\373r, Windows pour)HY(rait)YH( bien d\351cider de lui-m\352me de confi)HY(gu)HY(rer)YH( ce qui est enre)HY(gis)HY(tr\351)YH( dans l'ESCD, ce qui pour)HY(rait)YH( aboutir au m\352me par co\357n)HY(ci)HY(dence)YH(.)EP()0 P(Windows 9x est un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca( et confi)HY(gure)YH( auto)HY(ma)HY(tique)HY(ment)YH( via PnP)Ca( les p\351ri)HY(ph\351)HY(riques)YH(. Il main)HY(tient)YH( leur propre base de donn\351es PnP)Ca( dans la base de registre \201fichiers binaires de Windows\202. Beau)HY(coup)YH( d'autres donn\351es de confi)HY(gu)HY(ra)HY(tion)YH( r\351sident dans la base de registre en plus des ressources bus PnP)Ca(. Il y a \340 la fois une confi)HY(gu)HY(ra)HY(tion)YH( des ressources PnP)Ca( actuelles et une autre \201peut-\352tre la m\352me\202 enre)HY(gis)HY(tr\351e)YH( sur le disque dur. Pour voir \347a avec Windows 98, ou pour forcer l'enre)HY(gis)HY(tre)HY(ment)YH( des modi)HY(fi)HY(ca)HY(tions)YH(, utili)HY(sez)YH( le gestion)HY(naire)YH( des p\351ri)HY(ph\351)HY(riques)YH(.)EP()0 P(Dans Windows 98, il existe deux fa\347ons d'arriver au gestion)HY(naire)YH( des p\351ri)HY(ph\351)HY(riques)YH(\240: )BR()UL()0 P()-1 LI(1. Poste de travail --> Panneau de confi)HY(gu)HY(ra)HY(tion)YH( --> Syst\350me --> Gestion)HY(naire)YH( de p\351ri)HY(ph\351)HY(riques)YH()EP()0 P()-1 LI(2. \201clic droit\202 Poste de travail --> Propri\351)HY(t\351s)YH( --> Gestion)HY(naire)YH( de p\351ri)HY(ph\351)HY(riques)YH(.)EP()LU()BR( Ensuite, dans ce gestion)HY(naire)YH(, vous s\351lec)HY(tion)HY(nez)YH( un p\351ri)HY(ph\351)HY(rique)YH( \201parfois un proces)HY(sus)YH( en plusieurs \351tapes s'il existe plusieurs p\351ri)HY(ph\351)HY(riques)YH( de la m\352me classe\202. Ensuite, cliquez sur \253\240Propri\351)HY(t\351s)YH(\240\273 puis \253\240Ressources\240\273. Pour essayer de modi)HY(fier)YH( la confi)HY(gu)HY(ra)HY(tion)YH( des ressources manuel)HY(le)HY(ment)YH(, d\351co)HY(chez)YH( \253\240Utili)HY(sez)YH( la confi)HY(gu)HY(ra)HY(tion)YH( auto)HY(ma)HY(tique)YH(\240\273 puis cliquez sur \253\240Changer la confi)HY(gu)HY(ra)HY(tion)YH(\240\273. Main)HY(te)HY(nant)YH(, essayez de modi)HY(fier)YH( les para)HY(m\351)HY(trages)YH(. Il peut ne pas vous laisser les modi)HY(fier)YH(. S'il vous le permet, vous avez \253\240forc\351\240\273 un chan)HY(ge)HY(ment)YH(. Du coup, un message devrait vous avertir que vous avez forc\351 cette modi)HY(fi)HY(ca)HY(tion)YH(. Si vous souhai)HY(tez)YH( garder le para)HY(m\351)HY(trage)YH( exis)HY(tant)YH( affich\351 par Windows, mais que vous voulez forcer, alors vous devrez forcer un autre chan)HY(ge)HY(ment)YH( et de nouveau forcer sa modi)HY(fi)HY(ca)HY(tion)YH( en sa valeur pr\351c\351)HY(dente)YH(.)EP()0 P(Pour voir ce qui a \351t\351 forc\351 sous Windows 98, regar)HY(dez)YH( la liste des mat\351)HY(riels)YH( \253\240forc\351s\240\273\240: D\351mar)HY(rer)YH( --> Programme --> Acces)HY(soires)YH( --> Outils syst\350me --> Infor)HY(ma)HY(tion)YH( syst\350me --> Ressources mat\351)HY(rielles)YH( --> Mat\351)HY(riel)YH( forc\351. Lorsque vous \253\240forcez\240\273 un chan)HY(ge)HY(ment)YH( des ressources bus dans Windows, il devrait enre)HY(gis)HY(trer)YH( votre modi)HY(fi)HY(ca)HY(tion)YH( dans l'ESCD)Ca( \201\340 condi)HY(tion)YH( que vous ayez quitt\351 Windows norma)HY(le)HY(ment)YH(\202. \300 partir de la fen\352tre \253\240Infor)HY(ma)HY(tions)YH( syst\350me\240\273, vous pouvez aussi voir comment les IRQ)Ca( et les ports d'entr\351es/sorties ont \351t\351 allou\351s par Windows.)EP()0 P(M\352me si Windows ne montre aucun conflit des ressources bus, il peut exister un conflit sous Linux. Ceci est d\373 au fait que Windows peut affec)HY(ter)YH( des ressources bus diff\351)HY(rentes)YH( de celles de l'ESCD. Dans le cas rare o\371 les p\351ri)HY(ph\351)HY(riques)YH( sous Windows sont soit non PnP)Ca( soit \253\240forc\351s\240\273, alors la confi)HY(gu)HY(ra)HY(tion)YH( Windows et celle de l'ESCD devraient \352tre les m\352mes.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 51 H(5.4.4.\240Ajouter)WB 177 Sn()WB 48 Sn( un nouveau p\351ri)HY(ph\351)HY(rique)YH( \201sous Linux ou Windows\202)EH()BR()BR()BR()0 P(Si vous ajoutez un nouveau p\351ri)HY(ph\351)HY(rique)YH( PnP)Ca( et avez confi)HY(gur\351)YH( le BIOS)Ca( \340 \253\240pas un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(\240\273, alors le BIOS)Ca( devrait auto)HY(ma)HY(tique)HY(ment)YH( le confi)HY(gu)HY(rer)YH( et enre)HY(gis)HY(trer)YH( la confi)HY(gu)HY(ra)HY(tion)YH( dans l'ESCD. S'il ne s'agit pas d'un p\351ri)HY(ph\351)HY(rique)YH( non PnP)Ca( \201ou un utili)HY(sant)YH( les cava)HY(liers)YH(\202, alors il existe quelques options pour le g\351rer.)EP()0 P(Vous pouvez indiquer direc)HY(te)HY(ment)YH( au BIOS)Ca( \201via le menu de confi)HY(gu)HY(ra)HY(tion)YH( CMOS)Ca(\202 que certaines ressources bus qu'il utilise sont r\351ser)HY(v\351es)YH( et ne peuvent pas \352tre allou\351es avec PnP)Ca(. Ceci ne met pas cette infor)HY(ma)HY(tion)YH( dans l'ESCD. Il existe un menu de s\351lec)HY(tion)YH( du BIOS)Ca( permet)HY(tant)YH( d'indiquer si les choix CMOS)Ca( supplantent ceux de l'ESCD)Ca( en cas de conflit. Une autre m\351thode revient \340 lancer ICU sous DOS/Windows. Encore une autre permet de l'instal)HY(ler)YH( manuel)HY(le)HY(ment)YH( sous Windows 9x/2k puis de s'assurer que cette confi)HY(gu)HY(ra)HY(tion)YH( est \253\240forc\351e\240\273 \201voir la section pr\351c\351)HY(dente)YH(\202. Si elle l'est, Windows devrait mettre \340 jour l'ESCD)Ca( \340 l'arr\352t du PC.)EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 52 H(5.5.\240)WB 178 Sn()WB 49 Sn(ISA)Ca( seule)HY(ment)YH(\240: D\351sac)HY(ti)HY(ver)YH( PnP)Ca(\240?)EH()BR()BR()BR()0 P(Les p\351ri)HY(ph\351)HY(riques)YH( PCI)Ca( sont PnP)Ca( \340 la base donc cela ne peut pas \352tre d\351sac)HY(tiv\351)YH(. Mais quelques p\351ri)HY(ph\351)HY(riques)YH( ISA)Ca( ont des options pour d\351sac)HY(ti)HY(ver)YH( PnP)Ca( par l'inter)HY(m\351)HY(diaire)YH( de cava)HY(liers)YH( ou en lan\347ant un programme Windows fourni avec le p\351ri)HY(ph\351)HY(rique)YH( \201confi)HY(gu)HY(ra)HY(tion)YH( logi)HY(cielle)YH(\202. Si le pilote du p\351ri)HY(ph\351)HY(rique)YH( ne peut pas le confi)HY(gu)HY(rer)YH(, ceci \351vitera la t\342che proba)HY(ble)HY(ment)YH( compliqu\351e de la confi)HY(gu)HY(ra)HY(tion)YH( PnP)Ca(. N'oubliez pas de dire au BIOS)Ca( que ces ressources bus sont r\351ser)HY(v\351es)YH(. Mais comme le support de Linux pour le PnP)Ca( a \351t\351 am\351lior\351, vous ne voulez g\351n\351)HY(ra)HY(le)HY(ment)YH( pas d\351sac)HY(ti)HY(ver)YH( PnP)Ca(. Voici quelques argu)HY(ments)YH( pour lesquels vous ne voudrez pas d\351sac)HY(ti)HY(ver)YH( PnP)Ca(\240: )BR()UL()0 P()-1 LI(Si vous avez Windows sur la m\352me machine, alors vous pouvez permettre \340 PnP)Ca( de confi)HY(gu)HY(rer)YH( les p\351ri)HY(ph\351)HY(riques)YH( diff\351)HY(rem)HY(ment)YH( entre Windows et Linux.)EP()0 P()-1 LI(L'ensemble des choix pour les num\351ros d'IRQ)Ca( \201ou ports d'adresse\202 peut \352tre assez limit\351 sauf si vous utili)HY(sez)YH( PnP)Ca(.)EP()0 P()-1 LI(Vous pour)HY(riez)YH( avoir un pilote de p\351ri)HY(ph\351)HY(rique)YH( Linux utili)HY(sant)YH( des m\351thodes PnP)Ca( pour recher)HY(cher)YH( le p\351ri)HY(ph\351)HY(rique)YH( qu'il contr\364le.)EP()0 P()-1 LI(Si vous avez besoin de modi)HY(fier)YH( la confi)HY(gu)HY(ra)HY(tion)YH( plus tard, il serait plus facile de faire ceci avec PnP)Ca( \201sans utili)HY(ser)YH( de cava)HY(liers)YH( ou d'avoir \340 lancer un programme Dos/Windows\202. )EP()LU()BR()EP()0 P(Une fois vos p\351ri)HY(ph\351)HY(riques)YH( confi)HY(gu)HY(r\351s)YH( sans PnP)Ca(, ils ne peuvent plus \352tre confi)HY(gu)HY(r\351s)YH( par un logi)HY(ciel)YH( PnP)Ca( ou par un BIOS)Ca( PnP)Ca( \201jusqu'\340 ce que vous chan)HY(giez)YH( les cava)HY(liers)YH( ou utili)HY(siez)YH( le logi)HY(ciel)YH( de confi)HY(gu)HY(ra)HY(tion)YH( Dos/Windows\202.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 53 H(5.6.\240Bus)WB 179 Sn()WB 50 Sn( ISA)Ca(\240: Isapnp \201outil faisant partie d'isapnp)HY(tools)YH(\202)EH()BR()BR()BR()0 P(Le programme )BD(isapnp)ES( est utilis\351 unique)HY(ment)YH( pour les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( du bus ISA)Ca( \201donc non PCI)Ca(\202. Il \351tait vrai)HY(ment)YH( n\351ces)HY(saire)YH( avant les noyaux 2.4. Avec le noyau 2.4, qui a apport\351 des fonc)HY(tion)HY(na)HY(li)HY(t\351s)YH( permet)HY(tant)YH( aux pilotes de g\351rer le PnP)Ca( sur le bus ISA)Ca(, le programme )BD(isapnp)ES( devient moins impor)HY(tant)YH(. De plus, le BIOS)Ca( pour)HY(rait)YH( confi)HY(gu)HY(rer)YH( ISA)Ca( PnP)Ca( de mani\350re satis)HY(fai)HY(sante)YH(. Mais, le module isa-pnp \201ou l'\351qui)HY(valent)YH( int\351gr\351 au noyau\202 est d\351j\340 tr\350s satis)HY(fai)HY(sant)YH( car de nombreux pilotes de p\351ri)HY(ph\351)HY(riques)YH( ISA)Ca( l'appellent pour confi)HY(gu)HY(rer)YH( les ressources du bus. Avant le noyau 2.6, cela r\351sul)HY(tait)YH( en un \253\240fichier\240\273 )SM(/proc/isapnp)ES( pouvant \352tre utilis\351 pour confi)HY(gu)HY(rer)YH( manuel)HY(le)HY(ment)YH( \201voir isapnp.txt dans la docu)HY(men)HY(ta)HY(tion)YH( du noyau\202.)EP()0 P(Dans certains cas, les distri)HY(bu)HY(tions)YH( Linux ont \351t\351 confi)HY(gu)HY(r\351es)YH( pour lancer )BD(isapnp)ES( auto)HY(ma)HY(tique)HY(ment)YH( au d\351mar)HY(rage)YH(. Il est toujours utilis\351 en 2004 mais il n'est pas r\351el)HY(le)HY(ment)YH( n\351ces)HY(saire)YH( si les pilotes de p\351ri)HY(ph\351)HY(riques)YH( fonc)HY(tionnent)YH( bien. Si vous avez besoin de le confi)HY(gu)HY(rer)YH( vous-m\352me, la grande partie de la docu)HY(men)HY(ta)HY(tion)YH( d'isapnp est diffi)HY(cile)YH( \340 comprendre sauf si vous poss\351)HY(dez)YH( des notions de base de PnP)Ca(. Ce guide pratique devrait vous aider \340 le comprendre, ainsi que la FAQ qui accom)HY(pagne)YH( )BD(isapnp)ES(. Lancer le programme )BD(isapnp)ES( au d\351mar)HY(rage)YH( vous permet)HY(tra)YH( de confi)HY(gu)HY(rer)YH( ces p\351ri)HY(ph\351)HY(riques)YH( suivant les valeurs sp\351ci)HY(fi\351es)YH( dans )SM(/etc/isapnp.conf)ES(. Il est possible de cr\351er ce fichier de confi)HY(gu)HY(ra)HY(tion)YH( auto)HY(ma)HY(tique)HY(ment)YH( mais vous devrez alors l'\351diter manuel)HY(le)HY(ment)YH( pour choisir entre les diff\351)HY(rentes)YH( options. Puis pour que le pilote connaisse ces ressources, vous avez souvent besoin de les sp\351ci)HY(fier)YH( en tant que para)HY(m\350tres)YH( pour les modules appro)HY(pri\351s)YH( \201pilotes\202. Ceci se fait avec des fichiers de confi)HY(gu)HY(ra)HY(tion)YH(, g\351n\351)HY(ra)HY(le)HY(ment)YH( dans le r\351per)HY(toire)YH( )SM(/etc)ES(. Cher)HY(chez)YH(-y des fichiers nomm\351s )SM(mod*)ES(, et c\346tera. Si le pilote est int\351gr\351 au noyau, alors ils pour)HY(raient)YH( parfois \352tre donn\351s comme para)HY(m\350tre)YH( du noyau. Voir le )R8 2 A(guide pratique des options de d\351mar)HY(rage)YH()EA(.)EP()0 P(Avec )BD(isapnp)ES(, il exis)HY(tait)YH( un risque qu'un pilote de p\351ri)HY(ph\351)HY(rique)YH(, int\351gr\351 au noyau, soit lanc\351 trop t\364t, avant qu')BD(isapnp)ES( n'ait pu confi)HY(gu)HY(rer)YH( les adresses, et c\346tera au niveau mat\351)HY(riel)YH(. En cons\351quence, le pilote de p\351ri)HY(ph\351)HY(rique)YH( ne serait plus capable de trouver le p\351ri)HY(ph\351)HY(rique)YH(. Le pilote essaie la bonne adresse mais cette adresse n'est pas confi)HY(gu)HY(r\351e)YH( au niveau mat\351)HY(riel)YH(. Cela est-il toujours un probl\350me\240??)EP()0 P(Si votre distri)HY(bu)HY(tion)YH( Linux a auto)HY(ma)HY(tique)HY(ment)YH( install\351 )BD(isapnp)HY(tools)YH()ES(, )BD(isapnp)ES( est proba)HY(ble)HY(ment)YH( lanc\351 au d\351mar)HY(rage)YH(. Dans ce cas, il ne vous reste qu'\340 \351diter )SM(/etc/isapnp.conf)ES( suivant )BD()SM(man isapnp.conf)ES()ES(. Notez que cela revient \340 confi)HY(gu)HY(rer)YH( manuel)HY(le)HY(ment)YH( PnP)Ca( car vous pren)HY(drez)YH( les d\351ci)HY(sions)YH( sur la fa\347on de confi)HY(gu)HY(rer)YH( lors de l'\351dition du fichier de confi)HY(gu)HY(ra)HY(tion)YH(.)EP()0 P(Si le fichier de confi)HY(gu)HY(ra)HY(tion)YH( est mauvais ou n'existe pas, vous pouvez utili)HY(ser)YH( le programme )BD(pnpdump)ES( pour vous aider \340 cr\351er le fichier de confi)HY(gu)HY(ra)HY(tion)YH(. Il cr\351e pour vous un fichier de confi)HY(gu)HY(ra)HY(tion)YH( mais vous devrez l'\351diter avec intel)HY(li)HY(gence)YH( avant de l'utili)HY(ser)YH(. Il contient quelques commen)HY(taires)YH( pour vous aider. Alors que le BIOS)Ca( pour)HY(rait)YH( aussi avoir confi)HY(gur\351)YH( les p\351ri)HY(ph\351)HY(riques)YH( ISA)Ca( \201si vous lui avez dit que vous ne dispo)HY(sez)YH( pas de syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(\202, )BD(isapnp)ES( le refera.)EP()0 P(La termi)HY(no)HY(lo)HY(gie)YH( utili)HY(s\351e)YH( dans le fichier )SM(/etc/isapnp.conf)ES( peut sembler \351trange au d\351but. Par exemple, pour une adresse d'entr\351e/sortie 0x3e8, vous pour)HY(riez)YH( voir \253\240\201IO 0 \201BASE 0x3e8\202\202\240\273 \340 la place. \253\240IO 0\240\273 veut dire qu'il s'agit de la premi\350re plage d'adresses que ce p\351ri)HY(ph\351)HY(rique)YH( utilise. Une autre fa\347on d'expri)HY(mer)YH( ceci serait\240: \253\240IO[0] = 0x3e8\240\273 mais )BD(isapnp)ES( ne le fait pas de cette fa\347on. \253\240IO 1\240\273 voudrait dire qu'il s'agit de la deuxi\350me plage d'adresse utili)HY(s\351e)YH( par ce p\351ri)HY(ph\351)HY(rique)YH(, et c\346tera. \253\240INT 0\240\273 a une signi)HY(fi)HY(ca)HY(tion)YH( simi)HY(laire)YH( mais pour les IRQ)Ca( \201inter)HY(rup)HY(tions)YH(\202. Une carte simple peut conte)HY(nir)YH( plusieurs p\351ri)HY(ph\351)HY(riques)YH( physiques mais l'expli)HY(ca)HY(tion)YH( ci-dessus \351tait seule)HY(ment)YH( pour un des p\351ri)HY(ph\351)HY(riques)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 54 H(5.7.\240Les)WB 180 Sn()WB 51 Sn( utili)HY(taires)YH( PCI)Ca()EH()BR()BR()BR()0 P(Le paque)HY(tage)YH( des utili)HY(taires)YH( PCI)Ca( \201)BD(pciu)HY(tils)YH()ES(, quelque fois appel\351 \253\240pcitools\240\273\202 vous permet de confi)HY(gu)HY(rer)YH( manuel)HY(le)HY(ment)YH( via PnP)Ca( le bus PCI)Ca( \201avec diffi)HY(cult\351)YH(\202. )BD(lspci)ES( ou )BD(scanpci)ES( liste les ressources bus alors que )BD(setpci)ES( enre)HY(gistre)YH( les allo)HY(ca)HY(tions)YH( des ressources \201sauf les IRQ)Ca(\202 dans les p\351ri)HY(ph\351)HY(riques)YH( physiques. Il semble que )BD(setpci)ES( soit prin)HY(ci)HY(pa)HY(le)HY(ment)YH( utilis\351 dans des scripts et en fait, vous aurez besoin de comprendre le d\351tail des registres de confi)HY(gu)HY(ra)HY(tion)YH( du PCI)Ca( pour pouvoir l'utili)HY(ser)YH(. Ce th\350me n'est pas expliqu\351 ici, et pas plus dans la page de manuel de )BD(setpci)ES(.)EP()0 P(Les gens l'ont utilis\351 pour confi)HY(gu)HY(rer)YH( les p\351ri)HY(ph\351)HY(riques)YH( PCI)Ca( dont le pilote a \351chou\351 dans cette action. Un exemple est dispo)HY(nible)YH( dans le guide pratique sur les modems et le guide pratique sur les ports s\351ries dans la sous-section \253\240PCI)Ca(\240: Activer un port d\351sac)HY(tiv\351)YH(\240\273. N\351an)HY(moins)YH(, activer un p\351ri)HY(ph\351)HY(rique)YH( n'est d'aucune utilit\351 si vous n'avez pas de pilote fonc)HY(tion)HY(nel)YH( pour ce p\351ri)HY(ph\351)HY(rique)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 55 H(5.8.\240Confi)WB 181 Sn()HY(gu)HY(ra)HY(tion)YH()WB 52 Sn( de Windows)EH()BR()BR()BR()0 P(Cette m\351thode utilise MS Windows pour confi)HY(gu)HY(rer)YH( et devrait \352tre utili)HY(s\351e)YH( seule)HY(ment)YH( si tout le reste \351choue. Si vous avez Windows 9x \201ou 2k\202 sur le m\352me PC, alors lancez simple)HY(ment)YH( Windows et laissez-le confi)HY(gu)HY(rer)YH( PnP)Ca(. Puis lancez Linux \340 partir de Windows \201ou DOS\202 en utili)HY(sant)YH(, par exemple, )BD(loadlin.exe)ES(. Il peut y avoir un probl\350me avec les IRQ)Ca( pour les p\351ri)HY(ph\351)HY(riques)YH( PCI)Ca(. Quand Windows s'arr\352te \201sans messages\202 pour laisser la place \340 Linux, il pour)HY(rait)YH( \351craser l'IRQ)Ca( \201en y mettant 0\202 qui est stock\351 dans un des registres de confi)HY(gu)HY(ra)HY(tion)YH( du p\351ri)HY(ph\351)HY(rique)YH( PCI)Ca(. Linux se plain)HY(dra)YH( de trouver une IRQ)Ca( 0.)EP()0 P(Ce qu'on vient d'aborder arrive lorsque vous lancez Linux en utili)HY(sant)YH( un raccourci \201fichier PIF\202. Mais un moyen de contour)HY(ner)YH( ce probl\350me est connu si vous utili)HY(sez)YH( toujours le raccourci PIF. Un raccourci est en quelque sorte l'\351qui)HY(valent)YH( du lien symbo)HY(lique)YH( sous Linux, mais il est en fait plus que \347a car il est para)HY(m\351)HY(trable)YH(. Pour lancer Linux, \340 partir de DOS, vous cr\351ez un fichier batch \201script\202 qui lance Linux. \201Le programme qui lance Linux est dans le paquet appel\351 loadlin.\202 Ensuite, cr\351ez un raccourci PIF vers ce fichier batch et allez dans la fen\352tre des propri\351)HY(t\351s)YH( du raccourci. S\351lec)HY(tion)HY(nez)YH( \253\240Avanc\351\240\273, puis v\351ri)HY(fiez)YH( que le \253\240mode MS-DOS\240\273 est bien coch\351.)EP()0 P(Main)HY(te)HY(nant)YH(, voici une astuce emp\352)HY(chant)YH( de mettre \340 z\351ro les IRQ)Ca( PCI)Ca(. Cochez \253\240Sp\351ci)HY(fier)YH( une nouvelle confi)HY(gu)HY(ra)HY(tion)YH( MS-DOS\240\273. Ensuite, soit vous accep)HY(tez)YH( la confi)HY(gu)HY(ra)HY(tion)YH( par d\351faut qui vous est propo)HY(s\351e)YH( soit vous cliquez sur \253\240Confi)HY(gu)HY(ra)HY(tion)YH(\240\273 pour la modi)HY(fier)YH(. Main)HY(te)HY(nant)YH(, lorsque vous lance)HY(rez)YH( Linux en cliquant sur le raccourci, des nouveaux fichiers de confi)HY(gu)HY(ra)HY(tions)YH( \201)SM(config.sys)ES( et )SM(autoexec.bat)ES(\202 seront cr\351\351s pour votre nouvelle confi)HY(gu)HY(ra)HY(tion)YH(.)EP()0 P(Les anciens fichiers sont enre)HY(gis)HY(tr\351s)YH( comme )SM(Config.wos)ES( et )SM(Autoexec.wos)ES(. Une fois que vous avez termin\351 d'utili)HY(ser)YH( Linux et que vous avez arr\352t\351 votre PC, vous aurez encore besoin de ces fichiers pour pouvoir lancer DIS la prochaine fois que vous d\351mar)HY(re)HY(rez)YH( votre PC. Vous devez vous assurer que les noms rede)HY(viennent)YH( )SM(*.sys)ES( et )SM(*.bat)ES(. Lorsque vous quittez Windows/DOS pour aller sous Linux, Windows s'attend que, une fois que vous avez fini avec Linux, vous retour)HY(niez)YH( \340 Windows pour que celui-ci puisse restau)HY(rer)YH( ces fichiers avec leur noms origi)HY(naux)YH(. Mais ceci n'arri)HY(vera)YH( pas car lorsque vous quit)HY(te)HY(rez)YH( Linux, vous \351tein)HY(drez)YH( votre PC et ne retour)HY(ne)HY(rez)YH( pas sous Windows. Donc, comment renom)HY(mer)YH( ces fichiers\240? C'est facile, placez ces commandes dans votre fichier batch de lance)HY(ment)YH( de Linux pour qu'il renomme les fichiers. Mettez ces commandes de renom)HY(mage)YH( dans votre fichier batch juste avant la ligne qui charge Linux.)EP()0 P(De la m\352me fa\347on, il a \351t\351 rapport\351 que vous devez cliquer sur l'onglet \253\240G\351n\351ral\240\273 \201de la fen\352tre \253\240Propri\351)HY(t\351s)YH(\240\273 de votre raccourci\202 et cochez \253\240Lecture seule\240\273. Sinon, Windows pour)HY(rait)YH( remettre \340 z\351ro les \253\240Para)HY(m\351)HY(trages)YH( avan)HY(c\351es)YH(\240\273 en \253\240Utili)HY(sez)YH( la confi)HY(gu)HY(ra)HY(tion)YH( MS-DOS courante\240\273 et les IRQ)Ca( PCI)Ca( se retrou)HY(ve)HY(raient)YH( \340 z\351ro. Comme Windows efface les IRQ)Ca( lorsque vous utili)HY(sez)YH( la confi)HY(gu)HY(ra)HY(tion)YH( MS-DOS courante mais il n'efface pas une nouvelle confi)HY(gu)HY(ra)HY(tion)YH( \201qui peut confi)HY(gu)HY(rer)YH( tout de mani\350re iden)HY(tique)YH( \340 l'ancienne confi)HY(gu)HY(ra)HY(tion)YH(\202. Windows ne semble pas tr\350s coh\351)HY(rent)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 56 H(5.9.\240Docu)WB 182 Sn()HY(ments)YH(/Logi)HY(ciels)YH()WB 53 Sn( PnP)Ca()EH()BR()BR()BR()0 P()BR()UL()0 P()-1 LI()R9 2 A(Page d'accueil d')BD(Isapnp)HY(tools)YH()ES()EA(\240; )EP()0 P()-1 LI()R5 2 A(Propo)HY(si)HY(tion)YH( pour un gestion)HY(naire)YH( de confi)HY(gu)HY(ra)HY(tion)YH( pour Linux)EA( 1999 \201n'a jamais fait partie du noyau\202\240;)EP()0 P()-1 LI()R10 2 A( Sp\351ci)HY(fi)HY(ca)HY(tions)YH( PnP)Ca( de Micro)HY(soft)YH()EA(\240; )EP()0 P()-1 LI(Livre\240: PCI)Ca( System Archi)HY(tec)HY(ture)YH(, quatri\350me \351dition par Tom Shanley +, Mind)HY(Share)YH( 1999. Couvre les fonc)HY(tion)HY(na)HY(li)HY(t\351s)YH( PnP)Ca( du bus PCI)Ca(\240;)EP()0 P()-1 LI(Livre\240:)WB 54 Sn( Plug and Play System Archi)HY(tec)HY(ture)YH(, par Tom Shanley, Mind Share 1999. D\351tails sur PnP)Ca( pour le bus ISA)Ca(. Une vue de PnP)Ca( avec le bus PCI)Ca(\240;)EP()0 P()-1 LI(Livre\240: Program)HY(ming)YH( Plug and Play, par James Kelsey, Sams 1995. D\351tails sur la program)HY(ma)HY(tion)YH( pour commu)HY(niquer)YH( avec un BIOS)Ca( PnP)Ca(. Couvre les bus ISA)Ca(, PCI)Ca( et PCMCIA.)EP()LU()BR()EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 2 57 H(6.\240Indiquer)WB 183 Sn()WB 55 Sn( au pilote la confi)HY(gu)HY(ra)HY(tion)YH(\240??)EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 3 58 H(6.1.\240Intro)WB 184 Sn()HY(duc)HY(tion)YH()WB 56 Sn()EH()BR()BR()BR()0 P(Un pilote moderne trou)HY(vera)YH( pour un p\351ri)HY(ph\351)HY(rique)YH( la confi)HY(gu)HY(ra)HY(tion)YH( des ressources bus sans que vous ayez besoin de lui dire quoi que ce soit. Il pour)HY(rait)YH( m\352me enre)HY(gis)HY(trer)YH( les ressources bus au niveau mat\351)HY(riel)YH( en utili)HY(sant)YH( des m\351thodes PnP)Ca(. Certains p\351ri)HY(ph\351)HY(riques)YH( ont plus d'une fa\347on pour trouver comment leur p\351ri)HY(ph\351)HY(rique)YH( physique est confi)HY(gur\351)YH(. Dans le pire des cas, vous devez coder en dur les ressources bus dans le noyau \201ou un module\202 et recom)HY(pi)HY(ler)YH(.)EP()0 P(En un juste milieu, il existe des cas tels que le lance)HY(ment)YH( d'un programme pour donner les infor)HY(ma)HY(tions)YH( des ressources bus au pilote ou pour mettre les infor)HY(ma)HY(tions)YH( dans un fichier de confi)HY(gu)HY(ra)HY(tion)YH(. Dans certains cas, le pilote peut cher)HY(cher)YH( le p\351ri)HY(ph\351)HY(rique)YH( aux adresses o\371 il suppose qu'il r\351side \201mais il ne trou)HY(vera)YH( jamais un p\351ri)HY(ph\351)HY(rique)YH( PnP)Ca( s'il n'a pas \351t\351 activ\351 par des m\351thodes PnP)Ca(\202. Il peut m\352me essayer de tester diff\351)HY(rentes)YH( IRQ)Ca( pour voir laquelle fonc)HY(tionne)YH(. Il peut, ou non, le faire auto)HY(ma)HY(tique)HY(ment)YH(.)EP()0 P(Dans d'autres cas, le pilote peut utili)HY(ser)YH( des m\351thodes PnP)Ca( pour trouver le p\351ri)HY(ph\351)HY(rique)YH( et la fa\347on dont les ressources bus ont \351t\351 confi)HY(gu)HY(r\351es)YH( par le BIOS)Ca(, et c\346tera mais ne les modi)HY(fiera)YH( pas. Il peut aussi regar)HY(der)YH( dans certains des \253\240fichiers\240\273 du r\351per)HY(toire)YH( )SM(/proc)ES(.)EP()0 P( Il peut aussi dire \253\240manuel)HY(le)HY(ment)YH(\240\273 au pilote les ressources bus qu'il doit utili)HY(ser)YH(. Vous donnez ces ressources bus en tant que para)HY(m\350tre)YH( au noyau ou \340 un module. Si le pilote est int\351gr\351 au noyau, vous passez les para)HY(m\350tres)YH( au noyau via l'invite du d\351mar)HY(rage)YH(. Voir le )R6 2 A(Guide pratique sur l'invite de d\351mar)HY(rage)YH( \201)EM(Boot)HY(Prompt)YH(-HOWTO)ES(\202)EA( pour la descrip)HY(tion)YH( de quelques ressources bus et autres para)HY(m\350tres)YH(. Une fois que vous savez quels para)HY(m\350tres)YH( donner au noyau, vous pouvez les enre)HY(gis)HY(trer)YH( dans un fichier de confi)HY(gu)HY(ra)HY(tion)YH( du char)HY(geur)YH(. Par exemple, mettez )BD()SM(append="...")ES()ES( dans le fichier )SM(lilo.conf)ES( puis lancez lilo pour qu'il mette \340 jour les infor)HY(ma)HY(tions)YH( de lance)HY(ment)YH(. )EP()0 P( Si le pilote est charg\351 comme module, dans plusieurs cas, le module trou)HY(vera)YH( les ressources bus n\351ces)HY(saires)YH( et les enre)HY(gis)HY(trera)YH( dans le p\351ri)HY(ph\351)HY(rique)YH(. Dans les autres cas \201g\351n\351)HY(ra)HY(le)HY(ment)YH( pour les anciens PC\202, vous pouvez avoir besoin de donner les ressources bus comme para)HY(m\350tres)YH( du module. Les para)HY(m\350tres)YH( d'un module peuvent \352tre sp\351ci)HY(fi\351s)YH( dans )SM(/etc/modules.conf)ES(. Ce sont g\351n\351)HY(ra)HY(le)HY(ment)YH( des outils utilis\351 pour modi)HY(fier)YH( ce fichier et qui sont d\351pen)HY(dant)YH( de la distri)HY(bu)HY(tion)YH(. Les commen)HY(taires)YH( inclus dans ce fichier devraient vous aider sur la fa\347on de le modi)HY(fier)YH(. De m\352me, tout module que vous placez dans )SM(/etc/modules)ES( se verra charger avec ses para)HY(m\350tres)YH(. )EP()0 P(Bien qu'il ait une grande h\351t\351)HY(ro)HY(g\351)HY(n\351it\351)YH( sur la fa\347on dont les pilotes trouvent leur ressources bus, le but final est le m\352me. Si vous avez des probl\350mes avec un pilote, vous pouvez avoir besoin de regar)HY(der)YH( la docu)HY(men)HY(ta)HY(tion)YH( du pilote \201v\351ri)HY(fier)YH( la docu)HY(men)HY(ta)HY(tion)YH( du noyau\202. Quelques exemples brefs de pilotes sont pr\351sen)HY(t\351s)YH( dans les sections suivantes\240:)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 59 H(6.2.\240Exemple)WB 185 Sn()WB 57 Sn( de pilote de port s\351rie)EH()BR()BR()BR()0 P(Pour les ports s\351ries PCI)Ca( \201et pour les ports s\351rie ISA)Ca( PnP)Ca( apr\350s le noyau 2.4\202, le pilote s\351rie d\351tecte le type de port s\351rie et le confi)HY(gure)YH( via PnP)Ca(. Malheu)HY(reu)HY(se)HY(ment)YH(, quelques ports s\351rie PCI)Ca( ne sont pas encore g\351r\351s.)EP()0 P(Pour le pilote du port s\351rie ISA)Ca( stan)HY(dard)YH( avec les anciennes versions du noyau et pour le pilote s\351rie \201ne faisant pas partie des cartes multi)HY(ports)YH(\202, le pilote travaille sur deux adresses stan)HY(dards)YH( pour les ports s\351rie. Il ne cherche pas d'IRQ mais il affecte l'IRQ \253\240stan)HY(dard)YH(\240\273 aux deux premiers ports s\351ries. Ceci peut \352tre mauvais.)EP()0 P(Pour tout autre chose dans le fichier de confi)HY(gu)HY(ra)HY(tion)YH(, le programme )BD(setse)HY(rial)YH()ES( doit \352tre modifi\351 manuel)HY(le)HY(ment)YH(. Voir le )R11 2 A(Guide pratique sur la program)HY(ma)HY(tion)YH( des ports s\351rie)EA( pour plus de d\351tails. Vous utili)HY(sez)YH( )BD(setse)HY(rial)YH()ES( pour infor)HY(mer)YH( le pilote de l'adresse d'entr\351e/sortie et )BD(setse)HY(rial)YH()ES( est souvent ex\351cut\351 \340 partir d'un fichier de d\351mar)HY(rage)YH(. Dans les versions r\351centes, il existe un fichier )SM(/etc/serial.conf)ES( \201ou )SM(/var/lib/setse)HY(rial)YH(/auto)HY(con)HY(fig)YH()ES(\202 que vous \253\240\351ditez\240\273 en lan\347ant simple)HY(ment)YH( la commande )BD()SM(setse)HY(rial)YH()ES()ES( de fa\347on ordi)HY(naire)YH( et ce que vous confi)HY(gu)HY(rez)YH( avec )BD(setse)HY(rial)YH()ES( est sauve)HY(gard\351)YH( dans le fichier de confi)HY(gu)HY(ra)HY(tion)YH( )SM(serial.conf)ES(. Le fichier )SM(serial.conf)ES( devrait \352tre consult\351 lorsque la commande )BD(setse)HY(rial)YH()ES( est lanc\351e \340 partir d'un fichier de d\351mar)HY(rage)YH(. Votre distri)HY(bu)HY(tion)YH( peut, ou non, avoir confi)HY(gur\351)YH( ceci pour vous.)EP()0 P(Il existe deux fa\347ons d'utili)HY(ser)YH( )BD(setse)HY(rial)YH()ES( suivant les options que vous lui donnez. Une possi)HY(bi)HY(lit\351)YH( est de dire manuel)HY(le)HY(ment)YH( au pilote la confi)HY(gu)HY(ra)HY(tion)YH(. L'autre m\351thode est de tester une adresse donn\351e et d'indiquer si un port s\351rie existe \340 cet endroit. Il peut aussi tester cette adresse et essayer de d\351tec)HY(ter)YH( l'IRQ)Ca( utili)HY(s\351e)YH( par ce port.)EP()0 P(M\352me avec des noyaux modernes, )BD(setse)HY(rial)YH()ES( est quelque fois n\351ces)HY(saire)YH( si le pilote \351choue lors de la d\351tec)HY(tion)YH( du port s\351rie ou si vous avez un tr\350s ancien mat\351)HY(riel)YH(.)EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 2 60 H(7.\240Comment)WB 186 Sn()WB 58 Sn( puis-je trouver les p\351ri)HY(ph\351)HY(riques)YH( et comment sont-ils confi)HY(gu)HY(r\351s)YH(\240?)EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 3 61 H(7.1.\240La)WB 187 Sn()WB 59 Sn( recherche des p\351ri)HY(ph\351)HY(riques)YH( et la d\351cou)HY(verte)YH( de la confi)HY(gu)HY(ra)HY(tion)YH( sont li\351s)EH()BR()BR()BR()0 P(Une fois que vous avez trouv\351 votre mat\351)HY(riel)YH(, le m\352me programme qui l'a trouv\351 vous indique norma)HY(le)HY(ment)YH( comment il est confi)HY(gur\351)YH(. Donc, trouver comment un mat\351)HY(riel)YH( est confi)HY(gur\351)YH( revient habi)HY(tuel)HY(le)HY(ment)YH( \340 trouver le mat\351)HY(riel)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 62 H(7.2.\240Les)WB 188 Sn()WB 60 Sn( p\351ri)HY(ph\351)HY(riques)YH( pour)HY(raient)YH( avoir deux \253\240confi)HY(gu)HY(ra)HY(tions)YH(\240\273)EH()BR()BR()BR()0 P(Ici, \253\240confi)HY(gu)HY(ra)HY(tion)YH(\240\273 corres)HY(pond)YH( \340 l'assi)HY(gna)HY(tion)YH( des ressources bus PnP)Ca( \201adresses, IRQ)Ca( et DMA)Ca(\202. Pour chaque p\351ri)HY(ph\351)HY(rique)YH(, il existe deux parties \340 cette ques)HY(tion)YH( de confi)HY(gu)HY(ra)HY(tion)YH(\240: )BR()UL()0 P()-1 LI(Que croit le pilote en ce qui concerne la confi)HY(gu)HY(ra)HY(tion)YH( mat\351)HY(rielle)YH(\240?)EP()0 P()-1 LI(Quelle confi)HY(gu)HY(ra)HY(tion)YH( \201s'il y en a une\202 est r\351el)HY(le)HY(ment)YH( enre)HY(gis)HY(tr\351e)YH( au niveau du mat\351)HY(riel)YH(\240?)EP()LU()BR( Chaque partie devrait avoir la m\352me r\351ponse \201la m\352me confi)HY(gu)HY(ra)HY(tion)YH(\202. La confi)HY(gu)HY(ra)HY(tion)YH( du p\351ri)HY(ph\351)HY(rique)YH( physique et de son pilote devrait \352tre \351videm)HY(ment)YH( la m\352me \201elle l'est habi)HY(tuel)HY(le)HY(ment)YH(\202. Mais les choses ne fonc)HY(tionnent)YH( pas toujours bien et c'est pourquoi il existe une diff\351)HY(rence)YH(. Ceci veut dire que le pilote dispose d'une mauvaise infor)HY(ma)HY(tion)YH( sur la confi)HY(gu)HY(ra)HY(tion)YH( actuelle du mat\351)HY(riel)YH(. Les probl\350mes arrivent. Si le logi)HY(ciel)YH( que vous utili)HY(sez)YH( ne vous dit pas exac)HY(te)HY(ment)YH( ce qui ne va pas \201ou ne confi)HY(gure)YH( pas auto)HY(ma)HY(tique)HY(ment)YH( correc)HY(te)HY(ment)YH(\202, alors vous avez besoin de cher)HY(cher)YH( comment vos p\351ri)HY(ph\351)HY(riques)YH( physiques et vos pilotes sont confi)HY(gu)HY(r\351s)YH(. Alors que les pilotes de p\351ri)HY(ph\351)HY(riques)YH( Linux devraient tout vous dire, dans certains cas, il n'est pas facile de d\351ter)HY(mi)HY(ner)YH( ce qui a \351t\351 enre)HY(gis)HY(tr\351)YH( au niveau mat\351)HY(riel)YH(.)EP()0 P(Un autre probl\350me est que lors de la visua)HY(li)HY(sa)HY(tion)YH( des messages de confi)HY(gu)HY(ra)HY(tion)YH( \340 l'\351cran, vous devez savoir si la confi)HY(gu)HY(ra)HY(tion)YH( affi)HY(ch\351e)YH( est celle du pilote, du p\351ri)HY(ph\351)HY(rique)YH( physique ou des deux. Si le pilote de p\351ri)HY(ph\351)HY(rique)YH( a soit enre)HY(gis)HY(tr\351)YH( la confi)HY(gu)HY(ra)HY(tion)YH( soit v\351rifi\351 le mat\351)HY(riel)YH(, alors le pilote devrait avoir les bonnes infor)HY(ma)HY(tions)YH(.)EP()0 P(Mais, quelque)HY(fois)YH(, le pilote a obtenu des ressources incor)HY(rectes)YH( par un script ou un fichier de confi)HY(gu)HY(ra)HY(tion)YH(, par des para)HY(m\350tres)YH( de ressources incor)HY(rectes)YH( donn\351es \340 un module, ou peut-\352tre m\352me que la confi)HY(gu)HY(ra)HY(tion)YH( ne lui a pas \351t\351 fournie compl\350)HY(te)HY(ment)YH( et qu'il essaie d'utili)HY(ser)YH( par d\351faut des ressources incor)HY(rectes)YH(. Par exemple, quelqu'un peut utili)HY(ser)YH( )BD(setse)HY(rial)YH()ES( pour indiquer au pilote de p\351ri)HY(ph\351)HY(rique)YH( une confi)HY(gu)HY(ra)HY(tion)YH( incor)HY(recte)YH( des ressources et le pilote les accep)HY(tera)YH( sans bron)HY(cher)YH(. Mais le port s\351rie ne fonc)HY(tionne)YH( pas bien \201s'il fonc)HY(tionne)YH( tout court\202.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 63 H(7.3.\240Trouver)WB 189 Sn()WB 61 Sn( le mat\351)HY(riel)YH()EH()BR()BR()BR()0 P(Un probl\350me habi)HY(tuel)YH( est que le logi)HY(ciel)YH( ne d\351tecte pas votre p\351ri)HY(ph\351)HY(rique)YH( ou ne d\351ter)HY(mine)YH( pas le bon pilote pour celui-ci. Pour les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca(, les d\351tec)HY(ter)YH( est facile avec un logi)HY(ciel)YH( PnP)Ca( sauf pour le cas inha)HY(bi)HY(tuel)YH( o\371 le mat\351)HY(riel)YH( a \351t\351 d\351sac)HY(tiv\351)YH(. Le BIOS)Ca( peut parfois \352tre initia)HY(lis\351)YH( pour d\351sac)HY(ti)HY(ver)YH( les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( ou un cava)HY(lier)YH(/inter)HY(rup)HY(teur)YH( sur le p\351ri)HY(ph\351)HY(rique)YH( physique lui-m\352me pour)HY(rait)YH( le d\351sac)HY(ti)HY(ver)YH(. Dans ce cas, le mat\351)HY(riel)YH( ne peut pas \352tre d\351tect\351 du tout jusqu'\340 ce que vous re-confi)HY(gu)HY(riez)YH( le BIOS)Ca( ou que vous chan)HY(giez)YH( le cava)HY(lier)YH(/inter)HY(rup)HY(teur)YH(.)EP()0 P(Comme le bus PCI)Ca( est intrin)HY(s\350que)HY(ment)YH( PnP)Ca(, il n'y a pas de p\351ri)HY(ph\351)HY(riques)YH( cach\351s. M\352me si les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( sont faciles \340 trouver avec les m\351thodes PnP, si le pilote n'utilise pas les m\351thodes PnP)Ca( mais utilise l'ancienne m\351thode de recherche aux adresses suppo)HY(s\351es)YH(, ils pour)HY(raient)YH( ne pas \352tre trouv\351s. Ceci est d\373 au fait que, avant que les ressources bus aient \351t\351 initia)HY(li)HY(s\351es)YH( \201par le BIOS)Ca( ou Linux\202, le p\351ri)HY(ph\351)HY(rique)YH( pour)HY(rait)YH( ne pas avoir d'adresses du tout, donc parcou)HY(rir)YH( les adresses habi)HY(tuelles)YH( n'appor)HY(tera)YH( rien. Pour l'ancien bus ISA)Ca(, quelques-uns des p\351ri)HY(ph\351)HY(riques)YH( pour)HY(raient)YH( \352tre non PnP)Ca( et, de ce fait, les anciennes m\351thodes pour)HY(raient)YH( fonc)HY(tion)HY(ner)YH(. Donc, de nombreux pilotes conti)HY(nuent)YH( \340 parcou)HY(rir)YH( les adresses habi)HY(tuelles)YH( en plus d'utili)HY(ser)YH( les m\351thodes PnP)Ca( \201parcours PnP)Ca(, quelque)HY(fois)YH( appel\351 simple)HY(ment)YH( parcours\202.)EP()0 P(Fa\347ons de d\351tec)HY(ter)YH( des p\351ri)HY(ph\351)HY(riques)YH( mat\351)HY(riels)YH( \201et leur confi)HY(gu)HY(ra)HY(tions)YH(\202 \240: \201suivre le lien pour plus de d\351tails\202 )BR()UL()0 P()-1 LI(V\351ri)HY(fier)YH( le BIOS)Ca( pour vous assurer qu'ils ne sont pas d\351sac)HY(ti)HY(v\351s)YH(\240;)EP()0 P()-1 LI(Regar)HY(der)YH( les messages de d\351mar)HY(rage)YH( \340 l'\351cran \201voir )0 62 1 A(les messages au d\351mar)HY(rage)YH()62 0 TN TL()Ec /AF f D(\202\240; )EP()0 P()-1 LI(Regar)HY(der)YH( dans )0 64 1 A(Section\2407.5, \253\240Le r\351per)HY(toire)YH( /proc\240\273)64 0 TN TL()Ec /AF f D(\240; )EP()0 P()-1 LI()0 74 1 A(Outils pour d\351tec)HY(ter)YH( et confi)HY(gu)HY(rer)YH( tout le mat\351)HY(riel)YH()74 0 TN TL()Ec /AF f D(... lsdev, hwinfo, disco)HY(ver)YH(, kudzu\240;)EP()0 P()-1 LI()0 75 1 A(Outils pour d\351tec)HY(ter)YH( ou confi)HY(gu)HY(rer)YH( un type de mat\351)HY(riel)YH()75 0 TN TL()Ec /AF f D(\240;)EP()0 P()-1 LI(PCI)Ca(\240: )0 66 1 A(Section\2407.7, \253\240Inspec)HY(tion)YH( du bus PCI)Ca(\240\273)66 0 TN TL()Ec /AF f D(\240 )EP()0 P()-1 LI(Bus ISA)Ca(\240: )0 67 1 A(Section\2407.8, \253\240Intro)HY(duc)HY(tion)YH( au bus ISA)Ca(\240\273)67 0 TN TL()Ec /AF f D( )EP()0 P()-1 LI(Bus ISA)Ca(\240: )0 68 1 A(Section\2407.9, \253\240Cartes ISA)Ca( PnP)Ca(\240\273)68 0 TN TL()Ec /AF f D( )EP()0 P()-1 LI(Bus ISA)Ca(\240: )0 71 1 A(Section\2407.12, \253\240Cartes non PnP)Ca(\240\273)71 0 TN TL()Ec /AF f D( )EP()0 P()-1 LI(Bus ISA)Ca(\240: )0 72 1 A(Section\2407.13, \253\240Cartes non PnP)Ca( avec cava)HY(liers)YH(\240\273)72 0 TN TL()Ec /AF f D( )EP()0 P()-1 LI(Bus ISA)Ca(\240: )0 73 1 A(Section\2407.14, \253\240Cartes non PnP)Ca( et sans cava)HY(liers)YH(\240\273)73 0 TN TL()Ec /AF f D( )EP()0 P()-1 LI(Et )0 76 1 A(Section\2407.17, \253\240Utili)HY(sez)YH( MS Windows\240\273)76 0 TN TL()Ec /AF f D( )EP()LU()BR()EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 64 H(7.4.\240Messages)WB 190 Sn()WB 62 Sn( de d\351mar)HY(rage)YH()EH()BR()BR()BR()0 P(Des infor)HY(ma)HY(tions)YH( signi)HY(fi)HY(ca)HY(tives)YH( sur la confi)HY(gu)HY(ra)HY(tion)YH( peuvent \352tre obte)HY(nues)YH( en lisant les messages affi)HY(ch\351s)YH( par le BIOS)Ca( et par Linux lors du d\351mar)HY(rage)YH( de l'ordi)HY(na)HY(teur)YH(. Ces messages dispa)HY(raissent)YH( souvent trop rapi)HY(de)HY(ment)YH( pour \352tre lus mais, une fois le d\351fi)HY(le)HY(ment)YH( termin\351, tapez )BD(Majus)HY(cule)YH()ES(+)BD(Page Suivante)ES( plusieurs fois pour revenir en arri\350re. Pour aller en avant, faites )BD(Majus)HY(cule)YH()ES(+)BD(Page Pr\351c\351)HY(dente)YH()ES(. Utili)HY(sez)YH( )BD(dmesg)ES( \340 la console \340 n'importe quel moment pour affi)HY(cher)YH( seule)HY(ment)YH( les messages du noyau. Vous ne verrez pas certains messages les plus impor)HY(tants)YH( prove)HY(nant)YH( g\351n\351)HY(ra)HY(le)HY(ment)YH( du BIOS)Ca(. Les messages affi)HY(ch\351s)YH( par Linux peuvent parfois n'affi)HY(cher)YH( que ce que le pilote de p\351ri)HY(ph\351)HY(rique)YH( croit \352tre confi)HY(gur\351)YH(, peut-\352tre \340 cause d'un mauvais fichier de confi)HY(gu)HY(ra)HY(tion)YH(. V\351ri)HY(fier)YH( les fichiers de traces dans )SM(/var/log)ES( peut \352tre utile.)EP()0 P(Pour le bus PCI)Ca(, la nota)HY(tion)YH( 00:1a:0 signi)HY(fie)YH( le bus PCI)Ca( 00 \201le bus PCI)Ca( prin)HY(ci)HY(pal)YH(\202, la carte PCI)Ca( \201ou le compo)HY(sant)YH(\202 1a et la fonc)HY(tion)YH( 0 \201le premier p\351ri)HY(ph\351)HY(rique)YH(\202 sur la carte ou le compo)HY(sant)YH(. Le deuxi\350me p\351ri)HY(ph\351)HY(rique)YH( sur la carte \201ou sur le compo)HY(sant)YH(\202 devrait \352tre 00:08:1.)EP()0 P(Les messages du BIOS)Ca( s'affichent en premier et montrent la confi)HY(gu)HY(ra)HY(tion)YH( du mat\351)HY(riel)YH( \340 ce moment, mais )BD(isapnp)ES(, ou les utili)HY(taires)YH( PCI)Ca(, voire les pilotes de p\351ri)HY(ph\351)HY(riques)YH( peuvent le changer plus tard. Dans certains cas, il n'affiche pas les p\351ri)HY(ph\351)HY(riques)YH( que le BIOS)Ca( n'a pas confi)HY(gur\351)YH(.)EP()0 P(Si)WB 63 Sn( les messages du BIOS)Ca( ne s'affichent pas en reve)HY(nant)YH( au d\351but des messages du BIOS)Ca( avec )BD(Majus)HY(cule)YH()ES(+)BD(Page Suivante)ES(, essayez de mettre en pause lorsqu'ils appa)HY(raissent)YH(, en utili)HY(sant)YH( la touche )BD(Pause)ES( d\350s que les premiers mots appa)HY(raissent)YH(. Appuyez sur n'importe quelle touche pour conti)HY(nuer)YH(. Il est souvent diffi)HY(cile)YH( d'appuyer sur )BD(Pause)ES( exac)HY(te)HY(ment)YH( au bon moment. Assurez-vous d'appuyer conti)HY(nuel)HY(le)HY(ment)YH( sur la touche )BD(Shift)ES( avant d'appuyer sur )BD(Pause)ES( car )BD(Pause)ES( est une touche n\351ces)HY(si)HY(tant)YH( l'utili)HY(sa)HY(tion)YH( de )BD(Shift)ES(. Si vous n'avez pas r\351ussi, appuyez sur )BD(Ctrl)ES(+)BD(Alt)ES(+)BD(Del)ES( au lance)HY(ment)YH( de Linux pour le relan)HY(cer)YH( et essayer de nouveau. Une fois que les messages de Linux commencent \340 \352tre visibles, il est trop tard pour utili)HY(ser)YH( )BD(Pause)ES( car cela ne g\350lera pas les messages de Linux.)EP()0 P(Pour initia)HY(li)HY(ser)YH( des \351l\351ments du BIOS)Ca( comme les IRQ)Ca( r\351ser)HY(v\351s)YH( au mat\351)HY(riel)YH( propri\351)HY(taire)YH(, aux adresses des ports s\351rie, et c\346tera vous aurez besoin d'entrer dans les menus de confi)HY(gu)HY(ra)HY(tion)YH( du BIOS)Ca( \201CMOS\202 au lance)HY(ment)YH(. Chaque marque de BIOS)Ca( a diff\351)HY(rentes)YH( touches pour ce faire. Il existe des listes sur Inter)HY(net)YH(. Parfois en gelant l'affi)HY(chage)YH( des messages du BIOS)Ca( ou en regar)HY(dant)YH( l'\351cran, la touche que vous devez appuyer sera indiqu\351e dans un message tel que \253\240Press DEL for setup\240\273 \201\253\240Appuyez sur DEL pour la confi)HY(gu)HY(ra)HY(tion)YH(\240\273\202. Mais il pour)HY(rait)YH( dispa)HY(ra\356tre)YH( si rapi)HY(de)HY(ment)YH( que vous ne le verrez pas. Bien s\373r, vous ne modi)HY(fiez)YH( rien dans le BIOS)Ca( que vous ne compre)HY(nez)YH( pas. Le cas contraire, votre PC pour)HY(rait)YH( \352tre d\351sac)HY(tiv\351)YH(.)EP()0 P(Les messages du BIOS)Ca( au d\351mar)HY(rage)YH( vous indiquent ce que fut la confi)HY(gu)HY(ra)HY(tion)YH( du mat\351)HY(riel)YH(. La confi)HY(gu)HY(ra)HY(tion)YH( actuelle pour)HY(rait)YH( toujours \352tre la m\352me que ce qu'a fait le BIOS)Ca( et que Linux devrait accept\351 si c'est bon. Les messages de Linux pour)HY(raient)YH( prove)HY(nir)YH( des pilotes utili)HY(sant)YH( les fonc)HY(tions)YH( PnP)Ca( du noyau pour inspec)HY(ter)YH( ou confi)HY(gu)HY(rer)YH( les ressources bus. Cela devrait \352tre correct mais atten)HY(tion)YH( aux messages qui affichent seule)HY(ment)YH( ce que le pilote a lu de son fichier de confi)HY(gu)HY(ra)HY(tion)YH(. Cela pour)HY(rait)YH( \352tre faux. Bien s\373r, si le p\351ri)HY(ph\351)HY(rique)YH( fonc)HY(tionne)YH( bien, alors il est confi)HY(gur\351)YH( proba)HY(ble)HY(ment)YH( de la m\352me fa\347on par le pilote.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 65 H(7.5.\240Le)WB 191 Sn()WB 64 Sn( r\351per)HY(toire)YH( /proc)EH()BR()BR()BR()0 P(Depuis le noyau 2.6, il existe aussi un r\351per)HY(toire)YH( )SM(/sys)ES( en plus du r\351per)HY(toire)YH( )SM(/proc)ES(. Ces r\351per)HY(toires)YH( sont utiles pour r\351cu)HY(p\351)HY(rer)YH( les confi)HY(gu)HY(ra)HY(tions)YH( des ressources et p\351ri)HY(ph\351)HY(riques)YH(. Les fichiers qu'ils contiennent repr\351)HY(sentent)YH( des donn\351es prove)HY(nant)YH( de la m\351moire du noyau et n'existent pas du tout sur votre disque dur. Les programmes comme )SM(lspci)ES( r\351cu)HY(p\350rent)YH( leurs infor)HY(ma)HY(tions)YH( du r\351per)HY(toire)YH( )SM(/proc)ES( et ils doivent les affi)HY(cher)YH( d'une fa\347on plus lisible qu'en lisant direc)HY(te)HY(ment)YH( le contenu des fichiers de ce r\351per)HY(toire)YH(. Voici quatre fichiers prove)HY(nant)YH( de )SM(/proc)ES( qui montrent les ressources enre)HY(gis)HY(tr\351es)YH( dans le noyau par les pilotes de p\351ri)HY(ph\351)HY(riques)YH(.)EP()0 P(Comme le Plug-And-Play de Linux fonc)HY(tionne)YH( en lais)HY(sant)YH( les pilotes de p\351ri)HY(ph\351)HY(riques)YH( allou\351s les ressources pour leur p\351ri)HY(ph\351)HY(rique)YH(, il pour)HY(rait)YH( ne pas y avoir de ressources utili)HY(s\351es)YH( par certains de vos mat\351)HY(riels)YH( si le pilote n'a pas encore r\351clam\351 que ces ressources lui soient r\351ser)HY(v\351es)YH(. Pour les cas des modules du noyau \201pilotes de p\351ri)HY(ph\351)HY(rique)YH( char)HY(geables)YH(\202, si le module n'est pas encore charg\351, le noyau ne conna\356t pas les ressources dont le module a besoin. Quelque fois, le module se charge seule)HY(ment)YH( quand vous lancez une appli)HY(ca)HY(tion)YH( qui en a besoin. Donc, si un certain mat\351)HY(riel)YH( est manquant parmi les fichiers de )SM(/proc)ES(, cela pour)HY(rait)YH( signi)HY(fier)YH( que le mat\351)HY(riel)YH( n'a pas encore \351t\351 utilis\351. Par exemple, m\352me si votre lecteur de disquette dispose d'une disquette et est pr\352t \340 \352tre utilis\351, son inter)HY(rup)HY(tion)YH( n'appa)HY(ra\356)HY(tra)YH( tant que le lecteur n'est pas utilis\351.)EP()0 P()SM(/pts)ES( affiche les adresses d'entr\351e/sortie. S'il y a une erreur \201mauvaise adresse\202, cela pose probl\350me car le p\351ri)HY(ph\351)HY(rique)YH( n'obtien)HY(dra)YH( pas les octets qui lui sont envoy\351s. )SM(/proc/iomem)ES( affiche les adresses m\351moires d'entr\351e/sortie qui sont r\351ser)HY(v\351es)YH(. )SM(/proc/inter)HY(rupts)YH()ES( affiche les inter)HY(rup)HY(tions)YH( en cours d'utili)HY(sa)HY(tion)YH(. )SM(/proc/dma)ES( affiche les allo)HY(ca)HY(tions)YH( de canaux DMA pour le bus ISA.)EP()0 P(Dans le pass\351, l'auteur a observ\351 une liste d'inter)HY(rup)HY(tions)YH( qui n'exis)HY(taient)YH( pas. Dans certains cas, cela montrait que quelques inter)HY(rup)HY(tions)YH( \351taient vrai)HY(ment)YH( envoy\351es. Ceci peut \352tre d\373 \340 des mat\351)HY(riels)YH( d\351fec)HY(tueux)YH( envoyant des inter)HY(rup)HY(tions)YH( erro)HY(n\351es)YH(.)EP()0 P()SM(/proc/bus/)ES( contient les sous-r\351per)HY(toires)YH( )SM(/input/)ES(, )SM(/pci/)ES( et )SM(/isapnp/)ES(. Le format de la plupart des fichiers dans ce r\351per)HY(toire)YH( est vrai)HY(ment)YH( cryp)HY(tique)YH(, souvent une simple copie des octets de l'espace de confi)HY(gu)HY(ra)HY(tion)YH(. Donc, utili)HY(sez)YH(-les seule)HY(ment)YH( en dernier ressort. Le sous-r\351per)HY(toire)YH( )SM(input/)ES( a des infor)HY(ma)HY(tions)YH( sur les p\351ri)HY(ph\351)HY(riques)YH( en entr\351e comme le clavier ou la souris. Elles ne sont pas aussi complexes que les autres r\351per)HY(toires)YH( sous )SM(/proc/bus)ES( et pour)HY(raient)YH( fournir des infor)HY(ma)HY(tions)YH( utiles sur les p\351ri)HY(ph\351)HY(riques)YH( d'entr\351es qui sont sur les ports PS2)Ca( ou sur le bus LPC)Ca( \201voir )0 69 1 A(Section\2407.10, \253\240Bus LPC)Ca(\240\273)69 0 TN TL()Ec /AF f D(\202. Malheu)HY(reu)HY(se)HY(ment)YH(, ce que j'ai vu ne dit pas que c'est sur le bus LPC)Ca( o\371 il est proba)HY(ble)HY(ment)YH(. Dans )SM(/pci/00/)ES( se trouve un fichier binaire pour chaque p\351ri)HY(ph\351)HY(rique)YH( PCI)Ca( o\371 les noms des fichiers sont les num\351ros des empla)HY(ce)HY(ments)YH( PCI)Ca(. Le 00 signi)HY(fie)YH( le bus PCI)Ca( 0.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 66 H(7.6.\240Le)WB 192 Sn()WB 65 Sn( r\351per)HY(toire)YH( /sys)EH()BR()BR()BR()0 P(\300 partir du noyau 2.6, il existe un nouveau r\351per)HY(toire)YH( /sys pour la confi)HY(gu)HY(ra)HY(tion)YH( de PnP)Ca(. Il s'agit d'un syst\350me de fichiers de type sysfs et c'est un \351qui)HY(valent)YH( du syst\350me de fichiers /proc car les \253\240fichiers\240\273 repr\351)HY(sentent)YH( une infor)HY(ma)HY(tion)YH( de la m\351moire du noyau et non pas un vrai fichier de votre disque dur. Cepen)HY(dant)YH(, il n'est pas aussi utile que le syst\350me de fichiers /proc. Au d\351but \201pour les noyaux 2.5\202, il s'appe)HY(lait)YH( le \253\240syst\350me de fichiers des pilotes\240\273 et avait comme type \253\240driverfs\240\273.)EP()0 P(Dans ce syst\350me de fichiers, chaque p\351ri)HY(ph\351)HY(rique)YH( exis)HY(tant)YH( sur votre syst\350me a son propre r\351per)HY(toire)YH( conte)HY(nant)YH( des fichiers sp\351ci)HY(fiant)YH( les ressources qui lui sont affec)HY(t\351es)YH(. Ces r\351per)HY(toires)YH( ont des noms comme )SM(0000:00:12.0@)ES( ou )SM(00:06@)ES(. Quels sont ces p\351ri)HY(ph\351)HY(riques)YH(\240? Le premier est une carte PCI)Ca( dans l'empla)HY(ce)HY(ment)YH( 12 de votre PC. L'empla)HY(ce)HY(ment)YH( pour)HY(rait)YH( \352tre appel\351 PCI)Ca(2 dans votre PC \2012 au lieu de 12\202 tout simple)HY(ment)YH( parce que les empla)HY(ce)HY(ments)YH( ayant des num\351ros fiables sont utili)HY(s\351s)YH( par les empla)HY(ce)HY(ments)YH( int\351)HY(gr\351s)YH( \340 la carte m\350re et n'utilisent pas les empla)HY(ce)HY(ments)YH( physiques. Dans cet exemple, les empla)HY(ce)HY(ments)YH( 1 \340 10 seraient int\351)HY(gr\351s)YH( alors que les empla)HY(ce)HY(ments)YH( 11 \340 14 seraient appel\351s de 1 \340 4. En ex\351cu)HY(tant)YH( )BD(lspci)ES(, vous conna\356)HY(trez)YH( la corres)HY(pon)HY(dance)YH( entre les num\351ros \201comme 0000:00:12.0\202 et les noms \201iden)HY(tique)YH( \340 l'inter)HY(face)YH( IDE\202. Ex\351cu)HY(tez)YH( la commande )BD(lspci -vv)ES(, ou )BD(lspci -vv)ES( si vous voulez en voir plus.)EP()0 P(Alors, qu'est-ce que )SM(00:06)ES(\240? C'est une carte ISA)Ca( \201ou un p\351ri)HY(ph\351)HY(rique)YH( int\351gr\351\202 mais ce n'est pas l'empla)HY(ce)HY(ment)YH( 6 du bus ISA)Ca( \201contrai)HY(re)HY(ment)YH( au num\351)HY(ro)HY(tage)YH( PCI)Ca(\202. Quand une recherche est faite pour les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( ISA)Ca(, il a \351t\351 le sixi\350me d\351cou)HY(vert)YH(. Plus pr\351ci)HY(s\351)HY(ment)YH(, il \351tait le septi\350me trouv\351 car il existe un p\351ri)HY(ph\351)HY(rique)YH( num\351)HY(rot\351)YH( 00:00. Donc, comment les iden)HY(ti)HY(fier)YH(\240? Vous pouvez lancer \253\240cat */*\240\273 et affi)HY(cher)YH( tous les fichiers pour tous les p\351ri)HY(ph\351)HY(riques)YH( mais m\352me \340 ce moment-l\340 vous ne verrez pas les noms des p\351ri)HY(ph\351)HY(riques)YH( \201mais vous verrez l'infor)HY(ma)HY(tion)YH( qui vous permet)HY(tra)YH( de l'iden)HY(ti)HY(fier)YH(\202. Ce probl\350me sera corrig\351 dans le futur.)EP()0 P(Non seule)HY(ment)YH( ces fichiers apportent des infor)HY(ma)HY(tions)YH( sur la confi)HY(gu)HY(ra)HY(tion)YH( des ressources du bus \201d'une mani\350re un peu crypt\351e\202 et sur les pilotes \201dans les r\351per)HY(toires)YH( \253\240drivers\240\273\202 mais, dans le futur, vous devriez \352tre capable de les utili)HY(ser)YH( pour modi)HY(fier)YH( la confi)HY(gu)HY(ra)HY(tion)YH( des ressources. Actuel)HY(le)HY(ment)YH( \201ao\373t 2004\202, vous ne pouvez pas confi)HY(gu)HY(rer)YH( le bus PCI)Ca( avec cela. Une s\351rieuse limi)HY(ta)HY(tion)YH( est qu'avec le \253\240mod\350le de pilote\240\273 actuel, vous ne pouvez pas changer la ressource d'un p\351ri)HY(ph\351)HY(rique)YH( qui a \351t\351 affect\351 \340 un pilote, ce qui signi)HY(fie)YH( g\351n\351)HY(ra)HY(le)HY(ment)YH( que vous aurez besoin de d\351char)HY(ger)YH( le module du pilote pour pouvoir l'utili)HY(ser)YH(. Si le pilote est int\351gr\351, il n'y a aucun espoir. Ces s\351rieuses limi)HY(ta)HY(tions)YH( seront \351limi)HY(n\351es)YH( dans le futur avec un peu de chance. Dans la docu)HY(men)HY(ta)HY(tion)YH( du noyau se trouve un fichier )SM(pnp.txt)ES( indiquant comment r\351ali)HY(ser)YH( la confi)HY(gu)HY(ra)HY(tion)YH(. En ao\373t 2004, il \351tait obso)HY(l\350te)YH( mais l'auteur travaille sur une mise \340 jour. Utili)HY(ser)YH( le r\351per)HY(toire)YH( )SM(/sys)ES( pour confi)HY(gu)HY(rer)YH( les ressources est connue comme l'\253\240inter)HY(face)YH( utili)HY(sa)HY(teur)YH( pour le Plug and Play de Linux\240\273.)EP()0 P(L'autre partie de \253\240Linux Plug and Play\240\273 est l'inter)HY(face)YH( noyau utili)HY(s\351e)YH( par les pilotes de p\351ri)HY(ph\351)HY(riques)YH(. Elle a beau)HY(coup)YH( chang\351 depuis le d\351but du noyau 2.6 mais la plupart des pilotes utilisent toujours l'ancienne inter)HY(face)YH( \201ao\373t 2004\202. Il est aussi possible pour les pilotes \201ou vous\202 d'utili)HY(ser)YH( l'inter)HY(face)YH( utili)HY(sa)HY(teur)YH( qui a besoin d'am\351lio)HY(ra)HY(tions)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 67 H(7.7.\240Inspec)WB 193 Sn()HY(tion)YH()WB 66 Sn( du bus PCI)Ca()EH()BR()BR()BR()0 P(Il est facile de trouver quelles ressources bus ont \351t\351 assi)HY(gn\351es)YH( aux p\351ri)HY(ph\351)HY(riques)YH( du bus PCI)Ca( avec les commandes )BD(lspci)ES( et )BD(scanpci)ES(. Les options -v et -vv vous donne)HY(ront)YH( plus de d\351tails. Dans certains cas, )BD(scanpci)ES( trou)HY(vera)YH( un p\351ri)HY(ph\351)HY(rique)YH( que )BD(lspci)ES( ne peut pas trouver. Ceci est d\373 au fait que )BD(scanpci)ES( recherche les p\351ri)HY(ph\351)HY(riques)YH( direc)HY(te)HY(ment)YH( sur le bus PCI)Ca( \201via l'espace de confi)HY(gu)HY(ra)HY(tion)YH(\202 et n'utilise pas les donn\351es obte)HY(nues)YH( par le noyau \201qui pour)HY(raient)YH( \352tre fausses \340 cause d'un bogue du noyau - je viens de trouver un tel cas\202.)EP()0 P(Cette infor)HY(ma)HY(tion)YH( d'un format crypt\351 est dispo)HY(nible)YH( dans les \253\240fichiers\240\273 situ\351s dans les r\351per)HY(toires)YH( )SM(/sys)ES( et )SM(/proc)ES(. Dans )SM(/sys/bus/pci/devices)ES(, le fichier )SM(vendor)ES( contien)HY(dra)YH( le num\351ro d'iden)HY(ti)HY(fiant)YH( du vendeur, comme 0x4B8C, et c\346tera. Dans un format encore moins compr\351)HY(hen)HY(sible)YH(, il se trouve dans )SM(/proc/bus/pci)ES(. De telles infor)HY(ma)HY(tions)YH( dans les anciens noyaux \201avant le 2.6\202 se trou)HY(vaient)YH( dans )SM(/proc/pci)ES( \201compr\351)HY(hen)HY(sible)YH( malgr\351 que les IRQ)Ca( soient en hexa)HY(d\351)HY(ci)HY(mal)YH(\202 ou dans )SM(/proc/buspci/devices)ES( \201affi)HY(chage)YH( non compr\351)HY(hen)HY(sible)YH(\202.)EP()0 P(Dans la plupart des cas pour le PCI)Ca(, vous verrez seule)HY(ment)YH( comment le mat\351)HY(riel)YH( est main)HY(te)HY(nant)YH( confi)HY(gur\351)YH( et pas quelles ressources sont n\351ces)HY(saires)YH(. Dans certains cas, vous verrez seule)HY(ment)YH( l'adresse de base \201le d\351but des plages d'adresses\202 mais pas celle de fin. Si vous dispo)HY(sez)YH( de l'espace complet, alors vous pourrez d\351ter)HY(mi)HY(ner)YH( combien d'octets de ressources sont n\351ces)HY(saires)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 68 H(7.8.\240Intro)WB 194 Sn()HY(duc)HY(tion)YH()WB 67 Sn( au bus ISA)Ca()EH()BR()BR()BR()0 P(Pour les cartes du bus ISA)Ca(, ce n'est pas aussi simple que pour le bus PCI)Ca( qui est con\347u pour le PnP)Ca(. Les cartes ISA)Ca( r\351centes \351taient PnP)Ca( contrai)HY(re)HY(ment)YH( aux anciennes. De m\352me, certaines cartes PnP)Ca( ont leur partie PnP)Ca( d\351sac)HY(ti)HY(v\351e)YH( par des logi)HY(ciels)YH( sp\351ciaux ne fonc)HY(tion)HY(nant)YH( que sous MS Windows. Les cartes non PnP)Ca( sont confi)HY(gu)HY(r\351es)YH( avec des cava)HY(liers)YH( sur la carte ou par des logi)HY(ciels)YH( sous MS Windows.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 69 H(7.9.\240Cartes)WB 195 Sn()WB 68 Sn( ISA)Ca( PnP)Ca()EH()BR()BR()BR()0 P(Si c'est une carte PnP)Ca(, vous pouvez essayer )BD()SM(pnpdump --dumpregs)ES()ES( mais ce n'est pas une certi)HY(tude)YH(. Le r\351sul)HY(tat)YH( peut sembler crypt\351 mais il peut \352tre d\351chif)HY(fr\351)YH(. Ne confon)HY(dez)YH( pas les adresses de port de lecture que )BD(pnpdump)ES( utilise pour commu)HY(niquer)YH( avec les cartes PnP)Ca( avec l'adresse d'entr\351es/sorties du p\351ri)HY(ph\351)HY(rique)YH( trouv\351. Elles ne sont pas iden)HY(tiques)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 70 H(7.10.\240Bus)WB 196 Sn()WB 69 Sn( LPC)Ca()EH()BR()BR()BR()0 P(LPC)Ca( \201acro)HY(nyme)YH( de )EM(Low Pin Count)ES(, soit petit nombre de connec)HY(teurs)YH(\202 est une inter)HY(face)YH( type bus souvent utili)HY(s\351e)YH( sur les portables et de plus en plus utili)HY(s\351e)YH( sur les machines de bureau. Pour savoir si vous dispo)HY(sez)YH( d'un bus LPC)Ca(, saisis)HY(sez)YH( la commande )BD(lspci)ES( et cher)HY(chez)YH( quelque chose comme \253\240LPC\240\273. Il y a d'autres mots pr\352t de \253\240LPC\240\273 comme \253\240ISA Bridge ... LPC Inter)HY(face)YH( Control)HY(ler)YH(\240\273 ou \253\240LPC Bridge\240\273, et c\346tera. LPC)Ca( n'est pas r\351el)HY(le)HY(ment)YH( de l'ISA)Ca( mais il se substi)HY(tue)YH( \340 un bus ISA)Ca(.)EP()0 P(L'ancien bus ISA \351tait lent et les p\351ri)HY(ph\351)HY(riques)YH( qui avaient besoin de plus de rapi)HY(dit\351)YH( \351taient plac\351s sur le nouveau bus PCI. Mais les p\351ri)HY(ph\351)HY(riques)YH( qui n'avaient pas besoin d'une grande vitesse \351taient souvent impl\351)HY(men)HY(t\351s)YH( par des compo)HY(sants)YH( sur la carte m\350re et restaient sur le bus ISA m\352me s'il n'y avait aucun empla)HY(ce)HY(ment)YH( pour des cartes ISA. Puis le bus LPC est arriv\351 pour rempla)HY(cer)YH( les cartes ISA restantes. LPC est bien plus petit que l'ISA et aussi rapide car son horloge est quatre fois plus rapide que celle du bus ISA. Son bus multi)HY(plex\351)YH( pour les donn\351es/adresses et le contr\364le est compos\351 de quatre fils. Envoyer un octet requiert la s\351pa)HY(ra)HY(tion)YH( de l'octet en deux demi-octets et leur r\351as)HY(sem)HY(blage)YH( apr\350s. Cela explique la signi)HY(fi)HY(ca)HY(tion)YH( de l'acro)HY(nyme)YH( LPC\240: Low Pin Count \201petit nombre de broches\202. Il y a aussi quelques lignes sur le bus.)EP()0 P(Cette petite inter)HY(face)YH( LPC est utilis\351 pour les p\351ri)HY(ph\351)HY(riques)YH( propri\351)HY(taires)YH( lents comme les ports s\351ries, les ports paral)HY(l\350les)YH( et les lecteurs de disquette. Donc, un ordi)HY(na)HY(teur)YH( utili)HY(sant)YH( le bus LPC aura tous ces p\351ri)HY(ph\351)HY(riques)YH( rapides sur le bus PCI, et c\346tera et les p\351ri)HY(ph\351)HY(riques)YH( lents sur le bus LPC. Tous les p\351ri)HY(ph\351)HY(riques)YH( LPC seront sur la carte\240: il n'existe pas d'empla)HY(ce)HY(ment)YH( pour carte LPC.)EP()0 P(Un compo)HY(sant)YH( majeur du bus LPC)Ca( est le compo)HY(sant)YH( superio, conte)HY(nant)YH( des p\351ri)HY(ph\351)HY(riques)YH( d'entr\351es/sorties propri\351)HY(taires)YH(\240: ports s\351rie et paral)HY(l\350le)YH(, lecteur de disquette, contr\364)HY(leur)YH( de clavier, et c\346tera. Le BIOS)Ca( pour)HY(rait)YH( m\352me se trouver sur le bus LPC)Ca(. Le clavier et la souris \201p\351ri)HY(ph\351)HY(riques)YH( en entr\351e\202 devraient \352tre list\351s dans )SM(/proc/bus/input/devices)ES( mais, au lieu de voir \253\240lpc\240\273, il semble affi)HY(cher)YH( \253\240isa0060/serio0\240\273, et c\346tera m\352me s'ils se trouvent sur le bus LPC, et non pas sur le bus ISA.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 71 H(7.11.\240X-bus)WB 197 Sn()WB 70 Sn()EH()BR()BR()BR()0 P(Avant que le bus LPC devienne popu)HY(laire)YH(, il exis)HY(tait)YH( un bus X \201pas couvert dans ce guide pratique\202 qui a servi dans le m\352me but que le bus LPC mais qui n'\351tait pas aussi compact que le bus LPC. Certains PC disposent des deux bus.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 72 H(7.12.\240Cartes)WB 198 Sn()WB 71 Sn( non PnP)Ca()EH()BR()BR()BR()0 P(En contraste avec les cartes PnP)Ca(, les cartes non PnP)Ca( ont toujours leurs ressources confi)HY(gu)HY(r\351es)YH( au niveau mat\351)HY(riel)YH(. C'est-\340-dire qu'elles ont toujours une adresse et une IRQ)Ca( sauf s'il existe une confi)HY(gu)HY(ra)HY(tion)YH( par cava)HY(lier)YH(, et c\346tera pour d\351sac)HY(ti)HY(ver)YH( le p\351ri)HY(ph\351)HY(rique)YH(. Quelque)HY(fois)YH(, le pilote du p\351ri)HY(ph\351)HY(rique)YH(, ou un autre logi)HY(ciel)YH(, peut trouver les ressources utili)HY(s\351es)YH( simple)HY(ment)YH( en cher)HY(chant)YH( sur chaque adresse. Par exemple, )BD(scan)HY(port)YH()ES( \201Debian unique)HY(ment)YH(\240?\202 cherche sur la plupart des adresses d'entr\351es/sorties et peut trouver des p\351ri)HY(ph\351)HY(riques)YH( ISA)Ca(. Mais, atten)HY(tion)YH(, cela peut bloquer votre PC. Quelque fois, il \351chouera dans sa recherche du mat\351)HY(riel)YH( dispo)HY(nible)YH( \201car le mat\351)HY(riel)YH( a 0xff dans ses registres\202. M\352me s'il trouve le mat\351)HY(riel)YH(, il n'affi)HY(chera)YH( pas l'IRQ)Ca( ou n'iden)HY(ti)HY(fiera)YH( pas posi)HY(ti)HY(ve)HY(ment)YH( le mat\351)HY(riel)YH(.)EP()0 P(Donc, une fa\347on de trouver ce mat\351)HY(riel)YH( est de lancer un pilote, qui pour)HY(rait)YH( cher)HY(cher)YH( un tel mat\351)HY(riel)YH(. En regar)HY(dant)YH( dans les messages du d\351mar)HY(rage)YH(, vous pour)HY(riez)YH( voir un pilote se lancer et d\351cou)HY(vrir)YH( le mat\351)HY(riel)YH(. Sinon, vous pour)HY(riez)YH( avoir besoin de trouver un pilote et de le lancer \201par exemple, en le char)HY(geant)YH( comme un module\202.)EP()0 P(Trouver le bon pilote peut \352tre diffi)HY(cile)YH(. Quelque)HY(fois)YH(, il n'existe tout simple)HY(ment)YH( pas de pilote car certains p\351ri)HY(ph\351)HY(riques)YH( ne sont pas \201encore\202 g\351r\351s par Linux. Pour d\351ter)HY(mi)HY(ner)YH( le pilote dont vous avez besoin, jetez un \275il sur toute docu)HY(men)HY(ta)HY(tion)YH( pouvant vous permettre d'iden)HY(ti)HY(fier)YH( la carte. Si ceci \351choue, jetez un \275il \340 la carte elle-m\352me, avec les noms/num\351ros impor)HY(tants)YH( inscrits sur les compo)HY(sants)YH(. Mais l'iden)HY(ti)HY(fi)HY(ca)HY(tion)YH( du module de pilote dont vous avez besoin pour)HY(rait)YH( n'\352tre pas dispo)HY(nible)YH( sur la carte. Vous pouvez trouver l'iden)HY(ti)HY(fiant)YH( FCC sur la carte, puis cher)HY(cher)YH( sur Inter)HY(net)YH( avec ce num\351ro pour essayer de trouver plus d'infor)HY(ma)HY(tions)YH( sur la carte \201ou sur les compo)HY(sants)YH( en faisant partie\202.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 73 H(7.13.\240Cartes)WB 199 Sn()WB 72 Sn( non PnP)Ca( avec cava)HY(liers)YH()EH()BR()BR()BR()0 P(Si la carte dispose de cava)HY(liers)YH( pour confi)HY(gu)HY(rer)YH( les ressources, alors vous pouvez regar)HY(der)YH( la fa\347on dont ils sont instal)HY(l\351s)YH(. Il existe des cartes qui ont \340 la fois le support de PnP)Ca( et des cava)HY(liers)YH(. Elles fonc)HY(tionnent)YH( comme des cartes \340 cava)HY(lier)YH( si PnP)Ca( a \351t\351 d\351sac)HY(tiv\351)YH( d'une fa\347on ou d'une autre. Vous pour)HY(riez)YH( avoir besoin de la docu)HY(men)HY(ta)HY(tion)YH( \201soit impri)HY(m\351e)YH( soit sur disquette\202 venant avec la carte. Peut-\352tre pourrez-vous la trouver sur Inter)HY(net)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 74 H(7.14.\240Cartes)WB 200 Sn()WB 73 Sn( non PnP)Ca( et sans cava)HY(liers)YH()EH()BR()BR()BR()0 P(Un des cas les plus diffi)HY(ciles)YH( est quand du logi)HY(ciel)YH( fonc)HY(tion)HY(nant)YH( sous MS Windows a \351t\351 utilis\351 pour confi)HY(gu)HY(rer)YH( une carte non PnP)Ca( ou une carte PnP)Ca( o\371 la partie PnP)Ca( a \351t\351 d\351sac)HY(ti)HY(v\351e)YH(. Donc, vous ne pouvez la confi)HY(gu)HY(rer)YH( par PnP)Ca( ou par des cava)HY(liers)YH(. Dans ce cas, votre seul espoir est de cher)HY(cher)YH( les adresses comme d\351crit dans )0 71 1 A(Section\2407.12, \253\240Cartes non PnP)Ca(\240\273)71 0 TN TL()Ec /AF f D(. Ou essayez de trouver le logi)HY(ciel)YH( MS qui l'a confi)HY(gur\351)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 75 H(7.15.\240Outils)WB 201 Sn()WB 74 Sn( pour d\351tec)HY(ter)YH( ou confi)HY(gu)HY(rer)YH( le mat\351)HY(riel)YH()EH()BR()BR()BR()0 P(Dans un effort dupliqu\351, plusieurs distri)HY(bu)HY(tions)YH( majeures de Linux ont d\351ve)HY(lopp\351)YH( leur propre outil de d\351tec)HY(tion)YH( et de confi)HY(gu)HY(ra)HY(tion)YH( du mat\351)HY(riel)YH(. Ils confi)HY(gurent)YH( g\351n\351)HY(ra)HY(le)HY(ment)YH( bien plus que les ressources Plug-and-Play. C'est une confi)HY(gu)HY(ra)HY(tion)YH( g\351n\351)HY(rale)YH( qui est bien au-del\340 du domaine couvert par ce guide pratique.)EP()0 P(Puis, d'autres distri)HY(bu)HY(tions)YH(, comme Debian, pouvaient obtenir des copies des outils et les offrir \340 leurs utili)HY(sa)HY(teurs)YH( comme option ou comme outil en cas de probl\350me. Ces outils utilisent g\351n\351)HY(ra)HY(le)HY(ment)YH( les outils Linux stan)HY(dard)YH( pour d\351tec)HY(ter)YH( le mat\351)HY(riel)YH(, comme par exemple )BD(lspci)ES(. Dans la liste d'outils qui suit, le nom de la distri)HY(bu)HY(tion)YH( qui l'a con\347u est entre paren)HY(th\350ses)YH( mais l'outil est certai)HY(ne)HY(ment)YH( dispo)HY(nible)YH( aussi pour les autres distri)HY(bu)HY(tions)YH(.)EP()BR()UL()0 P()-1 LI()BD(hardinfo)ES(\240;)EP()0 P()-1 LI()BD(hwinfo)ES( \201SuSE\202 d\351tecte plus de choses que )BD(disco)HY(ver)YH()ES(\240;)EP()0 P()-1 LI()BD(disco)HY(ver)YH()ES( \201Progeny, utilis\351 par Debian\202\240;)EP()0 P()-1 LI()BD(Kudzu)ES( \201RedHat\202 d\351tecte et confi)HY(gure)YH(\240;)EP()0 P()-1 LI()BD(lsdev)ES( \201commande Linux stan)HY(dard)YH(\202\240;)EP()0 P()-1 LI()BD(hwsetup-knoppix)ES( \201Knoppix, bas\351 sur Kudzu\202.)EP()LU()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 76 H(7.16.\240Outils)WB 202 Sn()WB 75 Sn( pour d\351tec)HY(ter)YH( et confi)HY(gu)HY(rer)YH( un type de mat\351)HY(riel)YH()EH()BR()BR()BR()0 P(Il existe diff\351)HY(rents)YH( outils dispo)HY(nibles)YH( pour trouver et, quelque fois, confi)HY(gu)HY(rer)YH( diff\351)HY(rents)YH( types de p\351ri)HY(ph\351)HY(riques)YH(. Cette confi)HY(gu)HY(ra)HY(tion)YH( est g\351n\351)HY(ra)HY(liste)YH( et n'est pas couverte dans ce guide pratique.)EP()BR()UL()0 P()-1 LI()BD(read-edid)ES( \201)BD(get-edid)ES(\202\240: r\351cu)HY(p\350re)YH( les para)HY(m\350tres)YH( des moni)HY(teurs)YH( VESA)Ca( \201\340 part les tr\350s anciens\202\240;)EP()0 P()-1 LI()BD(sndcon)HY(fig)YH()ES(\240: pour les cartes son\240;)EP()0 P()-1 LI()BD(print)HY(tool)YH()ES(\240: impri)HY(mantes)YH( \201X-window doit \352tre en cours d'ex\351cu)HY(tion)YH(\202\240;)EP()0 P()-1 LI()BD(pconf-detect)ES(\240: ports paral)HY(l\350les)YH(\240;)EP()0 P()-1 LI()BD(gpm-mouse-test)ES(\240: d\351tecte et teste les souris)EP()0 P()-1 LI()BD(mdetect)ES(\240: d\351tecte et confi)HY(gure)YH( les souris. Conna\356t-il les souris sur )SM(/dev/input/)ES(\240?)EP()0 P()-1 LI()BD(nictools-pci)ES( \201et )BD(nictools-nopci)ES(\202 pour les cartes ether)HY(net)YH(\240;)EP()0 P()-1 LI()BD(hdparm)ES(\240: confi)HY(gure)YH( les disques durs\240;)EP()0 P()-1 LI()BD(hotplug)ES(\240: utilis\351 par le noyau\240;)EP()0 P()-1 LI()BD(xvid)HY(tune)YH()ES(\240: confi)HY(gure)YH( la vid\351o avec Xwin)HY(dows)YH( \201voir XFree86-Video-Timings-HOWTO\202.)EP()LU()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 77 H(7.17.\240Utili)WB 203 Sn()HY(sez)YH()WB 76 Sn( MS Windows)EH()BR()BR()BR()0 P(Quelques personnes ont essay\351 d'utili)HY(ser)YH( Windows pour voir comment les ressources bus \351taient confi)HY(gu)HY(r\351es)YH(. Malheu)HY(reu)HY(se)HY(ment)YH(, comme le mat\351)HY(riel)YH( PnP)Ca( oublie sa confi)HY(gu)HY(ra)HY(tion)YH( de ressources bus \340 l'arr\352t, la confi)HY(gu)HY(ra)HY(tion)YH( peut ne pas \352tre iden)HY(tique)YH( lors du red\351)HY(mar)HY(rage)YH( sous Linux pour le mat\351)HY(riel)YH( non PnP)Ca( \201ou lorsque quelqu'un a d\351sac)HY(tiv\351)YH( PnP)Ca( dans le p\351ri)HY(ph\351)HY(rique)YH( soit par des cava)HY(liers)YH( soit en utili)HY(sant)YH( des logi)HY(ciels)YH( Windows\202. M\352me pour PnP)Ca(, cela peut \352tre le cas parce que dans beau)HY(coup)YH( de cas, Windows et Linux acceptent simple)HY(ment)YH( ce que le BIOS)Ca( a fait. Mais l\340 o\371 Windows et Linux font une confi)HY(gu)HY(ra)HY(tion)YH(, ils peuvent le faire diff\351)HY(rem)HY(ment)YH(. Donc ne comptez pas \340 ce que les p\351ri)HY(ph\351)HY(riques)YH( soient confi)HY(gu)HY(r\351s)YH( de la m\352me mani\350re. )EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 2 78 H(8.\240Inter)WB 204 Sn()HY(rup)HY(tions)YH()WB 77 Sn( PCI)EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 3 79 H(8.1.\240Intro)WB 205 Sn()HY(duc)HY(tion)YH()WB 78 Sn()EH()BR()BR()BR()0 P(Chaque p\351ri)HY(ph\351)HY(rique)YH( PCI qui a besoin d'une inter)HY(rup)HY(tion)YH( vient avec une inter)HY(rup)HY(tion)YH( PCI fixe qui ne peut pas \352tre modifi\351. Elle est d\351sign\351 par un num\351ro de slot et une lettre \201A, B, C ou D\202, par exemple 3:B. Mais, cette inter)HY(rup)HY(tion)YH( PCI est redi)HY(ri)HY(g\351e)YH( vers un num\351ro d'inter)HY(rup)HY(tion)YH( ISA, comme par exemple 21 pour un compo)HY(sant)YH( sur la carte m\350re.)EP()0 P(Ce routage est r\351alis\351 par un routeur program)HY(mable)YH( d'inter)HY(rup)HY(tions)YH( \201PIR)Ca(, acro)HY(nyme)YH( de )EM(program)HY(mable)YH( inter)HY(rupt)YH( router)ES(\202. Autre)HY(ment)YH(, une ligne d'inter)HY(rup)HY(tion)YH( pour)HY(rait)YH( \352tre rout\351e direc)HY(te)HY(ment)YH( \201sans aucun PIR\202. Si un PIR est pr\351sent, il peut \352tre programm\351 par le BIOS ou par Linux. Donc, l'inter)HY(rup)HY(tion)YH( d'un periph\351)HY(rique)YH( PCI peut quelque fois \352tre modi)HY(fi\351e)YH(, non pas en envoyant l'inter)HY(rup)HY(tion)YH( sur un fil diff\351)HY(rent)YH(, mais en modi)HY(fiant)YH( le routage d'un envoi sur ce film en program)HY(mant)YH( le PIR. Quand le routage est modifi\351, l'inter)HY(rup)HY(tion)YH( fournie par ce nouveau routage est \351crit dans un registre de confi)HY(gu)HY(ra)HY(tion)YH( situ\351 dans le compo)HY(sant)YH( du p\351ri)HY(ph\351)HY(rique)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 80 H(8.2.\240Histo)WB 206 Sn()HY(rique)YH(\240:)WB 79 Sn( des inter)HY(rup)HY(tions)YH( ISA aux PCI)EH()BR()BR()BR()0 P(Avant l'arriv\351e du bus PCI, les PC utili)HY(saient)YH( le bus ISA. Ensuite, lors de la tran)HY(si)HY(tion)YH( vers le nouveau bus PCI, les PC utili)HY(saient)YH( les bus ISA et PCI. Le bus ISA est fait de telle fa\347on que toutes les lignes d'inter)HY(rup)HY(tion)YH( arrivent sur chaque carte, donc toute carte peut modi)HY(fier)YH( son num\351ro d'IRQ tout simple)HY(ment)YH( en envoyant son signal d'inter)HY(rup)HY(tion)YH( sur la ligne souhai)HY(t\351e)YH(. Tous les signaux d'inter)HY(rup)HY(tion)YH( \351taient envoy\351s au contr\364)HY(leur)YH( d'inter)HY(rup)HY(tion)YH( qui envoyait ensuite un signal au proces)HY(seur)YH( pour lui indiquer de stopper tempo)HY(rai)HY(re)HY(ment)YH( son travail et de lancer le code du pilote pour r\351pondre \340 l'inter)HY(rup)HY(tion)YH(.)EP()0 P(Quand le PCI est apparu, la solu)HY(tion)YH( simple \351tait d'\351tablir une corres)HY(pon)HY(dance)YH( entre les inter)HY(rup)HY(tions)YH( PCI et les inter)HY(rup)HY(tions)YH( ISA qui n'\351taient pas utili)HY(s\351es)YH(. Ceci n\351ces)HY(site)YH( l'utili)HY(sa)HY(tion)YH( du PIR, routeur program)HY(mable)YH( d'inter)HY(rup)HY(tions)YH(. Ce routeur r\351alise la corres)HY(pon)HY(dance)YH(. Comme il n'y avait que 15 inter)HY(rup)HY(tions)YH(, il \351tait commun de placer plusieurs p\351ri)HY(ph\351)HY(riques)YH( PCI sur les quelques inter)HY(rup)HY(tions)YH( dispo)HY(nibles)YH(. R\351soudre ce probl\350me est simple\240: propo)HY(ser)YH( un nouveau mat\351)HY(riel)YH( pour augmen)HY(ter)YH( le nombre d'inter)HY(rup)HY(tions)YH(. Le r\351sul)HY(tat)YH( est l'APIC. Son adop)HY(tion)YH( a \351t\351 lente car la capa)HY(cit\351)YH( du bus PCI \340 parta)HY(ger)YH( les inter)HY(rup)HY(tions)YH( a diminu\351 le probl\350me. En fait, l'APIC a \351t\351 prin)HY(ci)HY(pa)HY(le)HY(ment)YH( utilis\351 avec les machines bi-proces)HY(seurs)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 81 H(8.3.\240Contr\364)WB 207 Sn()HY(leur)YH()WB 80 Sn( avanc\351 d'inter)HY(rup)HY(tions)YH( program)HY(m\351es)YH( \201APIC)Ca(, acro)HY(nyme)YH( de )EM(Advan)HY(ced)YH( Program)HY(mable)YH( Inter)HY(rupt)YH( Control)HY(ler)YH()ES(\202)EH()BR()BR()BR()0 P(Un APIC peut fournir \201suivant le mod\350le\202 16, 24, 32 ou 64 inter)HY(rup)HY(tions)YH(, etc. Il peut aussi g\351rer le routage d'inter)HY(rup)HY(tions)YH( d'un proces)HY(seur)YH( vers un autre. Voir le fichier \253 IO-APIC \273 dans le r\351per)HY(toire)YH( i386 de la docu)HY(men)HY(ta)HY(tion)YH( du noyau et le guide pratique sur l'ACPI. Ne confon)HY(dez)YH( pas APIC avec ACPI \201Confi)HY(gu)HY(ra)HY(tion)YH( avanc\351e et inter)HY(face)YH( pour la gestion d'\351nergie\202 qui peut \352tre utilis\351 par le noyau pour confi)HY(gu)HY(rer)YH( l'APIC.)EP()0 P(Le contr\364)HY(leur)YH( APIC actuel qui est connect\351 sur les lignes d'inter)HY(rup)HY(tions)YH( est un APIC I/O \201ou IO-APIC ou IOAPIC\202. En utili)HY(sant)YH( plus d'un IO-APIC, on peut obtenir plus d'inter)HY(rup)HY(tions)YH( et elles sont num\351)HY(ro)HY(t\351es)YH( de fa\347on \340 \352tre uniques. Par exemple, le premier contr\364)HY(leur)YH( peut les num\351)HY(ro)HY(ter)YH( de 0 \340 23 et le second les appe)HY(lera)YH( de 24 \340 47, ce qui donne 48 inter)HY(rup)HY(tions)YH( num\351)HY(ro)HY(t\351es)YH( de 0 \340 47. Mais certaines personnes ont des num\351ros d'inter)HY(rup)HY(tions)YH( hauts. Se pour)HY(rait)YH(-il que le deuxi\350me IO-APIC commence la num\351)HY(ro)HY(ta)HY(tion)YH( avec un num\351ro de base haut, lais)HY(sant)YH( ainsi beau)HY(coup)YH( d'IRQ inexis)HY(tants)YH(.\240?)EP()0 P(En plus des IO-APIC, il existe des APIC locaux \201LAPIC\202 qui font partie de chaque proces)HY(seur)YH(. L'IO-APIC travaille en commu)HY(niquant)YH( avec les LAPIC compris dans les proces)HY(seurs)YH(.)EP()0 P(Quand APIC a \351t\351 intro)HY(duit)YH(, les anciens PIC ISA \351taient aussi conser)HY(v\351s)YH( en lais)HY(sant)YH( le choix d'utili)HY(ser)YH( ou non l'APIC ou le PIC ISA \201qui est quelque fois appel\351 PIC ou XT-PIC dans )EM(/proc/inter)HY(rupts)YH()ES(\240; le XT vient du PC XT d'IBM qui \351tait le second mod\350le de PC d'IBM en 1983\202. Il est possible de dire au noyau \201sur la ligne de commande du noyau\202 de ne pas utili)HY(ser)YH( APIC auquel cas il utili)HY(sera)YH( le vieux XT-PIC s'il est dispo)HY(nible)YH(. Comme l'APIC peut avoir plus d'inter)HY(rup)HY(tions)YH( que les 15 four)HY(nies)YH( par XT-PIC, il pour)HY(rait)YH( y avoir des probl\350mes\240??)EP()0 P(Pour savoir si vous utili)HY(sez)YH( PIC ou APIC, regar)HY(dez)YH( dans )EM(/proc/inter)HY(rupts)YH()ES(. Si vous voyez )EM(XT-PIC)ES( pour l'IRQ 2 seule et )EM(IO-APIC)ES( pour les autres, cela pour)HY(rait)YH( signi)HY(fier)YH( que vous avez l'ancien XT-PIC mais qu'il n'est pas actuel)HY(le)HY(ment)YH( utilis\351. En fait, l'IRQ 2 est utilis\351 pour la commu)HY(ni)HY(ca)HY(tion)YH( entre les deux anciens XT-PIC juste au cas o\371 vous en auriez besoin apr\350s avoir d\351sac)HY(ti)HY(ver)YH( l'APIC. Deux XT-PIC sont n\351ces)HY(saires)YH( car chacun supportent seule)HY(ment)YH( huit inter)HY(rup)HY(tions)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 82 H(8.4.\240Inter)WB 208 Sn()HY(rup)HY(tions)YH()WB 81 Sn( signa)HY(l\351es)YH( par message \201MSI\202)EH()BR()BR()BR()0 P(Un autre nouveau d\351ve)HY(lop)HY(pe)HY(ment)YH( concerne les inter)HY(rup)HY(tions)YH( signa)HY(l\351es)YH( par message \201MSI, acro)HY(nyme)YH( de )EM(Message Signal)HY(led)YH( Inter)HY(rupts)YH()ES( \201MSI\202 o\371 l'inter)HY(rup)HY(tion)YH( est juste un message envoy\351 \340 une adresse sp\351ciale sur le bus prin)HY(ci)HY(pal)YH( de l'ordi)HY(na)HY(teur)YH( \201pas de ligne d'inter)HY(rup)HY(tion)YH( n\351ces)HY(saire)YH(\202. Mais le p\351ri)HY(ph\351)HY(rique)YH( qui envoie un tel message doit tout d'abord obtenir le contr\364le du bus prin)HY(ci)HY(pal)YH( de fa\347on \340 ce qu'il puisse envoyer le message d'inter)HY(rup)HY(tion)YH(. Un tel message contient plus d'infor)HY(ma)HY(tions)YH( que \253\240J'envoie une inter)HY(rup)HY(tion)YH(\240\273. Il contient un index pour l'adresse du programme qui a besoin d'\352tre ex\351cut\351 pour remplir la mission de l'IRQ. Ce nombre, par exemple 3, signi)HY(fie)YH( que le proces)HY(seur)YH( trouve l'adresse \340 laquelle il doit se rendre dans le troi)HY(si\350me)YH( \351l\351ment d'une table sp\351ciale connue du proces)HY(seur)YH(.)EP()0 P(Comme le mat\351)HY(riel)YH( du p\351ri)HY(ph\351)HY(rique)YH( doit conna\356tre MSI pour que le p\351ri)HY(ph\351)HY(rique)YH( utilise MSI, il est fr\351quent que certains p\351ri)HY(ph\351)HY(riques)YH( utilisent MSI alors que d'autres utilisent les inter)HY(rup)HY(tions)YH( tradi)HY(tion)HY(nelles)YH(. Since for a device to use MSI the device hard)HY(ware)YH( must support MSI, Les m\351thodes conven)HY(tion)HY(nelles)YH( du support mat\351)HY(riel)YH( des inter)HY(rup)HY(tions)YH( \201appe)HY(l\351es)YH( INTx\202 seront donc certai)HY(ne)HY(ment)YH( pr\351sentes pendant long)HY(temps)YH( encore. Les MSI ont des num\351ros d'inter)HY(rup)HY(tion)YH( comme les inter)HY(rup)HY(tions)YH( INTx mais ces nombres sont souvent trop grands pour \351viter toute r\351uti)HY(li)HY(sa)HY(tion)YH( des nombres des inter)HY(rup)HY(tions)YH( INTx.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 83 H(8.5.\240Partage)WB 209 Sn()WB 82 Sn( des inter)HY(rup)HY(tions)YH( PCI)EH()BR()BR()BR()0 P(Les inter)HY(rup)HY(tions)YH( PCI peuvent \352tre parta)HY(g\351es)YH(, signi)HY(fiant)YH( que deux p\351ri)HY(ph\351)HY(riques)YH( voire plus utilisent la m\352me IRQ. C'est faisable, il est g\351n\351)HY(ra)HY(le)HY(ment)YH( pr\351f\351)HY(rable)YH( de ne pas les parta)HY(ger)YH(. Le partage ne fonc)HY(tionne)YH( pas bien pour les tr\350s anciens mat\351)HY(riels)YH( PCI \201avant 1995\240?\202 et pour les mat\351)HY(riels)YH( PCI d\351fec)HY(tueux)YH( d\350s l'usine \201ils ont \351t\351 cr\351\351s ainsi\202. Par exemple, si un p\351ri)HY(ph\351)HY(rique)YH( PCI sur l'IRQ 9 r\351cla)HY(mait)YH( par erreur que toute IRQ 9 \351tait pour lui, alors les autres p\351ri)HY(ph\351)HY(riques)YH( utili)HY(sant)YH( l'IRQ 9 verraient toutes leurs demandes d'inter)HY(rup)HY(tion)YH( igno)HY(r\351es)YH(. Sans partage, ce probl\350me est \351vit\351.)EP()0 P(Pour un exemple de partage d'une m\352me IRQ entre deux p\351ri)HY(ph\351)HY(riques)YH( PCI, voir )0 114 1 A(Partage d'inter)HY(rup)HY(tion)YH( PCI)114 0 TN TL()Ec /AF f D(. Cette capa)HY(cit\351)YH( de partage est int\351)HY(gr\351e)YH( au mat\351)HY(riel)YH( et tous les pilotes de p\351ri)HY(ph\351)HY(riques)YH( sont suppo)HY(s\351s)YH( la suppor)HY(ter)YH(. Notez que vous ne pouvez pas habi)HY(tuel)HY(le)HY(ment)YH( parta)HY(ger)YH( la m\352me inter)HY(rup)HY(tion)YH( entre le bus PCI et le bus ISA. )EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 84 H(8.6.\240Recherche)WB 210 Sn()WB 83 Sn( dans les tables de routage)EH()BR()BR()BR()0 P(Certaines infor)HY(ma)HY(tions)YH( sont four)HY(nies)YH( par les messages au d\351mar)HY(rage)YH(. Elles sont visibles gr\342ce \340 l'outil \253\240dmesg\240\273. Les fa\347ons de recher)HY(cher)YH( les tables impliquent du logi)HY(ciel)YH( que vous pour)HY(riez)YH( ne pas avoir \201ou qui n'existe pas encore\202. Pour v\351ri)HY(fier)YH( le routage qu'effec)HY(tue)YH( PCI vers les 16 inter)HY(rup)HY(tions)YH( ISA, utili)HY(ser)YH( \253\240pirtool\240\273 qui affiche la table de routage $PIR. Si vous avez un APIC avec un routage en dur \201pas de PIR\202, utili)HY(ser)YH( \253\240mptable\240\273 pour recher)HY(cher)YH( dans la table MP. Pour un APIC routable, des m\351thodes ACPI _PRT sont utili)HY(sables)YH( pour acc\351der \340 une table \201mais je ne sais pas si un outil en ligne de commande existe pour cela\240?\202)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 85 H(8.7.\240Pour)WB 211 Sn()WB 84 Sn( plus d'infor)HY(ma)HY(tions)YH()EH()BR()BR()BR()0 P(Des infor)HY(ma)HY(tions)YH( tech)HY(niques)YH( d\351taill\351es sur les inter)HY(rup)HY(tions)YH( sont dispo)HY(nibles)YH(, par exemple \253 )R12 2 A(Les inter)HY(rup)HY(tions)YH( PCI pour les machines x86 sous FreeBSD)EA(. Micro)HY(soft)YH( a un docu)HY(ment)YH( inti)HY(tul\351)YH( \253 )R13 2 A(L'impor)HY(tance)YH( de l'impl\351)HY(men)HY(ta)HY(tion)YH( des sous-syst\350mes d'inter)HY(rup)HY(tions)YH( bas\351es sur APIC sur les PC mono-proces)HY(seur)YH(")EA( \273.)EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 2 86 H(9.\240Lier)WB 212 Sn()WB 85 Sn( les inter)HY(rup)HY(tions)YH( PCI)EH()BR()BR()BR()0 P(Voici quelques d\351tails sur le syst\350me d'inter)HY(rup)HY(tions)YH( PCI. Chaque carte PCI \201et les p\351ri)HY(ph\351)HY(riques)YH( mont\351s sur la carte-m\350re\202 a quatre inter)HY(rup)HY(tions)YH( possibles\240: INTA#, INTB#, INTC#, INTD#. \300 partir de main)HY(te)HY(nant)YH(, nous les appe)HY(le)HY(rons)YH( simple)HY(ment)YH( A, B, C et D. Chacune a sa propre broche sur le connec)HY(teur)YH( d'une carte PCI. Donc, pour un syst\350me compre)HY(nant)YH( sept empla)HY(ce)HY(ments)YH( \201pour sept cartes\202, il pour)HY(rait)YH( y avoir 28 \2017 x 4\202 diff\351)HY(rentes)YH( lignes d'inter)HY(rup)HY(tion)YH( pour ces cartes. Les p\351ri)HY(ph\351)HY(riques)YH( int\351)HY(gr\351s)YH( \340 la carte-m\350re ont aussi des inter)HY(rup)HY(tions)YH( suppl\351)HY(men)HY(taires)YH(. Mais les sp\351ci)HY(fi)HY(ca)HY(tions)YH( permettent un nombre plus r\351duit de lignes d'inter)HY(rup)HY(tion)YH(, donc certains bus PCI semblent n'avoir que quatre ou huit lignes d'inter)HY(rup)HY(tion)YH(. Ceci n'est pas trop restric)HY(tif)YH( car les inter)HY(rup)HY(tions)YH( pour)HY(raient)YH( \352tre parta)HY(g\351es)YH(. Pour une ligne \340 quatre inter)HY(rup)HY(tions)YH( \201LNKA, LNKB, LNKC, LNKD\202, il y a un compo)HY(sant)YH( appel\351 \253\240routeur program)HY(mable)YH( d'inter)HY(rup)HY(tions)YH(\240\273 qui redi)HY(rige)YH( LNKA, LNKB, LNKC, LNKD vers les IRQ s\351lec)HY(tion)HY(n\351es)YH(. Ce routage peut \352tre modifi\351 par le BIOS ou par Linux. Par exemple, LNKA peut \352tre rout\351 vers l'IRQ 5. Suppo)HY(sons)YH( que nous d\351si)HY(gnons)YH( l'inter)HY(rup)HY(tion)YH( B de l'empla)HY(ce)HY(ment)YH( 3 comme l'inter)HY(rup)HY(tion)YH( 3B. Les inter)HY(rup)HY(tions)YH( 3B et 2A pour)HY(raient)YH( \352tre connec)HY(t\351es)YH( de fa\347on perma)HY(nente)YH( \340 LNKA qui est rout\351 vers l'IRQ 5. Ces deux inter)HY(rup)HY(tions)YH(, 3B et 2A, sont parta)HY(g\351es)YH( en perma)HY(nence)YH( par le cablage sur la carte-m\350re.)EP()0 P(Saisir )BD(dmesg)ES( sur la ligne de commande permet de voir comment les lignes d'inter)HY(rup)HY(tion)YH( style LNKA sont redi)HY(ri)HY(g\351es)YH( \201ou rout\351es\202 vers les IRQ \201*5 signi)HY(fie)YH( que c'est li\351 \340 l'IRQ 5\202. Recher)HY(chez)YH( )EM(PCI Inter)HY(rupt)YH( Link)ES(. Notez que \253\240link\240\273 est utilis\351 ici avec deux signi)HY(fi)HY(ca)HY(tions)YH(\240: 1. le lien \201routage\202 des lignes d'inter)HY(rup)HY(tions)YH( PCI vers les les IRQ, 2. le label d'une ligne d'inter)HY(rup)HY(tion)YH( comme LNKB \201lien B\202. Les labels de la ligne d'inter)HY(rup)HY(tion)YH( semblent \352tre fournis par le BIOS \201??\202 et pour)HY(raient)YH( avoir des noms diff\351)HY(rents)YH( comme\240: LNKC, LNK2, APCF, LUBA, LIDE, et c\346tera. Ques)HY(tion)YH(\240: quand un grand nombre de lignes d'inter)HY(rup)HY(tion)YH( sont affi)HY(ch\351es)YH( comme \351tant d\351sac)HY(ti)HY(v\351es)YH(, existent-elles toutes physique)HY(ment)YH( sur la carte-m\350re\240? ou existent-elles seule)HY(ment)YH( dans la partie ACPI du BIOS pour que ce dernier puisse fonc)HY(tion)HY(ner)YH( avec les cartes-m\350res qui ont un grand nombre de lignes d'inter)HY(rup)HY(tion)YH(\240?)EP()0 P(Connec)HY(ter)YH( toutes les inter)HY(rup)HY(tions)YH( A \201INTA#\202 \340 la ligne LNKA, toutes les B \340 la ligne LNKB, et c\346tera. est une m\351thode simple pour connec)HY(ter)YH( en dur ces lignes des p\351ri)HY(ph\351)HY(riques)YH( PCI \201comme le 3B\202 aux inter)HY(rup)HY(tions)YH( LNKA, et c\346tera. Cette m\351thode a \351t\351 utili)HY(s\351e)YH( une fois plusieurs ann\351es aupa)HY(ra)HY(va)HY(rant)YH( mais ce n'est pas la bonne solu)HY(tion)YH(. Voici pourquoi. Si une carte a seule)HY(ment)YH( besoin d'une inter)HY(rup)HY(tion)YH(, elle doit utili)HY(ser)YH( A. Si elle a besoin de deux inter)HY(rup)HY(tions)YH(, elle doit utili)HY(ser)YH( A et B. Du coup, INTA# est utilis\351 bien plus fr\351quem)HY(ment)YH( que INTD#. Donc, on va se trouver avec un nombre exces)HY(sif)YH( d'inter)HY(rup)HY(tions)YH( parta)HY(geant)YH( la premi\350re ligne \201LNKA connect\351 \340 toutes les INTA#\202. Pour d\351pas)HY(ser)YH( ce probl\350me, il vaut mieux les connec)HY(ter)YH( de fa\347on al\351a)HY(toire)YH( pour que chacune des quatre lignes d'inter)HY(rup)HY(tions)YH( \201LNKA, LNKB, LNKC, LNKD\202 partagent \340 peu pr\350s le m\352me nombre d'inter)HY(rup)HY(tions)YH( PCI.)EP()0 P(Une fa\347on de le faire est de lier en dur LNKA avec les inter)HY(rup)HY(tions)YH( 1A, 2B, 3C, 4D, 5A, 6B, 7C. Ceci se fait en connec)HY(tant)YH( physique)HY(ment)YH( le fil W aux fils 1A, 2B, et c\346tera. De la m\352me fa\347on, le fil LNKB pour)HY(rait)YH( \352tre connect\351 aux fils 1B, 2C, 3D, 4A, 5B, 6C, 7D, et c\346tera. Puis, au d\351mar)HY(rage)YH(, le BIOS dirige les LNKB, LNKA, LNKC, LNKD aux IRQ. Apr\350s cela, il \351crit l'IRQ que chaque p\351ri)HY(ph\351)HY(rique)YH( utilise dans un registre de confi)HY(gu)HY(ra)HY(tion)YH( du mat\351)HY(riel)YH( dans chaque p\351ri)HY(ph\351)HY(rique)YH(. \300 partir de main)HY(te)HY(nant)YH(, tout programme inter)HY(ro)HY(geant)YH( ce registre peut savoir l'IRQ utili)HY(s\351e)YH( par le p\351ri)HY(ph\351)HY(rique)YH(. Notez qu'\351crire simple)HY(ment)YH( l'IRQ dans un registre sur une carte PCI ne confi)HY(gure)YH( en aucun cas l'IRQ pour ce p\351ri)HY(ph\351)HY(rique)YH(.)EP()0 P(Une utili)HY(sa)HY(tion)YH( pratique de cette infor)HY(ma)HY(tion)YH( est qu'en dernier ressort, une personne pour)HY(rait)YH( modi)HY(fier)YH( les IRQ d'une carte PCI en l'ins\351)HY(rant)YH( dans un empla)HY(ce)HY(ment)YH( diff\351)HY(rent)YH(. Dans l'exemple ci-dessus, INTA# d'une carte PCI sera connect\351 au fil LNKA si la carte est ins\351r\351e dans l'empla)HY(ce)HY(ment)YH( 1 \2011A corres)HY(pond)YH( \340 LNKA\202 mais INTA# sera connect\351 au fil LNKB si elle est ins\351r\351e dans l'empla)HY(ce)HY(ment)YH( 4 \2014A corres)HY(pond)YH( \340 LNKB\202.)EP()0 P(Une carte dans un empla)HY(ce)HY(ment)YH( pour)HY(rait)YH( avoir jusqu'\340 huit p\351ri)HY(ph\351)HY(riques)YH( mais il n'y a que quatre inter)HY(rup)HY(tions)YH( PCI pour elle \201A, B, C, D\202. Cela suffit car les inter)HY(rup)HY(tions)YH( pour)HY(raient)YH( \352tre parta)HY(g\351es)YH( pour que chacun des huit p\351ri)HY(ph\351)HY(riques)YH( \201s'ils existent\202 puisse avoir une inter)HY(rup)HY(tion)YH( parta)HY(g\351e)YH(. La lettre de l'inter)HY(rup)HY(tion)YH( PCI d'un p\351ri)HY(ph\351)HY(rique)YH( est souvent fix\351e et cod\351e en dur dans le p\351ri)HY(ph\351)HY(rique)YH(. L'affec)HY(ta)HY(tion)YH( des inter)HY(rup)HY(tions)YH( est r\351ali)HY(s\351e)YH( par soit le BIOS ou par Linux, \351tablis)HY(sant)YH( une corres)HY(pon)HY(dance)YH( entre les inter)HY(rup)HY(tions)YH( PCI et les inter)HY(rup)HY(tions)YH( ISA comme mentionn\351 ci-dessus.)EP()0 P(S'il n'existe que quatre lignes \201LNKA, LNKB, LNKC, and LNKD\202 comme dans l'exemple ci-dessus, les choix de corres)HY(pon)HY(dance)YH( pour le BIOS sont limit\351s. Certaines cartes-m\350re peuvent utili)HY(ser)YH( plus de lignes et ont donc plus de choix. Par exemple, de LNKA \340 LNKH \2018 lignes\202. Les messages au d\351mar)HY(rage)YH( \201)BD(dmesg)ES(\202 peuvent les affi)HY(cher)YH( et indiquer leur corres)HY(pon)HY(dance)YH(. Le BIOS sait comment elles sont c\342bl\351es.)EP()0 P(Sur le bus PCI, le BIOS \201ou Linux\202 affecte des IRQ \201inter)HY(rup)HY(tions)YH(\202 de fa\347on \340 \351viter les conflits avec les IRQ qu'il sait affec)HY(t\351s)YH( au bus ISA. Quelque fois, le menu du CMOS du BIOS peut vous auto)HY(ri)HY(ser)YH( \340 affec)HY(ter)YH( des IRQ aux cartes PCI ou indiquer au BIOS les IRQ r\351ser)HY(v\351es)YH( aux p\351ri)HY(ph\351)HY(riques)YH( ISA. Les affec)HY(ta)HY(tions)YH( sont connues sous le nom d'une table de routage. Sous MS WIndows, c'est appel\351 )EM(IRQ stee)HY(ring)YH()ES( mais cela couvre aussi le cas d'un routage dyna)HY(mique)YH( des IRQ apr\350s le d\351mar)HY(rage)YH(. Le BIOS peut suppor)HY(ter)YH( son propre )EM(IRQ stee)HY(ring)YH()ES(.)EP()0 P(Si votre PC utilise les inter)HY(rup)HY(tions)YH( PCI qui sont renvoy\351es vers des inter)HY(rup)HY(tions)YH( ISA, vous auriez le droit de penser que les inter)HY(rup)HY(tions)YH( seront lentes \351tant donn\351 que le bus ISA \351tait lent. Pas vrai)HY(ment)YH(. Le compo)HY(sant)YH( de contr\364le des inter)HY(rup)HY(tions)YH( ISA a un fil d'inter)HY(rup)HY(tion)YH( direct le reliant au CPU pour qu'il obtienne une atten)HY(tion)YH( imm\351)HY(diate)YH(. Bien que les signaux sur les bus d'adresses et de donn\351es de l'ancien ISA sont lents pour arriver au CPU, les signaux d'inter)HY(rup)HY(tions)YH( y arrivent rapi)HY(de)HY(ment)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 2 87 H(10.\240)WB 213 Sn()WB 86 Sn(PnP)Ca( pour les p\351ri)HY(ph\351)HY(riques)YH( externes et ajout\351s)EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 3 88 H(10.1.\240Bus)WB 214 Sn()WB 87 Sn( USB)Ca()EH()BR()BR()BR()0 P(L'USB \201)EM(Univer)HY(sal)YH( Serial Bus)ES(, c'est-\340-dire Bus Univer)HY(sel)YH( S\351rie\202 est un bus \340 grande vitesse sur un c\342ble externe qui se connecte au PC. Le bus externe a ses propres proto)HY(coles)YH( de commu)HY(ni)HY(ca)HY(tion)YH( et n'utilise pas les IRQ)Ca(, adresses d'entr\351es/sorties \201ou tout autre ressource bus\202 sur les c\342bles bus externes. La commu)HY(ni)HY(ca)HY(tion)YH( se fait par paquets comme sur Inter)HY(net)YH(, seule)HY(ment)YH( sur des allo)HY(ca)HY(tions)YH( de tranches de temps, ce qui emp\352che un p\351ri)HY(ph\351)HY(rique)YH( de manger le bus si d'autres p\351ri)HY(ph\351)HY(riques)YH( en ont besoin. Il existe des tranches de temps libre qui permettent \340 tout p\351ri)HY(ph\351)HY(rique)YH( d'envoyer un message court au contr\364)HY(leur)YH( de bus sans avoir besoin des IRQ)Ca( sur le bus.)EP()0 P(N\351an)HY(moins)YH(, le contr\364)HY(leur)YH( de bus USB)Ca( int\351gr\351 au PC a une IRQ)Ca( et une adresse sur le bus PCI)Ca( \201ou ISA)Ca(\202, utili)HY(s\351es)YH( pour la commu)HY(ni)HY(ca)HY(tion)YH( entre le CPU et tous les p\351ri)HY(ph\351)HY(riques)YH( USB)Ca(. Donc, il n'y a pas d'allo)HY(ca)HY(tions)YH( de ressources n\351ces)HY(saires)YH( pour les p\351ri)HY(ph\351)HY(riques)YH( indi)HY(vi)HY(duels)YH( sur le bus USB)Ca(. Vous pouvez aussi imagi)HY(ner)YH( que tous les p\351ri)HY(ph\351)HY(riques)YH( sur le bus USB)Ca( partagent la m\352me inter)HY(rup)HY(tion)YH( et la m\352me adresse. Si un p\351ri)HY(ph\351)HY(rique)YH( est sur l'USB, il a besoin d'un pilote qui comprenne l'USB.)EP()0 P(Mais, chaque p\351ri)HY(ph\351)HY(rique)YH( USB)Ca( a un iden)HY(ti)HY(fiant)YH(, comme les cartes du bus PCI)Ca(. Linux main)HY(tient)YH( donc une table des iden)HY(ti)HY(fiants)YH( de fa\347on \340 ce que les pilotes de p\351ri)HY(ph\351)HY(rique)YH( puissent les v\351ri)HY(fier)YH( et trouver ainsi leur p\351ri)HY(ph\351)HY(rique)YH(. L'USB supporte aussi le \253\240hot plug\240\273. Pour trouver ce qui est plac\351 sur le bus USB)Ca(, vous pouvez utili)HY(ser)YH( un outil g\351n\351)HY(ra)HY(liste)YH( de d\351tec)HY(tion)YH( de mat\351)HY(riel)YH( comme )BD(disco)HY(ver)YH()ES( ou )BD(hwinfo)ES(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 89 H(10.2.\240Hot)WB 215 Sn()WB 88 Sn( Plug)EH()BR()BR()BR()0 P(\253\240Hot plug\240\273 corres)HY(pond)YH( \340 la connexion d'un p\351ri)HY(ph\351)HY(rique)YH( sur un PC \201habi)HY(tuel)HY(le)HY(ment)YH( avec un c\342ble\202 et \340 sa d\351tec)HY(tion)YH( imm\351)HY(diate)YH(. Si n\351ces)HY(saire)YH(, il est confi)HY(gur\351)YH( avec les ressources bus. Son pilote est aussi lanc\351, peut-\352tre en char)HY(geant)YH( le module corres)HY(pon)HY(dant)YH(. Pour que ceci fonc)HY(tionne)YH(, le mat\351)HY(riel)YH( utilis\351 doit \352tre con\347u de fa\347on appro)HY(pri\351)YH(. Vous pouvez utili)HY(ser)YH( cette fonc)HY(tion)HY(na)HY(lit\351)YH( avec certaines cartes PCI)Ca( \201Cardbus\202, p\351ri)HY(ph\351)HY(riques)YH( USB)Ca( et IEEE)Ca( 1394 \201Fire)HY(wire)YH(\202.)EP()0 P(Lorsqu'un nouveau p\351ri)HY(ph\351)HY(rique)YH( est d\351tect\351, ses registres sont lus de fa\347on \340 r\351cu)HY(p\351)HY(rer)YH( un num\351ro d'iden)HY(ti)HY(fiant)YH( du p\351ri)HY(ph\351)HY(rique)YH(. Pour trouver un pilote, Linux doit main)HY(te)HY(nir)YH( une table r\351ali)HY(sant)YH( la corres)HY(pon)HY(dance)YH( entre num\351ro de p\351ri)HY(ph\351)HY(rique)YH( et pilote. Cette table existe dans le noyau depuis la version 2.4. Elle est nomm\351e MODULE_DEVICE_TABLE.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 90 H(10.3.\240Hot)WB 216 Sn()WB 89 Sn( Swap)EH()BR()BR()BR()0 P(\253\240Hot Swap\240\273 vous permet de rempla)HY(cer)YH( un ancien p\351ri)HY(ph\351)HY(rique)YH( en l'enle)HY(vant)YH( et en bran)HY(chant)YH( le nouveau. Vous avez donc inter)HY(verti)YH( \201)EM(swapped)ES(\202 les p\351ri)HY(ph\351)HY(riques)YH(. Main)HY(te)HY(nant)YH(, en plus d'\352tre capable de d\351tec)HY(ter)YH( le bran)HY(che)HY(ment)YH( d'un nouveau p\351ri)HY(ph\351)HY(rique)YH(, la suppres)HY(sion)YH( d'un ancien p\351ri)HY(ph\351)HY(rique)YH( doit aussi \352tre d\351tec)HY(t\351e)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 91 H(10.4.\240)WB 217 Sn()WB 90 Sn(PnP)Ca( d\351tecte les p\351ri)HY(ph\351)HY(riques)YH( connec)HY(t\351s)YH( aux ports s\351ries)EH()BR()BR()BR()0 P(Les p\351ri)HY(ph\351)HY(riques)YH( externes connec)HY(t\351s)YH( par le port s\351rie via un c\342ble \201comme les modems externes\202 sont aussi appel\351 Plug-and-Play. Comme seul le port s\351rie a besoin de ressources bus \201une IRQ)Ca( et une adresse d'entr\351es/sorties\202, il n'y a pas de ressources bus \340 allouer pour ces p\351ri)HY(ph\351)HY(riques)YH(. Dans ce cas, PnP)Ca( est utilis\351 unique)HY(ment)YH( pour l'iden)HY(ti)HY(fi)HY(ca)HY(tion)YH( du modem \201lire le num\351ro/code du mod\350le\202. Ceci est impor)HY(tant)YH( dans le cas o\371 ce modem est un modem logi)HY(ciel)YH( \201linmo)HY(dem)YH(\202 et requiert un pilote sp\351ci)HY(fique)YH(. Il existe une sp\351ci)HY(fi)HY(ca)HY(tion)YH( PnP)Ca( pour de tels p\351ri)HY(ph\351)HY(riques)YH( s\351ries externes \201quelque chose connect\351 au port s\351rie\202.)EP()0 P(Linux ne supporte pas encore ceci\240? Pour un modem mat\351)HY(riel)YH(, le pilote s\351rie ordi)HY(naire)YH( suffira, donc il n'y a pas besoin de cher)HY(cher)YH( un pilote avec )BD(serialpnp)ES(. Vous devez toujours indiquer au programme de commu)HY(ni)HY(ca)HY(tion)YH( sur quel port se trouve le modem. Avec PnP)Ca(, vous n'auriez m\352me pas besoin de faire \347a. Avec l'arriv\351e des modems logi)HY(ciels)YH( dispo)HY(sant)YH( de pilotes Linux \201linmo)HY(dem)YH(\202, il serait bien que les pilotes appro)HY(pri\351s)YH( s'installent auto)HY(ma)HY(tique)HY(ment)YH( via PnP)Ca(.)EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 2 92 H(11.\240Messages)WB 218 Sn()WB 91 Sn( d'erreurs)EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 3 93 H(11.1.\240Unex)WB 219 Sn()HY(pec)HY(ted)YH()WB 92 Sn( Inter)HY(rupt)YH( \201Inter)HY(rup)HY(tion)YH( inat)HY(ten)HY(due)YH(\202)EH()BR()BR()BR()0 P(Ceci signi)HY(fie)YH( qu'une inter)HY(rup)HY(tion)YH( est surve)HY(nue)YH( alors qu'aucun pilote ne l'atten)HY(dait)YH(. Il est impro)HY(bable)YH( que le mat\351)HY(riel)YH( ait g\351n\351r\351 une inter)HY(rup)HY(tion)YH( par erreur. Il est plus probable que le logi)HY(ciel)YH( comporte un petit bogue et n'a pas r\351alis\351 qu'un logi)HY(ciel)YH( a fait quelque chose qui a g\351n\351r\351 cette inter)HY(rup)HY(tion)YH(. Dans la plupart des cas, vous pouvez ignorer ce message en toute s\351cu)HY(rit\351)YH(, et tout parti)HY(cu)HY(li\350)HY(re)HY(ment)YH( si cela n'est arriv\351 qu'une ou deux fois lors du d\351mar)HY(rage)YH(. Pour les messages du d\351mar)HY(rage)YH(, regar)HY(dez)YH( les messages qui lui sont proches pour trouver une indi)HY(ca)HY(tion)YH( sur ce qui s'est pass\351. Par exemple, si une recherche \351tait en cours, il est possible que cela ait activ\351 un p\351ri)HY(ph\351)HY(rique)YH( physique qui en retour a g\351n\351r\351 une inter)HY(rup)HY(tion)YH(, inter)HY(rup)HY(tion)YH( que le pilote n'atten)HY(dait)YH( pas. Le pilote n'\351cou)HY(tait)YH( peut-\352tre pas le bon num\351ro d'IRQ)Ca(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 94 H(11.2.\240Erreur)WB 220 Sn()WB 93 Sn( de confi)HY(gu)HY(ra)HY(tion)YH( Plug and Play \201BIOS)Ca( Dell\202)EH()BR()BR()BR()0 P(Le BIOS)Ca( a \351t\351 inca)HY(pable)YH( de confi)HY(gu)HY(rer)YH( les ressources bus. Il peut exister un conflit d'inter)HY(rup)HY(tions)YH( qui ne peut \352tre \351vit\351. Dell vous sugg\350re que vous enle)HY(viez)YH( certaines des cartes non essen)HY(tielles)YH( pour voir si le probl\350me dispa)HY(ra\356t)YH(. Dans un cas, le probl\350me \351tait d\373 \340 une carte m\350re d\351fec)HY(tueuse)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 95 H(11.3.\240isapnp:)WB 221 Sn()WB 94 Sn( Write Data Regis)HY(ter)YH( 0xa79 already used \201\340 partir des jour)HY(naux)YH(\202)EH()BR()BR()BR()0 P(Si vous utili)HY(sez)YH( isa-pnp, l'adresse d'entr\351es/sorties 0xa79 ne doit jamais \352tre utili)HY(s\351e)YH( par un p\351ri)HY(ph\351)HY(rique)YH(, quel qu'il soit. Donc, si un autre mat\351)HY(riel)YH( utilise 0xa79 lorsque vous essayez de charger le module isa-pnp, vous obtien)HY(drez)YH( ce message dans vos jour)HY(naux)YH( de trace et isa-pnp quit)HY(tera)YH(. Une fa\347on de corri)HY(ger)YH( cela est de charger le module isa-pnp bien plus t\364t avant que tout autre mat\351)HY(riel)YH( ne soit initia)HY(lis\351)YH(. Pour le PCMCIA, ceci impose de charger isa-pnp avant de lancer les modules cb et le service associ\351.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 96 H(11.4.\240Impos)WB 222 Sn()HY(sible)YH()WB 95 Sn( d'allouer la r\351gion \201PCI)Ca(\202)EH()BR()BR()BR()0 P(Ici, \253\240r\351gion\240\273 signi)HY(fie)YH( un ensemble d'adresses. Un p\351ri)HY(ph\351)HY(rique)YH( PCI)Ca( qui a besoin de deux r\351gions aura la r\351gion 0 comme premi\350re adresse et la r\351gion 1 pour deuxi\350me adresse. Utili)HY(sez)YH( la commande )BD(lspci --v)ES( pour voir les diff\351)HY(rentes)YH( r\351gions de ressources \201souvent appel\351 r\351gions\202 et si l'adresse est de type entr\351e/sortie ou m\351moire. Dans le jargon PCI)Ca(, la r\351gion 2 est l'\253\240adresse de base 2\240\273 \201ou \253\240registre d'adresse de base 2\240\273\202, et c\346tera.)EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 2 97 H(12.\240Partage)WB 223 Sn()WB 96 Sn( et conflit d'inter)HY(rup)HY(tion)YH()EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 3 98 H(12.1.\240Intro)WB 224 Sn()HY(duc)HY(tion)YH()WB 97 Sn()EH()BR()BR()BR()0 P(Quand deux p\351ri)HY(ph\351)HY(riques)YH( ou plus utilisent la m\352me ligne d'inter)HY(rup)HY(tion)YH(, \201et le m\352me num\351ro d'IRQ\202, il s'agit soit d'un \253\240partage d'inter)HY(rup)HY(tion)YH(\240\273 soit d'un \253\240conflit d'inter)HY(rup)HY(tion)YH(\240\273. Le bus PCI auto)HY(rise)YH( tous les p\351ri)HY(ph\351)HY(riques)YH( PCI \340 parta)HY(ger)YH( des inter)HY(rup)HY(tions)YH( avec les autres, ce qui est appel\351 le partage. Mais si un p\351ri)HY(ph\351)HY(rique)YH( ISA \201ou un p\351ri)HY(ph\351)HY(rique)YH( LPC\240??\202 utilise la m\352me inter)HY(rup)HY(tion)YH( \201IRQ\202 qu'un autre p\351ri)HY(ph\351)HY(rique)YH( \201PCI, ISA ou LPC\240??\202, il y habi)HY(tuel)HY(le)HY(ment)YH( un conflit d'inter)HY(rup)HY(tion)YH(.)EP()0 P(Il existe des excep)HY(tions)YH(. Certains p\351ri)HY(ph\351)HY(riques)YH( PCI tr\350s anciens \201pr\351-1995\202 ne permettent pas le partage d'inter)HY(rup)HY(tion)YH(. \300 contra)HY(rio)YH(, quelques p\351ri)HY(ph\351)HY(riques)YH( ISA ont \351t\351 con\347us pour parta)HY(ger)YH( les inter)HY(rup)HY(tions)YH( \201entre deux p\351ri)HY(ph\351)HY(riques)YH( ISA\240?\202 mais ces deux p\351ri)HY(ph\351)HY(riques)YH( ISA doivent \352tre con\347us de cette fa\347on et \352tre pilot\351s par du logi)HY(ciel)YH( au courant du partage des inter)HY(rup)HY(tions)YH(. La carte-m\350re doit aussi le suppor)HY(ter)YH(. La discus)HY(sion)YH( suivante se rapporte aux PC qui ont un bus ISA.)EP()0 P(Un conflit signi)HY(fie)YH( que, quand une inter)HY(rup)HY(tion)YH( survient, aucun pilote de p\351ri)HY(ph\351)HY(rique)YH( \201ou le mauvais\202 ne sera appel\351. Cela peut aboutir \340 de mauvaises actions comme des d\351pas)HY(se)HY(ments)YH( de tampon \201perte de donn\351es\202. Un p\351ri)HY(ph\351)HY(rique)YH( peut presque immo)HY(bi)HY(li)HY(ser)YH( sa ligne d'inter)HY(rup)HY(tion)YH( quand il n'envoie pas son inter)HY(rup)HY(tion)YH(, et de ce fait emp\352)HY(cher)YH( tout autre dispo)HY(si)HY(tif)YH( d'employer cette ligne d'inter)HY(rup)HY(tion)YH(. Cela ne pose pas de probl\350me seule)HY(ment)YH( si seul ce p\351ri)HY(ph\351)HY(rique)YH( utilise cette inter)HY(rup)HY(tion)YH( mais si un deuxi\350me p\351ri)HY(ph\351)HY(rique)YH( essaie d'utili)HY(ser)YH( la m\352me ligne d'inter)HY(rup)HY(tion)YH(, il ne pourra plus le faire. Si ce second p\351ri)HY(ph\351)HY(rique)YH( immo)HY(bi)HY(lise)YH( aussi la ligne lorsqu'il n'envoyait pas d'inter)HY(rup)HY(tion)YH(, alors aucun des deux p\351ri)HY(ph\351)HY(riques)YH( ne peut utili)HY(ser)YH( l'inter)HY(rup)HY(tion)YH(. Linux et les deux p\351ri)HY(ph\351)HY(riques)YH( sont incons)HY(cients)YH( de ce conflit et conti)HY(nuent)YH( \340 envoyer les inter)HY(rup)HY(tions)YH( qui vont nul part et sont donc perdus.)EP()0 P(Les conflits d'inter)HY(rup)HY(tions)YH( \351taient communs quand les IRQ \351taient confi)HY(gu)HY(r\351es)YH( gr\342ce \340 des cava)HY(liers)YH( sur les cartes \201bus ISA\202, souvent parce que le noyau ne connais)HY(sait)YH( pas la confi)HY(gu)HY(ra)HY(tion)YH( de ces cava)HY(liers)YH(. Le Plug-and-Play ISA \201aucun cava)HY(lier)YH(\202 a beau)HY(coup)YH( aid\351 car le logi)HY(ciel)YH( pouvait modi)HY(fier)YH( les IRQ. L'abandon d'ISA en faveur du PCI a pratique)HY(ment)YH( \351limin\351 les conflits IRQ. Malgr\351 tout, votre PC peut toujours avoir des p\351ri)HY(ph\351)HY(riques)YH( sur la carte-m\350re \201pas sur une carte fille\202 sur un bus ISA, LPC ou X. Mais le BIOS et le noyau devraient savoir comment les confi)HY(gu)HY(rer)YH( et donc \351viter de les utili)HY(ser)YH( pour les p\351ri)HY(ph\351)HY(riques)YH( PCI, \351vitant ainsi les conflits d'inter)HY(rup)HY(tion)YH(. Mais il existe toujours un probl\350me avec PCI car il peut manquer d'inter)HY(rup)HY(tions)YH( dispo)HY(nibles)YH(, tout sp\351cia)HY(le)HY(ment)YH( sur les anciens PC qui ont seule)HY(ment)YH( 16 inter)HY(rup)HY(tions)YH(.)EP()0 P(Mais, bien qu'ayant \351limin\351 le probl\350me des conflits, le partage d'IRQ sur le bus PCI a intro)HY(duit)YH( un nouveau probl\350me qui est moins s\351rieux, le probl\350me d'\351qui)HY(libre)YH( des IRQ. Si des p\351ri)HY(ph\351)HY(riques)YH( utili)HY(sant)YH( beau)HY(coup)YH( les inter)HY(rup)HY(tions)YH( partagent la m\352me IRQ, cela pour)HY(rait)YH( amener des d\351lais dans la r\351cu)HY(p\351)HY(ra)HY(tion)YH( des IRQ et pour)HY(rait)YH( m\352me amener \340 des d\351pas)HY(se)HY(ments)YH( de tampon et d'autres erreurs. Ceci n'est pas d\373 \340 la fa\347on dont le logi)HY(ciel)YH( d\351ter)HY(mine)YH( le p\351ri)HY(ph\351)HY(rique)YH( qui a lanc\351 cette inter)HY(rup)HY(tion)YH(.)EP()0 P(Il existe deux types de conflits d'inter)HY(rup)HY(tions)YH(. Le premier est un vrai conflit, celui d\351crit ci-dessus. Dans ce cas, les inter)HY(rup)HY(tions)YH( ne fonc)HY(tionnent)YH( plus et le pilote de p\351ri)HY(ph\351)HY(rique)YH( conti)HY(nue)YH( d'essayer de contr\364)HY(ler)YH( son p\351ri)HY(ph\351)HY(rique)YH( et ne sait pas que les inter)HY(rup)HY(tions)YH( ne fonc)HY(tionnent)YH( pas. Le second type de conflit d'inter)HY(rup)HY(tion)YH( arrive quand un pilote de p\351ri)HY(ph\351)HY(rique)YH( est lanc\351 mais d\351couvre que l'inter)HY(rup)HY(tion)YH( dont il a besoin est d\351j\340 utilis\351. Il affiche un message d'erreur et quitte. Le message indique quelque chose comme \253 ressource en cours d'utili)HY(sa)HY(tion)YH( \273 \201\253 ressource busy \273\202 mais ne pr\351cise pas clai)HY(re)HY(ment)YH( qu'il s'agit d'un probl\350me d'inter)HY(rup)HY(tion)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 99 H(12.2.\240Vrai)WB 225 Sn()WB 98 Sn( conflit d'inter)HY(rup)HY(tion)YH()EH()BR()BR()BR()0 P(Le BIOS et le noyau ne vont pas permettre un conflit d'inter)HY(rup)HY(tions)YH( en connais)HY(sance)YH( de cause. Alors comment cela peut-il arriver\240? Une fa\347on d'y parve)HY(nir)YH( arrive quand quelqu'un a indiqu\351 un mauvais IRQ dans un fichier de confi)HY(gu)HY(ra)HY(tion)YH(, par exemple en donnant un para)HY(m\350tre)YH( \253 irq=9 \273 \340 un module. Dans cet exemple, suppo)HY(sons)YH( que l'IRQ du p\351ri)HY(ph\351)HY(rique)YH( est r\351el)HY(le)HY(ment)YH( le 5. Quand un autre pilote de p\351ri)HY(ph\351)HY(rique)YH( se lance et trouve son p\351ri)HY(ph\351)HY(rique)YH( \340 l'IRQ 5, vous avez deux vrai p\351ri)HY(ph\351)HY(riques)YH( utili)HY(sant)YH( la m\352me IRQ, ce qui aboutit \340 un vrai conflit. Le noyau a approuv\351 l'utili)HY(sa)HY(tion)YH( de l'IRQ 5 par le second p\351ri)HY(ph\351)HY(rique)YH( car il a \351t\351 tromp\351 et pensait que le premier p\351ri)HY(ph\351)HY(rique)YH( \351tait sur l'IRQ 9.)EP()0 P(Il existe d'autres cas o\371 le noyau ne sait pas qu'une IRQ est utili)HY(s\351e)YH(. Par exemple quand une ancienne carte ISA est confi)HY(gur\351)YH( par un cava)HY(lier)YH( mais que son pilote n'est pas encore lanc\351 \201il peut m\352me ne pas voir de pilote\202. Un autre cas, le BIOS confi)HY(gure)YH( un IRQ au niveau mat\351)HY(riel)YH( mais aucun pilote Linux n'est lanc\351 pour ce mat\351)HY(riel)YH(. Linux ne conna\356)HY(tra)YH( donc pas cette IRQ. Ceci peut m\352me arriver pour une carte PCI, celle-ci s'affi)HY(chera)YH( avec la commande )EM(lspci -v)ES( mais ne sera pas dispo)HY(nible)YH( dans le r\351per)HY(toire)YH( )EM(/proc/inter)HY(rupts)YH()ES( et n'est donc pas connue par le noyau. Est-ce un bogue du noyau\240?)EP()0 P(Quels sont les symp)HY(t\364mes)YH( d'un conflit d'inter)HY(rup)HY(tion)YH(\240? On pour)HY(rait)YH( penser que les p\351ri)HY(ph\351)HY(riques)YH( ne fonc)HY(tionnent)YH( pas du tout mais comme les adresses sont connues, le pilote peut commu)HY(niquer)YH(. Les inter)HY(rup)HY(tions)YH( sont souvent utili)HY(s\351es)YH( pour contr\364)HY(ler)YH( le flux de donn\351es prove)HY(nant)YH( et allant au p\351ri)HY(ph\351)HY(rique)YH(. Sans les inter)HY(rup)HY(tions)YH(, le flux n'est pas contr\364l\351, ce qui signi)HY(fie)YH( des d\351pas)HY(se)HY(ments)YH( de tampon, voire m\352me pas de flux du tout, les inter)HY(rup)HY(tions)YH( pouvant aussi \352tre utili)HY(s\351es)YH( pour initier le flux. Pour un modem s\351rie, le r\351sul)HY(tat)YH( est un flux extr\352)HY(me)HY(ment)YH( lent avec de longues pauses et des erreurs fr\351quentes. Pour une carte son, cela pour)HY(rait)YH( signi)HY(fier)YH( qu'un mot ou deux sont enten)HY(dus)YH(, puis plus rien.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 100 H(12.3.\240Aucune)WB 226 Sn()WB 99 Sn( inter)HY(rup)HY(tion)YH( dispo)HY(nible)YH()EH()BR()BR()BR()0 P(Ceci arrive quand un pilote de p\351ri)HY(ph\351)HY(rique)YH( est lanc\351 mais quitte imm\351)HY(dia)HY(te)HY(ment)YH( pour \351viter un conflit d'inter)HY(rup)HY(tion)YH(. G\351n\351)HY(ra)HY(le)HY(ment)YH(, il affiche un message d'erreur comme \253 ressource en cours d'utili)HY(sa)HY(tion)YH( \273 ou l'enre)HY(gistre)YH( dans un journal de trace.)EP()0 P(Un cas o\371 un p\351ri)HY(ph\351)HY(rique)YH( ISA est activ\351 et ne peut se voir affect\351 une inter)HY(rup)HY(tion)YH( \201IRQ\202 car aucune n'est dispo)HY(nible)YH(. Ou une inter)HY(rup)HY(tion)YH( pour)HY(rait)YH( \352tre dispo)HY(nible)YH( mais ne peut pas \352tre utili)HY(s\351e)YH( car le mat\351)HY(riel)YH( du p\351ri)HY(ph\351)HY(rique)YH( qui a besoin de cette inter)HY(rup)HY(tion)YH( ne sait pas g\351rer le num\351ro dispo)HY(nible)YH( ou la carte m\350re ne le supporte pas non plus \340 cause de probl\350mes de routage \201voir )0 77 1 A(PCI Inter)HY(rupts)YH()77 0 TN TL()Ec /AF f D(\202. Si les p\351ri)HY(ph\351)HY(riques)YH( ISA utilisent toutes les inter)HY(rup)HY(tions)YH(, alors une ou plusieurs cartes PCI pour)HY(raient)YH( \352tre en conflit car elles ne peuvent pas obtenir d'IRQ.)EP()0 P(Norma)HY(le)HY(ment)YH(, le BIOS)Ca( affec)HY(tera)YH( des inter)HY(rup)HY(tions)YH( et ne cr\351era pas de conflits. Mais il pour)HY(rait)YH( \352tre forc\351 de cr\351er des conflits s'il tombe \340 court d'IRQ)Ca(. Ceci peut surve)HY(nir)YH( si quelqu'un a confi)HY(gur\351)YH( le BIOS)Ca( pour r\351ser)HY(ver)YH( certaines IRQ)Ca( pour les p\351ri)HY(ph\351)HY(riques)YH( ISA)Ca( qui ne sont pas PnP)Ca(. Ces para)HY(m\351)HY(trages)YH( pour)HY(raient)YH( \352tre mauvais et devraient \352tre v\351ri)HY(fi\351s)YH(, tout sp\351cia)HY(le)HY(ment)YH( si vous avez des probl\350mes. Par exemple, quelqu'un pour)HY(rait)YH( avoir r\351serv\351 une IRQ)Ca( pour une carte ISA)Ca( qui a \351t\351 enlev\351 du PC depuis long)HY(temps)YH(. Si vous r\351cu)HY(p\351)HY(rez)YH( cette IRQ)Ca(, alors elle est dispo)HY(nible)YH( et un conflit dispa)HY(ra\356t)YH(.)EP()0 P(Quelque fois, le BIOS)Ca( r\351sou)HY(dra)YH( le probl\350me du manque d'IRQ)Ca( en utili)HY(sant)YH( ce qu'il appelle l'IRQ)Ca( 0. Elle n'existe pas car la vrai IRQ)Ca( 0 est affec)HY(t\351e)YH( en perma)HY(nence)YH( \340 l'horloge de l'ordi)HY(na)HY(teur)YH( mais signi)HY(fie)YH( que le pilote devrait utili)HY(ser)YH( la demande au lieu des IRQ)Ca(. Ceci signi)HY(fie)YH( que le pilote devra v\351ri)HY(fier)YH( fr\351quem)HY(ment)YH( le p\351ri)HY(ph\351)HY(rique)YH( \201lui deman)HY(der)YH(\202 pour voir si le p\351ri)HY(ph\351)HY(rique)YH( a besoin d'un service de la routine d'inter)HY(rup)HY(tions)YH(. Bien s\373r, cela g\342che du temps proces)HY(seur)YH( et il y a plus de risques d'un d\351pas)HY(se)HY(ment)YH( de tampon du p\351ri)HY(ph\351)HY(rique)YH( car il pour)HY(rait)YH( ne pas \352tre servi assez rapi)HY(de)HY(ment)YH( par le pilote.)EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 2 101 H(13.\240Annexe)WB 227 Sn()WB 100 Sn()EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 3 102 H(13.1.\240Univer)WB 228 Sn()HY(sal)YH()WB 101 Sn( Plug and Play \201UPnP)Ca(\202)EH()BR()BR()BR()0 P(C'est en quelque sorte un r\351seau Plug-and-Play d\351ve)HY(lopp\351)YH( par Micro)HY(soft)YH( mais utili)HY(sable)YH( sous Linux. Vous connec)HY(tez)YH( quelque chose sur un r\351seau et ce quelque chose n'a pas besoin d'\352tre confi)HY(gur\351)YH( mais ne va commu)HY(niquer)YH( qu'avec des p\351ri)HY(ph\351)HY(riques)YH( UPnP)Ca( du r\351seau. Ici, \253\240confi)HY(gu)HY(rer)YH(\240\273 est utilis\351 dans le sens large et ne signi)HY(fie)YH( pas simple)HY(ment)YH( confi)HY(gu)HY(rer)YH( les ressources bus. Un des objec)HY(tifs)YH( est de permettre au gens connais)HY(sant)YH( peu de choses sur les r\351seaux ou sur la confi)HY(gu)HY(ra)HY(tion)YH( et l'instal)HY(la)HY(tion)YH( d'un routeur, d'une passe)HY(relle)YH(, d'une impri)HY(mante)YH( r\351seau, et c\346tera de le faire. Une utili)HY(sa)HY(tion)YH( majeure de UPnP)Ca( serait dans les r\351seaux sans-fil.)EP()0 P(UPnP)Ca( utilise\240: )BR()UL()0 P()-1 LI(un proto)HY(cole)YH( de d\351cou)HY(verte)YH( des services \201)EM(Simple Service Disco)HY(very)YH( Proto)HY(col)YH()ES(\202 pour trouver les p\351ri)HY(ph\351)HY(riques)YH(,)EP()0 P()-1 LI(une archi)HY(tec)HY(ture)YH( de noti)HY(fi)HY(ca)HY(tion)YH( g\351n\351)HY(rale)YH( d'\351v\351ne)HY(ments)YH( \201)EM(General Event Noti)HY(fi)HY(ca)HY(tion)YH( Archi)HY(tec)HY(ture)YH()ES(\202,)EP()0 P()-1 LI(un proto)HY(cole)YH( d'acc\350s aux objets \201)EM(Simple Object Access Proto)HY(col)YH()ES(\202 pour assurer le contr\364le des p\351ri)HY(ph\351)HY(riques)YH(.)EP()LU()BR()EP()0 P( Ce guide pratique ne couvre pas UPnP)Ca(. UPnP)Ca( pour Linux est support\351 par Intel qui a d\351ve)HY(lopp\351)YH( un logi)HY(ciel)YH( sp\351ci)HY(fique)YH(. Il existe d'autres programmes qui font \340 peu pr\350s la m\352me chose que UPnP)Ca(. Une compa)HY(rai)HY(son)YH( de ceux-ci est dispo)HY(nible)YH( sur )R14 2 A(http://www.cs.umbc.edu/~dchakr1/papers/mcom)HY(merce)YH(.html)EA(. Un projet UPnP)Ca( pour Linux se trouve sur Sour)HY(ce)HY(forge)YH(\240: )R15 2 A(Kit UPnP)Ca( pour Linux)EA( )EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 103 H(13.2.\240D\351tails)WB 229 Sn()WB 102 Sn( des adresses)EH()BR()BR()BR()0 P(Il existe trois types d'adresses\240: adresses en m\351moire prin)HY(ci)HY(pale)YH(, adresses d'entr\351es/sorties \201ports\202 et adresses de confi)HY(gu)HY(ra)HY(tion)YH(. Sur le bus PCI)Ca(, les adresses de confi)HY(gu)HY(ra)HY(tion)YH( consti)HY(tuent)YH( une plage d'adresses s\351par\351e un peu comme les adresses d'entr\351es/sorties. Sauf dans le cas compliqu\351 des adresses de confi)HY(gu)HY(ra)HY(tion)YH( ISA)Ca(, qu'une adresse sur le bus soit ou non une adresse en m\351moire prin)HY(ci)HY(pale)YH(, une adresse d'entr\351es/sorties ou une adresse de confi)HY(gu)HY(ra)HY(tion)YH( d\351pend seule)HY(ment)YH( du voltage sur certains fils du bus. Pour plus de d\351tails sur les adresses de confi)HY(gu)HY(ra)HY(tion)YH( du bus ISA)Ca(, voir )0 108 1 A(Section\24013.3, \253\240Adresses de confi)HY(gu)HY(ra)HY(tion)YH( du bus ISA)Ca( \201Port de lecture et c\346tera\202\240\273)108 0 TN TL()Ec /AF f D(.)EP()2 Sl()BR()BR()BR()BR()0 4 104 H(13.2.1.\240Plages)WB 230 Sn()WB 103 Sn( d'adresses)EH()BR()BR()BR()0 P(Le terme \253\240adresse\240\273 est quelque fois utilis\351 dans ce docu)HY(ment)YH( pour signi)HY(fier)YH( un ensemble contigu d'adresses. Les adresses sont en unit\351 d'octets. Donc, par exemple, un port s\351rie sur l'espace d'adres)HY(sage)YH( 3F8-3FF sera souvent juste r\351f\351)HY(renc\351)YH( par son adresse de base, 3F8. 3F8 est l'empla)HY(ce)HY(ment)YH( du premier octet de la plage \201espace d'adres)HY(sage)YH(\202. Pour visua)HY(li)HY(ser)YH( les espaces d'adres)HY(sage)YH(, jetez un \275il \340 )SM(/proc/iomem)ES( et )SM(/proc/ioports)ES(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 105 H(13.2.2.\240Plage)WB 231 Sn()WB 104 Sn( d'adresses)EH()BR()BR()BR()0 P(Pour acc\351der \340 la fois aux espaces d'adresses m\351moire prin)HY(ci)HY(pale)YH( et d'entr\351es/sorties, le m\352me bus d'adresses est utilis\351 \201les fils utili)HY(s\351s)YH( pour l'adresse sont parta)HY(g\351s)YH(\202. Comment le p\351ri)HY(ph\351)HY(rique)YH( sait-il si l'adresse appa)HY(rais)HY(sant)YH( sur le bus est une adresse m\351moire ou d'entr\351es/sorties\240? En fait, pour l'ISA)Ca( \201pour le PCI)Ca(, lisez aussi ceci\202, il existe quatre fils d\351di\351s sur le bus qui am\350nent ce type d'infor)HY(ma)HY(tions)YH(. Si un de ces quatre fils est \253\240activ\351\240\273, cela indique que le CPU)Ca( veut lire une adresse d'entr\351es/sorties et la m\351moire prin)HY(ci)HY(pale)YH( ignore l'adresse sur le bus. En tout, les fils de lecture et \351cri)HY(ture)YH( existent \340 la fois pour les adresses de m\351moire prin)HY(ci)HY(pale)YH( et pour les adresses d'entr\351es/sorties \201quatre fils en tout\202.)EP()0 P(Pour le bus PCI)Ca(, il s'agit de la m\352me id\351e de base \201utili)HY(sant)YH( aussi quatre fils\202 mais r\351ali)HY(s\351e)YH( un peu diff\351)HY(rem)HY(ment)YH(. Au lieu d'avoir un seul des quatre fils activ\351, un nombre binaire est plac\351 sur les fils \201d'o\371 16 possi)HY(bi)HY(li)HY(t\351s)YH( diff\351)HY(rentes)YH(\202. Donc, il est possible de v\351hi)HY(cu)HY(ler)YH( plus d'infor)HY(ma)HY(tions)YH( sur ces quatres fils. Quatre de ces 16 nombres sont utili)HY(s\351s)YH( pour les espaces en m\351moire prin)HY(ci)HY(pale)YH( et d'entr\351es/sorties comme indiqu\351 dans le para)HY(graphe)YH( ci-dessus. En plus, il existe aussi un espace d'adres)HY(sage)YH( de confi)HY(gu)HY(ra)HY(tion)YH( qui utilise plus de deux chiffres suppl\351)HY(men)HY(taires)YH(. Cela laisse dix autres nombres dispo)HY(nibles)YH( pour d'autres utili)HY(sa)HY(tions)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 106 H(13.2.3.\240Espace)WB 232 Sn()WB 105 Sn( d'adresses pour la confi)HY(gu)HY(ra)HY(tion)YH( PCI)Ca()EH()BR()BR()BR()0 P(Ceci est diff\351)HY(rent)YH( des espaces d'adresses m\351moire et d'entr\351es/sorties parce que l'espace d'adresses de confi)HY(gu)HY(ra)HY(tion)YH( est \253\240g\351ogra)HY(phique)YH(\240\273. Chaque empla)HY(ce)HY(ment)YH( d'une carte a un num\351ro d'empla)HY(ce)HY(ment)YH( faisant parti de l'adresse. De cette fa\347on, Linux \201ou le BIOS)Ca(\202 peut adres)HY(ser)YH( un certain empla)HY(ce)HY(ment)YH( et trouver le type de carte fich\351 dans cet empla)HY(ce)HY(ment)YH(. Chaque p\351ri)HY(ph\351)HY(rique)YH( a des registres stan)HY(dards)YH( de 64 bits et quelques uns d'entre eux contiennent des num\351ros qui peuvent iden)HY(ti)HY(fier)YH( de fa\347on non ambigu\353 le p\351ri)HY(ph\351)HY(rique)YH(. Comme le nombre d'empla)HY(ce)HY(ments)YH( est limit\351 comme le sont le nombre de p\351ri)HY(ph\351)HY(riques)YH( PCI)Ca( construit dans la carte m\350re, Linux \201ou le BIOS)Ca(\202 a besoin de v\351ri)HY(fier)YH( un nombre limit\351 d'adresses pour trouver tous les p\351ri)HY(ph\351)HY(riques)YH( PCI)Ca(. S'il ne lit que des uns \2010xFF en hexa)HY(d\351)HY(ci)HY(mal)YH(\202 \340 partir du premier registre d'un p\351ri)HY(ph\351)HY(rique)YH(, alors cela signi)HY(fie)YH( qu'aucun p\351ri)HY(ph\351)HY(rique)YH( n'est pr\351sent. Comme il n'y a aucune carte ou p\351ri)HY(ph\351)HY(rique)YH( four)HY(nis)HY(sant)YH( tous les num\351ros un \2010xFF\202, le \253\240host bridge\240\273 PCI)Ca( sur la carte m\350re fournit ce num\351ro pour tous les p\351ri)HY(ph\351)HY(riques)YH( inexis)HY(tants)YH(.)EP()0 P(Le num\351ro d'empla)HY(ce)HY(ment)YH( PCI)Ca( est appel\351 \201dans le jargon PCI)Ca( le num\351ro de p\351ri)HY(ph\351)HY(rique)YH( et comme une carte peut avoir au plus huit p\351ri)HY(ph\351)HY(riques)YH( sur elle, un num\351ro de fonc)HY(tion)YH( \201allant de 0 \340 7\202 iden)HY(ti)HY(fie)YH( le p\351ri)HY(ph\351)HY(rique)YH( qui se trouve sur une carte PCI)Ca(. Ces num\351ros font partie de l'adresse g\351ogra)HY(phique)YH(. Les d\351ve)HY(lop)HY(peurs)YH( Linux l'appellent )EM(pci-slot-name)ES(. Du coup, ce que Linux appelle un p\351ri)HY(ph\351)HY(rique)YH( est en fait une fonc)HY(tion)YH( dans le jargon PCI)Ca(. Le num\351ro du bus PCI)Ca( \201souvent 00\202 devient aussi une partie de l'adresse g\351ogra)HY(phique)YH(. Par exemple, 0000:00:0d.2 corres)HY(pond)YH( au bus PCI)Ca( 0, empla)HY(ce)HY(ment)YH( 0, fonc)HY(tion)YH( 2. Pour l'adresse g\351ogra)HY(phique)YH( compl\350te, vous devez inclure le num\351ro sur deux mots des registres de confi)HY(gu)HY(ra)HY(tion)YH( du p\351ri)HY(ph\351)HY(rique)YH( auquel on veut l'acc\350s. Les 0000 en t\352te \201en 1999\202 \351taient r\351ser)HY(v\351s)YH( pour une utili)HY(sa)HY(tion)YH( future.)EP()0 P(Comment le proces)HY(seur)YH( d\351signe-t-il qu'une lecture ou une \351cri)HY(ture)YH( doit se faire dans l'espace de confi)HY(gu)HY(ra)HY(tion)YH( PCI)Ca(\240? Il ne le fait pas, en tout cas pas direc)HY(te)HY(ment)YH(. \300 la place lorsque l'acc\350s \340 l'espace de confi)HY(gu)HY(ra)HY(tion)YH( est d\351sir\351, il fait une \351cri)HY(ture)YH( sur 32 bits \201un mot double\202 pour \351crire 0cf8-0cfb en espace d'entr\351es/sorties et \351crit l'adresse g\351ogra)HY(phique)YH( compl\350te ici. Le )EM(host bridge)ES( PCI)Ca( \351coute \340 cette adresse et nous assure que la prochaine \351cri)HY(ture)YH( de donn\351es sera 0cfc-0cff. C'est enre)HY(gis)HY(tr\351)YH( dans des registres de confi)HY(gu)HY(ra)HY(tion)YH( du p\351ri)HY(ph\351)HY(rique)YH( sp\351ci)HY(fi\351)YH(. Le pont fait les deux en envoyant un signal sp\351cial \340 la carte PCI)Ca( sp\351ci)HY(fi\351e)YH( \201ou ce qui y ressemble\202 sur un fil d\351di\351 qui va seule)HY(ment)YH( \340 l'empla)HY(ce)HY(ment)YH( o\371 la carte est connec)HY(t\351e)YH(. Il place aussi des bits sur le bus de contr\364le indiquant que ce qui est sur le bus d'adresse main)HY(te)HY(nant)YH( est une adresse g\351ogra)HY(phique)YH( de l'espace de confi)HY(gu)HY(ra)HY(tion)YH(.)EP()0 P(Pourquoi ne pas faire simple et deman)HY(der)YH( simple)HY(ment)YH( au proces)HY(seur)YH( de placer les bits sur le bus de contr\364le pour indiquer que l'adresse sur le bus prin)HY(ci)HY(pal)YH( est une adresse g\351ogra)HY(phique)YH( pour la confi)HY(gu)HY(ra)HY(tion)YH( du PCI)Ca(\240? Et bien, la plupart des proces)HY(seurs)YH( ne sont pas capables de le faire donc le \253\240host bridge\240\273 PCI)Ca( le fait \340 la place.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 107 H(13.2.4.\240V\351ri)WB 233 Sn()HY(fi)HY(ca)HY(tion)YH()WB 106 Sn( de la plage \201test ISA)Ca( pour les conflits d'adresses d'entr\351es/sorties\202)EH()BR()BR()BR()0 P(Sur le bus ISA)Ca(, il existe une m\351thode int\351)HY(gr\351e)YH( dans chaque carte PnP)Ca( pour v\351ri)HY(fier)YH( qu'aucune autre carte n'utilise la m\352me adresse d'entr\351es/sorties. Si deux cartes ou plus utilisent la m\352me adresse d'entr\351es/sorties, les cartes ont peu de chance de fonc)HY(tion)HY(ner)YH( correc)HY(te)HY(ment)YH( \201voire de fonc)HY(tion)HY(ner)YH( tout court\202. Un bon logi)HY(ciel)YH( PnP)Ca( devrait allouer les ressources bus de mani\350re \340 \351viter ce conflit, mais m\352me dans ce cas, une carte non PnP)Ca( pour)HY(rait)YH( avoir la m\352me adresse.)EP()0 P(Le test fonc)HY(tionne)YH( par une carte pla\347ant un nombre de test connu dans ses propres registres d'entr\351es/sorties. Puis, le logi)HY(ciel)YH( PnP)Ca( le lit et v\351rifie que ce qu'il lit corres)HY(pond)YH( bien au num\351ro de test connu. Il r\351p\350te le m\352me test avec un autre num\351ro. Comme il v\351rifie l'ensemble des adresses d'entr\351es/sorties allou\351es \340 la carte, il est appel\351 un v\351ri)HY(fi)HY(ca)HY(teur)YH( de plage. Il pour)HY(rait)YH( \352tre appel\351 plus logique)HY(ment)YH( un testeur de conflit d'adresses. Si un conflit est d\351tect\351, vous obtenez un message d'erreur.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 108 H(13.2.5.\240Commu)WB 234 Sn()HY(niquer)YH()WB 107 Sn( direc)HY(te)HY(ment)YH( via la m\351moire)EH()BR()BR()BR()0 P(Tradi)HY(tion)HY(nel)HY(le)HY(ment)YH(, la plupart des p\351ri)HY(ph\351)HY(riques)YH( d'entr\351es/sorties utilisent seule)HY(ment)YH( la m\351moire d'entr\351es/sorties pour commu)HY(niquer)YH( avec le proces)HY(seur)YH( \201CPU)Ca(\202. Le pilote de p\351ri)HY(ph\351)HY(rique)YH(, ex\351cut\351 sur le proces)HY(seur)YH( lira et \351crira des donn\351es de/vers l'espace d'adres)HY(sage)YH( des entr\351es/sorties et la m\351moire prin)HY(ci)HY(pale)YH(. Malheu)HY(reu)HY(se)HY(ment)YH(, cela n\351ces)HY(site)YH( deux \351tapes. Par exemple, 1. lire les donn\351es \340 partir d'un p\351ri)HY(ph\351)HY(rique)YH( \201en espace d'adres)HY(sage)YH(\202 et les stocker tempo)HY(rai)HY(re)HY(ment)YH( dans le CPU\240; 2. \351crire ces donn\351es en m\351moire prin)HY(ci)HY(pale)YH(. Une fa\347on plus rapide serait que le p\351ri)HY(ph\351)HY(rique)YH( place lui-m\352me les donn\351es direc)HY(te)HY(ment)YH( en m\351moire prin)HY(ci)HY(pale)YH(. Une fa\347on de faire ceci est d'utili)HY(ser)YH( )0 20 1 A(Section\2402.7, \253\240DMA)Ca( \201acc\350s direct \340 la m\351moire\202 ou ma\356trise du bus\240\273)20 0 TN TL()Ec /AF f D( ISA)Ca( ou la ma\356trise du bus PCI)Ca(. Le p\351ri)HY(ph\351)HY(rique)YH( physique peut aussi d\351tenir un peu de m\351moire prin)HY(ci)HY(pale)YH( \201aux adresses sup\351)HY(rieures)YH( pour \351viter les conflits avec les adresses des compo)HY(sants)YH( de la m\351moire prin)HY(ci)HY(pale)YH(\202. De cette fa\347on, le p\351ri)HY(ph\351)HY(rique)YH( lit et \351crit direc)HY(te)HY(ment)YH( dans son espace m\351moire interne sans avoir \340 s'emb\352ter avec le DMA)Ca( ou la ma\356trise du bus. De tels p\351ri)HY(ph\351)HY(riques)YH( pour)HY(raient)YH( aussi utili)HY(ser)YH( des adresses d'entr\351es/sorties.)EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 109 H(13.3.\240Adresses)WB 235 Sn()WB 108 Sn( de confi)HY(gu)HY(ra)HY(tion)YH( du bus ISA)Ca( \201Port de lecture et c\346tera\202)EH()BR()BR()BR()0 P(Ces adresses sont aussi connues comme les \253\240ports d'auto-confi)HY(gu)HY(ra)HY(tion)YH(\240\273. Pour le bus ISA)Ca(, il n'existe pas tech)HY(nique)HY(ment)YH( de plage d'adresses de confi)HY(gu)HY(ra)HY(tion)YH(, mais le CPU)Ca( utilise une fa\347on sp\351ciale d'acc\351der aux registres de confi)HY(gu)HY(ra)HY(tion)YH( PnP)Ca( sur les cartes PnP)Ca(. Dans ce but, trois adresses d'entr\351es/sorties sont allou\351es et chacune adresse un seul octet \201il n'y a pas \340 propre)HY(ment)YH( parler d'espace ou de plage\202. Il ne s'agit pas de trois adresses pour chaque carte mais de trois adresses parta)HY(g\351es)YH( par toutes les cartes ISA)Ca(-PnP)Ca(.)EP()0 P(Ces trois adresses sont nomm\351es port de lecture \201)EM(read-port)ES(\202, port d'\351cri)HY(ture)YH( \201)EM(write-port)ES(\202 et port d'adresse \201)EM(address-port)ES(\202. Chaque port a une taille d'un octet. Chaque carte PnP)Ca( dispose d'un grand nombre de registres de confi)HY(gu)HY(ra)HY(tion)YH(, donc m\352me les trois adresses ne sont pas suffi)HY(santes)YH( pour les registres de confi)HY(gu)HY(ra)HY(tion)YH( d'une seule carte. Pour r\351soudre ce probl\350me, chaque carte se voit affec)HY(ter)YH( un num\351ro de carte en utili)HY(sant)YH( une tech)HY(nique)YH( appel\351e \253\240isola)HY(tion)YH(\240\273. Voir )0 116 1 A(Section\24013.6, \253\240Isola)HY(tion)YH( ISA)Ca(\240\273)116 0 TN TL()Ec /AF f D( pour des d\351tails plus complexes.)EP()0 P(Ensuite, pour confi)HY(gu)HY(rer)YH( une certaine carte, son num\351ro de carte est envoy\351 via l'adresse du port d'\351cri)HY(ture)YH( pour indiquer \340 cette carte qu'elle doit \351couter sur son port d'adresse. Toutes les autres cartes notent que ce n'est pas leur num\351ro de carte et donc n'\351coutent pas. Ensuite, l'adresse d'un registre de confi)HY(gu)HY(ra)HY(tion)YH( est envoy\351 sur le port d'adresse \201\340 toutes les cartes, mais une seule \351coute\202. Enfin, le trans)HY(fert)YH( de donn\351es prend place avec ce registre de confi)HY(gu)HY(ra)HY(tion)YH( sur cette carte soit en faisant une lecture sur le port de lecture soit en faisant une \351cri)HY(ture)YH( sur le port d'\351cri)HY(ture)YH(.)EP()0 P(Le port d'\351cri)HY(ture)YH( est toujours A79 et le port d'adresse est toujours 279 \201en hexa)HY(d\351)HY(ci)HY(mal)YH(\202. Le port de lecture n'est pas fixe mais d\351pend du logi)HY(ciel)YH( de confi)HY(gu)HY(ra)HY(tion)YH( \201tout en restant dans la plage 203-3FF\202 qui avec un peu de chance n'entrera pas en conflit avec les autres cartes ISA)Ca(. Si un conflit se d\351clare, il chan)HY(gera)YH( l'adresse. Toutes les cartes PnP)Ca( sont \253\240program)HY(m\351es)YH(\240\273 avec cette adresse. Donc, si vous utili)HY(sez)YH( )BD(isapnp)ES( pour enre)HY(gis)HY(trer)YH( ou conna\356tre la confi)HY(gu)HY(ra)HY(tion)YH(, celui-ci doit d'abord d\351ter)HY(mi)HY(ner)YH( l'adresse du port de lecture.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 110 H(13.4.\240D\351tails)WB 236 Sn()WB 109 Sn( sur les inter)HY(rup)HY(tions)YH()EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 4 111 H(13.4.1.\240Inter)WB 237 Sn()HY(rup)HY(tions)YH()WB 110 Sn( s\351ria)HY(li)HY(s\351es)YH()EH()BR()BR()BR()0 P(Il a \351t\351 dit pr\351c\351)HY(dem)HY(ment)YH( qu'il existe un fil pour chaque inter)HY(rup)HY(tion)YH(. Mais l'inter)HY(rup)HY(tion)YH( s\351ria)HY(li)HY(s\351e)YH( \201ou inter)HY(rup)HY(tion)YH( s\351rie\202 est une exception. Un seul fil est utilis\351 pour toutes les inter)HY(rup)HY(tions)YH( qui sont multi)HY(plex\351es)YH( sur ce fil. Chaque inter)HY(rup)HY(tion)YH( a un cr\351neau horaire sur la ligne d'inter)HY(rup)HY(tion)YH(. Il est utilis\351 sur le bus LPC mais aussi sur le bus PCI bien que cela soit plus rare pour ce dernier\240?)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 112 H(13.4.2.\240)WB 238 Sn()WB 111 Sn(DMA)Ca()EH()BR()BR()BR()0 P(Avant de se plonger dans le d\351tail des inter)HY(rup)HY(tions)YH(, il existe une autre fa\347on pour que les p\351ri)HY(ph\351)HY(riques)YH( initient la commu)HY(ni)HY(ca)HY(tion)YH( en dehors de l'envoi d'une inter)HY(rup)HY(tion)YH(. Cette m\351thode est une requ\352te DMA)Ca( \201)EM(Direct Memory Access)ES(\202 pour prendre le contr\364le de l'ordi)HY(na)HY(teur)YH( \340 partir du CPU pour un temps limit\351. Sur le bus PCI)Ca(, il n'utilise aucune ressource. Tous les p\351ri)HY(ph\351)HY(riques)YH( ne sont pas capables de faire du DMA)Ca(. Voir )0 20 1 A(Section\2402.7, \253\240DMA)Ca( \201acc\350s direct \340 la m\351moire\202 ou ma\356trise du bus\240\273)20 0 TN TL()Ec /AF f D(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 113 H(13.4.3.\240Inter)WB 239 Sn()HY(rup)HY(tions)YH()WB 112 Sn( logi)HY(cielles)YH()EH()BR()BR()BR()0 P(Il existe aussi un autre type d'inter)HY(rup)HY(tion)YH( nomm\351e \253\240inter)HY(rup)HY(tion)YH( logi)HY(cielle)YH(\240\273, non couverte par ce guide pratique et n'utili)HY(sant)YH( pas de ressources. Alors qu'une inter)HY(rup)HY(tion)YH( mat\351)HY(rielle)YH( est g\351n\351r\351e par le mat\351)HY(riel)YH(, une inter)HY(rup)HY(tion)YH( logi)HY(cielle)YH( est initi\351e par le logi)HY(ciel)YH(. Il existe plusieurs fa\347ons pour ce faire. Une fa\347on est que le logi)HY(ciel)YH( dise au proces)HY(seur)YH( d'ex\351cu)HY(ter)YH( une inter)HY(rup)HY(tion)YH( \201une instruc)HY(tion)YH( d'inter)HY(rup)HY(tion)YH(\202. Une autre fa\347on consiste, pour le logi)HY(ciel)YH(, \340 envoyer des messages aux autres proces)HY(sus)YH( pour les inter)HY(rompre)YH( m\352me s'il n'est pas clair qu'on puisse appeler \347a une inter)HY(rup)HY(tion)YH(. Le proces)HY(sus)YH( ksof)HY(tirq)YH( process, que vous pouvez trouver dans la liste des proces)HY(sus)YH( sur un PC Linux, est un programme qui lance ce type d'inter)HY(rup)HY(tion)YH( pour g\351rer les pilotes de p\351ri)HY(ph\351)HY(riques)YH(. Le pilote de p\351ri)HY(ph\351)HY(rique)YH( commence \340 s'ex\351cu)HY(ter)YH( \340 cause d'une inter)HY(rup)HY(tion)YH( mat\351)HY(rielle)YH( mais, plus tard, des inter)HY(rup)HY(tions)YH( logi)HY(cielles)YH( sont utili)HY(s\351es)YH( pour la deuxi\350me moiti\351 de la routine d'inter)HY(rup)HY(tion)YH( du pilote. Donc, le proces)HY(sus)YH( ksof)HY(tirq)YH( est aussi connu comme la \253\240seconde moiti\351\240\273. Pour plus de d\351tails, voir la docu)HY(men)HY(ta)HY(tion)YH( du noyau.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 114 H(13.4.4.\240Inter)WB 240 Sn()HY(rup)HY(tions)YH()WB 113 Sn( mat\351)HY(rielles)YH()EH()BR()BR()BR()0 P(Les inter)HY(rup)HY(tions)YH( am\350nent beau)HY(coup)YH( d'infor)HY(ma)HY(tions)YH( mais seule)HY(ment)YH( indi)HY(rec)HY(te)HY(ment)YH(. Le signal de demande d'inter)HY(rup)HY(tion)YH( \201un voltage sur un fil\202 envoy\351 par un mat\351)HY(riel)YH( indique seule)HY(ment)YH( au compo)HY(sant)YH(, appel\351 le contr\364)HY(leur)YH( d'inter)HY(rup)HY(tion)YH(, qu'un certain p\351ri)HY(ph\351)HY(rique)YH( demande l'atten)HY(tion)YH(. Le contr\364)HY(leur)YH( d'inter)HY(rup)HY(tion)YH( envoie le signal au CPU)Ca(. Le CPU)Ca( s'inter)HY(rompt)YH( dans ce qu'il faisait, trouve le pilote de ce p\351ri)HY(ph\351)HY(rique)YH( et ex\351cute une partie de celui-ci nomm\351e \253\240routine d'inter)HY(rup)HY(tion)YH(\240\273 \201ou \253\240gestion)HY(naire)YH( d'inter)HY(rup)HY(tion)YH(\240\273\202. Cette \253\240routine\240\273 essaie de trouver ce qui est arriv\351 et g\350re ensuite le probl\350me. Par exemple, le p\351ri)HY(ph\351)HY(rique)YH( peut avoir besoin d'envoyer/rece)HY(voir)YH( des octets. Ce programme \201cette routine\202 peut faci)HY(le)HY(ment)YH( comprendre ce qui s'est pass\351 car le p\351ri)HY(ph\351)HY(rique)YH( dispose de registres dispo)HY(nibles)YH( sur des adresses connues par le pilote \201\340 condi)HY(tion)YH( que le num\351ro d'IRQ)Ca( et que les adresses d'entr\351es/sorties soient correc)HY(te)HY(ment)YH( confi)HY(gu)HY(r\351s)YH(\202. Ces registres contiennent l'\351tat du p\351ri)HY(ph\351)HY(rique)YH(. Le logi)HY(ciel)YH( lit le contenu de ces registres et en inspec)HY(tant)YH( le contenu, trouve ce qui est arriv\351 et r\351alise l'action appro)HY(pri\351e)YH(.)EP()0 P(Donc,)WB 114 Sn( chaque pilote de p\351ri)HY(ph\351)HY(rique)YH( a besoin de savoir le num\351ro d'inter)HY(rup)HY(tion)YH( \201IRQ)Ca(\202 o\371 \351couter. Sur le bus PCI)Ca( \201et dans certains cas sp\351ciaux, sur le bus ISA)Ca(\202, il est possible que deux \201voire plus\202 p\351ri)HY(ph\351)HY(riques)YH( partagent le m\352me num\351ro d'IRQ)Ca(. Notez que vous ne pouvez pas parta)HY(ger)YH( une inter)HY(rup)HY(tion)YH( PCI)Ca( avec une inter)HY(rup)HY(tion)YH( ISA)Ca( \201y a-t'il des excep)HY(tions)YH(\240?\202. Quand une inter)HY(rup)HY(tion)YH( parta)HY(g\351e)YH( est lanc\351e, le proces)HY(seur)YH( ex\351cute toutes les routines du service d'inter)HY(rup)HY(tion)YH( s\351quen)HY(tiel)HY(le)HY(ment)YH( pour tous les p\351ri)HY(ph\351)HY(riques)YH( utili)HY(sant)YH( cette inter)HY(rup)HY(tion)YH(. La premi\350re action qu'entre)HY(prend)YH( la premi\350re routine lanc\351e est de v\351ri)HY(fier)YH( les registres du p\351ri)HY(ph\351)HY(rique)YH( pour voir si une inter)HY(rup)HY(tion)YH( a \351t\351 g\351n\351r\351e par son p\351ri)HY(ph\351)HY(rique)YH(. S'il se trouve que ce n'est pas le cas \201fausse alarme\202, il s'arr\352)HY(tera)YH( imm\351)HY(dia)HY(te)HY(ment)YH( et la prochaine routine commence pour le deuxi\350me p\351ri)HY(ph\351)HY(rique)YH( qui utilise cette m\352me inter)HY(rup)HY(tion)YH(, et c\346tera. Il v\351rifie le p\351ri)HY(ph\351)HY(rique)YH( comme d\351crit ci-dessus. Cette s\351quence est r\351p\351t\351e jusqu'\340 la d\351cou)HY(verte)YH( du p\351ri)HY(ph\351)HY(rique)YH( qui a lanc\351 cette inter)HY(rup)HY(tion)YH(. Toutes les routines d'inter)HY(rup)HY(tion)YH( pour une inter)HY(rup)HY(tion)YH( consti)HY(tuent)YH( une cha\356ne. Donc, la cha\356ne est traver)HY(s\351e)YH( jusqu'\340 ce qu'une routine de la cha\356ne r\351clame l'inter)HY(rup)HY(tion)YH( en disant\240: cette inter)HY(rup)HY(tion)YH( est pour moi. Apr\350s avoir g\351r\351 l'inter)HY(rup)HY(tion)YH(, les routines suivantes du service d'inter)HY(rup)HY(tion)YH( ne sont pas ex\351cu)HY(t\351es)YH(.)EP()0 P(Mettre un certain voltage sur une ligne IRQ)Ca( revient seule)HY(ment)YH( \340 deman)HY(der)YH( que le CPU)Ca( s'inter)HY(rompe)YH( de fa\347on \340 ex\351cu)HY(ter)YH( la routine du pilote du p\351ri)HY(ph\351)HY(rique)YH(. Dans pratique)HY(ment)YH( tous les cas, le CPU)Ca( est inter)HY(rompu)YH( par la requ\352te. Mais les inter)HY(rup)HY(tions)YH( du CPU peuvent \352tre tempo)HY(rai)HY(re)HY(ment)YH( d\351sac)HY(ti)HY(v\351es)YH( ou \253\240faire la queue\240\273, et donc, dans de rares cas, une inter)HY(rup)HY(tion)YH( peut ne pas \352tre g\351r\351e \201ou peut subir un certain d\351lai\202. Donc, ce qui a \351t\351 aupa)HY(ra)HY(vant)YH( appel\351 une inter)HY(rup)HY(tion)YH( est plus pr\351ci)HY(s\351)HY(ment)YH( une \253\240demande d'inter)HY(rup)HY(tion)YH(\240\273, ce qui explique l'acro)HY(nyme)YH( d'IRQ)Ca( \201\253\240Inter)HY(rupt)YH( ReQuest\240\273, c'est-\340-dire ReQu\352te d'Inter)HY(rup)HY(tion)YH(\202.)EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 115 H(13.5.\240Comment)WB 241 Sn()WB 115 Sn( le pilote de p\351ri)HY(ph\351)HY(rique)YH( r\351cu)HY(p\350re)YH( son inter)HY(rup)HY(tion)YH()EH()BR()BR()BR()0 P(L'indi)HY(ca)HY(tion)YH( pr\351c\351)HY(dente)YH(, \340 savoir que les pilotes de p\351ri)HY(ph\351)HY(rique)YH( \351coutent leur inter)HY(rup)HY(tion)YH(, \351tait une expli)HY(ca)HY(tion)YH( tr\350s simpli)HY(fi\351e)YH(. En fait, il s'agit d'un compo)HY(sant)YH( \201ou d'une partie d'un compo)HY(sant)YH(\202 embarqu\351 sur la carte-m\350re, appel\351 le contr\364)HY(leur)YH( d'inter)HY(rup)HY(tions)YH(. Il va \351couter toutes les inter)HY(rup)HY(tions)YH(. Quand le contr\364)HY(leur)YH( r\351cu)HY(p\350re)YH( une inter)HY(rup)HY(tion)YH(, il envoie un signal au CPU pour lancer la routine du service d'inter)HY(rup)HY(tion)YH( du pilote de p\351ri)HY(ph\351)HY(rique)YH( appro)HY(pri\351)YH( pour g\351rer cette inter)HY(rup)HY(tion)YH(.)EP()0 P(Il existe diff\351)HY(rents)YH( types de contr\364)HY(leurs)YH( d'inter)HY(rup)HY(tions)YH(. L'un d'entre eux est l'APIC \201acro)HY(nyme)YH( de Advan)HY(ced)YH( Program)HY(mable)YH( Inter)HY(rupt)YH( Control)HY(ler)YH(\202 qui a habi)HY(tuel)HY(le)HY(ment)YH( des broches en entr\351e pour un grand nombre d'inter)HY(rup)HY(tions)YH(, y compris les inter)HY(rup)HY(tions)YH( PCI. Les anciens contr\364)HY(leurs)YH( ont seule)HY(ment)YH( des broches pour les inter)HY(rup)HY(tions)YH( ISA mais ils peuvent toujours g\351rer les inter)HY(rup)HY(tions)YH( PCI car il s'agit d'un routeur program)HY(mable)YH( d'inter)HY(rup)HY(tions)YH( qui conver)HY(tit)YH( les inter)HY(rup)HY(tions)YH( PCI en inter)HY(rup)HY(tions)YH( ISA et les envoie vers certaines broches \201c'est-\340-dire vers certaines IRQ\202.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 116 H(13.6.\240Isola)WB 242 Sn()HY(tion)YH()WB 116 Sn( ISA)Ca()EH()BR()BR()BR()0 P(C'est unique)HY(ment)YH( pour l'ancien bus ISA)Ca(. L'isola)HY(tion)YH( est une m\351thode complexe d'affec)HY(ta)HY(tion)YH( d'un point tempo)HY(raire)YH( \201num\351ro d'iden)HY(ti)HY(fiant)YH( ou CSN)Ca(, )EM(Card Select Number)ES(\202 \340 chaque p\351ri)HY(ph\351)HY(rique)YH( PnP)Ca( du bus ISA)Ca(. Comme il existe des moyens plus effi)HY(caces)YH( \201mais plus complexes\202 de le faire, certains pour)HY(raient)YH( dire qu'il s'agit d'une m\351thode simple. Seule une adresse d'\351cri)HY(ture)YH( est utili)HY(s\351e)YH( pour les \351cri)HY(tures)YH( PnP)Ca( vers tous les p\351ri)HY(ph\351)HY(riques)YH( pour que toutes les \351cri)HY(tures)YH( vers cette adresse aillent sur tous les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca(. Cette adresse d'\351cri)HY(ture)YH( est utilis\351 pour envoyer \201affec)HY(ter)YH(\202 un num\351ro de carte unique \340 chaque p\351ri)HY(ph\351)HY(rique)YH( PnP)Ca(. Pour \352tre assign\351, ce num\351ro de carte n\351ces)HY(site)YH( qu'un seul p\351ri)HY(ph\351)HY(rique)YH( soit en \351coute lorsque le num\351ro de carte est envoy\351 \201\351crit\202 \340 cette adresse commune. Tous les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( ont un num\351ro de s\351rie unique qu'ils utilisent lors du proces)HY(sus)YH( d'isola)HY(tion)YH(. Faire l'isola)HY(tion)YH( est comme un jeu. Cela se fait en utili)HY(sant)YH( l'\351qui)HY(valent)YH( d'un bus commun de fils connec)HY(tant)YH( tous les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( au programme d'isola)HY(tion)YH(.)EP()0 P(Pour le premier tour du \253\240jeu\240\273, tous les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( \351coutent sur ce fil et envoient simul)HY(ta)HY(n\351)HY(ment)YH( une s\351quence de bits sur le fil. Les bits auto)HY(ri)HY(s\351s)YH( sont soit un 1 \201voltage positif\202 soit un \253\2400 ouvert\240\273 sans voltage \201circuit ouvert ou trois-\351tats\202. Pour cela, chaque p\351ri)HY(ph\351)HY(rique)YH( PnP)Ca( commence \340 envoyer s\351quen)HY(tiel)HY(le)HY(ment)YH( son num\351ro de s\351rie sur ce fil, voltage \201circuit ouvert ou trois-\351tats\202. Pour faire cela, chaque p\351ri)HY(ph\351)HY(rique)YH( PnP)Ca( lance simple)HY(ment)YH( son num\351ro de s\351rie sur les fils, bit \340 bit, en commen\347ant par le plus haut. Si un p\351ri)HY(ph\351)HY(rique)YH( envoie un 1, un 1 sera entendu par tous les autres p\351ri)HY(ph\351)HY(riques)YH(. Si tous les p\351ri)HY(ph\351)HY(riques)YH( envoient un \253\2400 ouvert\240\273, rien ne sera entendu sur le fil. Le but est d'\351limi)HY(ner)YH( \201\340 la fin du premier tour\202 tous les p\351ri)HY(ph\351)HY(riques)YH( sauf celui poss\351)HY(dant)YH( le num\351ro de s\351rie le plus impor)HY(tant)YH(. \253\240\311limi)HY(ner)YH(\240\273 signi)HY(fie)YH( enlever de ce tour du jeu et donc cesser tempo)HY(rai)HY(re)HY(ment)YH( d'\351couter tout ce qui passe sur le fil. \201Notez que tous les num\351ros de s\351rie ont la m\352me taille.\202 Quand il ne reste qu'un seul p\351ri)HY(ph\351)HY(rique)YH( en \351coute, un num\351ro de carte lui est donn\351.)EP()0 P(Tout d'abord, consi)HY(d\351)HY(rez)YH( seule)HY(ment)YH( le bit le plus haut du num\351ro de s\351rie qui est plac\351 sur le fil par tous les p\351ri)HY(ph\351)HY(riques)YH( qui n'ont pas encore de num\351ro de carte. Si un p\351ri)HY(ph\351)HY(rique)YH( PnP)Ca( envoie un 0 \2010 ouvert\202 mais entend un 1, cela signi)HY(fie)YH( qu'un ou plusieurs autres p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( a un num\351ro de s\351rie plus impor)HY(tant)YH(, donc il se supprime tempo)HY(rai)HY(re)HY(ment)YH( pour ce tour. Main)HY(te)HY(nant)YH(, les p\351ri)HY(ph\351)HY(riques)YH( restant en jeu \201pour ce tour\202 ont tous le m\352me bit de haut niveau \201un 1\202, donc nous pouvons suppri)HY(mer)YH( ce bit et conti)HY(nuer)YH( avec le \253\240reste du num\351ro de s\351rie\240\273 pour la suite du tour. Ensuite, recom)HY(men)HY(cez)YH( depuis le d\351but de ce para)HY(graphe)YH( et r\351p\351tez jusqu'\340 ce que le num\351ro de s\351rie soit examin\351 en entier pour chaque p\351ri)HY(ph\351)HY(rique)YH( \201voir plus bas pour les cas \253\240tous \340 0\240\273\202.)EP()0 P(Donc, il est clair que seules les cartes avec un petit num\351ro de s\351rie sont \351limi)HY(n\351es)YH( lors d'un tour. Mais qu'arrive-t-il si tous les p\351ri)HY(ph\351)HY(riques)YH( du jeu envoient un 0 comme leur bit de haut niveau\240? Dans ce cas, un \253\2400 ouvert\240\273 est envoy\351 sur la ligne et tous les parti)HY(ci)HY(pants)YH( restent en lice. S'ils ont tous un 0 au d\351but, alors les 0 sont suppri)HY(m\351s)YH( comme les 1 du para)HY(graphe)YH( ci-dessus. Le jeu conti)HY(nue)YH( alors avec le bit suivant du num\351ro de s\351rie\202.)EP()0 P(A la fin du tour \201apr\350s que le dernier bit ait \351t\351 envoy\351\202, seul un p\351ri)HY(ph\351)HY(rique)YH( PnP)Ca(, celui poss\351)HY(dant)YH( le plus haut num\351ro de s\351rie, reste en jeu. Il se voit attri)HY(buer)YH( un num\351ro de carte et quitte le jeu d\351fi)HY(ni)HY(ti)HY(ve)HY(ment)YH(. Ensuite, tous les autres p\351ri)HY(ph\351)HY(riques)YH( du tour pr\351c\351)HY(dent)YH( \201qui n'ont donc pas de num\351ro de carte\202 reviennent dans le jeu et un nouveau tour commence, avec un parti)HY(ci)HY(pant)YH( en moins. \311ven)HY(tuel)HY(le)HY(ment)YH(, tous les p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca( se voient assi)HY(gner)YH( un num\351ro de carte. Il est facile de prouver que cet algo)HY(rithme)YH( fonc)HY(tionne)YH(. L'algo)HY(rithme)YH( actuel est un peu plus complexe que celui pr\351sent\351 ci-dessus car chaque \351tape est r\351p\351t\351e deux fois pour s'assurer, et ces r\351p\351)HY(ti)HY(tions)YH( sont faites d'une fa\347on un peu diff\351)HY(rente)YH( \201mais en utili)HY(sant)YH( la m\352me id\351e de base\202.)EP()0 P(Une fois tous les num\351ros de carte assi)HY(gn\351s)YH(, ils sont utili)HY(s\351s)YH( pour s'adres)HY(ser)YH( \340 chaque p\351ri)HY(ph\351)HY(rique)YH( PnP)Ca( pour envoyer/lire des donn\351es de confi)HY(gu)HY(ra)HY(tion)YH(. Notez que ces num\351ros de carte sont seule)HY(ment)YH( utili)HY(s\351s)YH( pour la confi)HY(gu)HY(ra)HY(tion)YH( PnP)Ca( et ne sont pas utili)HY(s\351s)YH( pour les commu)HY(ni)HY(ca)HY(tions)YH( normales avec le p\351ri)HY(ph\351)HY(rique)YH( PnP)Ca(. Lorsque l'ordi)HY(na)HY(teur)YH( d\351marre, un BIOS)Ca( PnP)Ca( fera l'isola)HY(tion)YH( puis s'occu)HY(pera)YH( de la confi)HY(gu)HY(ra)HY(tion)YH( PnP)Ca(. Apr\350s \347a, tous les num\351ros de carte sont \253\240perdus\240\273 d'une telle fa\347on que si quelqu'un veut changer \201ou inspec)HY(ter)YH(\202 la confi)HY(gu)HY(ra)HY(tion)YH( une nouvelle fois, l'isola)HY(tion)YH( devra \352tre refaite int\351)HY(gra)HY(le)HY(ment)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 117 H(13.7.\240Ma\356trise)WB 243 Sn()WB 117 Sn( du bus et ressources DMA)Ca()EH()BR()BR()BR()0 P(Si un bus dispose d'une fonc)HY(tion)HY(na)HY(lit\351)YH( de ma\356trise du bus, il est peu probable que des ressources seront n\351ces)HY(saires)YH( pour le DMA)Ca( sur ce bus. Par exemple, le bus PCI)Ca( n'a pas besoin des ressources DMA)Ca( car il dispose de cette fonc)HY(tion)HY(na)HY(lit\351)YH(. N\351an)HY(moins)YH(, la \253\240ma\356trise du bus\240\273 est souvent appel\351e DMA)Ca(. Mais, comme il ne s'agit pas stric)HY(te)HY(ment)YH( de DMA)Ca(, il ne n\351ces)HY(site)YH( aucune ressource DMA)Ca(. Les bus locaux ISA)Ca( et VESA n'ont pas de ma\356trise du bus. Les anciens bus MCU et EISA)Ca( l'avaient.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 3 118 H(13.8.\240Histo)WB 244 Sn()HY(rique)YH()WB 118 Sn( et obso)HY(les)HY(cence)YH()EH()BR()BR()BR()2 Sl()BR()BR()BR()BR()0 4 119 H(13.8.1.\240Pilote)WB 245 Sn()WB 119 Sn( son OSS-Lite)EH()BR()BR()BR()0 P(Vous devez donner l'adresse d'entr\351e/sortie, l'IRQ)Ca( et le canal DMA)Ca( comme para)HY(m\350tres)YH( au module ou les compi)HY(ler)YH( dans le noyau. Mais certaines cartes PCI)Ca( seront auto)HY(ma)HY(tique)HY(ment)YH( d\351tec)HY(t\351es)YH(. RedHat fournit un programme )BD(sndcon)HY(fig)YH()ES( qui d\351tecte les cartes ISA)Ca( PnP)Ca( et confi)HY(gure)YH( auto)HY(ma)HY(tique)HY(ment)YH( les modules en char)HY(geant)YH( les ressources bus d\351tec)HY(t\351es)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 120 H(13.8.2.\240ALSA)WB 246 Sn()WB 120 Sn( \201Archi)HY(tec)HY(ture)YH( son avanc\351e pour Linux\202 en l'an 2000)EH()BR()BR()BR()0 P(Ceci d\351tec)HY(tera)YH( la carte par des m\351thodes PnP)Ca(, puis s\351lec)HY(tion)HY(nera)YH( le pilote et le char)HY(gera)YH(. Il confi)HY(gu)HY(rera)YH( aussi les ressources bus sur les cartes ISA)Ca(-PnP)Ca( et sur les cartes PCI)Ca(. Il remplace OSS)Ca( \201Open Sound System\202, aupa)HY(ra)HY(vant)YH( popu)HY(laire)YH(.)EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 4 121 H(13.8.3.\240Notes)WB 247 Sn()WB 121 Sn( sur MS Windows Notes)EH()BR()BR()BR()0 P(Windows NT4 ne suppor)HY(tait)YH( pas ISAPNP)Ca( mais dispose d' un programme PNPISA)Ca( que vous pouvez utili)HY(ser)YH( \253\240\340 vos risques et p\351rils\240\273. Pour NT4, les utili)HY(sa)HY(teurs)YH( se sont vus conseiller de ne pas confi)HY(gu)HY(rer)YH( le BIOS)Ca( avec l'indi)HY(ca)HY(tion)YH( que le syst\350me d'exploi)HY(ta)HY(tion)YH( est PnP)Ca( de fa\347on \340 ce que le BIOS)Ca( s'occupe de la confi)HY(gu)HY(ra)HY(tion)YH( des ressources. Du coup, MS Windows et Linux \351taient aupa)HY(ra)HY(vant)YH( d\351pen)HY(dants)YH( de la confi)HY(gu)HY(ra)HY(tion)YH( du BIOS)Ca( \201et le sont toujours\202.)EP()2 Sl()BR()2 Sl()BR()2 Sl()BR()2 Sl()BR()0 2 122 H(A.\240Adap)WB 248 Sn()HY(ta)HY(tion)YH()WB 122 Sn( fran\347aise)EH()2 Sl()BR()BR()BR()BR()0 2 123 H(1.\240Traduc)WB 249 Sn()HY(tion)YH()WB 123 Sn()EH()BR()BR()BR()0 P( La traduc)HY(tion)YH( fran\347aise de ce docu)HY(ment)YH( a \351t\351 r\351ali)HY(s\351e)YH( par Guillaume Lelarge )SM(<)0 2 A(gleu CHEZ wanadoo POINT fr)EA(>)ES(. )EP()2 Sl()BR()2 Sl()BR()BR()BR()BR()0 2 124 H(2.\240Pr\351pa)WB 250 Sn()HY(ra)HY(tion)YH()WB 124 Sn( de la publi)HY(ca)HY(tion)YH()EH()BR()BR()BR()0 P( La publi)HY(ca)HY(tion)YH( de ce docu)HY(ment)YH( a \351t\351 pr\351pa)HY(r\351e)YH( par Jean-Philippe Gu\351rard )SM(<)0 2 A(fevrier CHEZ tigre)HY(raye)YH( POINT org)EA(>)ES(. )EP()2 Sl()BR()2 Sl()BR()1 Sl()BR()WB NL /BO 0 D TC /Ba f D Bs /AU f D /UR () D RC ZF tH WB ND 1 gt{Ts 3 mul Np 0()0 C()BD(Guide pratique du Plug-and-Play)ES()0 1 TN()EA()BN}if 2 NH le{126(0.1\240\240)2 C(Guide)WB 1 Sn( pratique du Plug-and-Play)126 1 TN()EA()BN}if 3 NH le{127(0.1.1\240\240)3 C()I( Adap)HY(ta)HY(tion)YH( fran\347aise du )EM(Plug-and-Play HOWTO)ES( )ES()127 1 TN()EA()BN}if 3 NH le{128(0.1.2\240\240)3 C(David S. Lawyer)128 1 TN()EA()BN}if 3 NH le{129(0.1.3\240\240)3 C(Guillaume Lelarge)129 1 TN()EA()BN}if 3 NH le{130(0.1.4\240\240)3 C(Jean-Philippe Gu\351rard)130 1 TN()EA()BN}if 2 NH le{131(0.2\240\240)2 C(1.\240Intro)HY(duc)HY(tion)YH()WB 2 Sn()131 1 TN()EA()BN}if 3 NH le{132(0.2.1\240\240)3 C(1.1.\240Droits)WB 3 Sn( d'utili)HY(sa)HY(tion)YH(, aver)HY(tis)HY(se)HY(ments)YH( et remer)HY(cie)HY(ments)YH()132 1 TN()EA()BN}if 4 NH le{133(0.2.1.1\240\240)4 C(1.1.1.\240Copy)HY(right)YH()WB 4 Sn()133 1 TN()EA()BN}if 4 NH le{134(0.2.1.2\240\240)4 C(1.1.2.\240Droits)WB 5 Sn( d'utili)HY(sa)HY(tion)YH()134 1 TN()EA()BN}if 4 NH le{135(0.2.1.3\240\240)4 C(1.1.3.\240Aver)HY(tis)HY(se)HY(ments)YH()WB 6 Sn()135 1 TN()EA()BN}if 4 NH le{136(0.2.1.4\240\240)4 C(1.1.4.\240Marques)WB 7 Sn( d\351po)HY(s\351es)YH()136 1 TN()EA()BN}if 4 NH le{137(0.2.1.5\240\240)4 C(1.1.5.\240Remer)HY(cie)HY(ments)YH()WB 8 Sn()137 1 TN()EA()BN}if 3 NH le{138(0.2.2\240\240)3 C(1.2.\240Plans)WB 9 Sn( futurs\240: vous pouvez aider)138 1 TN()EA()BN}if 3 NH le{139(0.2.3\240\240)3 C(1.3.\240Nouvelles)WB 10 Sn( versions de ce guide pratique)139 1 TN()EA()BN}if 3 NH le{140(0.2.4\240\240)3 C(1.4.\240Nouveau)HY(t\351s)YH()WB 11 Sn( des derni\350res versions)140 1 TN()EA()BN}if 3 NH le{141(0.2.5\240\240)3 C(1.5.\240Intro)HY(duc)HY(tion)YH()WB 12 Sn( g\351n\351)HY(rale)YH(. Avez-vous besoin de ce guide pratique\240?)141 1 TN()EA()BN}if 2 NH le{142(0.3\240\240)2 C(2.\240Ce)WB 13 Sn( que PnP)Ca( doit faire\240: allouer des \253\240ressources bus\240\273)142 1 TN()EA()BN}if 3 NH le{143(0.3.1\240\240)3 C(2.1.\240En)WB 14 Sn( quoi consiste le Plug-and-Play \201PnP)Ca(\202\240?)143 1 TN()EA()BN}if 3 NH le{144(0.3.2\240\240)3 C(2.2.\240P\351ri)HY(ph\351)HY(riques)YH()WB 15 Sn( mat\351)HY(riels)YH( et la commu)HY(ni)HY(ca)HY(tion)YH( avec ces derniers)144 1 TN()EA()BN}if 3 NH le{145(0.3.3\240\240)3 C(2.3.\240Adresses)WB 16 Sn()145 1 TN()EA()BN}if 3 NH le{146(0.3.4\240\240)3 C(2.4.\240Adresses)WB 17 Sn( d'entr\351es/sorties \201prin)HY(cipes)YH( rela)HY(tifs)YH( \340 d'autres ressources\202)146 1 TN()EA()BN}if 3 NH le{147(0.3.5\240\240)3 C(2.5.\240Plages)WB 18 Sn( m\351moire)147 1 TN()EA()BN}if 3 NH le{148(0.3.6\240\240)3 C(2.6.\240)WB 19 Sn(IRQ)Ca( - un aper\347u)148 1 TN()EA()BN}if 3 NH le{149(0.3.7\240\240)3 C(2.7.\240)WB 20 Sn(DMA)Ca( \201acc\350s direct \340 la m\351moire\202 ou ma\356trise du bus)149 1 TN()EA()BN}if 3 NH le{150(0.3.8\240\240)3 C(2.8.\240Canaux)WB 21 Sn( DMA)Ca( \201non pas pour le bus PCI)Ca(\202)150 1 TN()EA()BN}if 3 NH le{151(0.3.9\240\240)3 C(2.9.\240\253\240)WB 22 Sn(Ressources\240\273 du p\351ri)HY(ph\351)HY(rique)YH( et du pilote)151 1 TN()EA()BN}if 3 NH le{152(0.3.10\240\240)3 C(2.10.\240Les)WB 23 Sn( ressources sont limi)HY(t\351es)YH()152 1 TN()EA()BN}if 4 NH le{153(0.3.10.1\240\240)4 C(2.10.1.\240L'ordi)HY(na)HY(teur)YH()WB 24 Sn( id\351al)153 1 TN()EA()BN}if 4 NH le{154(0.3.10.2\240\240)4 C(2.10.2.\240L'ordi)HY(na)HY(teur)YH()WB 25 Sn( r\351el)154 1 TN()EA()BN}if 2 NH le{155(0.4\240\240)2 C(3.\240Deuxi\350me)WB 26 Sn( intro)HY(duc)HY(tion)YH( au Plug-and-Play \201PnP)Ca(\202)155 1 TN()EA()BN}if 3 NH le{156(0.4.1\240\240)3 C(3.1.\240Intro)HY(duc)HY(tion)YH()WB 27 Sn( \340 PnP)Ca()156 1 TN()EA()BN}if 3 NH le{157(0.4.2\240\240)3 C(3.2.\240Comment)WB 28 Sn( fonc)HY(tionne)YH( le PnP)Ca( \201expli)HY(ca)HY(tion)YH( simpli)HY(fi\351e)YH(\202)157 1 TN()EA()BN}if 3 NH le{158(0.4.3\240\240)3 C(3.3.\240D\351mar)HY(rer)YH()WB 29 Sn( le PC)158 1 TN()EA()BN}if 3 NH le{159(0.4.4\240\240)3 C(3.4.\240Les)WB 30 Sn( bus)159 1 TN()EA()BN}if 3 NH le{160(0.4.5\240\240)3 C(3.5.\240Comment)WB 31 Sn( Linux g\350re-t-il le PnP)Ca()160 1 TN()EA()BN}if 3 NH le{161(0.4.6\240\240)3 C(3.6.\240Probl\350mes)WB 32 Sn( avec Linux PnP)Ca()161 1 TN()EA()BN}if 2 NH le{162(0.5\240\240)2 C(4.\240Confi)HY(gu)HY(rer)YH()WB 33 Sn( un BIOS)Ca( PnP)Ca()162 1 TN()EA()BN}if 3 NH le{163(0.5.1\240\240)3 C(4.1.\240Avez-vous)WB 34 Sn( un syst\350me d'exploi)HY(ta)HY(tion)YH( PnP)Ca(\240?)163 1 TN()EA()BN}if 4 NH le{164(0.5.1.1\240\240)4 C(4.1.1.\240Linux)WB 35 Sn( avant le noyau 2.4)164 1 TN()EA()BN}if 4 NH le{165(0.5.1.2\240\240)4 C(4.1.2.\240Windows)WB 36 Sn( 2000 et XP)165 1 TN()EA()BN}if 4 NH le{166(0.5.1.3\240\240)4 C(4.1.3.\240MS)WB 37 Sn( Windows 95, 98 \201et Me\240?\202)166 1 TN()EA()BN}if 3 NH le{167(0.5.2\240\240)3 C(4.2.\240Affec)HY(ter)YH()WB 38 Sn( les ressources par le BIOS)Ca(\240?)167 1 TN()EA()BN}if 3 NH le{168(0.5.3\240\240)3 C(4.3.\240R\351ini)HY(tia)HY(li)HY(ser)YH()WB 39 Sn( la confi)HY(gu)HY(ra)HY(tion)YH()168 1 TN()EA()BN}if 2 NH le{169(0.6\240\240)2 C(5.\240G\351rer)WB 40 Sn( les cartes PnP)Ca()169 1 TN()EA()BN}if 3 NH le{170(0.6.1\240\240)3 C(5.1.\240Intro)HY(duc)HY(tion)YH()WB 41 Sn( \340 la gestion des p\351ri)HY(ph\351)HY(riques)YH( PnP)Ca()170 1 TN()EA()BN}if 3 NH le{171(0.6.2\240\240)3 C(5.2.\240Confi)HY(gu)HY(ra)HY(tion)YH()WB 42 Sn( du pilote de p\351ri)HY(ph\351)HY(rique)YH(, r\351ser)HY(va)HY(tion)YH( des ressources)171 1 TN()EA()BN}if 3 NH le{172(0.6.3\240\240)3 C(5.3.\240/sys\240:)WB 43 Sn( inter)HY(face)YH( de confi)HY(gu)HY(ra)HY(tion)YH( pour l'utili)HY(sa)HY(teur)YH()172 1 TN()EA()BN}if 3 NH le{173(0.6.4\240\240)3 C(5.4.\240Confi)HY(gu)HY(ra)HY(tion)YH()WB 44 Sn( du BIOS)Ca()173 1 TN()EA()BN}if 4 NH le{174(0.6.4.1\240\240)4 C(5.4.1.\240Intro)HY(duc)HY(tion)YH()WB 45 Sn( \340 l'utili)HY(sa)HY(tion)YH( de la confi)HY(gu)HY(ra)HY(tion)YH( PnP)Ca( faite par le BIOS)Ca()174 1 TN()EA()BN}if 4 NH le{175(0.6.4.2\240\240)4 C(5.4.2.\240La)WB 46 Sn( base de donn\351es ESCD)Ca( du BIOS)Ca()175 1 TN()EA()BN}if 4 NH le{176(0.6.4.3\240\240)4 C(5.4.3.\240Utili)HY(ser)YH()WB 47 Sn( Windows pour confi)HY(gu)HY(rer)YH( l'ESCD)176 1 TN()EA()BN}if 4 NH le{177(0.6.4.4\240\240)4 C(5.4.4.\240Ajouter)WB 48 Sn( un nouveau p\351ri)HY(ph\351)HY(rique)YH( \201sous Linux ou Windows\202)177 1 TN()EA()BN}if 3 NH le{178(0.6.5\240\240)3 C(5.5.\240)WB 49 Sn(ISA)Ca( seule)HY(ment)YH(\240: D\351sac)HY(ti)HY(ver)YH( PnP)Ca(\240?)178 1 TN()EA()BN}if 3 NH le{179(0.6.6\240\240)3 C(5.6.\240Bus)WB 50 Sn( ISA)Ca(\240: Isapnp \201outil faisant partie d'isapnp)HY(tools)YH(\202)179 1 TN()EA()BN}if 3 NH le{180(0.6.7\240\240)3 C(5.7.\240Les)WB 51 Sn( utili)HY(taires)YH( PCI)Ca()180 1 TN()EA()BN}if 3 NH le{181(0.6.8\240\240)3 C(5.8.\240Confi)HY(gu)HY(ra)HY(tion)YH()WB 52 Sn( de Windows)181 1 TN()EA()BN}if 3 NH le{182(0.6.9\240\240)3 C(5.9.\240Docu)HY(ments)YH(/Logi)HY(ciels)YH()WB 53 Sn( PnP)Ca()182 1 TN()EA()BN}if 2 NH le{183(0.7\240\240)2 C(6.\240Indiquer)WB 55 Sn( au pilote la confi)HY(gu)HY(ra)HY(tion)YH(\240??)183 1 TN()EA()BN}if 3 NH le{184(0.7.1\240\240)3 C(6.1.\240Intro)HY(duc)HY(tion)YH()WB 56 Sn()184 1 TN()EA()BN}if 3 NH le{185(0.7.2\240\240)3 C(6.2.\240Exemple)WB 57 Sn( de pilote de port s\351rie)185 1 TN()EA()BN}if 2 NH le{186(0.8\240\240)2 C(7.\240Comment)WB 58 Sn( puis-je trouver les p\351ri)HY(ph\351)HY(riques)YH( et comment sont-ils confi)HY(gu)HY(r\351s)YH(\240?)186 1 TN()EA()BN}if 3 NH le{187(0.8.1\240\240)3 C(7.1.\240La)WB 59 Sn( recherche des p\351ri)HY(ph\351)HY(riques)YH( et la d\351cou)HY(verte)YH( de la confi)HY(gu)HY(ra)HY(tion)YH( sont li\351s)187 1 TN()EA()BN}if 3 NH le{188(0.8.2\240\240)3 C(7.2.\240Les)WB 60 Sn( p\351ri)HY(ph\351)HY(riques)YH( pour)HY(raient)YH( avoir deux \253\240confi)HY(gu)HY(ra)HY(tions)YH(\240\273)188 1 TN()EA()BN}if 3 NH le{189(0.8.3\240\240)3 C(7.3.\240Trouver)WB 61 Sn( le mat\351)HY(riel)YH()189 1 TN()EA()BN}if 3 NH le{190(0.8.4\240\240)3 C(7.4.\240Messages)WB 62 Sn( de d\351mar)HY(rage)YH()190 1 TN()EA()BN}if 3 NH le{191(0.8.5\240\240)3 C(7.5.\240Le)WB 64 Sn( r\351per)HY(toire)YH( /proc)191 1 TN()EA()BN}if 3 NH le{192(0.8.6\240\240)3 C(7.6.\240Le)WB 65 Sn( r\351per)HY(toire)YH( /sys)192 1 TN()EA()BN}if 3 NH le{193(0.8.7\240\240)3 C(7.7.\240Inspec)HY(tion)YH()WB 66 Sn( du bus PCI)Ca()193 1 TN()EA()BN}if 3 NH le{194(0.8.8\240\240)3 C(7.8.\240Intro)HY(duc)HY(tion)YH()WB 67 Sn( au bus ISA)Ca()194 1 TN()EA()BN}if 3 NH le{195(0.8.9\240\240)3 C(7.9.\240Cartes)WB 68 Sn( ISA)Ca( PnP)Ca()195 1 TN()EA()BN}if 3 NH le{196(0.8.10\240\240)3 C(7.10.\240Bus)WB 69 Sn( LPC)Ca()196 1 TN()EA()BN}if 3 NH le{197(0.8.11\240\240)3 C(7.11.\240X-bus)WB 70 Sn()197 1 TN()EA()BN}if 3 NH le{198(0.8.12\240\240)3 C(7.12.\240Cartes)WB 71 Sn( non PnP)Ca()198 1 TN()EA()BN}if 3 NH le{199(0.8.13\240\240)3 C(7.13.\240Cartes)WB 72 Sn( non PnP)Ca( avec cava)HY(liers)YH()199 1 TN()EA()BN}if 3 NH le{200(0.8.14\240\240)3 C(7.14.\240Cartes)WB 73 Sn( non PnP)Ca( et sans cava)HY(liers)YH()200 1 TN()EA()BN}if 3 NH le{201(0.8.15\240\240)3 C(7.15.\240Outils)WB 74 Sn( pour d\351tec)HY(ter)YH( ou confi)HY(gu)HY(rer)YH( le mat\351)HY(riel)YH()201 1 TN()EA()BN}if 3 NH le{202(0.8.16\240\240)3 C(7.16.\240Outils)WB 75 Sn( pour d\351tec)HY(ter)YH( et confi)HY(gu)HY(rer)YH( un type de mat\351)HY(riel)YH()202 1 TN()EA()BN}if 3 NH le{203(0.8.17\240\240)3 C(7.17.\240Utili)HY(sez)YH()WB 76 Sn( MS Windows)203 1 TN()EA()BN}if 2 NH le{204(0.9\240\240)2 C(8.\240Inter)HY(rup)HY(tions)YH()WB 77 Sn( PCI)204 1 TN()EA()BN}if 3 NH le{205(0.9.1\240\240)3 C(8.1.\240Intro)HY(duc)HY(tion)YH()WB 78 Sn()205 1 TN()EA()BN}if 3 NH le{206(0.9.2\240\240)3 C(8.2.\240Histo)HY(rique)YH(\240:)WB 79 Sn( des inter)HY(rup)HY(tions)YH( ISA aux PCI)206 1 TN()EA()BN}if 3 NH le{207(0.9.3\240\240)3 C(8.3.\240Contr\364)HY(leur)YH()WB 80 Sn( avanc\351 d'inter)HY(rup)HY(tions)YH( program)HY(m\351es)YH( \201APIC)Ca(, acro)HY(nyme)YH( de )EM(Advan)HY(ced)YH( Program)HY(mable)YH( Inter)HY(rupt)YH( Control)HY(ler)YH()ES(\202)207 1 TN()EA()BN}if 3 NH le{208(0.9.4\240\240)3 C(8.4.\240Inter)HY(rup)HY(tions)YH()WB 81 Sn( signa)HY(l\351es)YH( par message \201MSI\202)208 1 TN()EA()BN}if 3 NH le{209(0.9.5\240\240)3 C(8.5.\240Partage)WB 82 Sn( des inter)HY(rup)HY(tions)YH( PCI)209 1 TN()EA()BN}if 3 NH le{210(0.9.6\240\240)3 C(8.6.\240Recherche)WB 83 Sn( dans les tables de routage)210 1 TN()EA()BN}if 3 NH le{211(0.9.7\240\240)3 C(8.7.\240Pour)WB 84 Sn( plus d'infor)HY(ma)HY(tions)YH()211 1 TN()EA()BN}if 2 NH le{212(0.10\240\240)2 C(9.\240Lier)WB 85 Sn( les inter)HY(rup)HY(tions)YH( PCI)212 1 TN()EA()BN}if 2 NH le{213(0.11\240\240)2 C(10.\240)WB 86 Sn(PnP)Ca( pour les p\351ri)HY(ph\351)HY(riques)YH( externes et ajout\351s)213 1 TN()EA()BN}if 3 NH le{214(0.11.1\240\240)3 C(10.1.\240Bus)WB 87 Sn( USB)Ca()214 1 TN()EA()BN}if 3 NH le{215(0.11.2\240\240)3 C(10.2.\240Hot)WB 88 Sn( Plug)215 1 TN()EA()BN}if 3 NH le{216(0.11.3\240\240)3 C(10.3.\240Hot)WB 89 Sn( Swap)216 1 TN()EA()BN}if 3 NH le{217(0.11.4\240\240)3 C(10.4.\240)WB 90 Sn(PnP)Ca( d\351tecte les p\351ri)HY(ph\351)HY(riques)YH( connec)HY(t\351s)YH( aux ports s\351ries)217 1 TN()EA()BN}if 2 NH le{218(0.12\240\240)2 C(11.\240Messages)WB 91 Sn( d'erreurs)218 1 TN()EA()BN}if 3 NH le{219(0.12.1\240\240)3 C(11.1.\240Unex)HY(pec)HY(ted)YH()WB 92 Sn( Inter)HY(rupt)YH( \201Inter)HY(rup)HY(tion)YH( inat)HY(ten)HY(due)YH(\202)219 1 TN()EA()BN}if 3 NH le{220(0.12.2\240\240)3 C(11.2.\240Erreur)WB 93 Sn( de confi)HY(gu)HY(ra)HY(tion)YH( Plug and Play \201BIOS)Ca( Dell\202)220 1 TN()EA()BN}if 3 NH le{221(0.12.3\240\240)3 C(11.3.\240isapnp:)WB 94 Sn( Write Data Regis)HY(ter)YH( 0xa79 already used \201\340 partir des jour)HY(naux)YH(\202)221 1 TN()EA()BN}if 3 NH le{222(0.12.4\240\240)3 C(11.4.\240Impos)HY(sible)YH()WB 95 Sn( d'allouer la r\351gion \201PCI)Ca(\202)222 1 TN()EA()BN}if 2 NH le{223(0.13\240\240)2 C(12.\240Partage)WB 96 Sn( et conflit d'inter)HY(rup)HY(tion)YH()223 1 TN()EA()BN}if 3 NH le{224(0.13.1\240\240)3 C(12.1.\240Intro)HY(duc)HY(tion)YH()WB 97 Sn()224 1 TN()EA()BN}if 3 NH le{225(0.13.2\240\240)3 C(12.2.\240Vrai)WB 98 Sn( conflit d'inter)HY(rup)HY(tion)YH()225 1 TN()EA()BN}if 3 NH le{226(0.13.3\240\240)3 C(12.3.\240Aucune)WB 99 Sn( inter)HY(rup)HY(tion)YH( dispo)HY(nible)YH()226 1 TN()EA()BN}if 2 NH le{227(0.14\240\240)2 C(13.\240Annexe)WB 100 Sn()227 1 TN()EA()BN}if 3 NH le{228(0.14.1\240\240)3 C(13.1.\240Univer)HY(sal)YH()WB 101 Sn( Plug and Play \201UPnP)Ca(\202)228 1 TN()EA()BN}if 3 NH le{229(0.14.2\240\240)3 C(13.2.\240D\351tails)WB 102 Sn( des adresses)229 1 TN()EA()BN}if 4 NH le{230(0.14.2.1\240\240)4 C(13.2.1.\240Plages)WB 103 Sn( d'adresses)230 1 TN()EA()BN}if 4 NH le{231(0.14.2.2\240\240)4 C(13.2.2.\240Plage)WB 104 Sn( d'adresses)231 1 TN()EA()BN}if 4 NH le{232(0.14.2.3\240\240)4 C(13.2.3.\240Espace)WB 105 Sn( d'adresses pour la confi)HY(gu)HY(ra)HY(tion)YH( PCI)Ca()232 1 TN()EA()BN}if 4 NH le{233(0.14.2.4\240\240)4 C(13.2.4.\240V\351ri)HY(fi)HY(ca)HY(tion)YH()WB 106 Sn( de la plage \201test ISA)Ca( pour les conflits d'adresses d'entr\351es/sorties\202)233 1 TN()EA()BN}if 4 NH le{234(0.14.2.5\240\240)4 C(13.2.5.\240Commu)HY(niquer)YH()WB 107 Sn( direc)HY(te)HY(ment)YH( via la m\351moire)234 1 TN()EA()BN}if 3 NH le{235(0.14.3\240\240)3 C(13.3.\240Adresses)WB 108 Sn( de confi)HY(gu)HY(ra)HY(tion)YH( du bus ISA)Ca( \201Port de lecture et c\346tera\202)235 1 TN()EA()BN}if 3 NH le{236(0.14.4\240\240)3 C(13.4.\240D\351tails)WB 109 Sn( sur les inter)HY(rup)HY(tions)YH()236 1 TN()EA()BN}if 4 NH le{237(0.14.4.1\240\240)4 C(13.4.1.\240Inter)HY(rup)HY(tions)YH()WB 110 Sn( s\351ria)HY(li)HY(s\351es)YH()237 1 TN()EA()BN}if 4 NH le{238(0.14.4.2\240\240)4 C(13.4.2.\240)WB 111 Sn(DMA)Ca()238 1 TN()EA()BN}if 4 NH le{239(0.14.4.3\240\240)4 C(13.4.3.\240Inter)HY(rup)HY(tions)YH()WB 112 Sn( logi)HY(cielles)YH()239 1 TN()EA()BN}if 4 NH le{240(0.14.4.4\240\240)4 C(13.4.4.\240Inter)HY(rup)HY(tions)YH()WB 113 Sn( mat\351)HY(rielles)YH()240 1 TN()EA()BN}if 3 NH le{241(0.14.5\240\240)3 C(13.5.\240Comment)WB 115 Sn( le pilote de p\351ri)HY(ph\351)HY(rique)YH( r\351cu)HY(p\350re)YH( son inter)HY(rup)HY(tion)YH()241 1 TN()EA()BN}if 3 NH le{242(0.14.6\240\240)3 C(13.6.\240Isola)HY(tion)YH()WB 116 Sn( ISA)Ca()242 1 TN()EA()BN}if 3 NH le{243(0.14.7\240\240)3 C(13.7.\240Ma\356trise)WB 117 Sn( du bus et ressources DMA)Ca()243 1 TN()EA()BN}if 3 NH le{244(0.14.8\240\240)3 C(13.8.\240Histo)HY(rique)YH()WB 118 Sn( et obso)HY(les)HY(cence)YH()244 1 TN()EA()BN}if 4 NH le{245(0.14.8.1\240\240)4 C(13.8.1.\240Pilote)WB 119 Sn( son OSS-Lite)245 1 TN()EA()BN}if 4 NH le{246(0.14.8.2\240\240)4 C(13.8.2.\240ALSA)WB 120 Sn( \201Archi)HY(tec)HY(ture)YH( son avanc\351e pour Linux\202 en l'an 2000)246 1 TN()EA()BN}if 4 NH le{247(0.14.8.3\240\240)4 C(13.8.3.\240Notes)WB 121 Sn( sur MS Windows Notes)247 1 TN()EA()BN}if 2 NH le{248(0.15\240\240)2 C(A.\240Adap)HY(ta)HY(tion)YH()WB 122 Sn( fran\347aise)248 1 TN()EA()BN}if 2 NH le{249(0.16\240\240)2 C(1.\240Traduc)HY(tion)YH()WB 123 Sn()249 1 TN()EA()BN}if 2 NH le{250(0.17\240\240)2 C(2.\240Pr\351pa)HY(ra)HY(tion)YH()WB 124 Sn( de la publi)HY(ca)HY(tion)YH()250 1 TN()EA()BN}if /TE t D NP TU PM 0 eq and{/Pn () D showpage}if end restore .