在為一臺組裝計算機(jī)安裝Windows系統(tǒng)并正常安裝硬件驅(qū)動后,使用USB無線網(wǎng)卡可以正常上網(wǎng),在USB接口插入手機(jī),并為手機(jī)啟用USB模式,無線網(wǎng)卡出現(xiàn)斷線現(xiàn)象。通過查看設(shè)備管理,發(fā)現(xiàn)原來無線網(wǎng)卡和手機(jī)出現(xiàn)硬件沖突,在手機(jī)插入其他幾個USB接口后,無線網(wǎng)卡仍然無法恢復(fù)正常。用鼠標(biāo)右鍵點擊“我的電腦”依次選擇“管理→設(shè)備管理器”,在界面中發(fā)現(xiàn)有硬件出現(xiàn)黃色的“?”。
圖1 8259A控制器
在本操作中,硬件驅(qū)動程序安裝正確,但在插入手機(jī)后,手機(jī)USB模式占用了原有本屬于USB無線網(wǎng)卡的中斷請求(IRQ)線路、直接存儲器(DMA)通道和輸入/輸出(I/O)端口及內(nèi)存地址等計算機(jī)資源,當(dāng)將相同的系統(tǒng)資源分配給兩個或多個硬件設(shè)備時,就會在硬件之間發(fā)生資源沖突,造成導(dǎo)致USB無線網(wǎng)卡無法正常上網(wǎng)。
所謂 IRQ(Interrupt Request)意為中斷請求,是硬件設(shè)備向CPU發(fā)送一個中斷請求,以獲得CPU的服務(wù)響應(yīng)。在早期使用的計算機(jī)中,是由一個中斷控制器8259或8259A的芯片來控制操作系統(tǒng)中每個硬件的IRQ值,共有16組IRQ,因芯片本身需“橋接”使用一組IRQ,實際上只有15組IRQ可供硬件使用。這15組IRQ,在BIOS中通常都有自己所對應(yīng)的硬件設(shè)備,每一種類型的硬件設(shè)備原則上都會有一個不同的IRQ。正常情況下,CPU是處于不間斷的工作狀態(tài),而當(dāng)某一個硬件設(shè)備開始或結(jié)束收發(fā)數(shù)據(jù),需要CPU處理數(shù)據(jù)運算時,便使用其IRQ對CPU送出中斷請求訊號,CPU會暫停當(dāng)前工作,先行處理這個硬件響應(yīng),這便是中斷請求的作用。根據(jù)日常使用要求和使用習(xí)慣,很多IRQ均固定使用,只有部分會閑置。
硬件設(shè)備的IRQ信號由中斷控制器8259或8259A的INT引腳輸入到CPU的INT引腳去申請,這是一個8位的二進(jìn)制數(shù)(如圖1)。
圖2 級聯(lián)的8259A控制器
圖3 設(shè)備管理器中的設(shè)備IRQ
16個IRQ是用2個8259或8259A通過級聯(lián)來實現(xiàn)的(如圖2)。
通常,CPU會依據(jù)IRQ優(yōu)先級來決定響應(yīng),這16組IRQ,IRQ0優(yōu)先級別最高,IRQ15優(yōu)先級別最低。其優(yōu)先級由主控制器和從控制器配合形成,將主控制器上定義為IRQ0-IRQ7,將從控制器上的IRQ0-IRQ7定義為IRQ8-IRQ15。
從Windows 95操作系統(tǒng)開始,Windows操作系統(tǒng)開始應(yīng)用“即插即用”(PNP)技術(shù),計算機(jī)所有IRQ、DMA通道和I/O端口等系統(tǒng)資源都被操作系統(tǒng)接管,并由Windows操作系統(tǒng)根據(jù)硬件情況進(jìn)行自動分配。在較早的Windows操作系統(tǒng)或較早的計算機(jī)主板上,由于IRQ資源數(shù)量有限,因此很多設(shè)備往往會共用一個IRQ,由Windows操作系統(tǒng)的智能分配,一般都能正常工作。
在操作系統(tǒng)中,IRQ是由ACPI(高級配置和電源接口)或APIC(高級可編程中斷控制器)來控制的。ACPI模式為較早的控制模式,最多只能提 供 16個 IRQ,APIC卻 可以提供更多的IRQ,APIC是利用裝置擴(kuò)充組合用來驅(qū)動Interrupt控制器,每個CPU都擁有各自的APIC,目前在Intel系列的CPU中均包含了APIC系統(tǒng),系統(tǒng)中可擁有8個APIC,由它們收集來自各類硬件設(shè)備的Interrupt信號,每個APIC有自己專有的IRQ號碼。目前主流的單核CPU支持24個以上輸入,多核CPU則擁有上百個IRQ。
使用APIC功能,必須選用Windows 2000以后的操作系統(tǒng)并且主板支持APIC模式。
PNP技術(shù)也存在一定的缺點,即如果不能認(rèn)出新安裝的設(shè)備,那么自動分配中斷時就會產(chǎn)生沖突,特別是在組裝計算機(jī)中體現(xiàn)尤為明顯,一般為PCI網(wǎng)卡、顯卡和ISA設(shè)備設(shè)備會產(chǎn)生IRQ沖突。正常USB設(shè)備不存在IRQ沖突的問題,因為它會單獨使用自己的保留中斷,因此不會與PCI或ISA設(shè)備去搶奪有限的IRQ資源。而當(dāng)今這個信息時代,新的硬件設(shè)備層出不窮,很多設(shè)備功能相似,這就導(dǎo)致Windows操作系統(tǒng)不能及時正確檢測出新設(shè)備,IRQ沖突也就不可避免。
確保沖突硬件設(shè)備的驅(qū)動安裝正確。
進(jìn)入CMOS模式,選擇Advanced CMOS Features,修改APIC Mode為“Enabled”。
如果仍出現(xiàn)IRQ沖突,可將沖突的硬件更換其他插槽以避開IRQ沖突,采取這種方法時,需要用戶掌握主板CMOS默認(rèn)狀態(tài)下的IRQ資源分配情況,然后在此基礎(chǔ)上調(diào)整板卡的位置,從而避開IRQ沖突。
第一種方法:鼠標(biāo)右鍵單擊“我的電腦”,選擇“設(shè)備管理器”,在“查看”菜單欄中,點選“依類型排序資源”,在主界面可以看到“中斷請求(IRQ)”,就可以看到IRQ的使用情況了(如圖3)。
第二種方法:在操作系統(tǒng)“開始”菜單中,依次展開選擇“所有程序→附件→系統(tǒng)工具”或在“運行”對話框中直接輸入“msinfo32”。
在“系統(tǒng)屬性”的“設(shè)備管理器”選項卡上,雙擊沖突設(shè)備,然后在“資源”選項卡上,查看“沖突的設(shè)備列表”,確定哪些資源設(shè)置與該設(shè)備沖突。
如果發(fā)生沖突的設(shè)備已不再需要,可以將其禁用,以解決硬件沖突問題。如果禁用即插即用設(shè)備,那么,其他設(shè)備可自動獲取這些設(shè)備的資源。如果禁用的設(shè)備不是即插即用型,那么必須從“設(shè)備管理”的硬件列表中刪除此設(shè)備,然后將它從計算機(jī)中取出以釋放所占用的資源。在“系統(tǒng)屬性”的“設(shè)備管理器”選項卡上,雙擊要禁用的設(shè)備。在“資源”選項卡上,如果能發(fā)現(xiàn)“手工設(shè)置配置”按鈕,則表明該設(shè)備能夠“即插即用”。
進(jìn)入CMOS在PnP/PCI Configurations(即插即用與PCI參數(shù)設(shè)置)中將“Resources Controlled By”中設(shè)置為“Manual”,然后對檢測到的硬件的IRQ進(jìn)行重新分配指定后故障排除。
在故障仍無法排除時,可以提高沖突硬件的IRQ優(yōu)先值。運行注冊表編輯器regedit32,找到注冊表中的HKEY_LOCAL_MACHINESystemCurrentControlSetControlPriorityControl位置。建立一個名為IRQ*Priority(其中“*”是具體的IRQ中斷號)的DWORD雙字節(jié)值,然后把它的值設(shè)為5。例如,系統(tǒng)CMOS實時鐘的IRQ中斷號是9,建立的鍵名就是IRQ9Priority,重新啟動計算機(jī)之后,沖突的硬件IRQ的優(yōu)先值就會提高。
筆者遇到的故障問題,手機(jī)連接計算機(jī)后導(dǎo)致無線網(wǎng)卡中斷,剛開始懷疑是驅(qū)動的問題,對主板驅(qū)動和無線網(wǎng)卡的驅(qū)動進(jìn)行了升級和重新安裝,操作系統(tǒng)重啟后問題未得到解決。后又懷疑可能是USB接口供電不足造成的故障,在“設(shè)備管理器”中“USB Root Hub”的“電源管理”選項卡中,去掉“允許計算機(jī)關(guān)閉這個設(shè)備以節(jié)約電源”前的勾選和通過BIOS設(shè)置對USB的供電電壓進(jìn)行了調(diào)整,問題仍未得到解決。后通過“設(shè)備管理器”才發(fā)現(xiàn)是IRQ沖突所致,進(jìn)入CMOS模式,選擇Advanced CMOS Features,修改APIC Mode為“Enabled”,保存后重啟,進(jìn)入操作系統(tǒng)后重新安裝了無線網(wǎng)卡的驅(qū)動,問題得到解決。