TWI397821B - 資料串傳送方法、系統及其控制器 - Google Patents
資料串傳送方法、系統及其控制器 Download PDFInfo
- Publication number
- TWI397821B TWI397821B TW098101917A TW98101917A TWI397821B TW I397821 B TWI397821 B TW I397821B TW 098101917 A TW098101917 A TW 098101917A TW 98101917 A TW98101917 A TW 98101917A TW I397821 B TWI397821 B TW I397821B
- Authority
- TW
- Taiwan
- Prior art keywords
- host
- data
- data string
- peripheral device
- read
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Description
本發明是有關於一種資料串傳送方法、系統及其控制器,且特別是有關於一種適用於從主機傳遞資料至具有晶片的週邊裝置的資料串傳送方法、系統及其控制器。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於快閃記憶體(Flash Memory)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
另一方面,隨著使用者逐漸接受使用電子錢包及預付儲值,使得智慧卡的使用日益普及。智慧卡(Smart Card)是具有例如微處理器、卡操作系統、安全模組及記憶體之組件的積體電路晶片(IC晶片),以允許持有者執行預定操作。智慧卡提供計算、加密、雙向通信及安全功能,使得這張卡片除了儲存資料的功能外還能達到對其所儲存的資料加以保護的功能。使用全球行動通信系統(GSM)機制之蜂巢式電話中所使用的用戶識別模組(Subscriber Identification Module,SIM)卡為智慧卡的其中一個應用範例。然而,智慧卡本身受限於儲存容量,因此近年來開始與大量儲存裝置的記憶卡作結合,以擴增智慧卡的儲存容量。
在習知技術中,結合快閃記憶體與智慧卡的應用是透過特殊命令來區別傳送給智慧卡或快閃記憶體的資料,此特殊命令可能會造成硬體裝置或驅動程式無法支援的問題。此外,在習知技術中是比對此特殊命令中關於所傳送資料串的型態資訊來判斷此資料串是否為智慧卡的命令格式。然而,此方法往往會造成一般檔案資料與屬於智慧卡的命令格式碰撞的問題(即將一般檔案資料誤判為智慧卡的資料串)。
另外,在一些具有快取記憶體(Cache)之電子產品的應用中,因這些電子產品本身的限制,智慧卡與電子產品之間資料串的傳遞並無法繞過快取記憶體,而使得智慧卡所產生的回應訊息並無法被無誤地回傳至所依附的電子產品,進而限制智慧卡在這類具有快取記憶體之電子產品上的應用。舉例來說,在一個Java系統的行動電話中,因Java系統並不支援諸如NO Cache等不須透過快取記憶體而直接地對快取記憶體進行存取的指令,故很難將智慧卡和快閃記憶體以整合為記憶卡的形式應用在這類Java系統的行動電話中。請參考圖1,圖1為習知搭配記憶卡12之主機10的功能方塊圖。主機10為一種電子產品(如:Java系統的行動電話),並具有快取記憶體14,而記憶卡12具有快閃記憶體16和智慧卡晶片18。主機10與記憶卡12之間的資料傳遞路徑都會經過快取記憶體14。然而,因為快取記憶體14會暫存最近主機10與記憶卡12之間所傳遞的資料之緣故,當主機10欲從智慧卡晶片18獲得資料時,若快取記憶體14內已經存有與讀取指令相符的資料時,則快取記憶體14就會將相符的資料傳送至主機10。然而,在這樣的架構下,智慧卡晶片18的回應訊息往往會被快取記憶體14已有的資料所取代,而使得智慧卡晶片18的加密及安全通信的功能大受影響。
基此,有需要發展一套能夠在智慧卡的相關應用中無誤地傳遞智慧卡之回應訊息的系統和方法。
本發明提供一種資料串傳送系統及其控制器,能夠無誤地傳遞智慧卡之回應訊息。
本發明提供一種資料串傳送方法,能夠無誤地傳遞智慧卡之回應訊息。
本發明所提供的資料串傳送方法、系統及其控制器,除了可應用在結合快閃記憶體與智慧卡的應用中,還另可應用在其他晶片與快閃記憶體的結合應用中,以無誤地傳遞晶片之回應訊息,而上述晶片可以是射頻識別晶片、無線傳輸晶片(如:藍芽晶片)或多媒體控制晶片(如:數位錄音晶片)。
本發明提出一種資料串傳送方法,其適用於從主機傳遞資料串至具有的週邊裝置。此資料串傳送方法包括:產生一寫入符記,並將該寫入符記藏於一第一資料串中;傳送一第一寫入指令至該週邊裝置,該第一寫入指令被設定為寫入該第一資料串至該週邊裝置;傳送該第一資料串的至少一部份至該晶片,並記錄該第一資料串中的該寫入符記;以及依序地傳送複數個讀取指令至該週邊裝置,直到該主機自該週邊裝置接收到一第一回應訊息為止,其中該第一回應訊息的一預設資料區內的資料為該晶片因接收到該第一資料串的至少一部份而產生,且該第一回應訊息含有該寫入符記,而該複數個讀取指令被設定為讀取複數個邏輯區塊位址上的資料。
本發明提出一種資料串傳送系統,其適用於在主機和具有晶片的週邊裝置之間的資料串傳送。此資料串傳送系統包括應用程式以及控制器。應用程式安裝於主機上並且用以操作週邊裝置。控制器設置於週邊裝置中,並且電性連接至晶片。其中主機會產生一寫入符記,並將該寫入符記藏於一第一資料串中。主機會執行應用程式會以送一寫入指令至控制器,寫入指令被設定為寫入第一資料串至週邊裝置。控制器會傳送第一資料串的至少一部份至該晶片,並記錄該第一資料串中的寫入符記。當主機執行該應用程式時,該主機會依序地傳送複數個讀取指令至該週邊裝置,直到從該控制器接收到一第一回應訊息為止,其中該第一回應訊息的一預設資料區內的資料為該晶片因接收到該第一資料串的至少一部份而產生,且該第一回應訊息含有該寫入符記,而該複數個讀取指令被設定為讀取複數個邏輯區塊位址上的資料。
本發明提出一種控制器,其適用於具有晶片的週邊裝置。此控制器包括一微處理單元以及一緩衝記憶體。上述微處理單元用以控制控制器的整體運作,而上述緩衝記憶體用以暫時地儲存資料。其中微處理單元會將來自於一主機的第一資料串的至少一部份傳送至該晶片,並記錄該第一資料串中的一寫入符記。在該第一資料串的至少一部份被傳送至該晶片之後,以及在該微處理單元傳送一第一回應訊息至該主機之前,該微處理單元會依序地傳送一第二回應訊息至該主機,以回應來自該主機的複數個讀取指令。其中該第一回應訊息的一預設資料區內的資料為該晶片因接收到該第一資料串的至少一部份而產生。當該微處理單元自該晶片接收到該第一回應訊息的該預設資料區內的資料之後,該微處理單元會將該第一回應訊息傳送至該主機,而該第一回應訊息含有該寫入符記。
本發明提出一種應用程式,其安裝在一主機中。其中該主機會藉由執行該應用程式,以進行上述的資料串傳送方法,進而控制該主機和具有晶片的週邊裝置之間的資料串傳送。
在本發明之一實施例中,上述資料串傳送方法更包括:判斷該主機傳送至該週邊裝置的任一資料串中是否含有一特定標記;以及倘若該主機傳送至該週邊裝置的資料串中含有該特定標記,則含有該特定標記的資料串的至少一部份會被傳送至該晶片。
在本發明之一實施例中,上述週邊裝置更包括一非揮發性記憶體,而上述資料串傳送方法更包括:倘若該主機傳送至該週邊裝置的資料串中未含有該特定標記,則將未含有該特定標記的該資料串寫入至該非揮發性記憶體。
在本發明之一實施例中,上述週邊裝置更包括一非揮發性記憶體,而上述資料串傳送方法更包括:判斷任一個從該主機傳送至該週邊裝置的讀取指令是否被設定為讀取該複數個邏輯區塊位址上的資料;以及對任一讀取指令而言,倘若該讀取指令並非被設定為讀取該複數個邏輯區塊位址上的資料,則依據該讀取指令所指派的位址從該非揮發性記憶體中讀取對應的資料。
在本發明之一實施例中,上述資料串傳送方法更包括:當產生該寫入符記後,記錄該寫入符記於該主機;以及比對該週邊裝置回傳至該主機的回應訊息中的寫入符記是否與記錄於該主機的該寫入符記一致。
在本發明之一實施例中,上述資料串傳送方法更包括:倘若該週邊裝置回傳至該主機的回應訊息中的寫入符記與記錄於該主機的該寫入符記並不一致,則繼續傳送讀取指令至該週邊裝置,直到接收到該第一回應訊息為止。
在本發明之一實施例中,上述資料串傳送方法更包括:當產生該寫入符記後,記錄該寫入符記於該主機;以及在該主機傳送一第二寫入指令至該週邊裝置以將資料傳送至該晶片之前,更新該主機所記錄的該寫入符記,並將更新後的該寫入符記隨著該第二寫入指令傳送至該週邊裝置。
在本發明之一實施例中,上述資料串傳送方法更包括:回應該複數個讀取指令,而將對應的讀取符記加入至回傳給該主機的回應訊息中;以及判斷該主機所接收到的回應訊息中的讀取符記是否與一系統設定值一致。
在本發明之一實施例中,上述資料串傳送方法更包括:當該週邊裝置回傳至該主機的回應訊息中的寫入符記與記錄於該主機的寫入符記一致,且該主機所接收到的回應訊息中的該讀取符記與該系統設定值一致時,判斷該主機所連續接收到的至少三個回應訊息中的讀取符記之間的差值是否為一定值。
在本發明之一實施例中,其中該至少三個回應訊息所對應的多個讀取指令被設定成讀取該複數個邏輯區塊位址中多個彼此不相鄰的邏輯區塊位址上的資料。
在本發明之一實施例中,上述主機每傳送該複數個讀取指令當中的任一個讀取指令至該週邊裝置後,該主機會執行一第三寫入指令,以將資料寫入至該週邊裝置的一暫存檔。
在本發明之一實施例中,當上述主機傳送該第一寫入指令至該週邊裝置後,該主機執行該第三寫入指令,以將資料寫入至該暫存檔。
在本發明之一實施例中,當上述暫存檔的大小超過一預設資料量時,該控制器會清除該暫存檔。
在本發明之一實施例中,上述任兩個接續地回傳給該主機的回應訊息中的讀取符記,皆相差一預設值。
在本發明之一實施例中,上述寫入符記為依據一系統時間產生。
在本發明之一實施例中,上述寫入符記為一亂數值。
在本發明之一實施例中,上述複數個邏輯區塊位址上的資料屬於單一特定檔案。
在本發明之一實施例中,上述週邊裝置更包括一非揮發性記憶體,而上述資料串傳送方法更包括:判斷該單一特定檔案是否存在於該非揮發性記憶體內;以及倘若該單一特定檔案尚未存在於該非揮發性記憶體內,則在該非揮發性記憶體內建立該單一特定檔案。
在本發明之一實施例中,上述複數個邏輯區塊位址上的資料屬於多個特定檔案。
在本發明之一實施例中,上述週邊裝置更包括一非揮發性記憶體,而上述資料串傳送方法更包括:判斷該多個特定檔案是否存在於該非揮發性記憶體內;以及倘若該多個特定檔案的任何一個特定檔案尚未存在於該非揮發性記憶體內,則在該非揮發性記憶體內建立還尚未建立的特定檔案。
在本發明之一實施例中,上述主機包括一快取記憶體,該主機與該週邊裝置之間所有指令與資料的傳遞皆會通過該快取記憶體。
在本發明之一實施例中,上述複數個邏輯區塊位址上的資料之總和大於或等於該快取記憶體的容量。
在本發明之一實施例中,上述週邊裝置實際上並不儲存資料於該複數個邏輯區塊位址。
在本發明之一實施例中,上述資料串傳送方法更包括:每當該週邊裝置接收到該複數個讀取指令的其中一個讀取指令之後,倘若該主機尚未接收到該第一回應訊息,則從該週邊裝置傳送一第二回應訊息至該主機。
在本發明之一實施例中,上述第二回應訊息的一預設資料區內的每個位元所記錄的資料皆為零。
在本發明之一實施例中,上述第一回應訊息的該預設資料區內的每個位元所記錄的資料不全為零。
在本發明之一實施例中,上述晶片為智慧卡晶片、射頻識別晶片、無線傳輸晶片或多媒體控制晶片。
在本發明之一實施例中,上述週邊裝置為SD記憶卡或MMC記憶卡。
在本發明之一實施例中,上述晶片相容於ISO 7816標準或ISO 14443標準。
在本發明之一實施例中,上述非揮發性記憶體為單層記憶胞(Single Level Cell,SLC)反及(NAND)快閃記憶體或多層記憶胞(Multi Level Cell,MLC)反及(NAND)快閃記憶體。
在本發明之一實施例中,上述第一資料串的至少一部份為一指令-應用程式協定資料單元(Command-Application Protocol Data Unit,C-APDU),而第一回應訊息為一回應-應用程式協定資料單元(Response-Application Protocol Data Unit,R-APDU)。
基於上述,本發明藉由在不同的寫入指令中嵌入寫入符記,並使回應訊息中包含有對應的寫入符記,可避免在主機具有快取記憶體的情況下,因關閉應用程式而產生的資料誤判的情況,而更一步地確保資料的正確性。此外,周邊裝置的控制器亦可將對應的讀取符記加到要回傳至主機的資料串中,以進一步地確保當主機前後兩次所產生的寫入符記發生碰撞時,主機仍可正確地判斷是否接收到智慧卡所產生的回應訊息。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉較佳實施例,並配合所附圖式,作詳細說明如下。
本發明提供一種資料串傳送方法、系統及其控制器,其適用於在主機和具有晶片的週邊裝置之間的資料串傳送。上述系統包括應用程式與控制器,而應用程式與控制器是分別地安裝和設置在主機與週邊裝置。此外,資料串得以藉由寫入指令而被傳送至晶片。之後,藉由執行複數個讀取指令,晶片所產生的回應訊息可無誤地被接收。其中,一寫入符記會被用來檢驗回傳資料的正確性,以使主機得以區別所接收到回應訊息是暫存在快取記憶體中的前次回應訊息,亦或是本次晶片所產生的回應訊息。以下將以數個範例實施例並配合所附圖式來詳細說明本發明。但必須瞭解的是,此些範例實施例並非限制本發明,舉例來說,本發明所提供的資料串傳送方法、系統及其控制器,除了可應用在具有快取記憶體的主機與晶片之間的資料串傳遞,以無誤地傳遞晶片之回應訊息,而上述晶片可以是射頻識別(Radio Frequency Identification,RFID)晶片、無線傳輸晶片(如:藍芽晶片)或多媒體控制晶片(如:數位錄音晶片)…等。
請參照圖2,圖2是根據本發明第一實施例繪示的資料串傳送系統的概要方塊圖。資料串傳送系統包括應用程式206與控制器110。應用程式206是安裝在主機200內,而控制器110是設置在週邊裝置100內,用以控制週邊裝置100的操作,以及控制週邊裝置100與主機200之間的資料傳遞。詳細地說,應用程式可儲存於主機內之一控制器中(圖未示),該控制器可具有一微處理器單元(圖未示)、一緩衝記憶體(圖未示),及一資料串傳送模組(圖未示)。其中,緩衝記憶體及資料串傳送模組分別耦接至微處理器單元資料傳送模組。此外,通常週邊裝置100會與主機200一起使用,以使主機200可將指令和資料傳送到周邊裝置100。特別是,週邊裝置100還包括用以執行安全驗證等功能的智慧卡晶片140,而控制器110以及執行應用程式206的主機200可執行根據本發明實施例的資料傳送方法,以將訊息傳送至智慧卡晶片140並無誤地回傳智慧卡晶片140的回應訊息至主機200。主機200另包括快取記憶體212,用以暫存主機200最近曾使用過的資料,以提升主機200整體的資料處理速度。
在本實施例中,週邊裝置100具有用以儲存一般資料的非揮發性記憶體130,電性連接控制器110。然而,須說明的,非揮發性記憶體130對本發明來說是選擇性的元件,而非必要的元件。控制器110會控制週邊裝置100的整體運作,例如資料串的傳遞、儲存、讀取與抹除等。控制器110包括微處理單元110a、快閃記憶體介面110b與緩衝記憶體110c。微處理單元110a會執行應用程式206所傳送過來的指令,並協調控制器110內的各個元件以控制控制器110的整體運作。快閃記憶體介面110b電性連接至微處理單元110a,並且用以存取非揮發性記憶體130。換言之,主機200欲寫入至非揮發性記憶體130的資料會經由快閃記憶體介面110b轉換為非揮發性記憶體130所能接受的格式。然而,須說明的,因非揮發性記憶體130對本發明來說是選擇性的元件,而非必要的元件。故在本發明的其他不具非揮發性記憶體130的實施例當中,控制器110不必具有記憶體介面110b。緩衝記憶體110c用以暫時地儲存系統資料(例如邏輯實體對映表)或者主機200所讀取或寫入的資料。在本實施例中,緩衝記憶體110c為靜態隨機存取記憶體(static random access memory,SRAM)。然而,必須瞭解的是,本發明不限於此,動態隨機存取記憶體(Dynamic Random Access memory,DRAM)、磁阻式記憶體(Magnetoresistive Random Access Memory,MRAM)、相變化記憶體(Phase Change Random Access Memory,PRAM)、同步動態隨機存取記憶體(Synchronous DRAM,SDRAM)或其他適合的記憶體亦可應用於本發明。
智慧卡晶片140電性連接控制器110,並且用以執行計算、加密、雙向通信及安全認證等功能。在本發明實施例中,智慧卡晶片140為相容於ISO 7816標準的接觸式智慧卡晶片。然而,必須瞭解的是,本發明不限於此。例如,智慧卡晶片140亦可是相容於ISO 14443、ISO 15408或其他安全晶片標準的接觸或非接觸式智慧卡晶片,此外,值得說明的是,控制器110與智慧卡晶片140可各為一獨立晶片,亦可合併封裝為一單一晶片。
在本發明實施例中,非揮發性記憶體130為單層記憶胞(Single Level Cell,SLC)反及(NAND)快閃記憶體。然而,本發明不限於此,在本發明另一實施例中,非揮發性記憶體130為亦可為多層記憶胞(Multi Level Cell,MLC)反及(NAND)快閃記憶體或其他適合的非揮發性記憶體。此外,雖未繪示於本實施例中,但控制器110可更包括錯誤校正模組(ECC Module,Error Correction Code Module)與電源管理模組等功能模組。
在本實施例中,週邊裝置100可為智慧卡或更包含非揮發性記憶體而為一整合性之安全數位(secure digital,SD)記憶卡。但必須瞭解的是,在本發明另一實施例中週邊裝置100亦可以是多媒體卡(Multi Media Card,MMC)記憶卡或其他的記憶裝置。
本實施例中,週邊裝置100除了控制器110、非揮發性記憶體130以及智慧卡晶片140之外還包括匯流排連接介面120。匯流排連接介面120電性連接控制器110,並且用以與主機200連接。在本實施例中,匯流排連接介面120則為一SD介面。必須瞭解的是,匯流排連接介面120亦可為其他適合的介面。例如當週邊裝置100為MMC記憶卡時,匯流排連接介面120為MMC介面。
主機200藉由執行應用程式206來操作週邊裝置100,以完成根據本發明實施例的資料傳送方法。此外,必須瞭解的是主機200亦包含其他元件,例如:處理器、作業系統...等。在本實施例中,主機200與週邊裝置100之間所有指令與資料的傳遞皆會通過快取記憶體212。此外,上述主機200可為個人電腦、行動電話、筆記型電腦、個人數位助理機(PDA)....等。
基此,在主機200在對上述含有智慧卡晶片140的週邊裝置100進行操作時,根據本發明實施例的控制器110配合主機200所執行的應用程式206能夠正確地將資料或指令傳送至智慧卡晶片140,並無誤地將智慧卡晶片140的回應訊息傳遞至主機200。以下將配合圖3至圖6詳細說明控制器110與主機200之間所執行資料傳送程序的流程。其中,圖3是根據本發明第一實施例繪示主機200運作時的流程圖,圖4是根據本發明第一實施例繪示週邊裝置100運作時的流程圖,而圖5是根據圖3和圖4繪示的資料流示意圖,而圖6則繪示主機200兩次與智慧卡晶片140聯繫時的資料流向。
請先參照圖3,每當主機200要傳送資料至智慧卡晶片140之前,主機200會先獲得或產生一寫入符記(Write token)WT,並記錄該寫入符記WT(步驟S401)。其中,寫入符記WT可依一設定之原則產生,如依序、亂數或是依據一系統時間產生,故一般說來,在每次主機200欲傳送資料至智慧卡晶片140時,主機200所獲得的寫入符記WT大多會彼此不同。此外,當主機200傳送寫入指令至智慧卡晶片140時,寫入符記WT會隨著寫入指令被傳送到控制器110,且寫入符記WT亦會被包含在回傳至主機200的資料串中。主機200會比較傳送至控制器110的寫入符記是否與控制器110所回傳的寫入符記一致,以作為在判斷回傳資料是否正確時的依據。
之後,在主機200傳送資料或指令至週邊裝置100的智慧卡晶片140之前,主機200會將所欲傳送資料或指令與一特定標記及寫入符記WT合併,以形成資料串(步驟S403)。如圖7所示,在本實施例中,主機200傳送至控制器110的資料或指令704為一指令-應用程式協定資料單元(Command-Application Protocol Data Unit,C-APDU),而C-APDU 704與特定標記702以及寫入符記706合併後,即可形成資料串700,以作為主機200與智慧卡晶片140之間的聯繫之用。然而須注意的,在本發明週邊裝置100不具有非揮發性記憶體130的其他實施例中,資料串700可不具有特定標記702。亦即,對這些不具有非揮發性記憶體130的實施例而言,特定標記702不必包含在資料串700當中。換言之,在這些不具有非揮發性記憶體130的實施例,當進行步驟S403時,只須合併C-APDU 704與寫入符記706,以形成資料串700。在本實施例中,特定標記702是位於資料串700的數個最高有效字元(Most Significant Bit,MSB)而形成在C-APDU 704之前,寫入符記706則是位於資料串700的數個最低有效字元(Least Significant Bit,LSB)而形成在C-APDU 704之後。然而,須注意的,特定標記702和寫入符記706在資料串700中的位置並不以此為限,例如:在本發明的另一個實施例中,可藉由一編碼器,將特定標記702和寫入符記706的各個位元分散在資料串700之中,之後在藉由相同的編碼器從資料串700中擷取出特定標記702和寫入符記706。另外,在本發明的一實施例中,特定標記702和寫入符記706位於資料串700的同一端;在本發明的另一實施例中,特定標記702位於資料串700的右端,而寫入符記706位於資料串700的左端。
另須說明的,在本實施例中,倘若主機200存取的對象為非揮發性記憶體130而不是智慧卡晶片140的話,則上述的特定標記702及寫入符記706並不會被併入至主機200傳送給控制器110的資料串中。在後面的說明中,將會進一步地說明控制器110如何依據所接收到的資料串中是否含有上述的特定標記702,來判斷資料串所要傳送的目的地是非揮發性記憶體130亦或是智慧卡晶片140。
當資料串700形成之後,主機200會藉由寫入指令,將資料串700傳送至週邊裝置100的控制器110(步驟S405)。亦即,主機200會傳送寫入指令至週邊裝置100,而此一寫入指令係被設定為寫入資料串700至週邊裝置100。
當資料串700被傳送到控制器110之後,主機200會依序地傳送複數個讀取指令至週邊裝置100的控制器110,直到該主機自週邊裝置100接收到智慧卡晶片140所產生的回應訊息為止。其中,上述複數個讀取指令被設定為依序地讀取複數個邏輯區塊位址(Logical Block Address,LBA)A1
至AN
上的資料。在本實施例中,上述複數個邏輯區塊位址A1
至AN
是屬於單一特定檔案。請參考圖3,在將複數個讀取指令傳送到週邊裝置100之前,主機200會將目前的讀取位址A設定為起始邏輯區塊位址A1
(步驟S407)。之後,主機200會傳送讀取指令至週邊裝置100(步驟S409),而此一讀取指令被設定讀取一預定長度之邏輯區塊位址,在本實施例中該邏輯區塊位址為A至(A+511位元組)的資料(即[A:A+511]的資料),但並不以此為限。另須說明的,在本實施例中,當控制器110接收到主機200所輸出的讀取指令之後,控制器110會先判斷此讀取指令是否被設定為讀取上述複數個邏輯區塊位址A1
至AN
上的資料,而倘若該讀取指令被設定為讀取上述複數個邏輯區塊位址A1
至AN
上的資料,控制器110是由一暫存器中直接產生512位元組長度且全為零的資料,以減少因讀取資料而耗費的時間。此外,在本發明的另一個實施例中,上述512位元組長度且全為零的資料是直接從上述單一特定檔案讀取,而上述單一特定檔案可存在非揮發性記憶體130當中或是被配置到控制器110所虛擬出的一記憶單元當中。在本實施例中,複數個邏輯區塊位址A1
至AN
上實際所儲存的資料全為零,但在另一實施例中複數個邏輯區塊位址A1
至AN
上所儲存的資料亦可為一預設樣式(pattern)。
請再參考圖3,當主機200傳送讀取指令至週邊裝置100後,即會等待並接收週邊裝置100所回傳的資料串(步驟S411),而上述回傳的資料串是微處理單元110a為回應已接收到該讀取指令而產生的,且上述回傳的資料串中包含有上述的寫入符記WT。詳言之,當微處理單元110a接收到包含有寫入符記WT的資料串700時,會暫存其中的寫入符記WT,之後當微處理單元110a回應主機200所傳送的讀取指令時,會將所暫存的寫入符記WT加到要回傳的資料串內。請參考圖8,圖8為微處理單元110a回傳至主機200的資料串800之資料結構圖。資料串800包含有一預設資料區802以及一寫入符記區804,其中預設資料區802用來記載智慧卡晶片140所產生的訊息或記載上述512位元組長度且全為零(或上述預設樣式)的資料,而寫入符記區804則是用來記載上述的寫入符記WT。如圖8所示,寫入符記區804位於預設資料區802之後。然而,本發明並不以此為限,例如:在本發明的另一實施例中,寫入符記區804位於預設資料區802之前。
在之後的步驟S413中,主機200會判斷回傳的資料串800的預設資料區802內的每個位元所記錄的資料是否全部為零,或是判斷預設資料區802內的資料是否為上述的預設樣式。倘若資料串800的預設資料區802內的每個位元所記錄的資料全部為零,或預設資料區802內的資料為上述的預設樣式,則表示控制器110的微處理單元110a尚未接收到智慧卡晶片140的回應訊息,而會進行步驟S415;而相對的,倘若資料串800的預設資料區802內的每個位元所記錄的資料不全為零,則表示控制器110的微處理單元110a可能已經接收到智慧卡晶片140的回應訊息,而會進行步驟S419。
在步驟S419中,主機200會判斷微處理單元110a所回傳的資料串800中的寫入符記WT是否與主機200所暫存的寫入符記WT一致。倘若上述兩寫入符記WT彼此一致,則進行步驟S421;而倘若上述兩寫入符記WT並不一致,則進行步驟S415。一般說來,在不重新啟動應用程式206的情況下,微處理單元110a所回傳的資料串800中的寫入符記WT大多會與主機200所暫存的寫入符記WT一致。然而,因為主機200具有快取記憶體212的緣故,快取記憶體212中會存有先前微處理單元110a所回傳的資料串,而當應用程式206被重新啟動而使得主機200所記錄的寫入符記WT有所變動後,即很有可能會發生主機200所記錄的寫入符記WT與回傳的資料串800中的寫入符記WT彼此不一致的情形。
當主機200所記錄的寫入符記WT與回傳的資料串800中的寫入符記WT並不一致時,即使資料串800的預設資料區802內的每個位元所記錄的資料不全為零,或預設資料區802內的資料為上述的預設樣式,主機200仍不會將所接收到的資料串800之預設資料區802內的資料視為智慧卡晶片140的回應訊息。故就資料的正確性而言,藉由步驟S419中對於寫入符記WT的比對動作,可避免主機200將快取記憶體212先前所暫存的資料誤認為由智慧卡晶片140所產生的回應訊息。舉例來說,假設在主機200開機至關機的期間,應用程式206先後被執行兩次。在前一次應用程式206執行期間,主機200藉由上述步驟S401~S421從智慧卡晶片140接收到回應訊息,而此一回應訊息在應用程式206重新被執行後仍存於快取記憶體212中。在此情況下,倘若重新啟動的應用程式206在傳送訊息至智慧卡晶片140並等待智慧卡晶片140的回應訊息的期間並不進行步驟S419的判斷的話,則主機200即可能會將暫存在快取記憶體212的前次回應訊息誤認為本次的回應訊息,而導致資料上的錯誤。換言之,藉由步驟S419的判斷動作,主機200即可區別所接收到的回應訊息是本次的回應訊息還是快取記憶體212所暫存的前次回應訊息,進而使得資料的準確性會大幅地提高。
當主機200確認所接收到的回應訊息是本次的回應訊息後,主機200即會將所接收到的資料串800之預設資料區802內的資料視為智慧卡晶片140的回應訊息(步驟S421)。
另須注意的,在本發明的另一實施例中,上述的步驟S413和S419的先後次序對調,亦即先執行步驟S419再執行步驟S413。在這實施例中,倘若在步驟S419中判斷出兩寫入符記WT並不一致,則進行步驟S415;反之,則進行步驟S413。此外,倘若在步驟S413中判斷出回傳的資料串800的預設資料區802內的每個位元所記錄的資料全部為零,則進行步驟S415;反之,則進行步驟S421。
在步驟S415中,主機200會判斷目前的讀取位址A是否等於最後一個邏輯區塊位址AN
。倘若目前的讀取位址A等於最後一個邏輯區塊位址AN
,則表示主機200已經傳送過N個讀取指令至週邊裝置100,此時主機200即會再將目前的讀取位址A設定為起始邏輯區塊位址A1
(步驟S407),其中上述N個讀取指令係被設定為從非揮發性記憶體130中讀取複數個邏輯區塊位址A1
至AN
上的資料。然而,倘若目前的讀取位址A並不等於最後一個邏輯區塊位址AN
,則主機200會將目前的讀取位址A加上一預設資料長度(步驟S417),而在本實施例中,此預設資料長度為512位元組。因此,在本實施例中,主機200所產生的複數個讀取指令係被設定為依序地從複數個邏輯區塊位址A1
至AN
讀取相同長度(即512位元組)的資料。此外,為了簡化主機200的操作,在本發明的另一個實施例中,主機200會依據起始邏輯區塊位址A1
以及上述單一特定檔案的大小,得到所有的邏輯區塊位址A1
至AN
,例如第二個邏輯區塊位址A2
即等於(A1
+512),最後一個邏輯區塊位址AN
等於(A1
+512×(N-1)),而該單一特定檔案的大小係等於(512×N)。
此外,在本發明的其他實施例中,亦可利用一對照表來獲得所有的邏輯區塊位址A1
至AN
的資訊,其中在一實施例中,上述對照表會列出所有屬於該特定檔案的邏輯區塊位址;而在另一實施例中,對照表則只列出該特定檔案之頭端及尾端的兩個邏輯區塊位址。其中,因為邏輯區塊位址通常以區段(sector)為單位,而每一區段的資料長度通常即為512位元組,故可藉由上述頭端及尾端的兩個邏輯區塊位址來求得所有的邏輯區塊位址A1
至AN
。如此一來,當微處理單元110a判斷出讀取指令中所指派的位址與該對照表所記錄的邏輯區塊位址吻合時,倘若智慧卡晶片140尚未產生回應訊息,微處理單元110a即回傳預設資料區802內的每個位元所記錄的資料皆為零的資料串至主機200。此外,在本發明的其他實施例中,週邊裝置100實際上並不儲存資料於上述複數個邏輯區塊位址A1
至AN
,亦即上述的特定檔案可以是虛擬的,而當微處理單元110a判斷出讀取指令所指派的位址屬於上述複數個邏輯區塊位址A1
至AN
時,微處理單元110a則直接產生回應訊息並將回應訊息傳送至主機200,而省略掉讀取上述特定檔案的程序。另須說明的,本發明中的預設資料長度並不以512位元組為限,上述的預設資料長度可以是其他數值,如4K位元組、8K位元組等。除此之外,在本實施例中,因每個讀取指令係被設定為讀取預設資料長度的資料,故該預設資料長度可針對不同的需求來調整,例如可以將該預設資料長度縮小,以使每次控制器110的微處理單元110a為回應讀取指令而回傳的資料串的資料量可以降低,進而可縮短微處理單元110a回應的時間,並增進控制器110的效能。
相對於圖3所繪示的主機200與一智慧卡晶片140運作時的流程,週邊裝置100與該主機200的運作流程則可參考圖4。首先,當週邊裝置100開始運作時,控制器110的微處理單元110a會先記錄上述單一特定檔案的起始邏輯區塊位址A1
以及大小(步驟S501),以作為後續比對主機200所產生的讀取指令之用。然而,在本發明的另一實施例中,在記錄起始邏輯區塊位址A1
以及單一特定檔案的大小之前,微處理單元110a會先判斷該單一特定檔案是否存在於該非揮發性記憶體130內,而倘若上述的單一特定檔案尚未存在於非揮發性記憶體130內,則微處理單元110a會在非揮發性記憶體130內建立上述的單一特定檔案,或是虛擬出的一記憶單元,並將上述單一特定檔案配置到所虛擬出的記憶單元當中。
當起始邏輯區塊位址A1
與單一特定檔案的大小被記錄之後,控制器110即可開始接收主機200所輸出的寫入指令(步驟S503),其中該寫入指令係被設定為寫入第一資料串至週邊裝置100,而該第一資料串可以是如圖7中所示的資料串700或是其他的資料串。當控制器110接收到寫入指令之後,即會判斷該第一資料串是否含有如圖7所示的特定標記702(步驟S505)。倘若第一資料串不含有特定標記702,則控制器110的微處理單元110a會依據寫入指令所指派的位址,將第一資料串寫入至非揮發性記憶體130(步驟S507);相對的,倘若第一資料串含有特定標記702,則控制器110的微處理單元110a會將第一資料串中的寫入符記WT(如圖7中的寫入符記706)記錄在緩衝記憶體110c,並將特定標記702與寫入符記WT從第一資料串中去除,以產生第二資料串(如圖7中所示的C-APDU704),再將第二資料串傳送至智慧卡晶片140(步驟S509)。如此一來,藉由偵測第一資料串中是否含有特定標記702,控制器110的微處理單元110a即可判斷資料串應該送往非揮發性記憶體130或送往智慧卡晶片140。須說明的,在本發明不具有非揮發性記憶體130的其他實施例中,因資料串700不具有特定標記702,故圖4的流程中的步驟S505和S507會予以省略,且在步驟S509中即不須將特定標記702從資料串700除去,而直接將資料串700的至少一部份傳送到智慧卡晶片140。另須說明的,在本發明的另一個實施例中,上述的第二資料串即為上述的第一資料串。換言之,微處理單元110a不會將特定標記702或寫入符記WT從第一資料串中去除,而是將第一資料串直接轉送到智慧卡晶片140。之後,智慧卡晶片140再從所接收到的第一資料串辨識出特定標記702、C-APDU704和寫入符記WT。此外,本實施例中,第一資料串中的寫入符記WT除如上所述會記錄在緩衝記憶體110C之外。在本發明的另一實施例中,微處理單元110a會將第一資料串中的寫入符記WT記錄在非揮發性記憶體130。
當第二資料串被送往智慧卡晶片140之後,控制器110的微處理單元110a即會等待接收主機200所傳送過來的讀取指令(步驟S511),其中上述的讀取指令包含但不限於主機200於圖3之步驟S409所傳送的讀取指令。之後,控制器110的微處理單元110a會判斷所接收的讀取指令所指派的位址是否屬於上述的單一特定檔案(步驟S513),亦即微處理單元110a會判斷所接收的讀取指令是否被設定為讀取上述複數個邏輯區塊位址A1
至AN
上的資料。若上述讀取指令所指派的位址並非屬於該單一特定檔案,則微處理單元110a會依據讀取指令所指派的位址讀取對應的資料(步驟S515),並將資料傳送至主機200;相對的,若上述讀取指令所指派的位址屬於上述的單一特定檔案,則微處理單元110a會再判斷使否已經接收到智慧卡晶片140的回應訊息(步驟S517),而在本實施例中,此回應訊息為智慧卡晶片140因接收到上述的第二資料串而產生,並且為一回應-應用程式協定資料單元(Response-Application Protocol Data Unit,R-APDU)。在步驟S517中,倘若微處理單元110a已經接收到智慧卡晶片140的回應訊息,則微處理單元110a會將智慧卡晶片140所產生的回應訊息會與記錄在緩衝記憶體110c(或非揮發性記憶體130)內的寫入符記WT合併成一第一回應訊息(步驟S521),再將此第一回應訊息回傳至主機200(步驟S523)。上述的第一回應訊息的資料結構與圖8所示資料串800的資料結構一致,其中預設資料區802用來記載智慧卡晶片140所產生的回應訊息,而寫入符記區804則用來記載寫入符記WT。
倘若在步驟S517中,微處理單元110a尚未接收到智慧卡晶片140的回應訊息,則控制器110的微處理單元110a會回傳一第二回應訊息至主機200,以回應所接收到的讀取指令(步驟S519)。在本實施例中,第二回應訊息的資料結構亦與圖8所示資料串800的資料結構一致,其中預設資料區802內的每個位元所記錄的資料皆為零,而寫入符記區804則用來記載寫入符記WT。須說明的,在本發明的另一實施例中,倘若在步驟S517中微處理單元110a尚未接收到智慧卡晶片140的回應訊息,則在步驟S519中,微處理單元110a會回傳所有位元皆為零的資料串至主機200,亦即回傳至主機200的第二回應訊息中並不含有寫入符記WT。當進行完步驟S519之後,微處理單元110a會再繼續等待主機200的下一個讀取指令,直到接收到智慧卡晶片140所產生的回應訊息,並回傳上述的第一回應訊息至主機200為止。
綜上所述,主機200和週邊裝置100之間的資料串傳送過程大略地可區分為一傳送程序以及一等待回應訊息程序,如圖5所示。在進行傳送程序期間,主機200會先傳送寫入指令至控制器110(相當於圖3的步驟S403和S405),之後控制器110會檢驗所接收的資料串是否含有特定標記(相當於圖4的步驟S505)。倘若所接收的資料串含有特定標記,控制器110就會記錄資料串中的寫入符記WT,並將資料串中的C-APDU傳送至智慧卡晶片140(相當於圖4的步驟S509)。此外,在進行上述等待回應訊息程序的期間,倘若智慧卡晶片140尚未產生回應訊息(例如R-APDU),主機200會依序地傳送複數個讀取指令至控制器110並接收控制器110所回傳的第二回應訊息(相當於圖3的步驟S407至S417)。另一方面,控制器110會比較讀取指令中所指配的位址是否與邏輯區塊位址A1
至AN
吻合並回傳第二回應訊息至主機200(相當於圖4的步驟S511至S519)。之後,當控制器110接收到智慧卡晶片140所產生的回應訊息後,控制器110則會將上述的第一回應訊息傳送至主機200(相當於圖4的步驟S521和S523)。然後,主機200會比對所接收到的第一回應訊息中的寫入符記是否與所記錄的寫入符記一致(相當於圖3的步驟S419)。最後,當第一回應訊息中的寫入符記與主機200所記錄的寫入符記一致時,主機200即會將所接收到的第一回應訊息的預設資料區802內的資料視為智慧卡晶片140所產生的回應訊息(相當於圖3的步驟S421)。
此外,如上所述,每當主機200要傳送資料至智慧卡晶片140之前,主機200會先獲得寫入符記WT,而每次主機200所獲得的寫入符記WT大多會彼此不同。請參考圖6,每次主機200傳送資料至智慧卡晶片140時,主機200會將寫入符記WT加入至欲傳遞的資料串中,之後再藉由寫入指令將含有寫入符記WT的資料串傳送到控制器110。如圖6所示,主機200前後兩次傳送資料串至智慧卡晶片140時,其所獲得的寫入符記彼此不同,其中前一次獲得寫入符記WT1,而後一次獲得寫入符記WT2。當控制器110接收到來自主機200的寫入資料串時,控制器110會先後地暫存資料串當中的寫入符記WT1及WT2,而當控制器110接收到包含有寫入符記WT2的資料串時,其原先所暫存的寫入符記WT1會被後來的寫入符記WT2所取代。此外,當控制器110接收到智慧卡晶片140的回應訊息(例如R-APDU)時,控制器110會將所暫存的寫入符記WT1或WT2加入到回傳的回應訊息當中。如此一來,主機200藉由比對主機200所暫存的寫入符記與回應訊息中的寫入符記,即可判斷所接收到的回應訊息是否是智慧卡晶片140針對特定的寫入指令所要產生的回應訊息。
此外,在本實施例中,係將圖3步驟S405的寫入指令所指派的記憶體寫入位址設定成不同於圖3之步驟S409的讀取指令所指派的記憶體讀取位址。因此,當主機200傳送讀取指令至控制器110之後,圖2的主機200並不會將先前因寫入指令寫入週邊裝置100而儲存至快取記憶體212的資料串視為快取資料而回傳至主機200。另外,在本實施例中,上述單一特定檔案的資料量大於或等於快取記憶體212的容量,且因每次主機所傳送的讀取指令係讀取不同邏輯區塊位址上的資料,故在快取記憶體212所儲存的快取資料會逐漸地被新的快取資料所取代的情況下,快取記憶體212中所儲存的回應訊息會持續更新而保有最新資料,故可避免快取記憶體212傳送錯誤的回應訊息給主機200。因此,智慧卡晶片140所產生的回應訊息即可無誤地被回傳至主機200。
在本發明的另一實施例中,控制器110會將一讀取符記(read token)加入到回傳至主機200的回應訊息中,用以進一步地確保當主機200產生的寫入符記發生碰撞時,主機200仍可正確地判斷是否接收到智慧卡140所產生的回應訊息。請參考圖9,圖9繪示本發明另一實施例中控制器110回傳至主機200的資料串900之結構。資料串900除了具有如上述資料串800的預設資料區802以及寫入符記區804之外,另具有一讀取符記區806。讀取符記區806係用來記載控制器110之微處理單元110a所產生的讀取符記RT。此外,預設資料區802和寫入符記區804的作用在上述說明中已經闡述過,在此即不再贅述。雖然,圖9中所繪示的讀取符記區806位於寫入符記區804之後,但本發明並不以此為限。例如:寫入符記區804和讀取符記區806在資料串900上的位置可以互換,或是寫入符記區804和讀取符記區806可分別位於資料串900的兩端或皆位於資料串900的同一端。
請參考圖10,圖10繪示主機200與智慧卡晶片140聯繫時寫入符記WT與讀取符記RT的資料流向。與前一實施例一樣,主機200亦會將所獲得的寫入符記WT加入至傳送給控制器110的資料串中,而控制器110會將來自主機200的寫入符記WT暫存起來。在本實施例中,控制器110於回應主機200所傳送的讀取指令時,除了會在回應訊息中加入所暫存的寫入符記WT之外,亦會依據一預設規則產生一讀取符記RT,並將所產生的讀取符記RT加入至回應訊息中。如圖10所示,當主機200與智慧卡晶片140聯繫時,主機200會先傳送一寫入指令再依序地傳送複數個讀取指令。而與前一實施例中一樣,該寫入指令係被設定為寫入資料串700至週邊裝置100,以將寫入符記WT傳送給控制器110,並將資料串700中的C-APDU704傳送給智慧卡晶片140;至於複數個讀取指令亦是被設定為依序地讀取上述單一特定檔案的複數個邏輯區塊位址A1
至AN
上的資料。在本實施例中,當控制器110接收到具有寫入符記WT的寫入資料串之後,即會重新設定讀取符記RT,其中,該讀取符記RT可為一特定樣式,而每次讀取符記RT被重新設定後,其特定樣式即會改變。如此一來,主機200藉由分析回傳資料串當中的讀取符記RT是否符合特定樣式,即可判斷出回傳資料串是暫存於快取記憶體212的舊有資料串,亦或是控制器110所產生的新資料串。詳言之,倘若回傳資料串當中的讀取符記RT符合特定樣式,且其中的寫入符記WT與主機200所暫存的寫入符記一致時,主機200即會將回傳的資料串視為控制器110所產生的新資料串;而倘若回傳資料串當中的讀取符記RT不符合特定樣式,或其中的寫入符記WT與主機200所暫存的寫入符記不一致時,主機200即會將回傳的資料串視為暫存於快取記憶體212的舊有資料串。
在本發明的另一實施例中,讀取符記RT的設定方式可另以下述方式執行。當控制器110接收到具有特定標記702和寫入符記WT的寫入資料串之後,即會初始化讀取符記RT的初始值。換言之,在每一次重新設定讀取符記RT的初始值後,當次所重新設定的讀取符記RT的初始值,會與前一次重新設定的讀取符記RT的初始值不同。之後,每當控制器110接收到上述被設定為讀取該特定檔案的任一個讀取指令時,控制器110即會依據一預設規則更新讀取符記RT的值,並將更新後的讀取符記RT加入到回傳的資料串900中。舉例來說,在本發明的一實施例中,讀取符記RT的初始值會被設定為0,而每當控制器110接收到上述被設定為讀取該特定檔案的任一個讀取指令時,讀取符記RT會被累加1。如以圖10配合來說明的話,圖10中第一個回傳的讀取符記RT1即等於1,第二個回傳的讀取符記RT2即等於2……依此類推。須注意的是,累加至讀取符記RT的值除了1之外,在本發明的其他實施例中,累加至讀取符記RT的值可以是其他值,而使得任兩個接續地回傳給主機200的回應訊息中的讀取符記RT皆相差一預設值。在此實施例中,倘若任兩個接續地回傳給主機200的回應訊息中的讀取符記RT之間的差值等於上述預設值,且其中的寫入符記WT與主機200所暫存的寫入符記一致時,主機200會將回傳的資料串視為控制器110所產生的新資料串;而倘若任兩個接續地回傳給主機200的回應訊息中的讀取符記RT之間的差值不等於上述預設值,或其中的寫入符記WT與主機200所暫存的寫入符記不一致時,主機200即會將回傳的資料串視為暫存於快取記憶體212的舊有資料串。
在本發明的另一實施例中,為進一步地確保可正確地接收到智慧卡140所產生的回應訊息,主機200除了會檢驗所連續地接收到的回應訊息之間的差值是否與系統所預設的差值一致之外,主機200還會判斷所連續地接收到的至少一預定數目個回應訊息中的讀取符記RT之間的差值是否皆為一定值。此外,當寫入符記WT和讀取符記RT都通過檢測時,主機200傳送給控制器110的下一個讀取指令所要讀取的邏輯區塊位址,會與最近一次已傳送的讀取指令所要讀取的邏輯區塊位址,相間隔複數個邏輯區塊。請參考圖11,圖11為本發明的另一實施例中,主機200在檢驗所接收到的回應訊息是否為智慧卡晶片140所產生時的流程圖。首先,在步驟S902中,主機200會先設定變數j、B和x,以供後續流程進行之用,其中變數j是用以記錄目前寫入符記WT和讀取符記RT都通過檢測的次數,變數x是用以設定連續通過檢測的次數,而變數B是用以設定每次讀取邏輯區塊位址的間隔倍數。在本實施例中,變數j、B和x分別設為0、2和3,但本發明並不以此為限。設定完變數j、B和x之後,在步驟S904中,主機200會傳送讀取指令至控制器110,以讀取邏輯區塊位址A至(A+511位元組)的資料(即[A:A+511]的資料),並等待接收回傳的資料串。當主機200於步驟S906接收到回傳的資料串之後,主機200會判斷所回傳的資料串中的寫入符記WT是否與主機200本身所暫存的寫入符記一致。倘若所回傳的資料串中的寫入符記WT與主機200本身所暫存的寫入符記並不一致,則變數j會歸零,且目前的邏輯區塊位址A會累加512位元組的長度,以設定下一個所要讀取的邏輯區塊之位址(步驟S918);倘若所回傳的資料串中的寫入符記WT與主機200本身所暫存的寫入符記一致,則主機200會進行步驟S910,以判斷回傳的資料串中的讀取符記RT是否與上一個回傳資料串中的讀取符記相差一定值。其中,上述定值可以是任何值,而在本實施例中該定值為整數一。倘若回傳的資料串中的讀取符記RT與上一個回傳資料串中的讀取符記之間的差值並不等於上述定值,或是因回傳的資料串是第一筆回傳的資料串而沒有上一個回傳資料串的話,則主機200會進行步驟S918,以設定下一個所要讀取的邏輯區塊,並將變數j歸零;然倘若回傳的資料串中的讀取符記RT與上一個回傳資料串中的讀取符記之間的差值等於上述定值的話,則主機會將變數j累加1(步驟S912)。之後,主機200會判斷目前變數j的值是否大於或等於變數x的值(步驟S914)。倘若變數j小於變數x,則主機會將目前的邏輯區塊位址A會累加(512×B)位元組的長度(步驟S920),以設定下一個所要讀取的邏輯區塊之位址,而因B大於1,故下一個所要讀取的邏輯區塊之位址會與最近一次已讀取的邏輯區塊位址相間隔複數個邏輯區塊,其中在本實施例中,每個邏輯區塊的大小為512位元組。然而,倘若在步驟S914中,主機200判斷出變數j大於或等於變數x的話,則表示主機200所連續地接收到的至少x個(即三個)回應訊息中的讀取符記RT之間的差值皆為上述的定值。之後,主機200即會將最近所接收到的j個回傳資料串都視為控制器110所新產生的資料串(步驟S916)。由此可知,在本實施例中,唯有當寫入符記WT和讀取符記RT都通過檢測的連續次數大於或等於變數x的設定值時,所回傳的資料串才會被判定為是由控制器110所新產生的資料串。此外,須注意的是,倘若在步驟S920中,邏輯區塊位址A累加後的位址超過最大的邏輯區塊位址AN
,則累加後所得到的邏輯區塊位址A會再減去上述特定檔案的檔案大小,或直接將邏輯區塊位址A設定為第一個邏輯區塊位址A1
,而使得邏輯區塊位址A會落在A1
至AN
之間。在本實施例中,目前的邏輯區塊位址A每次所累加位元長度為每個邏輯區塊大小(512位元組)的整數倍(即一倍或B倍)。然而,須注意的,本發明中每個邏輯區塊大小並不以512位元組為限,每邏輯區塊的大小亦可為其他值,如4K位元組、8K位元組等。
請參考圖2。在本發明的第三實施例中,為更有效濾地排除暫存於快取記憶體212的舊有資料串,且更快地接收到來自控制器110所傳送過來的新資料串,主機200在每傳送任一個讀取指令至週邊裝置100以讀取邏輯區塊位址A1
至AN
上的資料後,主機200會再執行另一寫入指令,以將資料寫入至週邊裝置100的暫存檔112。在本實施例中,暫存檔112係配置在緩衝記憶體110c當中;而在本發明的另一實施例中,暫存檔112則配置在非揮發性記憶體130當中。請參考圖13,圖13繪示本發明第三實施例傳送資料串時的資料流向。在本實施例中,當主機200每傳送任一個讀取指令至週邊裝置100以讀取邏輯區塊位址A1
至AN
上的資料後,主機200會再執行寫入指令,以將資料寫入至週邊裝置100的暫存檔112。此外,在本發明的另一個實施例中,在主機200藉由寫入指令將上述的資料串700傳送到控制器110之後,主機200也會再執行寫入指令,以將資料寫入至暫存檔112。如圖所示,當主機200藉由寫入指令將資料串700傳送到控制器110之後,以及每當主機200傳送讀取指令以讀取邏輯區塊位址A1
至Ax
(其中Ax
屬於A1
至AN
當中的一個)上的資料後,主機200會再執行寫入指令,以將資料寫入至暫存檔112的邏輯區塊位址At1
至At
(x+1
)。此外,因存在有快取記憶體212的緣故,寫到暫存檔112的資料也會被暫存到快取記憶體212當中。如圖14所示,快取記憶體212的暫存資料區218即是用來暫存寫到暫存檔112的資料。此外,控制器110因回應主機的讀取指令而回傳給主機200的資料串會被暫存在快取記憶體212的讀取資料區216中,而主機200藉由寫入指令而傳送至控制器110的資料串則會被暫存在快取記憶體212的寫入資料區。因暫存資料區218所暫存的資料產生排擠效應,故當暫存檔112逐漸增大時,寫入資料區214和讀取資料區216所配置到的使用空間會逐漸地縮小。又因智慧卡經片140所產生的回應訊息會被包含在控制器110回傳到主機200的資料串中,故當讀取資料區216的使用空間變小時,主機200所接收到的回傳資料串可能是快取記憶體212先前所暫存的舊有資料串的機率就會降低,相對地即提高主機200接收到來自控制器110新資料串的機率,進而使得主機200可更有效濾地排除暫存於快取記憶體212的舊有資料串,而更快地接收到來自控制器110所傳送過來的新資料串。此外,在本發明的另一實施例中,當暫存檔112的大小超過一預設資料量時,主機200會發出清除暫存檔112的指令至控制器110,以清除暫存檔112的資料。舉例來說,假設快取記憶體212的容量為2048K位元組,未避免暫存資料區218過大而影響主機200與控制器110之間資料與指令的傳遞,主機200會在暫存檔112的資料量大於1920K位元組時,發出清除暫存檔112的指令,而使得暫存資料區218的使用空間重新地配置。當然,上述僅是示例性的說明,快取記憶體212的容量以及清除暫存檔112的時機並不以此為限。
上述第一實施例中,主機200傳送至週邊裝置100的複數個讀取指令係被設定為讀取單一特定檔案的複數個邏輯區塊位址A1
至AN
上的資料。相對地,在本發明的第四實施例中,主機200傳送至週邊裝置100的複數個讀取指令係被設定為讀取多個特定檔案F1
至FN
的複數個邏輯區塊位址B1
至BN
上的資料,其中上述多個特定檔案F1
至FN
係儲存在非揮發性記憶體130中。此外,在本發明的其他實施例中,週邊裝置100實際上並不儲存資料於上述複數個邏輯區塊位址B1
至BN
,亦即上述多個特定檔案F1
至FN
可以是虛擬的,而當微處理單元110a判斷出讀取指令所指派的位址屬於上述複數個邏輯區塊位址A1
至AN
時,微處理單元110a則直接產生回應訊息並將回應訊息串送至主機200,而省略掉讀取非揮發性記憶體130的程序。
請參考圖15至圖17,圖15為根據本發明第四實施例繪示主機200運作時的流程圖。圖16為根據本發明第四實施例繪示週邊裝置100運作時的流程圖。圖17為根據圖15和圖16繪示的本發明第四實施例之資料流示意圖。
圖15所繪示的流程與圖3所繪示的流程非常類似,其中的不同之處在於圖3中的步驟S407、S409、S415和S417分別被圖15中的步驟S407’、S409’、S415’和S417’所取代,至於其他的步驟S401、S403、S405、S411、S413、S419和S421則相同而不再贅述。在步驟S407’中,主機200會將目標檔案Ft
設置為第一個特定檔案F1
。之後,主機200會傳送讀取指令至週邊裝置100(步驟S409’),而此一讀取指令被設定為從非揮發性記憶體130中讀取目標檔案Ft
。此外,在步驟S415’中,主機200會判斷目前的目標檔案Ft
是否為最後一個特定檔案FN
。倘若目前的目標檔案Ft
為最後一個特定檔案FN
,則表示主機200已經傳送過N個讀取指令至週邊裝置100,此時主機200即會再將目前的目標檔案Ft
設定為第一個特定檔案F1
(步驟S407’)。然而,倘若目前的目標檔案Ft
不是最後一個特定檔案FN
,則主機200會將目標檔案Ft
設定為係一個特定檔案(步驟S417’),即將變數t累加1。另附加說明的,在本發明的另一個實施例中,上述多個特定檔案F1
至FN
的起始邏輯區塊位址可分別為B1
至BN
(類似於第一實施例中的邏輯區塊位址A1
至AN
)。
至於圖16所繪示的流程與圖4所繪示的流程非常類似,其中的不同之處在於圖4中的步驟S501和S513分別被圖8中的步驟S501’和S513’所取代,至於其他的步驟則相同而不再贅述。在步驟S501’中,控制器110的微處理單元110a會先記錄上述多個特定檔案F1
至FN
的邏輯區塊位址B1
至BN
。在步驟S513’中,控制器110的微處理單元110a會判斷所接收的讀取指令其指派的位址是否屬於上述多個特定檔案F1
至FN
,亦即微處理單元110a會判斷所接收的讀取指令是否被設定為讀取上述複數個邏輯區塊位址B1
至BN
上的資料。
至於圖17所繪示的流程與圖5所繪示的流程非常類似,不同之處在於,當進行等待回應訊息程序的期間,主機200傳送至控制器110的讀取指令係被設定為讀取上述多個特定檔F1
至FN
。此外,在控制器110尚未接收到智慧卡晶片140所產生的回應訊息之前,控制器110會比較讀取指令中所指配的位址是否與邏輯區塊位址B1
至BN
吻合。
另附帶說明的,在本發明的另一實施例中,在記錄特定檔案F1
至FN
的邏輯區塊位址B1
至BN
之前,微處理單元110a會先判斷上述多個特定檔案F1
至FN
是否存在於非揮發性記憶體130內,而倘若上述多個特定檔案F1
至FN
的任何一個特定檔案尚未存在於非揮發性記憶體130內,則微處理單元110a會在非揮發性記憶體130內建立還尚未建立的特定檔案。
此外,本發明第二實施例中藉由檢驗讀取符記RT以確認回應訊息是否正確的技術手段,可被套用在第四實施例中採用多個特定檔案F1
至FN
的架構下。換言之,第二實施例中讀取指令可由原先設定成讀取單一特定檔案的邏輯區塊位址A1
至AN
上的資料,變更為設定成讀取上述多個特定檔案F1
至FN
的邏輯區塊位址B1
至BN
上的資料。
綜上所述,本發明因主機將特定的標記加入至欲傳遞至晶片的資料串中,故控制器可藉由判別資料串中是否有該標記,來判斷此資料串是否為要被送往某特定晶片的資料串。此外,在等待該晶片的回應訊息之期間,執行讀取特定邏輯區塊位址上之資料的讀取指令,並回傳預設的資料串(如預設資料區內所有位元皆為零的資料串),而當晶片產生回應訊息時,再回傳晶片所產生的回應訊息(預設資料區內位元不全為零的資料串)。其中,寫入符記會被用來檢驗回傳資料的正確性,以使主機得以區別所接收到回應訊息是暫存在快取記憶體中的前次回應訊息,亦或是本次晶片所產生的回應訊息。如此一來,不但主機可以將資料或指令傳送給晶片,而晶片所產生的回應訊息也可無誤地被主機接收。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
10、200...主機
12...記憶卡
14、212...快取記憶體
16...快閃記憶體
18、140...智慧卡晶片
100...週邊裝置
110...控制器
110a...微處理單元
110b...快閃記憶體介面
110c...緩衝記憶體
112...暫存檔
120...匯流排連接介面
130...非揮發性記憶體
206...應用程式
214...寫入資料區
216...讀取資料區
218...暫存資料區
250~254、270~276...回傳資料串
S401、S403、S405、S407、S409、S411、S413、S415、S417、S419、S421、S501、S503、S505、S507、S509、S511、S513、S515、S517、S521、S523、S407’、S409’、S415’、S417’、S501’、S513’、S902~S920...資料傳送程序的步驟
302、304...回應訊息
700...資料串
702...特定標記
704...指令-應用程式協定資料單元(C-APDU)
706...寫入符記
800...資料串
802...預設資料區
804...寫入符記區
Al
~AN
、Am
、Ax
...邏輯區塊位址
Atl
~At
(x+l
)...暫存檔的邏輯區塊位址
C-APDU...指令-應用程式協定資料單元
R-APDU...回應-應用程式協定資料單元
WT、WT1、WT2...寫入符記
RT、RT1~RTm...讀取符記
圖1為習知搭配記憶卡之主機的功能方塊圖。
圖2為根據本發明第一實施例繪示的資料串傳送系統的功能方塊圖。
圖3為根據本發明第一實施例繪示主機運作時的流程圖。
圖4為根據本發明第一實施例繪示週邊裝置運作時的流程圖。
圖5為根據圖3和圖4繪示的本發明第一實施例之資料流示意圖。
圖6則繪示圖2中的應用程式兩次與智慧卡晶片聯繫時寫入符記WT的資料流向。
圖7繪示本發明一實施例中主機通過控制器傳送指令或資料至智慧卡晶片時所採用的資料串之架構。
圖8繪示本發明一實施例中控制器回傳至主機的資料串之結構。
圖9繪示本發明另一實施例中控制器回傳至主機的資料串之結構。
圖10繪示主機與智慧卡晶片聯繫時寫入符記與讀取符記的資料流向。
圖11為本發明一實施例中,主機在檢驗所接收到的回應訊息是否為智慧卡晶片所產生時的流程圖。
圖12繪示本發明第三實施例傳送資料串時的資料流向。
圖13為圖2快取記憶體的使用空間配置圖。
圖14為根據本發明第四實施例繪示主機運作時的流程圖。
圖15為根據本發明第四實施例繪示週邊裝置運作時的流程圖。
圖16為根據圖14和圖15繪示的本發明第四實施例之資料流示意圖。
110...控制器
140...智慧卡晶片
200...主機
206...應用程式
212...快取記憶體
WT1、WT2...寫入符記
C-APDU...指令-應用程式協定資料單元
R-APDU...回應-應用程式協定資料單元
Claims (97)
- 一種資料串傳送方法,其適用於從主機傳遞資料串至具有晶片的週邊裝置,該資料串傳送方法包括:產生一寫入符記,並將該寫入符記藏於一第一資料串中;傳送一第一寫入指令至該週邊裝置,該第一寫入指令被設定為寫入該第一資料串至該週邊裝置;傳送該第一資料串的至少一部份至該晶片,並記錄該第一資料串中的該寫入符記;以及依序地傳送複數個讀取指令至該週邊裝置,直到該主機自該週邊裝置接收到一第一回應訊息為止,其中該第一回應訊息的一預設資料區內的資料為該晶片因接收到該第一資料串的至少一部份而產生,且該第一回應訊息含有該寫入符記,而該複數個讀取指令被設定為讀取複數個邏輯區塊位址上的資料。
- 如申請專利範圍第1項所述之資料串傳送方法,其更包括:判斷該主機傳送至該週邊裝置的任一資料串中是否含有一特定標記;以及倘若該主機傳送至該週邊裝置的資料串中含有該特定標記,則含有該特定標記的資料串的至少一部份會被傳送至該晶片。
- 如申請專利範圍第2項所述之資料串傳送方法,其中該週邊裝置更包括一非揮發性記憶體,該資料串傳送方 法更包括:倘若該主機傳送至該週邊裝置的資料串中未含有該特定標記,則將未含有該特定標記的該資料串寫入至該非揮發性記憶體。
- 如申請專利範圍第1項所述之資料串傳送方法,其中該週邊裝置更包括一非揮發性記憶體,該資料串傳送方法更包括:判斷任一個從該主機傳送至該週邊裝置的讀取指令是否被設定為讀取該複數個邏輯區塊位址上的資料;以及對任一讀取指令而言,倘若該讀取指令並非被設定為讀取該複數個邏輯區塊位址上的資料,則依據該讀取指令所指派的位址從該非揮發性記憶體中讀取對應的資料。
- 如申請專利範圍第1項所述之資料串傳送方法,其更包括:當產生該寫入符記後,記錄該寫入符記於該主機;以及比對該週邊裝置回傳至該主機的回應訊息中的寫入符記是否與記錄於該主機的該寫入符記一致。
- 如申請專利範圍第5項所述之資料串傳送方法,其更包括:倘若該週邊裝置回傳至該主機的回應訊息中的寫入符記與記錄於該主機的該寫入符記並不一致,則繼續傳送讀取指令至該週邊裝置,直到接收到該第一回應訊息為止。
- 如申請專利範圍第1項所述之資料串傳送方法,其 更包括:當產生該寫入符記後,記錄該寫入符記於該主機;以及在該主機傳送一第二寫入指令至該週邊裝置以將資料傳送至該晶片之前,更新該主機所記錄的該寫入符記,並將更新後的該寫入符記隨著該第二寫入指令傳送至該週邊裝置。
- 如申請專利範圍第1項所述之資料串傳送方法,其更包括:回應該複數個讀取指令,而將對應的讀取符記加入至回傳給該主機的回應訊息中;以及判斷該主機所接收到的回應訊息中的讀取符記是否與一系統設定值一致。
- 如申請專利範圍第8項所述之資料串傳送方法,其更包括:當該週邊裝置回傳至該主機的回應訊息中的寫入符記與記錄於該主機的寫入符記一致,且該主機所接收到的回應訊息中的該讀取符記與該系統設定值一致時,判斷該主機所連續接收到的至少三個回應訊息中的讀取符記之間的差值是否為一定值。
- 如申請專利範圍第9項所述之資料串傳送方法,其中該至少三個回應訊息所對應的多個讀取指令被設定成讀取該複數個邏輯區塊位址中多個彼此不相鄰的邏輯區塊位址上的資料。
- 如申請專利範圍第1項所述之資料串傳送方法,其更包括:每傳送該複數個讀取指令當中的任一個讀取指令至該週邊裝置後,執行一第三寫入指令,以將資料寫入至該週邊裝置的一暫存檔。
- 如申請專利範圍第11項所述之資料串傳送方法,其更包括:當傳送該第一寫入指令至該週邊裝置後,執行該第三寫入指令,以將資料寫入至該暫存檔。
- 如申請專利範圍第11項所述之資料串傳送方法,其更包括:當該暫存檔的大小超過一預設資料量時,清除該暫存檔。
- 如申請專利範圍第1項所述之資料串傳送方法,其中該寫入符記為依據一系統時間產生。
- 如申請專利範圍第1項所述之資料串傳送方法,其中該寫入符記為一亂數值。
- 如申請專利範圍第1項所述之資料串傳送方法,其中該複數個邏輯區塊位址上的資料屬於單一特定檔案。
- 如申請專利範圍第16項所述之資料串傳送方法,其中該週邊裝置更包括一非揮發性記憶體,該資料串傳送方法更包括:判斷該單一特定檔案是否存在於該非揮發性記憶體內;以及 倘若該單一特定檔案尚未存在於該非揮發性記憶體內,則在該非揮發性記憶體內建立該單一特定檔案。
- 如申請專利範圍第1項所述之資料串傳送方法,其中該複數個邏輯區塊位址上的資料屬於多個特定檔案。
- 如申請專利範圍第18項所述之資料串傳送方法,其中該週邊裝置更包括一非揮發性記憶體,該資料串傳送方法更包括:判斷該多個特定檔案是否存在於該非揮發性記憶體內;以及倘若該多個特定檔案的任何一個特定檔案尚未存在於該非揮發性記憶體內,則在該非揮發性記憶體內建立還尚未建立的特定檔案。
- 如申請專利範圍第1項所述之資料串傳送方法,其中該主機包括一快取記憶體,該主機與該週邊裝置之間所有指令與資料的傳遞皆會通過該快取記憶體。
- 如申請專利範圍第20項所述之資料串傳送方法,其中該複數個邏輯區塊位址上的資料之總和大於或等於該快取記憶體的容量。
- 如申請專利範圍第1項所述之資料串傳送方法,其中該週邊裝置實際上並不儲存資料於該複數個邏輯區塊位址。
- 如申請專利範圍第1項所述之資料串傳送方法,其更包括:每當該週邊裝置接收到該複數個讀取指令的其中一 個讀取指令之後,倘若該主機尚未接收到該第一回應訊息,則從該週邊裝置傳送一第二回應訊息至該主機。
- 如申請專利範圍第23項所述之資料串傳送方法,其中該第二回應訊息的一預設資料區內的每個位元所記錄的資料皆為零。
- 如申請專利範圍第1項所述之資料串傳送方法,其中該第一回應訊息的該預設資料區內的每個位元所記錄的資料不全為零。
- 一種資料串傳送系統,其適用於在主機和具有晶片的週邊裝置之間的資料串傳送,該資料串傳送系統包括:應用程式,安裝於該主機上並且用以操作該週邊裝置;以及控制器,設置於該週邊裝置中,並且電性連接至該晶片;其中該主機會產生一寫入符記,並將該寫入符記藏於一第一資料串中;其中該主機會執行該應用程式以傳送一寫入指令至該控制器,該寫入指令被設定為寫入該第一資料串至該週邊裝置;其中該控制器會傳送該第一資料串的至少一部份至該晶片,並記錄該第一資料串中的該寫入符記;其中當該主機執行該應用程式時,該主機會依序地傳送複數個讀取指令至該週邊裝置,直到從該控制器接收到一第一回應訊息為止,其中該第一回應訊息的一預設資料 區內的資料為該晶片因接收到該第一資料串的至少一部份而產生,且該第一回應訊息含有該寫入符記,而該複數個讀取指令被設定為讀取複數個邏輯區塊位址上的資料。
- 如申請專利範圍第26項所述之資料串傳送系統,其中該控制器會判斷該主機傳送至該週邊裝置的任一資料串中是否含有一特定標記,而倘若該主機傳送至該週邊裝置的資料串中含有該特定標記,則該控制器會將含有該特定標記的資料串的至少一部份傳送至該晶片。
- 如申請專利範圍第27項所述之資料串傳送系統,其中該週邊裝置更包括一非揮發性記憶體,而倘若該主機傳送至該週邊裝置的資料串中未含有該特定標記,則該控制器會將未含有該特定標記的該資料串寫入至該非揮發性記憶體。
- 如申請專利範圍第26項所述之資料串傳送系統,其中該週邊裝置更包括一非揮發性記憶體,該控制器會判斷任一個從該主機傳送至該週邊裝置的讀取指令是否被設定為讀取該複數個邏輯區塊位址上的資料,而對任一讀取指令而言,倘若該讀取指令並非被設定為讀取該複數個邏輯區塊位址上的資料,則該控制器會依據該讀取指令所指派的位址從該非揮發性記憶體中讀取對應的資料。
- 如申請專利範圍第26項所述之資料串傳送系統,其中當該主機執行該應用程式時,該主機會記錄該寫入符記,並比對該週邊裝置回傳至該主機的回應訊息中的寫入符記是否與記錄於該主機的該寫入符記一致。
- 如申請專利範圍第30項所述之資料串傳送系統,其中倘若該主機所接收到的回應訊息中的寫入符記與該主機所記錄的該寫入符記並不一致,則該主機會繼續傳送讀取指令至該週邊裝置,直到從該控制器接收到該第一回應訊息為止。
- 如申請專利範圍第26項所述之資料串傳送系統,其中當該主機執行該應用程式時,該主機會記錄該寫入符記,且在該主機傳送一第二寫入指令至該週邊裝置以將資料傳送至該晶片之前,該主機會更新所記錄的該寫入符記,並將更新後的該寫入符記隨著該第二寫入指令傳送至該週邊裝置。
- 如申請專利範圍第26項所述之資料串傳送系統,其中該控制器為回應該複數個讀取指令,會將對應的讀取符記加入至回傳給該主機的回應訊息中,而該主機會藉由執行該應用程式來判斷所接收到的回應訊息中的讀取符記是否與一系統設定值一致。
- 如申請專利範圍第33項所述之資料串傳送系統,其中當該週邊裝置回傳至該主機的回應訊息中的寫入符記與記錄於該主機的寫入符記一致,且該主機所接收到的回應訊息中的該讀取符記與該系統設定值一致時,該主機會藉由執行該應用程式來判斷所連續接收到的至少三個回應訊息中的讀取符記之間的差值是否為一定值。
- 如申請專利範圍第34項所述之資料串傳送系統,其中該至少三個回應訊息所對應的多個讀取指令被設定成 讀取該複數個邏輯區塊位址中多個彼此不相鄰的邏輯區塊位址上的資料。
- 如申請專利範圍第26項所述之資料串傳送系統,其中該主機每傳送該複數個讀取指令當中的任一個讀取指令至該週邊裝置後,該主機會執行一第三寫入指令,以將資料寫入至該週邊裝置的一暫存檔。
- 如申請專利範圍第36項所述之資料串傳送系統,其中當該主機傳送該第一寫入指令至該週邊裝置後,該主機執行該第三寫入指令,以將資料寫入至該暫存檔。
- 如申請專利範圍第36項所述之資料串傳送系統,其中當該暫存檔的大小超過一預設資料量時,該控制器會清除該暫存檔。
- 如申請專利範圍第26項所述之資料串傳送系統,其中該寫入符記為依據一系統時間產生。
- 如申請專利範圍第26項所述之資料串傳送系統,其中該寫入符記為一亂數值。
- 如申請專利範圍第26項所述之資料串傳送系統,其中該複數個邏輯區塊位址上的資料屬於單一特定檔案。
- 如申請專利範圍第41項所述之資料串傳送系統,其中該週邊裝置更包括一非揮發性記憶體,而該控制器會判斷該單一特定檔案是否存在於該非揮發性記憶體內,而倘若該單一特定檔案尚未存在於該非揮發性記憶體內,則該控制器會在該非揮發性記憶體內建立該單一特定檔案。
- 如申請專利範圍第26項所述之資料串傳送系統, 其中該複數個邏輯區塊位址上的資料屬於多個特定檔案。
- 如申請專利範圍第43項所述之資料串傳送系統,其中該週邊裝置更包括一非揮發性記憶體,而該控制器會判斷該多個特定檔案是否存在於該非揮發性記憶體內,而倘若該多個特定檔案的任何一個特定檔案尚未存在於該非揮發性記憶體內,則該控制器會在該非揮發性記憶體內建立還尚未建立的特定檔案。
- 如申請專利範圍第26項所述之資料串傳送系統,其中該主機包括一快取記憶體,該主機與該週邊裝置之間所有指令與資料的傳遞皆會通過該快取記憶體。
- 如申請專利範圍第45項所述之資料串傳送系統,其中該複數個邏輯區塊位址上的資料之總和大於或等於該快取記憶體的容量。
- 如申請專利範圍第26項所述之資料串傳送系統,其中該週邊裝置實際上並不儲存資料於該複數個邏輯區塊位址。
- 如申請專利範圍第26項所述之資料串傳送系統,其中每當該週邊裝置接收到該複數個讀取指令的其中一個讀取指令之後,倘若該主機尚未接收到該第一回應訊息,則該控制器會傳送一第二回應訊息至該主機。
- 如申請專利範圍第48項所述之資料串傳送系統,其中該第二回應訊息的一預設資料區內的每個位元所記錄的資料皆為零。
- 如申請專利範圍第26項所述之資料串傳送系統, 其中該第一回應訊息的該預設資料區內的每個位元所記錄的資料不全為零。
- 如申請專利範圍第26項所述之資料串傳送系統,其中該晶片為智慧卡晶片、射頻識別晶片、無線傳輸晶片或多媒體控制晶片。
- 如申請專利範圍第26項所述之資料串傳送系統,其中該週邊裝置為SD記憶卡或MMC記憶卡。
- 如申請專利範圍第26項所述之資料串傳送系統,其中該晶片相容於ISO 7816標準或ISO 14443標準。
- 如申請專利範圍第26項所述之資料串傳送系統,其中該非揮發性記憶體為單層記憶胞(Single Level Cell,SLC)反及(NAND)快閃記憶體或多層記憶胞(Multi Level Cell,MLC)反及(NAND)快閃記憶體。
- 如申請專利範圍第26項所述之資料串傳送系統,其中該第一資料串的至少一部份為一指令-應用程式協定資料單元(Command-Application Protocol Data Unit,C-APDU),而該第一回應訊息的該預設資料區內的資料為一回應-應用程式協定資料單元(Response-Application Protocol Data Unit,R-APDU)。
- 一種控制器,其適用於具有晶片的週邊裝置,該控制器包括:一微處理單元,用以控制該控制器的整體運作;以及一緩衝記憶體,用以暫時地儲存資料;其中該微處理單元會將來自於一主機的第一資料串的 至少一部份傳送至該晶片,並記錄該第一資料串中的一寫入符記;其中在該第一資料串的至少一部份被傳送至該晶片之後,以及在該微處理單元傳送一第一回應訊息至該主機之前,該微處理單元會依序地傳送一第二回應訊息至該主機,以回應來自該主機的複數個讀取指令,其中該第一回應訊息的一預設資料區內的資料為該晶片因接收到該第一資料串的至少一部份而產生;其中當該微處理單元自該晶片接收到該第一回應訊息的該預設資料區內的資料之後,該微處理單元會將該第一回應訊息傳送至該主機,而該第一回應訊息含有該寫入符記。
- 如申請專利範圍第56項所述之控制器,其中該微處理單元會判斷該主機傳送至該週邊裝置的任一資料串中是否含有一特定標記,而倘若該主機傳送至該週邊裝置的資料串中含有該特定標記,則該微處理單元會將含有該特定標記的資料串的至少一部份傳送至該晶片。
- 如申請專利範圍第57項所述之控制器,其中該週邊裝置更包括一非揮發性記憶體,而倘若該主機傳送至該週邊裝置的資料串中未含有該特定標記,則該微處理單元會將未含有該特定標記的該資料串寫入至該非揮發性記憶體。
- 如申請專利範圍第56項所述之控制器,其中該週邊裝置更包括一非揮發性記憶體,該微處理單元會判斷任 一個從該主機傳送至該週邊裝置的讀取指令是否被設定為讀取該複數個邏輯區塊位址上的資料,而對任一讀取指令而言,倘若該讀取指令並非被設定為讀取該複數個邏輯區塊位址上的資料,則該微處理單元會依據該讀取指令所指派的位址從該非揮發性記憶體中讀取對應的資料。
- 如申請專利範圍第56項所述之控制器,其中該寫入符記會被記錄於該主機,而該主機會比對該週邊裝置回傳至該主機的回應訊息中的寫入符記是否與記錄於該主機的該寫入符記一致。
- 如申請專利範圍第60項所述之控制器,其中倘若該主機所接收到的回應訊息中的寫入符記與記錄於該主機所記錄的該寫入符記並不一致,則該主機會繼續傳送讀取指令至該週邊裝置,直到從該控制器接收到該第一回應訊息為止。
- 如申請專利範圍第56項所述之控制器,其中該寫入符記會被記錄於該主機,且在該主機傳送一第二寫入指令至該週邊裝置以將資料傳送至該晶片之前,該主機會更新所記錄的該寫入符記,並將更新後的該寫入符記隨著該第二寫入指令傳送至該週邊裝置。
- 如申請專利範圍第56項所述之控制器,其中該微處理單元為回應該複數個讀取指令,會將對應的讀取符記加入至回傳給該主機的回應訊息中,而該主機會判斷所接收到的回應訊息中的讀取符記是否與一系統設定值一致。
- 如申請專利範圍第63項所述之控制器,其中當該 週邊裝置回傳至該主機的回應訊息中的寫入符記與記錄於該主機的寫入符記一致,且該主機所接收到的回應訊息中的該讀取符記與該系統設定值一致時,該主機會判斷所連續接收到的至少三個回應訊息中的讀取符記之間的差值是否為一定值。
- 如申請專利範圍第64項所述之控制器,其中該至少三個回應訊息所對應的多個讀取指令被設定成讀取該複數個邏輯區塊位址中多個彼此不相鄰的邏輯區塊位址上的資料。
- 如申請專利範圍第56項所述之控制器,其中該主機每傳送該複數個讀取指令當中的任一個讀取指令至該週邊裝置後,該主機會執行一第三寫入指令,以將資料寫入至該週邊裝置的一暫存檔。
- 如申請專利範圍第66項所述之控制器,其中當該主機傳送該第一寫入指令至該週邊裝置後,該主機執行該第三寫入指令,以將資料寫入至該暫存檔。
- 如申請專利範圍第66項所述之控制器,其中當該暫存檔的大小超過一預設資料量時,該控制器會清除該暫存檔。
- 如申請專利範圍第56項所述之控制器,其中該寫入符記為依據一系統時間產生。
- 如申請專利範圍第56項所述之控制器,其中該寫入符記為一亂數值。
- 如申請專利範圍第56項所述之控制器,其中該複 數個讀取指令被設定為讀取複數個邏輯區塊位址上的資料,而該複數個邏輯區塊位址上的資料屬於單一特定檔案。
- 如申請專利範圍第71項所述之控制器,其中該週邊裝置更包括一非揮發性記憶體,而該微處理單元會判斷該單一特定檔案是否存在於該非揮發性記憶體內,而倘若該單一特定檔案尚未存在於該非揮發性記憶體內,則該微處理單元會在該非揮發性記憶體內建立該單一特定檔案。
- 如申請專利範圍第56項所述之控制器,其中該複數個讀取指令被設定為依序地從該非揮發性記憶體中讀取複數個邏輯區塊位址上的資料,而該複數個邏輯區塊位址上的資料屬於多個特定檔案。
- 如申請專利範圍第73項所述之控制器,其中該週邊裝置更包括一非揮發性記憶體,而該微處理單元會判斷該多個特定檔案是否存在於該非揮發性記憶體內,而倘若該多個特定檔案的任何一個特定檔案尚未存在於該非揮發性記憶體內,則該微處理單元會在該非揮發性記憶體內建立還尚未建立的特定檔案。
- 如申請專利範圍第56項所述之控制器,其中該第二回應訊息的一預設資料區內的每個位元所記錄的資料皆為零。
- 如申請專利範圍第56項所述之控制器,其中該第一回應訊息的該預設資料區內的每個位元所記錄的資料不全為零。
- 如申請專利範圍第56項所述之控制器,其中該主 機包括一快取記憶體,該主機與該週邊裝置之間所有指令與資料的傳遞皆會通過該快取記憶體。
- 如申請專利範圍第56項所述之控制器,其中該週邊裝置實際上並不儲存資料於該複數個邏輯區塊位址,而該第二回應訊息為該微處理單元因回應接收到該複數個讀取指令的其中一個讀取指令而產生。
- 如申請專利範圍第56項所述之控制器,其中該晶片為智慧卡晶片、射頻識別晶片、無線傳輸晶片或多媒體控制晶片。
- 如申請專利範圍第56項所述之控制器,其中該週邊裝置為SD記憶卡或MMC記憶卡。
- 如申請專利範圍第56項所述之控制器,其中該晶片相容於ISO 7816標準或ISO 14443標準。
- 如申請專利範圍第56項所述之控制器,其中該非揮發性記憶體為單層記憶胞(Single Level Cell,SLC)反及(NAND)快閃記憶體或多層記憶胞(Multi Level Cell,MLC)反及(NAND)快閃記憶體。
- 如申請專利範圍第56項所述之控制器,其中該第一資料串的至少一部份為一指令-應用程式協定資料單元(Command-Application Protocol Data Unit,C-APDU),而該第一回應訊息的該預設資料區內的資料為一回應-應用程式協定資料單元(Response-Application Protocol Data Unit,R-APDU)。
- 一種控制器,安裝在一主機中,其中該控制器包括: 一微處理器單元;一緩衝記憶體,耦接至該微處理器單元;以及一資料串傳送模組,耦接至該微處理器單元且具有可由該微處理器單元執行的多個機器指令以對該主機和一具有晶片的週邊裝置間的資料串傳送進行多個資料串傳送步驟,該些資料串傳送步驟包括:產生一寫入符記,並將該寫入符記藏於一第一資料串中;傳送一第一寫入指令至該週邊裝置,該第一寫入指令被設定為寫入該第一資料串至該週邊裝置;傳送該第一資料串的至少一部份至該晶片,並記錄該第一資料串中的該寫入符記;以及依序地傳送複數個讀取指令至該週邊裝置,直到該主機自該週邊裝置接收到一第一回應訊息為止,其中該第一回應訊息的一預設資料區內的資料為該晶片因接收到該第一資料串的至少一部份而產生,且該第一回應訊息含有該寫入符記,而該複數個讀取指令被設定為讀取複數個邏輯區塊位址上的資料。
- 如申請專利範圍第84項所述之控制器,其中該資料串傳送步驟更包括:判斷該主機傳送至該週邊裝置的任一資料串中是否含有一特定標記;以及倘若該主機傳送至該週邊裝置的資料串中含有該特定標記,則含有該特定標記的資料串的至少一部份會被傳 送至該晶片。
- 如申請專利範圍第85項所述之之控制器,其中該週邊裝置更包括一非揮發性記憶體,該資料串傳送步驟更包括:倘若該主機傳送至該週邊裝置的資料串中未含有該特定標記,則將未含有該特定標記的該資料串寫入至該非揮發性記憶體。
- 如申請專利範圍第84項所述之控制器,其中該週邊裝置更包括一非揮發性記憶體,該資料串傳送步驟更包括:判斷任一個從該主機傳送至該週邊裝置的讀取指令是否被設定為讀取該複數個邏輯區塊位址上的資料;以及對任一讀取指令而言,倘若該讀取指令並非被設定為讀取該複數個邏輯區塊位址上的資料,則依據該讀取指令所指派的位址從該非揮發性記憶體中讀取對應的資料。
- 如申請專利範圍第84項所述之控制器,其中該資料串傳送步驟更包括:當產生該寫入符記後,記錄該寫入符記於該主機;以及比對該週邊裝置回傳至該主機的回應訊息中的寫入符記是否與記錄於該主機的該寫入符記一致。
- 如申請專利範圍第88項所述之控制器,其中該資料串傳送步驟更包括:倘若該週邊裝置回傳至該主機的回應訊息中的寫入 符記與記錄於該主機的該寫入符記並不一致,則繼續傳送讀取指令至該週邊裝置,直到接收到該第一回應訊息為止。
- 如申請專利範圍第84項所述控制器,其中該資料串傳送步驟更包括:當產生該寫入符記後,記錄該寫入符記於該主機;以及在該主機傳送一第二寫入指令至該週邊裝置以將資料傳送至該晶片之前,更新該主機所記錄的該寫入符記,並將更新後的該寫入符記隨著該第二寫入指令傳送至該週邊裝置。
- 如申請專利範圍第84項所述控制器,其中該資料串傳送步驟更包括:回應該複數個讀取指令,而將對應的讀取符記加入至回傳給該主機的回應訊息中;以及判斷該主機所接收到的回應訊息中的讀取符記是否與一系統設定值一致。
- 如申請專利範圍第91項所述之控制器,其中該資料串傳送步驟更包括:當該週邊裝置回傳至該主機的回應訊息中的寫入符記與記錄於該主機的寫入符記一致,且該主機所接收到的回應訊息中的該讀取符記與該系統設定值一致時,判斷該主機所連續接收到的至少三個回應訊息中的讀取符記之間的差值是否為一定值。
- 如申請專利範圍第92項所述之控制器,其中該至 少三個回應訊息所對應的多個讀取指令被設定成讀取該複數個邏輯區塊位址中多個彼此不相鄰的邏輯區塊位址上的資料。
- 如申請專利範圍第84項所述之控制器,其中該資料串傳送步驟更包括:每傳送該複數個讀取指令當中的任一個讀取指令至該週邊裝置後,執行一第三寫入指令,以將資料寫入至該週邊裝置的一暫存檔。
- 如申請專利範圍第94項所述之控制器,其中該資料串傳送步驟更包括:當傳送該第一寫入指令至該週邊裝置後,執行該第三寫入指令,以將資料寫入至該暫存檔。
- 如申請專利範圍第94項所述之控制器,其中該資料串傳送步驟更包括:當該暫存檔的大小超過一預設資料量時,清除該暫存檔。
- 如申請專利範圍第84項所述之控制器,其中該主機包括一快取記憶體,該主機與該週邊裝置之間所有指令與資料的傳遞皆會通過該快取記憶體。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098101917A TWI397821B (zh) | 2009-01-19 | 2009-01-19 | 資料串傳送方法、系統及其控制器 |
US12/414,968 US8296466B2 (en) | 2009-01-19 | 2009-03-31 | System, controller, and method thereof for transmitting data stream |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098101917A TWI397821B (zh) | 2009-01-19 | 2009-01-19 | 資料串傳送方法、系統及其控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201028858A TW201028858A (en) | 2010-08-01 |
TWI397821B true TWI397821B (zh) | 2013-06-01 |
Family
ID=42338013
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098101917A TWI397821B (zh) | 2009-01-19 | 2009-01-19 | 資料串傳送方法、系統及其控制器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8296466B2 (zh) |
TW (1) | TWI397821B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI387879B (zh) * | 2008-09-05 | 2013-03-01 | Acer Inc | 儲存空間管理方法及應用該方法之電腦系統 |
TWI396090B (zh) * | 2009-02-18 | 2013-05-11 | Silicon Motion Inc | 快閃記憶裝置、資料儲存系統、以及傳送特殊命令至快閃記憶裝置之方法 |
TWI596486B (zh) * | 2011-11-04 | 2017-08-21 | 群聯電子股份有限公司 | 記憶體儲存裝置、記憶體控制器及資料串傳送與識別方法 |
CN103116470B (zh) * | 2011-11-16 | 2016-04-13 | 群联电子股份有限公司 | 存储器储存装置、存储器控制器及数据串传送与识别方法 |
TWI454922B (zh) * | 2011-12-19 | 2014-10-01 | Phison Electronics Corp | 記憶體儲存裝置及其記憶體控制器與資料寫入方法 |
CN103186470B (zh) * | 2011-12-30 | 2016-04-20 | 群联电子股份有限公司 | 存储器储存装置及其存储器控制器与数据写入方法 |
CN103218308B (zh) * | 2012-01-20 | 2016-06-29 | 群联电子股份有限公司 | 缓冲存储器管理方法、存储器控制器与存储器储存装置 |
TWI459202B (zh) | 2012-12-05 | 2014-11-01 | Phison Electronics Corp | 資料處理方法、記憶體控制器與記憶體儲存裝置 |
CN103870408B (zh) * | 2012-12-18 | 2017-06-06 | 群联电子股份有限公司 | 数据处理方法、存储器控制器与存储器储存装置 |
TWI553476B (zh) * | 2015-03-05 | 2016-10-11 | 光寶電子(廣州)有限公司 | 區域描述元管理方法及其電子裝置 |
TWI521345B (zh) * | 2015-03-10 | 2016-02-11 | 群聯電子股份有限公司 | 回應讀取方法及資料傳輸系統 |
WO2016182554A1 (en) * | 2015-05-11 | 2016-11-17 | Hewlett Packard Enterprise Development Lp | Peripheral device security |
US11169925B2 (en) * | 2015-08-25 | 2021-11-09 | Samsung Electronics Co., Ltd. | Capturing temporal store streams into CPU caches by dynamically varying store streaming thresholds |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6880037B2 (en) * | 2002-08-13 | 2005-04-12 | Activcard, Inc. | Method of data caching on a smartcard |
TWI234785B (en) * | 2001-10-17 | 2005-06-21 | Kilopass Technologies Inc | Smart card having memory using a breakdown phenomena in an ultra-thin dielectric |
TWM288420U (en) * | 2005-09-16 | 2006-03-01 | Dynacard Co Ltd | Multi-media memory card with intelligent card chip |
US20060156009A1 (en) * | 2005-01-12 | 2006-07-13 | Interdigital Technology Corporation | Method and apparatus for enhancing security of wireless communications |
US20070136610A1 (en) * | 2005-12-12 | 2007-06-14 | Advanced Digital Broadcast S.A. | Smart card with data storage, set-top box, portable player for operating smart card with data storage and method for manufacturing smart card with data storage |
US20080140909A1 (en) * | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for managing data from a requesting device with an empty data token directive |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI406130B (zh) | 2009-03-10 | 2013-08-21 | Phison Electronics Corp | 資料處理系統、控制器及其搜尋特定記憶體區的方法 |
-
2009
- 2009-01-19 TW TW098101917A patent/TWI397821B/zh active
- 2009-03-31 US US12/414,968 patent/US8296466B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI234785B (en) * | 2001-10-17 | 2005-06-21 | Kilopass Technologies Inc | Smart card having memory using a breakdown phenomena in an ultra-thin dielectric |
US6880037B2 (en) * | 2002-08-13 | 2005-04-12 | Activcard, Inc. | Method of data caching on a smartcard |
US20060156009A1 (en) * | 2005-01-12 | 2006-07-13 | Interdigital Technology Corporation | Method and apparatus for enhancing security of wireless communications |
TWM288420U (en) * | 2005-09-16 | 2006-03-01 | Dynacard Co Ltd | Multi-media memory card with intelligent card chip |
US20070136610A1 (en) * | 2005-12-12 | 2007-06-14 | Advanced Digital Broadcast S.A. | Smart card with data storage, set-top box, portable player for operating smart card with data storage and method for manufacturing smart card with data storage |
US20080140909A1 (en) * | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for managing data from a requesting device with an empty data token directive |
Also Published As
Publication number | Publication date |
---|---|
TW201028858A (en) | 2010-08-01 |
US20100186077A1 (en) | 2010-07-22 |
US8296466B2 (en) | 2012-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI397821B (zh) | 資料串傳送方法、系統及其控制器 | |
TWI596486B (zh) | 記憶體儲存裝置、記憶體控制器及資料串傳送與識別方法 | |
TWI406130B (zh) | 資料處理系統、控制器及其搜尋特定記憶體區的方法 | |
US8006030B2 (en) | Memory controller for identifying the last valid page/segment in a physical block of a flash memory | |
US20120331218A1 (en) | Flash memory storage system, and controller and anti-falsifying method thereof | |
US20120005557A1 (en) | Virtual copy and virtual write of data in a storage device | |
TWI459202B (zh) | 資料處理方法、記憶體控制器與記憶體儲存裝置 | |
TWI454912B (zh) | 資料處理方法、記憶體控制器與記憶體儲存裝置 | |
TWI472927B (zh) | 資料串分派與傳送方法、記憶體控制器與記憶體儲存裝置 | |
US8812756B2 (en) | Method of dispatching and transmitting data streams, memory controller and storage apparatus | |
CN113885808B (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 | |
TWI430104B (zh) | 資料串分派與傳送方法、記憶體控制器與記憶體儲存裝置 | |
US9483195B2 (en) | Response reading method and data transmission system | |
TWI546667B (zh) | 智慧卡管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN101788970B (zh) | 数据串传送方法、系统及其控制器 | |
US8544424B2 (en) | System, controller and method thereof for transmitting and distributing data stream | |
US11977783B2 (en) | Method and apparatus for performing data access control of memory device with aid of predetermined command | |
US10324894B2 (en) | Storage device management method and system, and memory storage device thereof | |
CN102880423B (zh) | 数据串分派与传送方法、存储器控制器与存储器储存装置 |