一種主機與存儲設備數據交互的方法及存儲控制器的制造方法
【技術領域】
[0001]本發(fā)明涉及一種主機與存儲設備數據交互的方法及存儲控制器,特別涉及到一種主機與存儲設備之間基于USB Bulk傳輸協(xié)議的主機從存儲設備讀取數據的方法、主機向存儲設備寫入數據的方法及存儲控制器。
【背景技術】
[0002]通用串行總線的英文是Universal Serial Bus,縮寫為USB,是應用最廣泛的電子設備接口之一。USB定義了四種傳輸協(xié)議,Control傳輸協(xié)議(Control Transfer),Isochronous 傳輸協(xié)議(Isochronous Transfer), Interrupt 傳輸協(xié)議和 Bulk 傳輸協(xié)議(Bulk Transfer)因為Bulk傳輸協(xié)議能保證數據傳輸的正確性,且因為以大數據塊為數據單元,能提供高傳輸效率,所以廣泛應用在存儲設備上。
[0003]目前,所有主流的操作系統(tǒng)都支持USB大容量存儲設備,包括PC上使用的Windows、Unix、Linux和Mac OS,以及移動設備上使用的Android和10S,其中由蘋果公司開發(fā)的移動操作系統(tǒng)1S使用USB Bulk協(xié)議進行基本數據塊的傳輸,但邏輯上為數據流傳輸方式,無論是命令、數據還是狀態(tài)信息都不區(qū)分包格式,一律按照串行數據流的方式進行傳輸,已有技術由于1S的數據流傳輸特性經常會導致數據的溢出和丟失,使得數據傳輸不能正常完成,因此,如何在高效USB Bulk傳輸協(xié)議基礎上,解決數據流溢出和丟失問題,成為當前一項令人關注的技術難題。
【發(fā)明內容】
[0004]本發(fā)明所要解決的技術問題是,主機與存儲設備之間基于USB Bulk協(xié)議進行命令、命令響應、數據和命令完成狀態(tài)的傳輸時,通過主機等待存儲設備發(fā)送過來的讀命令響應或寫命令響應,再從存儲設備接收讀數據或向存儲設備發(fā)送寫數據,避免了主機采用數據流傳輸方式時會導致數據溢出和丟失的問題。
[0005]為了解決上述技術問題,本發(fā)明采用的技術方案是:
[0006]做為本發(fā)明的一種主機從存儲設備讀取數據的方法,存儲設備包括存儲控制器與存儲器,主機連接著存儲控制器,存儲控制器連接著存儲器,主機從存儲設備讀取數據的流程如下:
[0007]讀命令發(fā)送步驟,存儲控制器接收主機發(fā)送的讀命令;
[0008]讀命令響應步驟,存儲控制器向主機發(fā)送讀命令響應并將讀命令發(fā)送到存儲器;
[0009]讀數據發(fā)送步驟,存儲器向存儲控制器發(fā)送讀數據;
[0010]讀數據回饋步驟,存儲控制器向主機發(fā)送讀數據;
[0011]讀命令完成步驟,讀數據傳輸完成后存儲控制器向主機發(fā)送讀命令完成狀態(tài);
[0012]上述讀命令、讀命令響應、讀數據和讀命令完成狀態(tài)基于USB Bulk傳輸協(xié)議進行傳輸。
[0013]主機需等待存儲設備發(fā)送過來的讀命令響應,才可以從存儲設備接收讀數據,讀命令中包含長度為四個字節(jié)的設備命令識別碼,此設備命令識別碼為十六進制數值0x4E534D43,讀命令完成狀態(tài)中包含長度為四個字節(jié)的設備狀態(tài)識別碼,此設備狀態(tài)識別碼為十六進制數值0x4E534D53。
[0014]做為本發(fā)明的一種主機向存儲設備寫入數據的方法,存儲設備包括存儲控制器與存儲器,主機連接著存儲控制器,存儲控制器連接著存儲器,主機向存儲設備寫入數據的流程如下:
[0015]寫命令發(fā)送步驟,存儲控制器接收主機發(fā)送的寫命令;
[0016]寫命令響應步驟,存儲控制器向主機發(fā)送寫命令響應并將寫命令發(fā)送到存儲器;
[0017]寫數據發(fā)送步驟,主機向存儲控制器發(fā)送寫數據;
[0018]寫數據回饋步驟,存儲控制器向存儲器發(fā)送寫數據;
[0019]寫命令完成步驟,寫數據傳輸完成后存儲控制器向主機發(fā)送寫命令完成狀態(tài);
[0020]上述寫命令、寫命令響應、寫數據和寫命令完成狀態(tài)基于USB Bulk傳輸協(xié)議進行傳輸。
[0021]主機需等待存儲設備發(fā)送過來的寫命令響應,才可以向存儲設備發(fā)送寫數據,寫命令中包含長度為四個字節(jié)的設備命令識別碼,此設備命令識別碼為十六進制數值0x4E534D43,寫命令完成狀態(tài)中包含長度為四個字節(jié)的設備狀態(tài)識別碼,此設備狀態(tài)識別碼為十六進制數值0x4E534D53。
[0022]本發(fā)明的有益效果是:本發(fā)明的一種主機從存儲設備讀取數據的方法和一種主機向存儲設備寫入數據的方法,主機與存儲設備之間基于USB Bulk協(xié)議進行命令、命令響應、數據和命令完成狀態(tài)的傳輸,通過主機等待存儲設備發(fā)送過來的讀命令響應或寫命令響應,再從存儲設備接收讀數據或向存儲設備發(fā)送寫數據,避免了主機采用數據流傳輸方式時會導致數據溢出和丟失的問題,在保證讀寫性能的前提下,最大程度提高了存儲設備與主機的兼容性。
【附圖說明】
[0023]圖1是本發(fā)明一種存儲控制器應用不意圖
[0024]圖2是本發(fā)明一種存儲控制器內部結構圖
[0025]圖3是本發(fā)明一種主機從存儲設備讀取數據的方法流程圖
[0026]圖4是本發(fā)明一種主機向存儲設備寫入數據的方法流程圖
[0027]其中:
[0028]I 主機2 主機接口單元
[0029]3 命令處理單元 4 數據處理單元
[0030]5 存儲器接口單元 6 存儲器
[0031]7 存儲控制器8 存儲設備
[0032]3001讀命令3002讀命令響應
[0033]3003讀命令完成狀態(tài) 3004寫命令
[0034]3005寫命令響應3006寫命令完成狀態(tài)
[0035]4001讀數據4002寫數據
[0036]Rl 讀命令收到步驟 R2 讀命令響應步驟
[0037]R3讀數據發(fā)送步驟R4 讀數據回饋步驟
[0038]R5讀命令完成步驟
[0039]Wl寫命令收到步驟W2 寫命令響應步驟
[0040]W3寫數據發(fā)送步驟W4 寫數據回饋步驟
[0041]W5寫命令完成步驟
【具體實施方式】
[0042]下面結合附圖中的實施例對本發(fā)明主機從存儲設備讀取數據的方法、主機向存儲設備寫入數據的方法及存儲控制器做進一步說明。
[0043]如圖1所示,主機與存儲設備數據交互的方法包括主機從存儲設備讀取數據的方法和主機向存儲設備寫入數據的方法,本發(fā)明一種存儲控制器7包括主機接口單元2、命令處理單元3、數據處理單元4和存儲器接口單元5,主機接口單元2連接著主機I,存儲器接口單元5連接著存儲器6,其中主機接口單元2為蘋果閃電(Lightning)接口單元,存儲器接口單元5為嵌入式多媒體卡(eMMC)接口單元,存儲器6為嵌入式多媒體卡(eMMC)。在其它實施例中,主機接口單元2還可以為通用串行總線(USB)接口單元,存儲器接口單元5還可以為與非型閃存存儲器(Nand Flash)接口單元、安全數碼卡(SD)接口單元、通用閃存存儲(UFS)接口單元或串行硬盤(SATA)接口單元,存儲器6還可以為與非型閃存存儲器(Nand Flash)、安全數碼卡(SD)、通用閃存存儲(UFS)、機械硬盤(HDD)或固態(tài)硬盤(SSD)。
[0044]USB接口是應用最廣泛的電子設備接口之一。USB定義了四種傳輸協(xié)議,Control 傳輸協(xié)議(Control Transfer), Isochronous 傳輸協(xié)議(IsochronousTransfer), Interrupt傳輸協(xié)議和Bulk傳輸協(xié)議(Bulk Transfer)。因為Bulk傳輸協(xié)議能保證數據傳輸的正確性,且因為以大數據塊為數據單元,能提供高傳輸效率,所以廣泛應用在存儲設備上。
[0045]閃電接口(Lightn