<acronym id="pokdi"><strong id="pokdi"></strong></acronym>
      <acronym id="pokdi"><label id="pokdi"><xmp id="pokdi"></xmp></label></acronym>

      <td id="pokdi"><ruby id="pokdi"></ruby></td>
      <td id="pokdi"><option id="pokdi"></option></td>
      <td id="pokdi"></td>

        1. 教育裝備采購網
          第八屆圖書館論壇 校體購2

          硬盤數據恢復技術之SATA協議分析(五)

          教育裝備采購網 2016-04-13 10:15 圍觀2986次

            隨著我們對SATA協議的逐步分析,SATA的物理層、鏈路層、傳輸層的基本原理和結構我們基本上都搞清楚了,現在,我們來看SATA協議的最后一部分,應用層的原理與結構,有的文獻上將應用層內部劃分出一個命令層來,但總的來看,功能上都是類似的。

            應用層是 SATA協議的頂層結構,它負責所有ATA指令的執行與解析,向處理器報告當前硬盤運行狀態,生成對數據的讀寫請求,讀取和設置硬盤的工作性能模式,還包括對控制指令模塊寄存器的訪問。SATA應用層和PATA協議的應用層功能相同,主要負責所有ATA指令的解析和向處理器報告當前工作狀態。當主機的BIOS程序或軟件向硬盤控制器發送主機指令時,應用層對主機發送的SATA指令進行解析和執行,它通過指令和控制寄存器來接收指令,硬盤控制器的微處理器通過中斷和狀態信息設置狀態寄存器,響應相應的操作,并向主機報告當前的工作狀態,微處理器指示硬盤系統軟件執行下一步操作,設置ATA協議內部DMA的控制,實現數據的高速傳輸。主機向指令寄存器寫入指令,并讀取指令的狀態信息,設備處理器通過設置指令寄存器中的各種參數,控制中斷、復位和其他各種狀態。

            應用層的命令處理部分,也可稱之為命令層,主要負責ATA命令的解析。在發送端,命令層將主機端的映射寄存器(Shadow Register Block)或者設備端的ATA 寄存器(ATA Register)內更新的寄存器值提取出來并轉換成對應不同交互機制的命令類型,然后通知傳輸層構造 FIS;在接收端,命令層通過解析傳輸層的FIS所攜帶的信息,判斷出是哪一種命令類型并作相對應的操作。SATA2.0標準協議中規定的命令主要包括兩大部分:與PATA兼容的ATA命令集和SATA新特性添加的新命令。其中常用的主要有IDENTIFY DEVICE、READ DMA、READ DMA EXT、READ SECTOR(S)、WRITE DMA EXT等。為了實現這些命令,SATA2.0標準協議將他們分為12個類型,每一種類型對應著不同的交互機制,每一種命令還采用不同的命令碼來加以區分,具體見表1、2 所示。

            表1 SATA命令類型


            表2 SATA常用命令表

            以READ DMA EXT命令為例,介紹整個交互機制和過程。READ DMA EXT命令屬于DMA-In 命令類型,命令碼位25h。該命令使用DMA數據傳輸方式從設備端向主機端發送數據,一次DMA傳輸的數據必須為8K字節的整數倍。其交互過程如下圖1所示:


            圖1 DMA-In類型命令交互過程

            詳細流程為:

            1、主機軟件首先初始化主機端的DMA控制器,包括指定用于存放硬盤數據的內存空間地址;

            2、主機軟件初始化主機端的映射寄存器(BSY=0);

            3、主機軟件向主機端映射寄存器發起READ DMA EXT命令(BSY=1),命令層識別該命令的交互機制并通知傳輸層構造一個Register FIS - Host to Device 發送到設備端;

            4、設備端接收到該FIS后,校驗其正確性并解析出命令內容;

            5、設備端執行命令-READ DMA EXT,讀取硬盤中目標扇區的數據并存儲在硬盤本地緩存中;

            6、設備端然后通過Data FIS向主機端發送數據,根據扇區數決定發送Data FIS的數量,一次Data FIS所能傳輸的數據量為16個扇區(16×512Bytes=8KB);

            7、主機端接收到數據后校驗是否出現錯誤;

            8、通過DMA 控制器將主機端的緩存中的數據轉移到主機內存中,當速度不匹配時需要進行流量控制;

            9、當數據全部發送完成后,設備端將完成狀態通過Register FIS-Device to Host發送給主機端;

            10、主機端更新映射寄存器組中的值;

            11、主機端向主機軟件發起中斷,報告完成狀態,結束命令。

            應用層是SATA2.0標準協議的頂層,它為主機軟件提供編程接口,負責執行所有的ATA命令。應用層包含映射寄存器和SATA協議規定的寄存器組,主機軟件可以根據中斷標志和狀態信息訪問并更新這些寄存器,使得SATA標準接口根據命令完成相應的操作。主機端映射寄存器與PATA相兼容,包括了命令寄存器、設備寄存器、設備控制寄存器、錯誤寄存器、狀態寄存器等。下面對這些寄存器進行簡要介紹,如表 3所示。


            表3 主機端映射寄存器表

            除了映射寄存器之外,SATA還規定了16組SCR寄存器(Status and Control Register,狀態控制寄存器)。SCR寄存器獨立于映射寄存器之外,用于SATA標準接口新特性的狀態報告和錯誤信息。目前協議使用了 5 組,剩下的作為未來升級使用,其定義見表4。


            表4 SCR 寄存器定義表

            SATA 傳輸層完成各種FIS幀的封裝后,應用層利用這些封裝好的 FIS進行接口通訊。協議根據接口各種數據傳輸方式需要,定義設計各種不同的數據傳輸控制流程, SATA 協議設備端常用數據傳輸控制操作流程:

            非數據命令類型操作流程

            非數據命令操作類型主要讀取或設置SATA接口設備端的狀態或屬性信息等,如SLEEP , IDLE , FLUSH CACHE等命令。設備端收到此類命令后,執行該命令并以發送響應FIS幀作為回應,而響應FIS幀中包括了執行命令后的狀態信息以及可能的出錯信息,具體執行操作流程如圖2所示。


            圖2 非數據命令類型操作流程

            2. PIO數據讀寫命令類型操作流程

            PIO 數據讀寫操作命令類型主要用作從 SATA 設備端的硬盤內部扇區中讀取少量數據,如讀取設備整體屬性的命令IDENTIFY,扇區讀取命令READ等。設備端收到命令后,設置狀態寄存器并準備發送數據,準備完畢后先發送PIO SETUP FIS信息幀,然后再將準備好的數據封裝成DATA FIS信息幀發送給主機端,如此循環直至數據傳輸完畢,最后發送響應 FIS信息幀表示傳輸完畢,具體執行操作流程如圖3。


            圖3 PIO數據讀命令類型操作流程

            3. DMA 數據讀寫命令類型操作流程

            DMA 數據傳輸與 PIO大致相同,不同點在于DMA傳輸操作需要配置 DMA控制器,并利用該控制器來進行數據傳輸操作,而且一次可以傳輸多個DATA FIS信息幀,因此DMA數據傳輸率比PIO較高。

            總體上看,SATA的應用層主要完成命令的處理和數據的傳輸,這些操作和PATA協議高度兼容,并添加了體現SATA特性的一些新的寄存器和命令。理解這些寄存器和命令的使用,是主機端驅動開發和設備端數據讀取的基礎。

            通過連續5篇文章的分析,我們對SATA協議已經有了一個清晰的認識,對SATA的框架基本上分析了一遍,但“光說不練是假把式”,后續的文章中,我們將動用SATA協議分析的利器-SATA總線分析儀,連接主板和SATA硬盤,具體的展現SATA主機端和設備端通信的細節,敬請期待。

            關于達思科技

            達思科技,國家級高新技術企業,天津市國家保密局涉密載體數據恢復唯一協作單位,數據恢復和取證行業著名品牌,是一家以技術研發為核心生產力的技術型企業,在國內乃至全亞洲數據恢復與取證技術領先!

            達思科技 中國數據恢復與取證專家!

            更多數據恢復與取證技術、互聯網請關注微信公眾訂閱號:woocs

            微信號:woocs

            長按識別二維碼關注

            專注數據恢復與取證技術、互聯網

            投稿:woocs@qq.com

          點擊進入達思凱瑞技術(北京)有限公司展臺查看更多 來源:達思凱瑞技術(北京)有限公司 我要投稿
          校體購終極頁

          相關閱讀

          • 西部數據WD5000AAKX磁頭損壞數據恢復成功
            教育裝備采購網08-21
            上個月中,王先生帶著西部數據WD5000AAKXSN:WCAYUFZ23845來到達思數據恢復中心,說電腦開機很慢,開機后一操作就死機,懷疑硬盤故障。達思數據恢復工程師立即檢測,根據經驗判斷,硬盤的磁頭損壞...
          • 希捷ST500LM021有聲響數據恢復成功
            教育裝備采購網08-09
            上個月中,宋先生帶著希捷ST500LM021SN:W624CFKC來到達思數據恢復中心,宋先生說,硬盤有聲響,不明故障原因。達思數據恢復工程師立即檢測,根據經驗判斷,硬盤的磁頭損壞了,由于宋先生并沒有多...
          • 希捷邏輯故障數據恢復成功
            教育裝備采購網08-02
            上上周,王先生帶著4T希捷SN:NA7F1E8S來到達思數據恢復中心找工程師恢復數據。達思硬盤數據恢復工程師先檢測硬盤用winhex查看硬盤底層數據流判定為邏輯故障,和客戶溝通好之后,將客戶硬盤接到達...
          • 希捷ST1000LM010磁頭損壞數據恢復成功
            教育裝備采購網08-01
            上個月中旬,武先生帶著希捷ST1000LM010SN:W100HW7A來到達思數據恢復中心,根據客戶描述,硬盤有聲響,不清楚什么原因造成的,所以直接帶著硬盤來達思數據恢復中心了。達思數據恢復工程師立即檢...
          • 富士通s937邏輯故障數據恢復成功
            教育裝備采購網07-17
            上上周,以為自稱王先生的客戶帶著富士通S937來到達思數據恢復中心,王先生說今早電腦被不小心摔了一下,由于里邊有重要內容所以并未進行過通電嘗試,便直接帶著電腦來到這里了。希望工程師幫忙...
          • 聯想筆記本邏輯鼓掌數據恢復成功
            教育裝備采購網07-16
            這個月5號,王先生帶著聯想筆記本電腦來到達思數據恢復中心,說是電腦開機很慢,半天都是藍屏狀態,很著急,怕其中的重要資料丟失了。達思硬盤數據恢復工程師先檢測硬盤用winhex查看硬盤底層數據...
          • 西部數據WD5000LPVX-08V0T 磁頭損壞數據恢復成功
            教育裝備采購網07-15
            上個星期三,劉先生帶著西部數據WD5000LPVX-08V0TSN:WXA1A6334371來到達思數據恢復中心,劉先生描述說自己的硬盤磁頭壞了,想來這找工程師修修,最重要的是把硬盤里邊的數據恢復出來,不要丟失。...
          • 聯想硬盤 320gG邏輯故障數據恢復成功
            教育裝備采購網07-12
            前幾天,賈女士帶著聯想硬盤320gG型號:SN:0a0428093901169來到達思數據恢復中心,故障不明,找工程師檢測。達思硬盤數據恢復工程師先檢測硬盤用winhex查看硬盤底層數據流判定為邏輯故障,和客戶...

          版權與免責聲明:

          ① 凡本網注明"來源:教育裝備采購網"的所有作品,版權均屬于教育裝備采購網,未經本網授權不得轉載、摘編或利用其它方式使用。已獲本網授權的作品,應在授權范圍內使用,并注明"來源:教育裝備采購網"。違者本網將追究相關法律責任。

          ② 本網凡注明"來源:XXX(非本網)"的作品,均轉載自其它媒體,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責,且不承擔此類作品侵權行為的直接責任及連帶責任。如其他媒體、網站或個人從本網下載使用,必須保留本網注明的"稿件來源",并自負版權等法律責任。

          ③ 如涉及作品內容、版權等問題,請在作品發表之日起兩周內與本網聯系,否則視為放棄相關權利。

          校體購產品
          99久久国产自偷自偷免费一区|91久久精品无码一区|国语自产精品视频在线区|伊人久久大香线蕉av综合

            <acronym id="pokdi"><strong id="pokdi"></strong></acronym>
              <acronym id="pokdi"><label id="pokdi"><xmp id="pokdi"></xmp></label></acronym>

              <td id="pokdi"><ruby id="pokdi"></ruby></td>
              <td id="pokdi"><option id="pokdi"></option></td>
              <td id="pokdi"></td>