PnP 怎麼做 分配資源

2021-04-25 15:57:45 字數 3759 閱讀 4532

plug-and-play 就是自動配置(低層)計算機中的插卡和其他裝置, 然後告訴對應的裝置都做了什麼. plug-and-play 的任務是把物理裝置和軟體(裝置驅動程式)相配合, 並操作裝置, 在每個裝置和它的驅動程式之間建立通訊通道. 換種說法, pnp 分配下列資源給裝置和硬體: i/o 位址, irq, dma 通道, 記憶體段. 假如你不理解這 4 項, 看下面的. 一旦這些資源被分配, 裝置(名字在 /dev 目錄中)就準備好被使用(倘若這些物理裝置在你的 pc 中).

pnp 配置資源, 但僅是一定程度上的配置資源. 儘管使用了 pnp, 許多裝置仍不是被 pnp 來配置. 如數據機的配置, 'init string' 被通過 i/o 位址通道送給數據機, 儘管 i/o 位址通道是由 pnp 分配的, 但 'init string' 與 pnp 無關. 設定串列埠的速度是由使用者執行程式來做的而不由 pnp. 所以當說起 pnp 的時候, '資源'意味著資源中的一部分, '配置'意味著某些型別的配置.

計算機包括 cpu 來運算, 記憶體來儲存程式和資料. 還有一些裝置, 如磁碟驅動器, 顯示卡, 鍵盤, 網絡卡, modem 卡, 音效卡, 串列埠和並口, 等等. 還有電源提供電能, 主機板上的各種匯流排把裝置和 cpu 連在一起, 機箱把它們裝起來.

過去, 許多裝置都是插卡(印刷線路板). 今天, 除了插卡之外, 許多裝置已經小到一塊晶元被做在主版上. 主版上的插卡也許包含不止乙個裝置. 記憶體有時也被認為是裝置但不是此 howto 中的 plug-and-play.

計算機要正常工作, 每個裝置必須在它的驅動程式(它也是作業系統的一部分, 在cpu上執行)控制下執行. 驅動程式與 /dev 目錄下的特殊檔案聯絡在一起, 儘管他們不是真正的檔案. 它們有象 hda1, ttys0, eth1 等這樣的名字. 麻煩的是選擇特殊裝置的驅動程式, 就說 eth1 吧, 依賴於你使用的網絡卡的型別. 這樣 eht1 就不能分配給除了可以使你安裝的網絡卡正常工作的驅動程式外的其它驅動程式. 為了控制裝置, cpu (在驅動程式的控制下)向裝置傳送命令和從裝置讀取資訊. 要這樣做, 每個裝置驅動程式必須知道裝置的介面位址, 比如用於通訊的位址. 知道這樣的位址就如同建立了一條通訊通道, 即使這個通道是 pc 裡的許多裝置共享的資料匯流排.

pc 有 3 類位址空間: 記憶體, i/o, 和配置(僅限於 pci 匯流排). 只有前兩個(記憶體, i/o)被 pnp 配置. 在 pc 裡這3種型別的位址共享同樣的匯流排. (另外: 對於 pci 匯流排, 它用於傳輸資料). 但是由特定電路來告訴裝置位址是在 i/o 空間或在記憶體空間.(譯者注: 其實就是匯流排控制電路中的記憶體使能線, 當它為 0 電平時, 表示當前位址是記憶體位址, 為 1 電平時, 表示當前位址是 i/o 位址.) 裝置通常使用 i/o 位址空間. 分配 i/o 位址主要有兩步.

設定插卡的 i/o 位址,等.(插卡暫存器位址中的乙個)

讓裝置驅動程式知道這些 i/o 位址.

第三步是在 /dev 目錄中給裝置和它的驅動程式取乙個名字, 如 hda, ttys0, 或 eth1. 前兩步就象解決在一條街道上找某人的住宅號碼的問題. 你必須知道住宅號碼並且某人必須把號碼放在住宅前面, 你才可以找到它. 在計算機中, 驅動程式必須知道介面位址, 並且硬體必須設定為相同的位址, 當然這些位址應是插卡暫存器位址中的乙個. 這兩樣都要做, 錯誤的是有些人僅做了其中一樣, 然後卻對計算機找不到裝置感到奇怪. 下面解釋上面的: irq's, dma 通道 irq, dma 通道, 和 記憶體位址, 所有這些都叫"資源".

看過下面的簡略介紹, 你也許還想看更詳細的 中斷 -- 詳解. 簡述: 除了位址外, 還有中斷需要處理(如 irq5). 把它叫中斷號. 我們在上面已經說過裝置驅動程式為了能通訊必須知道插卡的位址. 那麼反過來怎麼辦呢? 裝置如何與驅動程式通訊呢? 所以裝置需要知道驅動程式的位址, 這樣裝置就可以呼叫驅動程式了. 例如: 裝置接收到一些需要傳送到主存的資料, 它需要告訴驅動程式馬上來拿這些資料, 並把資料從裝置的緩衝區送到主存.

裝置呼叫驅動程式用把乙個中斷電路連線(匯流排的一部分)的電平抬高的方法. 有16個這樣的連線, 每個連線與乙個特定的裝置驅動程式關聯. 每根連線有乙個特定的 irq(interrupt request) 號. 裝置需要把中斷放到恰當的連線上, 並且驅動程式必須偵聽同一連線. 究竟使用哪根連線取決於存貯在裝置中的中斷號, 此中斷號必須被驅動程式知道, 這樣它才知道需要偵聽那根中斷線.

dma 代表 'direct memory access'(直接記憶體訪問). 就是允許裝置從 cpu 手中接管系統匯流排, 並直接把資料傳送到主記憶體. 通常 cpu 分兩步來傳送資料: 1. 從裝置的 i/o 儲存空間讀資料, 把資料放在 cpu 內部. 2. cpu 把資料從其內部送到主記憶體. dma 方式通常用一步就可把資料從裝置直接送到主記憶體. 裝置硬體必須內建有這種能力並不是所有的裝置都可以使用 dma 的. 從 dma 傳輸占用系統匯流排開始的傳輸過程中 cpu 就不做什麼了.

當乙個裝置試圖進行 dma 時, 它會發出乙個請求(用改變匯流排的 dma 請求連線的電平的方式). dma 請求也可以用中斷的方式來實現, 但會有一定的延時, 所以為了快速, 就用一種特殊型別的中斷 'dma-請求' 來實現. 象中斷一樣, 把 'dma-請求線' 編號來識別是哪個裝置發出的請求. 這些編號就叫 dma-通道. 因為 dma 傳輸使用系統匯流排(同一時間只能有乙個使用), 所以它們實際上用同乙個通道, 編號主要用來識別誰在使用通道. 主機板上的硬體暫存器紀錄各通道的當前狀態. 要發出乙個 dma 請求, 裝置必須知道自己的 dma 通道號, 通道號由物理裝置儲存在自己內部.

像 i/o 位址一樣, 一些裝置在主記憶體中分配有位址. 當你插這樣的卡時, 你實際上也插了一塊記憶體模組(主記憶體, 不是 i/o 記憶體). 這段記憶體被裝置和 cpu 共享(執行裝置驅動程式後). 這塊記憶體意味著裝置和主記憶體之間'直接'傳輸資料. 其實不是真正的傳輸, 裝置把資料放到它自己的記憶體中同時也就放到了主記憶體中. 插卡和裝置驅動程式必須知道記憶體塊的位址.

必須把裝置驅動程式和他們控制的硬體聯絡起來. 這由向他們提供相同的資源來解決. 例如: 序列口使用兩個資源: 乙個 irq 和 乙個 i/o 位址. 這些資源必須提供給裝置驅動程式和物理裝置兩者. 驅動程式(和它的裝置)被命名(如 ttlys1). 位址和 irq 號被插卡儲存在自己的記憶體中(或主機板的乙個晶元中).

pc 體系只提供有限的 irq, dma 通道, i/o 位址,等. 假如只有幾種裝置並且裝置都使用標準的資源, 把驅動程式和裝置聯絡在一起沒什麼問題. 每個裝置有乙個固定的資源並且不與機器中的其他裝置衝突. 沒有兩個裝置使用相同的 i/o 位址, irq, 等. 編寫驅動程式時把這些資源寫進去即可. 這樣事情就簡單了.

但實際情況不是這樣. 今天不僅有許多不同的裝置且它們極有可能發生衝突, 而且同時又要使用不只乙個同種型別的裝置. 例如乙個人可能想使用幾個不同的磁碟驅動器, 幾個串列埠, 等等. 所以裝置必須有一定的靈活性這樣可以把它們設定為任意的位址, irq, 等等. 因為要避開資源衝突. 但是一些 irq 和 位址是相當標準的如時鐘和鍵盤. 它們不需要這樣的靈活性.

除了資源衝突之外, 還有乙個問題是告訴驅動程式錯誤的資源資訊. 例如: 你根據猜想在配置檔案中輸入 irq4, 可裝置實際使用的是 irq5. 這是資源分配的另一種錯誤.

資源分配, 如果做的正確, 可以在硬體和它們的驅動程式之間建立通訊通道. 例如, 乙個特定的 i/o 位址範圍分配給乙個裝置驅動程式和一塊硬體, 那麼就可在它們之間建立通訊通道. 驅動程式可以向裝置送命令和資訊. 實際上不只一條通道, 因為驅動程式可用讀裝置暫存器的方式得到資訊. 但是裝置不能用這種方式通訊. 分配乙個 irq, 把它作為驅動程式和裝置可以互動的另一條通訊通道.

引用原文出處:http://www.linux.org.tw/cldp/howto/hardware/plug-and-play-howto/plug-and-play-howto-2.html

怎麼做產品

和使用者交流是為了做出更好的 產品 打造更好的體驗,但真正好的產品出現之前,使用者也不知道他們想要什麼 比如,在汽車沒出現的馬車時代,使用者會說 我需要一匹更快的馬 那些情緒激動 很生氣的使用者常常能變為最忠實的使用者,只要你能夠打動他們。所以,情緒裡有絕對的價值,如果你能在這些使用者生氣的時候,好...

直播怎麼做?

1 手機 那麼手機直播需要哪些裝置呢,首先是一部畫素高的手機,這個就不具體說明了。其次是光源,也就是補光燈,布光是一門專業的學科,有興趣的同學可以找點資料深入了解一下。一般在環境光充足的情況下可以直接選擇那種燈 支架一體的,可自行某寶。3 攝像頭 我們平時所看的才藝主播,帶貨主播,遊戲主播,絕大部分...

seo優化方案怎麼做?seo怎麼做優化?

但要害詞在優化之前應該先進行選擇,這一項作業意義嚴峻。一些短要害詞雖然上手,但越是上手的要害詞流量就越為大公司所把控。中小型企業在優化這些要害詞時會好不容易且難以收到成效。所以關於新 或是一些中小型的企業來說,選擇一些較為簡略優化的要害詞就顯得尤為要害。要害詞優化的難易度可以通過查詢要害詞查詢熱度來...