<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux外部設(shè)備的硬件接口

          Linux外部設(shè)備的硬件接口

          作者: 時(shí)間:2012-08-29 來源:網(wǎng)絡(luò) 收藏

          計(jì)算機(jī)的設(shè)各通常由電氣部分和機(jī)械部分兩部分組成。電氣部分是用來控制機(jī)械部分的,因此電氣部分也叫做設(shè)各的控制器。

          本文引用地址:http://www.ex-cimer.com/article/148498.htm

          控制器通過計(jì)算機(jī)系統(tǒng)總線掛接到系統(tǒng)上?;蛘哒f,計(jì)算機(jī)系統(tǒng)就是通過控制器來控制和操作的。典型的方式是,把外部設(shè)各中的各個(gè)控制器看做是一組互不沖突的寄存器組,并賦予它們相應(yīng)的地址,從而使處理器可以像訪問存儲(chǔ)器一樣來訪問控制器,并通過控制器來訪問外部設(shè)各。

          外部設(shè)各通常包含4組寄存器,即狀態(tài)寄存器、控制寄存器、數(shù)據(jù)輸入寄存器和數(shù)據(jù)輸出寄存器。這些寄存器有各自的地址,這個(gè)地址叫做端口。這些寄存器的作用分別為:

          ·狀態(tài)寄存器用來向處理器提供外部的工作狀態(tài)。例如,設(shè)各的當(dāng)前操作是否執(zhí)行完畢,數(shù)據(jù)是否可被讀出或?qū)懭胍约板e(cuò)誤提示等。

          ·控制寄存器是被用來管理外部工作模式的。也就是說,在設(shè)備初始化或運(yùn)行時(shí), 處理器可通過向控制寄存器寫入命令來啟動(dòng)或改變?cè)O(shè)各工作模式。

          ·數(shù)據(jù)輸入寄存器和數(shù)據(jù)輸出寄存器是用來與處理器傳遞數(shù)據(jù)的。

          外部設(shè)各與處理器關(guān)系示意圖如圖所示。

          360截圖20120829142535530.jpg

          圖 外部設(shè)備與處理器關(guān)系示意圖

          為了識(shí)別外部設(shè)各的這些寄存器,系統(tǒng)給這些寄存器都賦予了地址,于是外部設(shè)各寄存器占用的地址空間叫做I/O空間。對(duì)于I/O空間的處理,目前有兩種方式:一種是與存儲(chǔ)器統(tǒng)一編址,即在整個(gè)內(nèi)存空間中劃出一個(gè)范圍作為I/O空間,這種方式的特點(diǎn)是處理器沒有獨(dú)立的I/O指令,而是把外部設(shè)各的寄存器作為存儲(chǔ)單元來對(duì)待的;另一種方式是處理器具有單獨(dú)的I/O指令,所以在這種方式中I/O地址空間是獨(dú)立編址的。不管是統(tǒng)一編址還是獨(dú)立編址,從邏輯上來看,外設(shè)的各寄存器就相當(dāng)于一種存儲(chǔ)裝置,它可向處理器提供數(shù)據(jù),也可接收處理器的數(shù)據(jù),即處理器可對(duì)它們進(jìn)行讀/寫操作。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          關(guān)鍵詞: 接口 硬件 設(shè)備 外部 Linux

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();