專利名稱:一種提高數據操作速率的方法
技術領域:
本發(fā)明涉及信息安全領域,特別涉及一種提高數據操作速率的方法。
背景技術:
USBKey (智能密鑰設備)是一種USB接口的硬件設備。它內置單片機或智能卡芯片,有一定的存儲空間,可以存儲用戶的私鑰以及數字證書,利用內置的公鑰算法實現(xiàn)對用戶身份的認證?,F(xiàn)有技術在USBKey生產過程中,需要對數據進行加解密等處理,具體過程為USBKey接收主機發(fā)送的數據,再根據數據進行處理,并將處理后的數據和狀態(tài)返回給主機,發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn)主機在多次發(fā)送命令及等待USBKey的處理結果數據的過程中,USBKey等待接收數據時處于閑置狀態(tài),導致了操作速率低。
發(fā)明內容
為解決上述問題,本發(fā)明提供了一種提高數據操作速率的方法。本發(fā)明實施例采用的技術方案如下一種提高數據操作速率的方法,包括1、一種提高數據操作速率的方法,其特征在于,包括操作處理和中斷處理,其中所述操作處理具體包括①-④①、USBKey上電并進行初始化;②、所述USBKey判斷當前接收指針與當前第一操作指針的偏差值是否小于協(xié)議頭長度,是則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟②,否則解析協(xié)議頭的內容并更新所述第一操作指針,執(zhí)行步驟③;③、所述USBKey判斷當前接收指針與當前第一操作指針的偏差值是否小于第二預設值,是則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟③;否則根據操作類型標識執(zhí)行相應的操作,得到結果數據,并更新所述第一操作指針,執(zhí)行步驟④;④、所述USBKey判斷當前接收指針的值與當前第一操作指針的值是否相等,如果相等則發(fā)送得到的結果數據;如果不相等則返回步驟③;當所述USBKey接收到接收端點中斷時進入接收中斷處理,包括⑤、所述USBKey將所接收的數據移動至第一緩存區(qū)并更新所述接收指針,并中斷返回。進一步地所述USBKey進行初始化,具體包括所述USBKey將接收指針和第一操作指針的值分別設置為第一緩存區(qū)的基地址,打開接收端點中斷,等待接收端點中斷進入接收中斷處理;其中,所述接收指針用于指示接收的數據的位置;所述第一操作指針用于指示已操作數據的位置;所述步驟②具體包括判斷當前接收指針與當前第一操作指針的偏差值是否小于31,是則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟②,否則解析協(xié)議頭的內容并更新所述第一操作指針,執(zhí)行步驟③;更進一步地,所述解析協(xié)議頭的內容并更新所述第一操作指針具體為從所述第一緩存區(qū)中獲取所述協(xié)議頭的內容,從所述協(xié)議頭的第8-11個字節(jié)得到所述數據長度;從所述協(xié)議頭的第12個字節(jié)得到方向標識,根據所述方向標識的值執(zhí)行相應操作;從所述協(xié)議頭的第16-19個字節(jié)得到所述命令操作類型,根據命令操作類型設置所述操作類型標識;將所述第一操作指針的值更新為其當前值加上31 ;再進一步地,所述根據所述方向標識的值執(zhí)行相應操作具體為判斷所述方向標識的值,若所述方向標識的值為第一數值,則執(zhí)行步驟③;若所述方向標識的值為第二數值,則執(zhí)行步驟⑤;或者,所述步驟②具體包括判斷當前接收指針與當前第一操作指針的偏差值是否小于10,是則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟②,否則解析協(xié)議頭的內容并更新所述第一操作指針,執(zhí)行步驟③,更進一步地,所述解析協(xié)議頭內容并更新所述第一操作指針具體為從所述第一緩存區(qū)中獲取所述協(xié)議頭的內容,從所述協(xié)議頭的第I個字節(jié)得到所述命令操作類型,根據命令操作類型設置所述操作類型標識;從所述協(xié)議頭的第2-5個字節(jié)得到所述數據長度,將所述第一操作指針的值更新為其當前值加上10 ;所述第二預設值具體為每次處理的數據長度;所述解析協(xié)議頭的內容并更新所述第一操作指針具體包括從第一緩存區(qū)中獲取所述協(xié)議頭內容并對其進行解析得到數據長度和命令操作類型,根據命令操作類型設置操作類型標識,將所述第一操作指針的值更新為其當前值加上協(xié)議頭長度;所述根據操作類型標識執(zhí)行相應的操作,得到結果數據,并更新所述第一操作指針,具體為根據所述操作類型標識判斷當前操作數據是否為加解密數據類型,是則進行加解密處理,并將所述第一操作指針的值更新為其當前值加上所述第二預設值;否則根據數據類型執(zhí)行相應操作,并將第一操作指針的值更新為其當前值加上所述第二預設值;所述更新所述接收指針,具體為將所述接收指針的值更新為其當前值加上本次接收數據的長度;所述結果數據中包括命令的執(zhí)行狀態(tài),進一步地,所述命令的執(zhí)行狀態(tài)具體包括表示命令成功執(zhí)行的0x00、表示命令執(zhí)行失敗的0x01以及表示階段錯誤的0x02 ;另外,所述方法還設置有發(fā)送端點中斷,并相應設置有第二操作指針和發(fā)送指針,其中,所述第二操作指針用于指示操作后得到的結果數據的位置,所述發(fā)送指針用于指示發(fā)送的數據的位置,相應地,所述步驟③中得到結果數據,更新所述第一操作指針還包括更新第二操作指針,具體為將所述第二操作指針的值更新為其當前值加上結果數據的長度;進一步地,當設置有發(fā)送端點中斷時;所述發(fā)送得到的結果數據具體包括⑥、所述USBKey判斷當前第二操作指針的值與當前發(fā)送指針的值是否相等,若相等則返回步驟②,若不相等則等待發(fā)送端點中斷進入發(fā)送中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟⑥;當所述USBKey接收到發(fā)送端點中斷時進入發(fā)送中斷處理,包括⑦、所述USBKey判斷當前發(fā)送數據變量的值是否小于第三預設值,是則執(zhí)行相應的發(fā)送處理并更新所述發(fā)送數據變量和所述發(fā)送指針,返回步驟②;否則執(zhí)行步驟⑧;
⑧、所述USBKey判斷當前第二操作指針與當前發(fā)送指針的差值是否大于第三預設值,是則執(zhí)行相應的發(fā)送處理并更新所述發(fā)送數據變量和所述發(fā)送指針,并中斷返回;否則中斷返回。更進一步地所述USBKey進行初始化時還包括打開發(fā)送端點中斷;或者,所述USBKey進行初始化時不包括打開發(fā)送端點中斷,所述步驟⑥中當當前第二操作指針的值與當前發(fā)送指針的值不相等時,首先打開發(fā)送端點中斷,然后再等待發(fā)送端點中斷進入發(fā)送中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟⑥;所述第三預設值具體為每次發(fā)送數據的長度;所述更新所述發(fā)送數據變量和所述發(fā)送指針具體包括將所述發(fā)送指針的值更新為其當前值加上本次發(fā)送數據的長度,將所述發(fā)送數據變量的值更新為其當前值減去本次發(fā)送數據的長度。所述結果數據存儲在第二緩存區(qū)中,所述第二操作指針具體用于指示操作后得到的結果數據在第二緩存區(qū)中的的位置,所述USBKey進行初始化時還包括所述USBKey將發(fā)送指針和第二操作指針的值設置為第二緩存區(qū)的基地址。所述發(fā)送處理具體為將所述第二緩存區(qū)中的數據移動至發(fā)送緩存區(qū)進行發(fā)送。有益效果本發(fā)明實施例針對USBkey設備對數據進行加密處理時,通過端點中斷方式接收/發(fā)送數據,實現(xiàn)數據的收發(fā)與數據處理同步,減少USBkey設備的等待時間,提高了數據操作速率。
圖Ι-a為本發(fā)明實施例二提供的一種提高數據操作速率的方法流程圖;圖Ι-b為接收到接收端點中斷時進入接收中斷處理的詳細過程圖;圖Ι-c為接收到發(fā)送端點中斷時進入發(fā)送中斷處理的詳細過程圖;圖2為本發(fā)明實施例三提供的一種提高數據操作速率的方法流程圖;圖3為本發(fā)明實施例四提供的一種提高數據操作速率的方法流程圖。
具體實施例方式本發(fā)明實施例提供了一種提高數據操作速率的方法,下面結合附圖對本發(fā)明實施例進行詳細介紹。實施例一本發(fā)明實施例一提供了一種提高數據操作速率的方法,所述方法包括操作處理和中斷處理,其中所述操作處理具體包括步驟S1-S4,中斷處理包括步驟S5,具體內容如下步驟S1:USBKey上電并進行初始化;步驟S2 :所述USBKey判斷當前接收指針與當前第一操作指針的偏差值是否小于協(xié)議頭長度,是則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟S2,否則解析協(xié)議頭的內容并更新所述第一操作指針,執(zhí)行步驟S3 ;步驟S3 :所述USBKey判斷當前接收指針與當前第一操作指針的偏差值是否小于第二預設值,是則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟S3 ;否則根據操作類型標識執(zhí)行相應的操作,得到結果數據,并更新所述第一操作指針,執(zhí)行步驟S4 ;步驟S4 :所述USBKey判斷當前接收指針的值與當前第一操作指針的值是否相等,如果相等則發(fā)送得到的結果數據;如果不相等則返回步驟S3 ;具體地,所述發(fā)送得到的結果數據為將結果數據移動至發(fā)送緩存區(qū)進行發(fā)送;當所述USBKey接收到接收端點中斷時進入接收中斷處理,包括步驟S5 :所述USBKey將所接收的數據移動至第一緩存區(qū)并更新所述接收指針,并中斷返回。實施例二本發(fā)明實施例二提供了一種提高數據操作速率的方法,下面結合圖l_a、圖l_b、以及圖Ι-c對所述方法進行介紹。如圖l_a所示,本發(fā)明實施例二提供了一種提高數據操作速率的方法,具體包括以下步驟步驟101 USBkey設備上電;步驟102 :所述USBkey設備對接收指針、發(fā)送指針、第一操作指針和第二操作指針進行初始化,打開接收端點中斷和發(fā)送端點中斷,等待接收端點中斷進入接收中斷處理,待中斷返回后執(zhí)行步驟103;本實施例中,所述USBkey設備對接收指針、發(fā)送指針、第一操作指針和第二操作指針進行初始化具體為將所述接收指針和所述第一操作指針的值分別設置為第一緩存區(qū)的基地址,將所述發(fā)送指針和所述第二操作指針的值設置為第二緩存區(qū)的基地址;所述接收指針用于指示接收的數據的位置;所述發(fā)送指針用于指示發(fā)送的數據的位置;所述第一操作指針用于指示已操作數據的位置;所述第二操作指針用于指示操作后得到的數據在第二緩存區(qū)中的的位置。具體地,參見圖l_b,在本實施例中,所述USBkey設備接收到接收端點中斷時進入接收中斷處理具體包括A-1:將接收端點接收的數據移動至第一緩存區(qū);A-2:更新接收指針和接收數據變量,中斷返回;具體地,所述更新接收指針具體為將所述接收指針的值更新為其當前值加上本次接收到的數據的長度;所述更新接收數據變量具體為將所述接收數據變量的值更新為其當前值加上本次接收的數據的長度;需要說明的是,當USBkey設備執(zhí)行完接收中斷處理后,若未接收到其他的中斷信號則返回主程序繼續(xù)執(zhí)行接收到接收端點中斷時正在處理的步驟;步驟103 :所述USBkey設備判斷當前接收指針與當前第一操作指針的偏差值是否大于協(xié)議頭長度,是則執(zhí)行步驟104 ;否則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟103 ;本實施例中所述協(xié)議頭長度根據數據傳輸協(xié)議確定;步驟104 :所述USBkey設備解析協(xié)議頭的內容,并更新第一操作指針;本實施例中,所述更新第一操作指針具體為將所述第一操作指針的值更新為其當前值加上所述協(xié)議頭的長度;
步驟105 :所述USBkey設備判斷當前接收指針與當前第一操作指針的偏差值是否大于第一預設值,是則執(zhí)行步驟106 ;否則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟105 ;本實施例中所述第一預設值是指命令頭長度;步驟106 :所述USBkey設備從命令頭中獲取當前命令的命令操作類型,并根據所述命令操作類型設置操作類型標識,更新所述第一操作指針;在本實施例中,更新所述第一操作指針具體為將所述操作指針的值更新為其當前值加上所述第一預設值;步驟107 :所述USBkey設備判斷當前接收指針與當前第一操作指針的偏差值是否大于第二預設值,是則執(zhí)行步驟108 ;否則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)步驟107 ;在本實施例中,所述第二預設值為每次處理的數據長度;步驟108 :所述USBkey設備根據操作類型標識判斷操作數據的類型,若所述操作數據的類型為加解密數據類型,則執(zhí)行步驟109 ;若所述操作數據的類型為其他數據類型,則執(zhí)行步驟110 ;步驟109 :所述USBkey設備對所述操作數據進行加解密處理得到結果數據,并更新第一操作指針和第二操作指針,執(zhí)行步驟111 ;本實施例中,所述更新第一操作指針具體為將所述第一操作指針的值更新為其當前值加上第二預設值;所述更新第二操作指針具體為將所述第二操作指針的值更新為其當前值加上結果數據的長度;步驟110 :所述USBkey設備根據所述操作數據的類型執(zhí)行相應的操作得到結果數據,并更新第一操作指針和第二操作指針;本實施例中,將所述第一操作指針的值更新為其當前值加上第二預設值;將所述第二操作指針的值更新為其當前值加上結果數據的長度;步驟111 :所述USBkey設備判斷當前接收指針的值與當前第一操作指針的值是否相等,是則執(zhí)行步驟112 ;否則返回步驟107 ;步驟112 :所述USBkey設備判斷當前第二操作指針的值與當前發(fā)送指針的值是否相等,是則返回步驟103 ;否則等待發(fā)送端點中斷,進入發(fā)送中斷處理。在本實施例中,參見圖1-C,所述USBkey設備接收到發(fā)送端點中斷時進入發(fā)送中斷處理具體為步驟B-1:判斷發(fā)送數據變量的值是否小于第三預設值,是則執(zhí)行相應的發(fā)送處理并更新所述發(fā)送數據變量和所述發(fā)送指針,返回步驟103 ;否則執(zhí)行步驟B-2;本實施例中第三預設值指每次發(fā)送數據的長度,所述執(zhí)行相應的發(fā)送處理并更新所述發(fā)送數據變量和所述發(fā)送指針具體為步驟B-1-1:將第二緩存區(qū)的數據移動至發(fā)送緩存區(qū)發(fā)送給主機;步驟B-1-2:更新所述發(fā)送指針和所述發(fā)送數據變量;本實施例中,將所述發(fā)送指針的值更新為其當前值加上本次發(fā)送數據的長度,將所述發(fā)送數據變量的值更新為其當前值減去本次發(fā)送數據的長度;步驟B-2:判斷當前第二操作指針與當前發(fā)送指針的差值是否大于第三預設值,是則執(zhí)行步驟B-3 ;否則中斷返回;步驟B-3 :執(zhí)行相應的發(fā)送處理并更新所述發(fā)送數據變量和所述發(fā)送指針,中斷返回;本實施例中執(zhí)行相應的發(fā)送處理并更新所述發(fā)送數據變量和所述發(fā)送指針具體見步驟B-1-1至B-1-2,在此不再贅述;需要說明的是,步驟102中可以不包括打開發(fā)送端點中斷,當步驟112中所述USBkey設備判斷當前第二操作指針的值與當前發(fā)送指針的值不相等時才打開發(fā)送端點中斷;當USBkey設備執(zhí)行完發(fā)送端點中斷操作后,若未接收到其他的中斷信號則返回主程序繼續(xù)執(zhí)行接收中斷信號時正在處理的步驟;所述接收中斷信號時正在處理的步驟可以為任意步驟;本發(fā)明實施例針對USBkey設備對數據進行加密處理時,通過端點中斷方式接收/發(fā)送數據,實現(xiàn)數據的收發(fā)與數據處理同步,減少USBkey設備的等待時間,提高了數據操作速率。實施例三本發(fā)明實施例三提供了一種提高數據操作速率的方法,下面結合圖2對所述方法進行介紹。如圖2所示,一種提高數據操作速率的方法,具體包括以下步驟步驟201 =USBKey設備上電;步驟202 =USBKey設備對接收指針、發(fā)送指針、第一操作指針以及第二操作指針進行初始化,打開接收端點中斷和發(fā)送端點中斷,等待接收端點中斷進入接收中斷處理,待中斷返回后執(zhí)行步驟203;本實施例中,所述USBkey設備對接收指針、發(fā)送指針、第一操作指針和第二操作指針進行初始化具體為將所述接收指針和所述第一操作指針的值分別設置為第一緩存區(qū)的基地址,將所述發(fā)送指針和所述第二操作指針的值設置為第二緩存區(qū)的基地址;所述接收指針用于指示接收的數據的位置;所述發(fā)送指針用于指示發(fā)送的數據的位置;所述第一操作指針用于指示已操作數據的位置;所述第二操作指針用于指示操作后得到的數據在第二緩存區(qū)中的的位置。具體地,在本實施例中,所述USBkey設備接收到接收端點中斷時進入接收中斷處理具體包括A-1:將接收端點接收的數據移動至第一緩存區(qū);A-2:更新接收指針和接收數據變量,中斷返回;具體地,將所述接收指針的值更新為其當前值加上本次接收的數據的長度;將所述接收數據變量的值更新為其當前值加上本次接收的數據的長度;需要說明的是,當USBkey設備執(zhí)行完接收中斷處理后,若未接收到其他的中斷信號則返回主程序繼續(xù)執(zhí)行接收到接收端點中斷時正在處理的步驟;步驟203 =USBKey設備判斷當前接收指針與當前第一操作指針的偏差值是否大于協(xié)議頭長度,是則執(zhí)行步驟204;否則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟203 ;具體地,本實施例中所述協(xié)議頭的長度為31 ;
步驟204 =USBKey設備從第一緩存區(qū)獲取協(xié)議頭并對其進行解析,獲取數據長度、方向標識以及命令操作類型;本實施例中所述協(xié)議頭包括31個字節(jié),具體地,獲取所述協(xié)議頭的第8-11個字節(jié)得到數據長度,獲取所述協(xié)議頭的第12個字節(jié)得到方向標識;獲取所述協(xié)議頭的第16-19個字節(jié)得到所述命令操作類型;需要說明的是,所述命令操作類型還可以通過解析命令頭獲?。徊襟E205 =USBKey設備根據所述數據長度更新接收數據變量,根據所述命令操作類型設置操作類型標識,并更新所述第一操作指針;步驟206 =USBKey設備判斷所述方向標識的值,如果所述方向標識的值為第一數值,則執(zhí)行步驟207 ;如果所述方向標識的值為第二數值,則執(zhí)行步驟212 ;具體地,在本實施例中,所述第一數值的取值為O ;所述第二數值的取值為I ;步驟207 =USBKey設備判斷當前接收指針與當前第一操作指針的偏差值是否大于第二預設值,是則執(zhí)行步驟208;否則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟207 ;在本實施例中,所述第二預設值為每次處理的數據長度,根據所述操作類型標識
確定第二預設值;步驟208 =USBKey設備根據所述操作類型標識判斷所述操作數據的類型,若所述操作數據類型為加解密數據類型,則執(zhí)行步驟209 ;若所述操作數據類型為其他數據類型,則執(zhí)行步驟210 ;步驟209 =USBKey設備對所述操作數據進行加解密處理得到結果數據,并更新所述第一操作指針和所述第二操作指針,執(zhí)行步驟211 ;本實施例中,將所述第一操作指針的值更新為其當前值加上第二預設值;將所述第二操作指針的值更新為其當前值加上結果數據的長度;步驟210 =USBKey設備根據所述操作數據的數據類型執(zhí)行相應的操作得到結果數據,并更新所述第一操作指針和所述第二操作指針,順序執(zhí)行步驟211 ;本實施例中,將所述第一操作指針的值更新為其當前值加上第二預設值;將所述第二操作指針的值更新為其當前值加上結果數據的長度;步驟211 =USBKey設備判斷當前接收指針的值與所述第一操作指針的值是否相等,是則執(zhí)行步驟212 ;否則返回步驟207 ;步驟212 =USBKey設備判斷當前第二操作指針與當前發(fā)送指針的值是否相等,是則返回步驟203 ;否則等待發(fā)送端點中斷進入發(fā)送中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟212 ;在本實施例中,所述USBkey設備接收到發(fā)送端點中斷時進入發(fā)送中斷處理具體為步驟B-1 :所述USBKey設備判斷發(fā)送數據變量的值是否小于第三預設值,是則執(zhí)行相應發(fā)送操作并更新所述發(fā)送數據變量和所述發(fā)送指針,返回步驟203 ;否則執(zhí)行步驟B-2;本實施例中第三預設值指每次發(fā)送數據的長度,執(zhí)行相應的發(fā)送操作并更新所述發(fā)送數據變量和所述發(fā)送指針具體為
步驟B-1-1 :將第二緩存區(qū)的數據移動至發(fā)送緩存區(qū)發(fā)送給主機;在本實施例中,所述USBKey設備將命令的執(zhí)行狀態(tài)返回給主機,具體的0x00表示命令成功執(zhí)行,0x01表示命令執(zhí)行失敗,0x02表示階段錯誤;需要說明的是,通常命令都能夠成功完成,只需要設置前面兩個字段為相應的值即可滿足要求;具體的在本實施例中所述協(xié)議頭解析完返回給主機的數據具體為13個字節(jié),具體包括字段標識,命令狀態(tài)的標簽,命令完成時的剩余字節(jié)數等;步驟B-1-2 :更新所述發(fā)送指針和所述發(fā)送數據變量;本實施例中,將所述發(fā)送指針的值更新為其當前值加上本次發(fā)送數據的長度,將所述發(fā)送數據變量的值更新為其當前值減去本次發(fā)送數據的長度;步驟B-2:所述USBKey設備判斷當前第二操作指針與當前發(fā)送指針的偏差值是否大于第三預設值,是則執(zhí)行步驟B-3 ;否則中斷返回;步驟B-3 :所述USBKey設備執(zhí)行相應的發(fā)送操作并更新所述發(fā)送數據變量和所述發(fā)送指針,中斷返回;本實施例中執(zhí)行相應發(fā)送操作并更新所述發(fā)送數據變量和所述發(fā)送指針具體見步驟B-1-1至B-1-2,在此不再贅述。需要說明的是,步驟202中可以不包括打開發(fā)送端點中斷,當步驟212中所述USBkey設備判斷當前第二操作指針的值與當前發(fā)送指針的值不相等時才打開發(fā)送端點中斷;當USBkey設備執(zhí)行完發(fā)送端點中斷操作后,若未接收到其他的中斷信號則返回主程序繼續(xù)執(zhí)行接收中斷信號時正在處理的步驟;所述接收中斷信號時正在處理的步驟可以為任意步驟;本發(fā)明實施例針對USBkey設備對數據進行加密處理時,通過端點中斷方式接收/發(fā)送數據,實現(xiàn)數據的收發(fā)與數據處理同步,減少USBkey設備的等待時間,提高了數據操作速率。實施例四本發(fā)明實施例四提供了一種提高數據操作速率的方法,下面結合圖3對所述方法進行介紹。如圖3所示,一種提高數據操作速率的方法,具體包括以下步驟步驟301 =USBKey設備上電;步驟302 =USBKey設備對接收指針、發(fā)送指針、第一操作指針以及第二操作指針進行初始化,打開接收端點中斷和發(fā)送端點中斷,等待接收端點中斷進入接收中斷處理,待中斷返回后執(zhí)行步驟303;本實施例中,所述USBkey設備對接收指針、發(fā)送指針、第一操作指針和第二操作指針進行初始化具體為將所述接收指針和所述第一操作指針的值分別設置為第一緩存區(qū)的基地址,將所述發(fā)送指針和所述第二操作指針的值設置為第二緩存區(qū)的基地址;所述接收指針用于指示接收的數據的位置;所述發(fā)送指針用于指示發(fā)送的數據的位置;所述第一操作指針用于指示已操作數據的位置;所述第二操作指針用于指示操作后得到的數據在第二緩存區(qū)中的的位置。具體地,在本實施例中,所述USBkey設備接收到接收端點中斷時進入接收中斷處理具體包括A-1:將接收端點接收的數據移動至第一緩存區(qū);A-2:更新接收指針和接收數據變量,中斷返回;具體地,將所述接收指針的值更新為其當前值加上本次接收的數據的長度;將所述接收數據變量的值更新為其當前值加上本次接收的數據的長度;步驟303 =USBKey設備判斷當前接收指針與當前第一操作指針的偏差值是否大于協(xié)議頭長度,是則執(zhí)行步驟304;否則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟303 ;具體地,本實施例中所述協(xié)議頭的長度為10 ;步驟304 =USBKey設備從第一緩存區(qū)中獲取協(xié)議頭并對其進行解析,獲取數據長度以及命令操作類型;本實施例中,所述協(xié)議頭包括10個字節(jié),具體地獲取所述協(xié)議頭的第I個字節(jié)得到所述命令操作類型,獲取第2-5個字節(jié)得到數據長度;步驟305 =USBKey設備根據所述數據長度更新接收數據變量,根據所述命令操作類型設置操作類型標識,并更新所述第一操作指針;本實施例中,所述操作類型標識用于標識命令操作類型,所述更新所述第一操作指針具體為將所述第一操作指針的值更新為其當前值加上協(xié)議頭的長度;步驟306 =USBKey設備判斷當前接收指針與當前第一操作指針的偏差值是否大于第二預設值,是則執(zhí)行步驟307;否則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟306 ;本實施例中,所述第二預設值為每次處理的數據長度;步驟307 =USBKey設備根據操作類型標識判斷所述操作數據的類型,若所述操作數據的類型為加解密數據類型,則執(zhí)行步驟308 ;若所述操作數據的類型為其他數據類型,則執(zhí)行步驟309 ;步驟308 =USBKey設備對所述操作數據進行加解密處理得到結果數據,并更新所述第一操作指針和第二操作指針,執(zhí)行步驟310 ;本實施例中,將所述第一操作指針的值更新為其當前值加上所述第二預設值,將所述第二操作指針的值更新為其當前值加上結果數據的長度;步驟309 =USBKey設備根據所述操作數據的數據類型執(zhí)行相應的操作得到結果數據,并更新所述第一操作指針和所述第二操作指針,順序執(zhí)行步驟310 ;本實施例中,將所述第一操作指針的值更新為其當前值加上所述第二預設值,將所述第二操作指針的值更新為其當前值加上結果數據的長度;步驟310 USBKey設備判斷當前接收指針與當前第一操作指針的值是否相等,是則執(zhí)行步驟311 ;否則返回步驟306 ;步驟311 =USBKey設備判斷所述第二操作指針與所述發(fā)送指針的值是否相等,是則返回步驟303 ;否則等待發(fā)送端點中斷進入發(fā)送中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟311 ;在本實施例中,所述USBkey設備接收到發(fā)送端點中斷時進入發(fā)送中斷處理具體為
步驟B-1 :所述USBKey設備判斷發(fā)送數據變量的值是否小于第三預設值,是則執(zhí)行相應發(fā)送操作并更新所述發(fā)送數據變量和所述發(fā)送指針,返回步驟303 ;否則執(zhí)行步驟B-2;本實施例中第三預設值指每次發(fā)送數據的長度,執(zhí)行相應的發(fā)送處理并更新所述發(fā)送數據變量和所述發(fā)送指針具體為步驟B-1-1 :將第二緩存區(qū)的數據移動至發(fā)送緩存區(qū)發(fā)送給主機;步驟B-1-2 :更新所述發(fā)送指針和所述發(fā)送數據變量;本實施例中,將所述發(fā)送指針的值更新為其當前值加上本次發(fā)送數據的長度,將所述發(fā)送數據變量的值更新為其當前值減去本次發(fā)送數據的長度;步驟B-2:所述USBKey設備判斷當前第二操作指針與當前發(fā)送指針的偏差值是否大于第三預設值,是則執(zhí)行步驟B-3 ;否則中斷返回;步驟B-3 :所述USBKey設備執(zhí)行相應的發(fā)送操作并更新所述發(fā)送數據變量和所述發(fā)送指針,中斷返回;本實施例中執(zhí)行相應發(fā)送操作并更新所述發(fā)送數據變量和所述發(fā)送指針具體見步驟B-1-1至B-1-2,在此不再贅述。需要說明的是,步驟302中可以不包括打開發(fā)送端點中斷,當步驟311中所述USBkey設備判斷當前第二操作指針的值與當前發(fā)送指針的值不相等時才打開發(fā)送端點中斷;當USBkey設備執(zhí)行完發(fā)送端點中斷操作后,若未接收到其他的中斷信號則返回主程序繼續(xù)執(zhí)行接收中斷信號時正在處理的步驟;所述接收中斷信號時正在處理的步驟可以為任意步驟;本發(fā)明實施例針對USBkey設備對數據進行加密處理時,通過端點中斷方式接收/發(fā)送數據,實現(xiàn)數據的收發(fā)與數據處理同步,減少USBkey設備的等待時間,提高了數據操作速率。以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明公開的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應該以權利要求的保護范圍為準。
權利要求
1.一種提高數據操作速率的方法,其特征在于,包括操作處理和中斷處理,其中所述操作處理具體包括①-④ ①、USBKey上電并進行初始化; ②、所述USBKey判斷當前接收指針與當前第一操作指針的偏差值是否小于協(xié)議頭長度,是則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟②,否則解析協(xié)議頭的內容并更新所述第一操作指針,執(zhí)行步驟③; ③、所述USBKey判斷當前接收指針與當前第一操作指針的偏差值是否小于第二預設值,是則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟③;否則根據操作類型標識執(zhí)行相應的操作,得到結果數據,并更新所述第一操作指針,執(zhí)行步驟④; ④、所述USBKey判斷當前接收指針的值與當前第一操作指針的值是否相等,如果相等則發(fā)送得到的結果數據;如果不相等則返回步驟③; 當所述USBKey接收到接收端點中斷時進入接收中斷處理,包括 ⑤、所述USBKey將所接收的數據移動至第一緩存區(qū)并更新所述接收指針,并中斷返回。
2.如權利要求1所述的方法,其特征在于,所述USBKey進行初始化,具體包括 所述USBKey將接收指針和第一操作指針的值分別設置為第一緩存區(qū)的基地址,打開接收端點中斷,等待接收端點中斷進入接收中斷處理; 其中,所述接收指針用于指示接收的數據的位置;所述第一操作指針用于指示已操作數據的位置。
3.如權利要求1所述的方法,其特征在于,所述步驟②具體包括 判斷當前接收指針與當前第一操作指針的偏差值是否小于31,是則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟②,否則解析協(xié)議頭的內容并更新所述第一操作指針,執(zhí)行步驟③。
4.如權利要求1所述的方法,其特征在于,所述步驟②具體包括 判斷當前接收指針與當前第一操作指針的偏差值是否小于10,是則等待接收端點中斷進入接收中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟②,否則解析協(xié)議頭的內容并更新所述第一操作指針,執(zhí)行步驟③。
5.如權利要求1所述的方法,其特征在于,所述第二預設值具體為每次處理的數據長度。
6.如權利要求1所述的方法,其特征在于,所述解析協(xié)議頭的內容并更新所述第一操作指針具體包括 從第一緩存區(qū)中獲取所述協(xié)議頭內容并對其進行解析得到數據長度和命令操作類型,根據命令操作類型設置操作類型標識,將所述第一操作指針的值更新為其當前值加上協(xié)議頭長度。
7.如權利要求3所述的方法,其特征在于,所述解析協(xié)議頭的內容并更新所述第一操作指針具體為 從所述第一緩存區(qū)中獲取所述協(xié)議頭的內容,從所述協(xié)議頭的第8-11個字節(jié)得到所述數據長度;從所述協(xié)議頭的第12個字節(jié)得到方向標識,根據所述方向標識的值執(zhí)行相應操作;從所述協(xié)議頭的第16-19個字節(jié)得到所述命令操作類型,根據命令操作類型設置所述操作類型標識;將所述第一操作指針的值更新為其當前值加上31。
8.如權利要求7所述的方法,其特征在于,所述根據所述方向標識的值執(zhí)行相應操作具體為 判斷所述方向標識的值,若所述方向標識的值為第一數值,則執(zhí)行步驟③;若所述方向標識的值為第二數值,則執(zhí)行步驟⑤。
9.如權利要求4所述的方法,其特征在于,所述解析協(xié)議頭內容并更新所述第一操作指針具體為 從所述第一緩存區(qū)中獲取所述協(xié)議頭的內容,從所述協(xié)議頭的第I個字節(jié)得到所述命令操作類型,根據命令操作類型設置所述操作類型標識;從所述協(xié)議頭的第2-5個字節(jié)得到所述數據長度,將所述第一操作指針的值更新為其當前值加上10。
10.如權利要求1所述的方法,其特征在于,所述根據操作類型標識執(zhí)行相應的操作,得到結果數據,并更新所述第一操作指針,具體為 根據所述操作類型標識判斷當前操作數據是否為加解密數據類型,是則進行加解密處理,并將所述第一操作指針的值更新為其當前值加上所述第二預設值;否則根據數據類型執(zhí)行相應操作,并將第一操作指針的值更新為其當前值加上所述第二預設值。
11.如權利要求1所述的方法,其特征在于,所述更新所述接收指針,具體為 將所述接收指針的值更新為其當前值加上本次接收數據的長度。
12.如權利要求1所述的方法,其特征在于,所述結果數據中包括命令的執(zhí)行狀態(tài)。
13.如權利要求12所述的方法,其特征在于,所述命令的執(zhí)行狀態(tài)具體包括 表示命令成功執(zhí)行的0x00、表示命令執(zhí)行失敗的0x01以及表示階段錯誤的0x02。
14.根據權利要求1所述的方法,其特征在于,還設置有發(fā)送端點中斷,并相應設置有第二操作指針和發(fā)送指針,其中,所述第二操作指針用于指示操作后得到的結果數據的位置,所述發(fā)送指針用于指示發(fā)送的數據的位置,相應地,所述步驟③中得到結果數據,更新所述第一操作指針還包括更新第二操作指針; 所述發(fā)送得到的結果數據具體包括 ⑥、所述USBKey判斷當前第二操作指針的值與當前發(fā)送指針的值是否相等,若相等則返回步驟②,若不相等則等待發(fā)送端點中斷進入發(fā)送中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟⑥; 當所述USBKey接收到發(fā)送端點中斷時進入發(fā)送中斷處理,包括 ⑦、所述USBKey判斷當前發(fā)送數據變量的值是否小于第三預設值,是則執(zhí)行相應的發(fā)送處理并更新所述發(fā)送數據變量和所述發(fā)送指針,返回步驟②;否則執(zhí)行步驟⑧; ⑧、所述USBKey判斷當前第二操作指針與當前發(fā)送指針的差值是否大于第三預設值,是則執(zhí)行相應的發(fā)送處理并更新所述發(fā)送數據變量和所述發(fā)送指針,并中斷返回;否則中斷返回。
15.如權利要求14所述的方法,其特征在于,所述USBKey進行初始化時還包括打開發(fā)送端點中斷。
16.如權利要求14所述的方法,其特征在于,所述步驟⑥中當當前第二操作指針的值與當前發(fā)送指針的值不相等時,首先打開發(fā)送端點中斷,然后再等待發(fā)送端點中斷進入發(fā)送中斷處理,待中斷返回后繼續(xù)執(zhí)行步驟⑥。
17.如權利要求14所述的方法,其特征在于 所述第三預設值具體為每次發(fā)送數據的長度; 所述更新所述發(fā)送數據變量和所述發(fā)送指針具體包括將所述發(fā)送指針的值更新為其當前值加上本次發(fā)送數據的長度,將所述發(fā)送數據變量的值更新為其當前值減去本次發(fā)送數據的長度。
18.如權利要求14所述的方法,其特征在于,所述結果數據存儲在第二緩存區(qū)中,所述第二操作指針具體用于指示操作后得到的結果數據在第二緩存區(qū)中的的位置,所述USBKey進行初始化時還包括所述USBKey將發(fā)送指針和第二操作指針的值設置為第二緩存區(qū)的基地址。
19.如權利要求18所述的方法,其特征在于,所述發(fā)送處理具體為將所述第二緩存區(qū)中的數據移動至發(fā)送緩存區(qū)進行發(fā)送。
全文摘要
本發(fā)明公開了一種提高數據操作速率的方法,屬于信息安全領域。所述方法包括①USBKey上電初始化;②判斷接收指針與第一操作指針的偏差值是否小于協(xié)議頭長度,是則等待接收端點中斷且待中斷返回后繼續(xù)執(zhí)行②,否則解析協(xié)議頭的內容并更新第一操作指針,執(zhí)行③;③判斷接收指針與第一操作指針的偏差值是否小于第二預設值,是則等待接收端點中斷且待中斷返回后繼續(xù)執(zhí)行③;否則根據操作類型標識執(zhí)行相應操作得到結果數據,并更新第一操作指針,執(zhí)行④;④判斷接收指針的值與第一操作指針的值是否相等,是則發(fā)送得到的結果數據;否則返回③。本發(fā)明的有益效果在于,實現(xiàn)數據收發(fā)與處理同步,減少USBkey等待時間,提高數據操作速率。
文檔編號G06F9/48GK103049706SQ20121047704
公開日2013年4月17日 申請日期2012年11月21日 優(yōu)先權日2012年11月21日
發(fā)明者陸舟, 于華章 申請人:飛天誠信科技股份有限公司