W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
設(shè)計(jì)上 ISA 總線(xiàn)非常老了, 并且是非常地低能, 但是它仍然持有一塊挺大的控制設(shè)備的市場(chǎng). 如果速度不重要并且你想支持老式主板, 一個(gè) ISA 實(shí)現(xiàn)要優(yōu)于 PCI. 這個(gè)老標(biāo)準(zhǔn)的另外一個(gè)好處是如果你是一個(gè)電子愛(ài)好者, 你可輕易建立你自己的 ISA 設(shè)備, 顯然對(duì) PCI 是不可能的.
另一方面, ISA 的許多缺點(diǎn)是它緊密綁定在 PC 體系上; 這個(gè)接口總線(xiàn)有所有的 80286 處理器的限制并且給系統(tǒng)程序員帶來(lái)無(wú)窮的痛苦. ISA 設(shè)計(jì)(從原始的 IBM PC 繼承下來(lái)的)的另一個(gè)大問(wèn)題是地理式尋址的缺乏, 它已導(dǎo)致許多問(wèn)題和長(zhǎng)時(shí)間的拔下-重置跳線(xiàn)-插上-測(cè)試 循環(huán)來(lái)添加新設(shè)備. 有趣的是要注意甚至是最老的 Aplle II 計(jì)算機(jī)都已經(jīng)采用了地理式尋址, 并且它們特有無(wú)跳線(xiàn)擴(kuò)展板.
不管它的大的缺點(diǎn), ISA 仍然在幾個(gè)意想不到的地方使用. 例如, 用在幾個(gè)掌上電腦的 VR41xx 系列的 MIPS 處理器特有一個(gè) ISA 兼容的擴(kuò)展總線(xiàn), 就象它看起來(lái)那么奇怪. 在 ISA 的這些意想不到的用法之后的理由是一些老式設(shè)備的相當(dāng)?shù)偷某杀? 例如基于 8390 的以太網(wǎng)卡, 因此一個(gè)帶有 ISA 電路信號(hào)的 CPU 可輕易采用這個(gè)糟糕的, 但是便宜的 PC 設(shè)備.
一個(gè) ISA 設(shè)備可配備有 I/O 端口, 內(nèi)存區(qū), 和中斷線(xiàn).
盡管 x86 處理器支持 64 KB I/O 端口內(nèi)存(即, 處理器有 16 條地址線(xiàn)), 一些老 PC 硬件僅解碼最低的 10 位地址線(xiàn). 這限制可用的地址空間為 1024 個(gè)端口, 因?yàn)槿魏卧?1 KB 到64 KB 范圍內(nèi)的地址都被只解碼低地址的任何設(shè)備錯(cuò)當(dāng)成一個(gè)低地址. 一些外設(shè)解決這個(gè)限制通過(guò)映射一個(gè)端口到低 KB 并且使用高地址線(xiàn)來(lái)選擇不同的設(shè)備寄存器. 例如, 一個(gè)映射在 0x340 的設(shè)備可安全地使用端口 0x740, 0x840, 等等.
如果 I/O 端口的可用性被限制, 內(nèi)存存取更加麻煩. 一個(gè) ISA 設(shè)備可只使用 640KB 到1 MB 之間的內(nèi)存范圍和 15 MB 和 16MB 之間的范圍給 I/O 寄存器和設(shè)備控制. 640-KB 到 1-MB 范圍被 PC BIOS , VAG-兼容的視頻卡, 和各種其他設(shè)備使用, 給新設(shè)備留下了很少空間. 另一方面, 在 15MB 的內(nèi)存, 不被 Linux 直接支持, 并且改造內(nèi)核來(lái)支持它是浪費(fèi)時(shí)間.
對(duì) ISA 設(shè)備板第 3 個(gè)可用資源是中斷線(xiàn). 一個(gè)有限數(shù)目的中斷線(xiàn)被連接到 ISA 總線(xiàn), 并且它們由所有接口板共享. 結(jié)果是, 如果設(shè)備不被正確配置, 它們可能發(fā)現(xiàn)它們自己在使用同一個(gè)中斷線(xiàn).
盡管原始的 ISA 規(guī)范不允許在設(shè)備間共享, 大部分設(shè)備板允許這樣. [44]在軟件層次的共享在"中斷共享"一節(jié)中描述, 在第 10 章.
對(duì)于編程, 內(nèi)核中沒(méi)有特別的幫助來(lái)易于存取 ISA 設(shè)備(象對(duì) PCI 那樣有, 例如). 你可使用的唯一工具是 I/O 端口和 IRQ 線(xiàn)的注冊(cè), 在 10 章的"安裝一個(gè)中斷處理"一節(jié).
在本書(shū)第一部分所展示的編程技術(shù)適用于 ISA 設(shè)備; 驅(qū)動(dòng)可探測(cè) I/O 端口, 并且中斷線(xiàn)必須被自動(dòng)探測(cè), 使用在 10 章的"自動(dòng)探測(cè) IRQ 號(hào)"一節(jié)的一個(gè)技術(shù).
幫忙函數(shù) isa_readb 和 它的朋友已經(jīng)在"使用 I/O 內(nèi)存" 9 章中簡(jiǎn)單介紹了, 并且對(duì)它們沒(méi)有更多要說(shuō)的.
一些新 ISA 設(shè)備板遵循特殊的設(shè)計(jì)規(guī)范并且需要一個(gè)特別的初始化順序, 對(duì)增加接口板的簡(jiǎn)單安裝和配置的擴(kuò)展. 這些板的設(shè)計(jì)規(guī)范稱(chēng)為即插即用, 由一個(gè)麻煩的規(guī)則集組成, 來(lái)建立和配置無(wú)跳線(xiàn)的 ISA 設(shè)備. PnP 設(shè)備實(shí)現(xiàn)可重分配的 I/O 區(qū); PC 的 BIOS 負(fù)責(zé)重新分配 -- 回想 PCI
簡(jiǎn)短來(lái)說(shuō), PnP 的目標(biāo)是獲得同樣的靈活性, 在 PCI 設(shè)備中有的, 而不必關(guān)閉底層的電路接口(ISA 總線(xiàn)). 為此, 這個(gè)規(guī)范定義了一套設(shè)備獨(dú)立的配置寄存器和一個(gè)地理式尋址接口板的方法, 盡管物理總線(xiàn)沒(méi)有每塊板子相連(地理上)--每個(gè) ISA 信號(hào)線(xiàn)連接到每個(gè)可用的槽位.
地理式尋址通過(guò)分配一個(gè)小的整數(shù), 稱(chēng)為卡選擇號(hào)(CSN), 給計(jì)算機(jī)中的每個(gè) PnP 外設(shè). 每個(gè) PnP 設(shè)備特有一個(gè)唯一的系列標(biāo)識(shí)符, 64-位寬, 這硬連線(xiàn)到外設(shè)板. CSN 分配使用唯一的序列號(hào)來(lái)標(biāo)識(shí) PnP 設(shè)備. 但是 CSN 可被分配只在啟動(dòng)時(shí), 它要求 BISO 是知道 PnP 的. 由于這個(gè)理由, 老式計(jì)算機(jī)要求用戶(hù)來(lái)獲得并插入一個(gè)特別的配置磁盤(pán), 即便這個(gè)設(shè)備是 PnP 的.
遵循 PnP 的接口板在硬件級(jí)別上是復(fù)雜的. 它們比 PCI 板更加精細(xì)并且需要復(fù)雜的軟件. 安裝這些設(shè)備有困難是常有的, 并且即便安裝順利, 你仍然面對(duì)性能限制和 ISA 總線(xiàn)的受限的 I/O 空間. 最好在任何可能時(shí)安裝 PCI 設(shè)備, 并且享受新技術(shù).
如果你對(duì) PnP 配置軟件感興趣, 你可瀏覽 drivers/net/3c509.c, 它的探測(cè)函數(shù)處理 PnP 設(shè)備. 2.6 內(nèi)核有許多工作在 PnP 設(shè)備支持領(lǐng)域, 因此許多靈活的接口和之前的內(nèi)核發(fā)行相比被清理了.
[44] 中斷共享的問(wèn)題是一個(gè)電子工程的問(wèn)題: 如果一個(gè)設(shè)備驅(qū)動(dòng)信號(hào)線(xiàn)非激活 -- 通過(guò)給一個(gè)低阻電平 -- 中斷無(wú)法被共享. 如果, 另一方面, 設(shè)備使用一個(gè)上拉電阻來(lái)去激活邏輯電平, 共享是可能的. 現(xiàn)在這是正常的. 但是, 仍然有潛在的丟失中斷事件的危險(xiǎn), 因?yàn)?ISA 中斷是沿觸發(fā)的而不是電平觸發(fā)的. 沿觸發(fā)中斷易于在硬件中實(shí)現(xiàn), 但是沒(méi)有使它們可安全共享.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: