新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux下即插即用設(shè)備的安裝

        Linux下即插即用設(shè)備的安裝

        作者: 時(shí)間:2007-05-10 來(lái)源:網(wǎng)絡(luò) 收藏
        即插即用,在Linux底下?不好辦,你還是換老的非即插即用設(shè)備吧。這是我初次接觸Linux時(shí),那些Linux高手們告訴我的。可是,我覺(jué)得總該有辦法的。經(jīng)過(guò)不懈的努力,我發(fā)現(xiàn)了兩種方法。一是先從DOS啟動(dòng),初始化設(shè)備后,再用loadlin加載到Linux中。但這不是我所夢(mèng)寐以求的,因?yàn)槊看涡枰罅繒r(shí)間來(lái)啟動(dòng)。我繼續(xù)不停的尋找,終于有一天,我找到了我需要的東西,一個(gè)稱為isapnptools的應(yīng)用程序。

          現(xiàn)在,大多數(shù)發(fā)行套件中都有isapnptools。如果你的套件中有,安裝它即可。如果你的發(fā)行套件中沒(méi)有它,到http://www.roestock.demon.co.uk/isapnptools/ 去下載一份,解壓后把isapnp 和 pnpdump 拷貝到目錄 /sbin中即可。

          下面就是實(shí)戰(zhàn)階段了。需要準(zhǔn)備的就是把你所有要裝的即插即用設(shè)備全部裝好,以ROOT身份登陸。然后運(yùn)行以下命令/sbin/pnpdump > /etc/isapnp.conf,這會(huì)把你機(jī)器上所有的即插即用設(shè)備信息寫(xiě)入文件/etc/isapnp.conf中,下面是我的機(jī)器上的/etc/isapnp.conf文件的一部分:

        # $Id: plugnplay.html,v 1.1.1.1 1998/12/26 04:41:14 jack Exp $

        # This is free software, see the sources for details.

        # This software has NO WARRANTY, use at your OWN RISK

        #

        # For details of this file format, see isapnp.conf(5)

        #

        # For latest information on isapnp and pnpdump see:

        # http://www.roestock.demon.co.uk/isapnptools/

        #

        # Compiler flags: -DREALTIME -DNEEDSETSCHEDULER

        #

        # Trying port address 0203

        # Board 1 has serial identifier c5 c0 7f 53 05 01 22 05 07

        # Board 2 has serial identifier 5a 80 86 00 01 20 00 a8 65

        # Board 3 has serial identifier e8 46 46 46 46 90 30 72 56


        # (DEBUG)

        (READPORT 0x0203)

        (ISOLATE PRESERVE)

        (IDENTIFY *)

        (VERBOSITY 2)

        (CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING


        # Card 1: (serial identifier c5 c0 7f 53 05 01 22 05 07)

        # Vendor Id AXE2201, Serial Number 3229569797, checksum 0xC5.

        # Version 1.0, Vendor version 0.0

        # ANSI string -->Ethernet PnP ISA Card /S --

        #

        # Logical device id AXE2201

        # Device support I/O range check register

        #

        # Edit the entries below to uncomment out the configuration required.

        # Note that only the first value of any range is given, this may be 

        # changed if required

        # Don't forget to uncomment the activate (ACT Y) when happy


        (CONFIGURE AXE2201/3229569797 (LD 0

        # Compatible device id PNP80d6

        # Logical device decodes 10 bit IO address lines

        # Minimum IO base address 0x0240

        # Maximum IO base address 0x0380

        # IO base alignment 32 bytes

        # Number of IO addresses required: 32

        # (IO 0 (SIZE 32) (BASE 0x0240))

        # IRQ 3, 5, 9, 10, 11, 12 or 15.

        # High true, edge sensitive interrupt

        # (INT 0 (IRQ 3 (MODE +E)))

        # (ACT Y)

        ))

        # End tag... Checksum 0x00 (OK)

        # 略去聲卡部分

        #略去modem卡部分


        # Returns all cards to the Wait for Key state

        (WAITFORKEY)


          我的系統(tǒng)中共有三個(gè)即插即用設(shè)備,分別是NE2000兼容網(wǎng)卡,Yamaha OPL~SA2聲卡和一個(gè)USR 56K modem。由于文件太長(zhǎng),我略去了聲卡和modem部分。

          接下來(lái)就是為每個(gè)設(shè)備分配所需資源。有許多方法可以實(shí)現(xiàn)。第一種,也是最簡(jiǎn)單的方法就是,如果你在同一臺(tái)機(jī)器上也裝了WIN95或WIN98,通過(guò)控制面板的系統(tǒng)的屬性頁(yè),可以看到在WINDOWS系統(tǒng)下各即插即用設(shè)備的資源,記下用到Linux即可。如果你的機(jī)器中沒(méi)有其它的操作系統(tǒng),采用第二種方法。即手動(dòng)分配資源,只要各設(shè)備資源不發(fā)生沖突就行。手動(dòng)分配資源以前,最好先看一下已經(jīng)使用的中斷列表、I/O列列表,它們分別位于/proc/interrupts、/proc/ioports、/proc/dma。一旦你確定了各設(shè)備使用的資源,就可以分配了。

          選擇分配給每個(gè)設(shè)備的資源非常簡(jiǎn)單。你只要去掉你的設(shè)備所需資源前的注釋號(hào)即可。描述資源的行很容易找到,因?yàn)樗鼈兛偸且訧NT, IO或 DMA開(kāi)頭。在這些行之前是你所能使用資源的描述。你可以選一組,因?yàn)橄笙旅孢@樣的一行說(shuō)明它們有優(yōu)先權(quán)的區(qū)別。

        # Start dependent functions: priority preferred

          在去掉所需資源的注釋號(hào)后,你還必須去掉(ACT Y)行上的注釋號(hào)來(lái)告訴ISAPNP激活該設(shè)備。

          下面是我的/etc/isapnp.conf經(jīng)過(guò)編輯并去掉注釋行后的樣本:

        READPORT 0x0203)

        (ISOLATE PRESERVE)

        (IDENTIFY *)

        (VERBOSITY 2)

        (CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING


        (CONFIGURE AXE2201/3229569797 (LD 0

        (IO 0 (SIZE 32) (BASE 0x0240))

        (INT 0 (IRQ 3 (MODE +E)))

        (ACT Y)

        ))


        (CONFIGURE YMH0020/2156265473 (LD 0

        (IO 0 (SIZE 16) (BASE 0x0220))

        (IO 1 (SIZE 8) (BASE 0x0530))

        (IO 2 (SIZE 4) (BASE 0x0388))

        (IO 3 (SIZE 2) (BASE 0x0330))

        (IO 4 (SIZE 2) (BASE 0x0370))

        (INT 0 (IRQ 5 (MODE +E)))

        (DMA 0 (CHANNEL 0))

        (DMA 1 (CHANNEL 1))

        (ACT Y)

        ))


        (CONFIGURE YMH0020/2156265473 (LD 1

        (IO 0 (SIZE 1) (BASE 0x0201))

        (NAME YMH0020/2156265473[1]{OPL3-SA2 Sound Chip })

        (ACT Y)

        ))


        (CONFIGURE USR3090/1179010630 (LD 0

        (IO 0 (SIZE 8) (BASE 0x02f8))

        (INT 0 (IRQ 3 (MODE +E)))

        (NAME USR3090/1179010630[0]{U.S. Robotics 56K Voice INT})

        (ACT Y)

        ))


        (WAITFORKEY)


          如果喜歡,留著其余的注釋也行。下一步就是測(cè)試你的配置是否正確。使用以下命令/sbin/isapnp /etc/isapnp.conf,屏幕會(huì)出現(xiàn)一些信息,樣本如下:

        Board 1 has Identity c5 c0 7f 53 05 01 22 05 07: AXE2201 

        Serial No 3229569797 [checksum c5]

        Board 2 has Identity 5a 80 86 00 01 20 00 a8 65: YMH0020 

        Serial No 2156265473 [checksum 5a]

        Board 3 has Identity e8 46 46 46 46 90 30 72 56: USR3090 

        Serial No 1179010630 [checksum e8]

          如果你的配置文件有問(wèn)題或發(fā)生資源沖突,它就會(huì)告訴你。發(fā)生問(wèn)題不要著急,從頭慢慢查找原因,一步一步再來(lái)。如果一切平安無(wú)事,你還必須保證你的即插即用設(shè)備在啟動(dòng)時(shí)能進(jìn)行認(rèn)證。不幸的是許多發(fā)行套件的初始腳本執(zhí)行方式不同。如果你的發(fā)行套件中有isapnptools的話,可能你已經(jīng)有正確的初始腳本。如果沒(méi)有,仿照/etc/rc.d/init.d中的格式,自己寫(xiě)一個(gè)。

          最后一步是讓你的內(nèi)核支持即插即用設(shè)備。目前,內(nèi)核支持isapnp設(shè)置的即插即用設(shè)備的唯一方法是把它們編譯為模塊。所以,對(duì)每一個(gè)被認(rèn)為是即插即用的設(shè)備,確信把它編譯為內(nèi)核支持的模塊。

          好了,不用再為你的新的設(shè)備不能被Linux接受而煩惱了,去盡情享受Linux帶給你的樂(lè)趣吧。


        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 婺源县| 孙吴县| 青龙| 南木林县| 马鞍山市| 怀远县| 稷山县| 富平县| 内黄县| 绿春县| 会泽县| 宜兴市| 南宁市| 新竹市| 阳曲县| 江山市| 湟源县| 离岛区| 岚皋县| 西青区| 合水县| 屯门区| 华阴市| 泸水县| 喀喇| 名山县| 慈利县| 江山市| 贵德县| 福泉市| 漳平市| 东光县| 东源县| 农安县| 毕节市| 诸暨市| 渭南市| 克什克腾旗| 澄迈县| 江达县| 白河县|