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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 硬盤驅(qū)動器接口技術與嵌入式應用技術介紹

          硬盤驅(qū)動器接口技術與嵌入式應用技術介紹

          作者: 時間:2012-04-18 來源:網(wǎng)絡 收藏

          目前,采用的主流是高配置標準(ATA),即IDE,而且絕大多數(shù)都采用了并行ATA接口。部分同時也支持CF (Compact Flash)規(guī)范、安全數(shù)字輸入/輸出(SDIO)標準和串行ATA規(guī)范。由于并行ATA和CF是便攜手持市場的最普遍的兩個標準,因此本文側(cè)重討論這兩個規(guī)范。CF 3.0規(guī)范能夠在與標準IDE完全相同的真IDE模式下操作。與CF2.1相比,CF3.0增加了極端直接內(nèi)存訪問(Ultra DMA)模式。

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

            通常,硬盤驅(qū)動器并不需要支持所有的模式。目前,1.8英寸硬盤能夠支持所有的模式,1英寸硬盤能支持到UDMA4模式??紤]到便攜消費類市場對尺寸和功耗的要求,因此本文側(cè)重于討論1.8英寸或更小尺寸的硬盤驅(qū)動器。這些微硬盤的實際數(shù)據(jù)吞吐量遠小于他們的理論值。硬盤的直徑直接影響了數(shù)據(jù)傳輸率。例如,1英寸硬盤驅(qū)動器比2.5英寸硬盤驅(qū)動器要慢許多,這是因為硬盤外直徑變小,意味著外圍磁軌的最快線速度也將同樣變小。

            


            圖1主ATA控制與CPLD解決方案:采用一個外部總線接口或GPIO端口和一個用于連接邏輯電路的CPLD,主CPU控制ATA時序和與硬盤相關的任務。

            目前,大多數(shù)便攜式低功耗處理器都支持CF接口,但是缺乏專用的IDE控制器。雖然CF3.0支持真IDE模式和ATA規(guī)范的部分標準,但是這種方法必須依靠處理器本身來控制ATA時序和建立數(shù)據(jù)連接。而且從系統(tǒng)角度來看,這種模式在傳輸大量數(shù)據(jù)時效率不高。在領域,當設計師采用硬盤驅(qū)動器時,可以選用CF接口、通用I/O端口或者一個帶有用于連接某些邏輯電路的CPLD的外部總線接口等方案來實現(xiàn)連接。這使得他們可以采用現(xiàn)有的主處理器架構(gòu)和軟件環(huán)境來更快地推出產(chǎn)品,取得市場先機。盡管這種方法簡單且經(jīng)濟,但在采用這種方法前,設計師必須充分理解它對系統(tǒng)性能的影響。因此,在選擇一個特定的系統(tǒng)方案之前,有必要為終端應用確定一個清晰的、可量化的性能目標。因為只有這樣,才能夠應用該目標來指導系統(tǒng)劃分過程和決定是否有必要改善性能。

            

          微型硬盤驅(qū)動技術與嵌入式應用整合方案

            圖2 局部總線接口和QuickLogic IDE控制:采用一個外部總線接口或GPIO端口和外部硬件中的專用QuickLogic IDE控制器來加速對硬盤驅(qū)動器(HDD)的讀寫。

            外部總線接口與CPLD

            優(yōu)點

            本方案只需要控制信號和主處理器的部分尋址信號與CPLD連接,來產(chǎn)生硬盤驅(qū)動器所需的接口信號。當系統(tǒng)中存在其他設備共享數(shù)據(jù)總線時,還需要額外的分離邏輯部件將總線與系統(tǒng)的其他部分分離開來。從硬件角度來講,這個方案非常簡單、直接而且提供了應用所需的存儲。然而,系統(tǒng)設計是需要考慮數(shù)據(jù)吞吐量的可能瓶頸和對主處理器的影響。若要設計一個性價比高和有競爭力的解決方案,需要滿足以下兩條件中至少一個:硬盤讀寫的數(shù)據(jù)中不包括極大數(shù)量的數(shù)據(jù)文件或豐富的多媒體內(nèi)容;性能和數(shù)據(jù)吞吐量不是系統(tǒng)的關鍵性要求。

            缺點

            當處理器負責產(chǎn)生和控制ATA時序的時候,它將浪費額外的周期來處理時序和數(shù)據(jù)移動。系統(tǒng)中,性能瓶頸的多少取決于是否存在DMA控制器,以及主處理器在外部總線接口和主內(nèi)存之間的數(shù)據(jù)傳輸效率。如果再加上微處理器在每次數(shù)據(jù)讀寫中對來自硬盤驅(qū)動器的IO-RDY信號反應的等待時間,將形成一個很嚴重的性能瓶頸。由于本方案直接與每個驅(qū)動器相關的任務掛鉤,因此對CPU占用率產(chǎn)生了很大的影響。主CPU的絕大多數(shù)時間將被用來為硬盤服務,而不是執(zhí)行與應用相關的任務。實際應用中,數(shù)據(jù)傳輸?shù)淖畲笏俾收垍⒁姳?。

            外部總線接口和QuickLogic IDE控制器

            優(yōu)點

            本方案通過在硬件中增加一個外部IDE控制器,來加速硬盤驅(qū)動器數(shù)據(jù)傳輸和讀寫控制,從而降低了流程中主處理器的負載。在本方案中,只有主處理器的本地存儲器總線連接到IDE橋接設備。外部IDE控制器擁有一片用于數(shù)據(jù)雙向傳輸緩沖的容量為512字節(jié)的內(nèi)存。緩沖內(nèi)存使得主處理器實現(xiàn)了直接在512字節(jié)扇區(qū)內(nèi)執(zhí)行讀寫操作而不必等待中斷或外部連接IDE設備的準備。在等待中斷信號或者IDE控制器發(fā)送的512字節(jié)扇區(qū)數(shù)據(jù)準備完畢信號的同時,主處理器可以不間斷地運行其他任務。

            在數(shù)據(jù)扇區(qū)準備好后,再調(diào)用中斷機制,這使得系統(tǒng)可以實現(xiàn)比輪流檢測機制更好的性能。與中斷機制不同,輪流檢測在增加了軟件投入的同時也降低了系統(tǒng)的性能。

            如果在CPU中,存在供外部設備使用的DMA控制器,通過對主內(nèi)存數(shù)據(jù)扇區(qū)的DMA操作,可以進一步提升系統(tǒng)性能。由于硬盤消耗大量的靜態(tài)電流,因此微瓦FPGA能夠關閉硬盤的電源來降低不讀取數(shù)據(jù)時硬盤的功耗。同樣的機理也被iPOD所采用。使用微瓦FPGA來控制硬盤功耗的主要優(yōu)點是,可以在數(shù)據(jù)傳輸完成以后,切斷電流關閉硬盤來節(jié)省功耗。理論上,它還可以被用來在上電的同時,啟動硬盤驅(qū)動器和初始化寄存器。在該流程完成后,它將發(fā)送一個中斷信號到CPU,以減少處理器在處理斷電和上電任務的負載。由于不需要CPU參與這個過程,從而在更高程度上實現(xiàn)了無縫連接。

            使用QuickLogic超低功耗IDE控制器設備作為低功耗嵌入式處理器的配套芯片,大大提高了整體的系統(tǒng)吞吐量、降低了硬盤驅(qū)動器相關任務的CPU占用率、通過降低硬盤驅(qū)動器的工作時間來降低系統(tǒng)功耗。相對基于SRAM和Flash,QuickLogic低功耗Vialink互聯(lián)技術大大降低了功耗。采用SRAM和Flash技術方案的設計將消耗幾百mA的電流。對簡單CPLD方案而言,只需要增加少量成本,采用低功耗IDE橋控制器就可以實現(xiàn)提升高能效系統(tǒng)性能,最終改善終端用戶的使用效果。

            

          微型硬盤驅(qū)動技術與嵌入式應用整合方案

            圖3 采用專用的QuickLogic IDE與SDRAM控制:通過對主存儲器的直接存取,采用外部硬件中專用的QuickLogic IDE與SDRAM控制器來加速硬盤驅(qū)動器的讀寫速率。

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

          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();