欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于sd接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法

文檔序號:6769221閱讀:221來源:國知局
專利名稱:基于sd接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種通過SD卡Secure Digital Memory Card)接口對閃存的操作方法,特別是涉及一種基于SD接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法。
背景技術(shù)
SD卡的技術(shù)是基于Multi-Media卡(MMC)格式上發(fā)展而來。SD卡共支持三種傳輸模式SPI模式,1位SD模式,4位SD模式。低速卡通常支持0 400Kbit/s數(shù)據(jù)傳輸率,采用SPI和1位SD傳輸模式。高速卡支持0 100Mbit/S數(shù)據(jù)傳輸率,采用4位SD傳輸模式。隨著SD卡傳輸速率的提高,理論上SD卡的讀寫速度可以達到25Mbyte/s。在現(xiàn)有的技術(shù)中,閃存的上層操作是通過邏輯地址訪問閃存,并認為閃存是一個邏輯地址連續(xù)分布的物理存儲介質(zhì),而SD卡的固化軟件則通過物理地址來實際訪問閃存中的塊。所以SD卡的固化軟件中建立了一個邏輯地址到物理地址的對應(yīng)表,即地址對照表。SD卡在接收到SD Host的寫命令時,其固化軟件先解析所述寫命令的邏輯地址,并尋找一個物理地址來對應(yīng)這個邏輯地址,即在地址對照表中建立該邏輯地址與改物理地址的對應(yīng)關(guān)系。由于閃存的物理塊只能對空塊編程且必須順序?qū)?,且只能按頁編程,按塊擦除。如果直接對邏輯地址對應(yīng)的物理地址編程,則需要更多的擦除和搬移數(shù)據(jù)的工作。所以建立若干臨時邏輯塊,與部分邏輯地址對應(yīng)。固化軟件尋找與該邏輯塊對應(yīng)的臨時邏輯塊,如果不存在,則按照一定的原則,選擇一個臨時邏輯塊和其對應(yīng)的物理塊整理合并,形成空塊,映射到新的邏輯塊,即形成與該邏輯地址對應(yīng)的臨時邏輯塊。如果存在則直接對臨時邏輯塊編程,并記錄邏輯頁和物理頁對應(yīng)關(guān)系。遇到臨時邏輯塊寫滿時,就將該臨時邏輯塊,和對應(yīng)的物理塊進行整理。保存新的映射關(guān)系,并更新出新的臨時邏輯塊。臨時邏輯塊寫滿時,如果臨時邏輯塊的頁記錄連續(xù),整理只需要建立臨時邏輯塊和邏輯地址之間的映射,并將原物理塊更新為臨時邏輯塊,整理比較簡單。如果臨時邏輯塊的頁記錄不連續(xù),需要將臨時邏輯塊和物理塊之間的記錄進行合并整理,形成新的邏輯塊,并建立其和邏輯地址之間的映射關(guān)系。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種基于SD接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法。該方法通過將SD傳輸數(shù)據(jù)和對閃存編程同時進行,并且環(huán)形隊列使閃存數(shù)據(jù)盡量連續(xù),減少閃存的數(shù)據(jù)搬移次數(shù),避免產(chǎn)生大量碎片。為解決上述技術(shù)問題,本發(fā)明的基于SD接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法,包括步驟(1)建立環(huán)形隊列,并設(shè)置環(huán)形隊列地址;其中,環(huán)形隊列地址包括環(huán)形隊列起始地址、環(huán)形隊列結(jié)束地址、當前接收數(shù)據(jù)地址、當前寫閃存數(shù)據(jù)起始地址;通過當前接收數(shù)據(jù)地址和當前寫閃存數(shù)據(jù)起始地址控制接收SD數(shù)據(jù)和對閃存編程;其中,每收到1包SD數(shù)據(jù),當前接收數(shù)據(jù)地址向后移動1個單位(1個SD block大小),本次最大能處理的數(shù)據(jù)數(shù)目也相應(yīng)減1 ;已接收數(shù)據(jù)數(shù)目(當前接收數(shù)據(jù)地址和當前寫閃存數(shù)據(jù)起始地址之間的緩存數(shù)目)每滿一個閃存頁,則對閃存編程,在編程成功后,當前寫閃存數(shù)據(jù)起始地址向后移動閃存頁大小(N)個單位(每閃存頁包含的SD block數(shù)目,下文中均記為N);(2)在接收到寫命令前,接收數(shù)據(jù)數(shù)目已默認設(shè)置為1,然后接收SD寫命令和第一包SD數(shù)據(jù);(3)處理臨時碎片塊中的殘留數(shù)據(jù)記錄;其中,臨時碎片塊保存一次SD接口寫操作結(jié)束時不滿一個閃存頁的記錄,每個邏輯塊最多只有一個這樣的記錄,如果該臨時碎片塊中包含有該邏輯塊的記錄,將該數(shù)據(jù)讀出到環(huán)形隊列中(位置在第一包數(shù)據(jù)的前面),在寫操作時判斷寫數(shù)據(jù)的起始邏輯地址和臨時碎片塊中記錄的數(shù)據(jù)結(jié)束地址是否連續(xù),做相應(yīng)處理當連續(xù)時,將環(huán)形隊列中的數(shù)據(jù)和本次寫數(shù)據(jù)拼接,保持地址連續(xù);當不連續(xù)時,則將不滿閃存頁記錄寫入該臨時邏輯塊中;(4)重新設(shè)置本次接收數(shù)據(jù)數(shù)目,繼續(xù)接收SD數(shù)據(jù);在處理完臨時碎片塊中記錄和接收完第一包SD數(shù)據(jù)后,重新設(shè)置接收數(shù)據(jù)數(shù)目;如果臨時碎片塊中記錄和本次寫數(shù)據(jù)地址連續(xù),在臨時碎片塊中數(shù)據(jù)讀出到環(huán)形隊列中和接收完第一包SD數(shù)據(jù)后,環(huán)形隊列中空閑的緩存數(shù)目將減少;所述本次接收數(shù)據(jù)數(shù)目設(shè)置為環(huán)形隊列中空閑緩存的數(shù)目和本次最大能處理的數(shù)據(jù)數(shù)目兩者中較小的一個;如果在此期間接收到SD寫結(jié)束命令,則停止接收數(shù)據(jù),并在編程結(jié)束后退出;若有環(huán)形隊列中殘留數(shù)據(jù)不滿一頁,則記錄殘留數(shù)據(jù)的邏輯地址和長度;而本次接收數(shù)據(jù)數(shù)目在閃存編程成功后會重新設(shè)置,其值會加上閃存頁大小N和本次最大能處理的數(shù)據(jù)數(shù)目中較小的一個;(5)閃存換塊處理并重新控制SD數(shù)據(jù)接收和閃存編程。其中,如果閃存讀寫遇到邏輯換塊或者物理換塊,則停止數(shù)據(jù)接收,并更新邏輯和物理地址映射關(guān)系,并將其保存在閃存介質(zhì)中,重新計算最大能處理的數(shù)據(jù)數(shù)目后,繼續(xù)接收數(shù)據(jù);在接收到寫結(jié)束命令后,設(shè)置接收數(shù)據(jù)數(shù)目默認值為1。上述步驟⑵、(4)、(5)中,SD數(shù)據(jù)接口和環(huán)形隊列之間,環(huán)形隊列和閃存之間的數(shù)據(jù)傳輸是通過DMA (Direct Memory Access,直接內(nèi)存訪問)方式完成的,這使SD數(shù)據(jù)接口和環(huán)形隊列之間、環(huán)形隊列和閃存之間能夠并行操作,提高數(shù)據(jù)傳輸?shù)乃俾?。本發(fā)明的方法是通過采用內(nèi)嵌式軟件(即固化軟件)實現(xiàn)。為此,適用于本發(fā)明的SD卡至少應(yīng)具備控制芯片和閃存芯片,其中,控制芯片包括固化軟件。由于使用環(huán)形隊列接收數(shù)據(jù),所以控制芯片必須具備額外的RAM (random access memory,隨機存儲器),對環(huán)形隊列的初始化僅在SD卡上電初始化時進行一次。本發(fā)明以閃存塊頁結(jié)合的映射方式為基礎(chǔ),是一種提高SD卡速讀寫速度的方法,該方法使SD接口接收數(shù)據(jù)和對閃存編程并行工作。環(huán)形隊列在物理上是一塊地址連續(xù)的內(nèi)存空間。本發(fā)明通過對環(huán)形隊列地址的控制,預(yù)先完成閃存邏輯物理地址轉(zhuǎn)換,并接收SD接口數(shù)據(jù),同時完成對閃存的編程,在確認成功后釋放隊列。在接收到SD寫結(jié)束命令后,如果環(huán)形隊列中的數(shù)據(jù)不滿閃存的頁大小,數(shù)據(jù)將保留在環(huán)形隊列中,或者寫入臨時碎片塊,如果其邏輯地址與下次寫SD卡的邏輯地址連續(xù), 則可以通過控制環(huán)形隊列的指針,達到閃存按頁連續(xù)寫的效果,避免產(chǎn)生大量碎片。


下面結(jié)合附圖與具體實施方式
對本發(fā)明作進一步詳細的說明圖1是本發(fā)明利用環(huán)形隊列寫閃存的總體流程圖;圖2是本發(fā)明處理殘留數(shù)據(jù)的流程圖。
具體實施例方式以下實施例中的SD卡,包括SD卡控制芯片和閃存芯片,其中,控制芯片包括固化軟件,控制芯片還具備額外的RAM。本實施例的基于SD接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法,如圖1所示,具體步驟包括上電初始化,初始化等待接收SD寫數(shù)據(jù)的環(huán)形隊列,設(shè)置環(huán)形隊列起始地址和環(huán)形隊列結(jié)束地址。其中,環(huán)形隊列包括若干個數(shù)據(jù)緩存,根據(jù)閃存的頁大小而定。由于SD卡在接收到寫命令后,第一包數(shù)據(jù)必須立刻接收。在接收到SD HOST的寫命令后,固化軟件還未計算本次最大能處理的數(shù)據(jù)數(shù)目,本實施方案提出在接收到SD HOST的寫命令前已經(jīng)設(shè)置好當前接收數(shù)據(jù)地址、當前寫閃存數(shù)據(jù)起始地址和本次接收數(shù)據(jù)數(shù)目。步驟S10,設(shè)置當前接收數(shù)據(jù)地址和當前寫閃存數(shù)據(jù)起始地址。步驟Sll,設(shè)置本次接收數(shù)據(jù)數(shù)目為1,并使能接收數(shù)據(jù)。步驟S12,在接收到寫命令和第一包數(shù)據(jù)后即停止接收數(shù)據(jù)(SD DATAO線設(shè)置成忙狀態(tài))。查詢到邏輯地址對應(yīng)的臨時邏輯塊后,判斷臨時碎片塊中是否包含本邏輯塊中的臨時記錄,臨時碎片塊是用于保存一次SD接口寫操作結(jié)束時不滿一個閃存頁的記錄,每個臨時邏輯塊最多只有一個這樣的記錄,本次寫臨時邏輯塊時會將上次的碎片塊中的記錄寫入臨時邏輯塊。步驟S13,處理當前臨時邏輯塊的殘余記錄,具體流程見圖2 步驟S20,判斷臨時碎片塊中是否包含本邏輯塊中的臨時記錄;如果包含,則按照步驟S21操作;如果不包含,則接收數(shù)據(jù),執(zhí)行數(shù)據(jù)操作;步驟S21,從臨時碎片塊讀出臨時記錄到環(huán)形隊列;步驟S22,根據(jù)本邏輯塊的臨時記錄的地址信息,判斷本次寫數(shù)據(jù)的邏輯地址和殘留在環(huán)形隊列中的數(shù)據(jù)結(jié)束地址是否連續(xù);步驟S23,如果不連續(xù),則將殘留在環(huán)形隊列中的數(shù)據(jù)寫入該臨時邏輯塊中,并記錄邏輯頁和物理頁對應(yīng)關(guān)系,重新設(shè)置當前寫閃存數(shù)據(jù)起始地址;步驟S24,如果連續(xù),則將殘留在環(huán)形隊列中的數(shù)據(jù)和第一包數(shù)據(jù)拼接,重新設(shè)置當前寫閃存數(shù)據(jù)起始地址;在處理完殘留數(shù)據(jù)后,需要重新計算本次最大能處理的數(shù)據(jù)數(shù)目,計算方法較關(guān)鍵,即步驟S14。SD在寫臨時邏輯塊的過程中會遇到閃存邏輯換塊或者物理換塊的情況。邏輯換塊,即臨時邏輯塊寫到最后一頁,需要更新。物理換塊,即寫到邏輯塊對應(yīng)物理塊的最后一頁,需要更新映射關(guān)系。步驟S15,設(shè)置本次接收數(shù)據(jù)數(shù)目。本次能寫的扇區(qū)的最大數(shù)目為距離邏輯換塊和物理換塊,還能寫的扇區(qū)數(shù)。本次接收數(shù)據(jù)數(shù)目設(shè)置為環(huán)形隊列中空閑緩存的數(shù)目和本次最大能處理的數(shù)據(jù)數(shù)目兩者中較小的一個。步驟S16,接收數(shù)據(jù),并操作環(huán)形隊列地址。每接收到1包SD數(shù)據(jù),當前接收數(shù)據(jù)地址所指向的緩存地址向后移動一個單位(IfSD block大小),若遇到隊列結(jié)束,其后的指向記為起始地址。這樣就形成了環(huán)形隊列。本次接收數(shù)據(jù)數(shù)目和本次最大能處理的數(shù)據(jù)數(shù)目均減一。步驟S17,如果在寫的過程中收到寫結(jié)束命令,則將環(huán)形隊列中滿頁的數(shù)據(jù)編程到閃存中,不對不滿一頁的殘留數(shù)據(jù),僅記下其邏輯地址和長度。在一定時間內(nèi)不對SD卡操作則將該不滿頁記錄寫入臨時碎片塊。在下次寫該邏輯塊時按照步驟S20中的方法對其處理。這樣處理主要是盡量保持臨時邏輯塊的編程盡量物理連續(xù)。步驟S18,如果沒有收到寫結(jié)束命令,在接收SD數(shù)據(jù)的同時,當環(huán)形隊列中的數(shù)據(jù)數(shù)目滿一個閃存頁(計算方法為當前接收數(shù)據(jù)地址和當前寫閃存數(shù)據(jù)起始地址之間的緩存數(shù)目),則對閃存編程。在編程確認成功后,將當前寫閃存數(shù)據(jù)起始地址向后移動N(閃存頁大小)個單位。重新設(shè)置本次接收數(shù)據(jù)數(shù)目,如果此時本次最大能處理的數(shù)據(jù)數(shù)目不小于N,由于隊列中空閑緩存的增加,本次接收數(shù)據(jù)數(shù)目加上N;如果本次最大能處理的數(shù)據(jù)數(shù)目小于N,本次接收數(shù)據(jù)數(shù)目加上本次最大能處理的數(shù)據(jù)數(shù)目。直到兩者同時減為0。步驟S19,如果SD HOST繼續(xù)寫操作,則執(zhí)行邏輯換塊或者物理換塊。設(shè)置SD DATAO線設(shè)置成忙狀態(tài),固化軟件對當前頁編程結(jié)束后,將對該臨時邏輯塊和及其對應(yīng)的物理塊進行整理。如果是物理換塊,則重新分配新的臨時邏輯塊。如果是邏輯換塊,則重新計算新的邏輯塊對應(yīng)的物理塊地址,分配對應(yīng)的新臨時邏輯塊。然后按照步驟S14,設(shè)置新的本次接收數(shù)據(jù)數(shù)目和本次最大能處理的數(shù)據(jù)數(shù)目,重新使能接收SD數(shù)據(jù)和編程。按照上述步驟進行操作,能提高SD卡速讀寫速度,而且能避免產(chǎn)生大量碎片。
權(quán)利要求
1.一種基于SD接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法,包括步驟(1)建立環(huán)形隊列,并設(shè)置環(huán)形隊列地址;(2)在接收到寫命令前,接收數(shù)據(jù)數(shù)目已默認設(shè)置為1,然后接收SD寫命令和第一包SD數(shù)據(jù);(3)處理臨時碎片塊中的殘留數(shù)據(jù)記錄;(4)重新設(shè)置本次接收數(shù)據(jù)數(shù)目,繼續(xù)接收SD數(shù)據(jù);(5)閃存換塊處理并重新控制SD數(shù)據(jù)接收和閃存編程。
2.如權(quán)利要求1所述的基于SD接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法,其特征在于所述步驟(1)中,環(huán)形隊列地址包括環(huán)形隊列起始地址、環(huán)形隊列結(jié)束地址、當前接收數(shù)據(jù)地址、當前寫閃存數(shù)據(jù)起始地址。
3.如權(quán)利要求2所述的基于SD接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法,其特征在于所述步驟(1)中,每接收到1包SD數(shù)據(jù),當前接收數(shù)據(jù)地址向后移動1個單位,本次最大能處理的數(shù)據(jù)數(shù)目也相應(yīng)減1 ;已接收數(shù)據(jù)數(shù)目每滿一個閃存頁,則對閃存編程,在編程成功后,當前寫閃存數(shù)據(jù)起始地址向后移動閃存頁大小N個單位。
4.如權(quán)利要求1所述的基于SD接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法,其特征在于所述步驟⑵、⑷、(5)中,SD數(shù)據(jù)接口和環(huán)形隊列之間,環(huán)形隊列和閃存之間的數(shù)據(jù)傳輸是通過直接內(nèi)存訪問方式完成。
5.如權(quán)利要求1所述的基于SD接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法,其特征在于所述步驟(3)中,臨時碎片塊保存一次SD接口寫操作結(jié)束時不滿一個閃存頁的記錄,每個邏輯塊最多只有一個這樣的記錄,如果該臨時碎片塊中包含有該邏輯塊的記錄,將該數(shù)據(jù)讀出到環(huán)形隊列中,在寫操作時判斷寫數(shù)據(jù)的起始邏輯地址和臨時碎片塊中記錄的數(shù)據(jù)結(jié)束地址是否連續(xù),做相應(yīng)處理當連續(xù)時,將環(huán)形隊列中的數(shù)據(jù)和本次寫數(shù)據(jù)拼接,保持地址連續(xù);當不連續(xù)時,則將不滿閃存頁記錄寫入該臨時邏輯塊中。
6.如權(quán)利要求5所述的基于SD接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法,其特征在于所述連續(xù)時,在臨時碎片塊中數(shù)據(jù)讀出到環(huán)形隊列中和接收完第一包SD數(shù)據(jù)后,環(huán)形隊列中空閑的緩存數(shù)目各減少。
7.如權(quán)利要求1所述的基于SD接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法,其特征在于所述步驟中,本次接收數(shù)據(jù)數(shù)目設(shè)置為環(huán)形隊列中空閑緩存的數(shù)目和本次最大能處理的數(shù)據(jù)數(shù)目兩者中較小的一個。
8.如權(quán)利要求7所述的基于SD接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法,其特征在于所述本次接收數(shù)據(jù)數(shù)目在閃存編程成功后會重新設(shè)置,其值會加上閃存頁大小N和本次最大能處理的數(shù)據(jù)數(shù)目中較小的一個。
9.如權(quán)利要求1所述的基于SD接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法,其特征在于所述步驟(5)中,如果閃存讀寫遇到邏輯換塊或者物理換塊,則停止數(shù)據(jù)接收,并更新邏輯和物理地址映射關(guān)系,并將其保存在閃存介質(zhì)中,重新計算最大能處理的數(shù)據(jù)數(shù)目后,繼續(xù)接收數(shù)據(jù);在接收到寫結(jié)束命令后,設(shè)置接收數(shù)據(jù)數(shù)目默認值為1。
全文摘要
本發(fā)明公開了一種基于SD接口使用環(huán)形隊列快速寫閃存介質(zhì)的方法,包括步驟(1)建立環(huán)形隊列,并設(shè)置環(huán)形隊列地址;(2)在接收到寫命令前,接收數(shù)據(jù)數(shù)目已默認設(shè)置為1,然后接收SD寫命令和第一包SD數(shù)據(jù);(3)處理臨時碎片塊中的殘留數(shù)據(jù)記錄;(4)重新設(shè)置本次接收數(shù)據(jù)數(shù)目,繼續(xù)接收SD數(shù)據(jù);(5)閃存換塊處理并重新控制SD數(shù)據(jù)接收和閃存編程。本發(fā)明可以減少閃存的數(shù)據(jù)搬移次數(shù),避免產(chǎn)生大量碎片,提高SD卡速讀寫速度。
文檔編號G11C16/06GK102568570SQ20101057674
公開日2012年7月11日 申請日期2010年12月7日 優(yōu)先權(quán)日2010年12月7日
發(fā)明者石磊 申請人:上海華虹集成電路有限責任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
阿克苏市| 云阳县| 将乐县| 崇明县| 廉江市| 怀仁县| 夏津县| 翼城县| 定州市| 海宁市| 萨迦县| 襄樊市| 阿拉善右旗| 郎溪县| 武乡县| 成武县| 罗城| 五台县| 洮南市| 兴义市| 济源市| 淮北市| 炎陵县| 和田县| 莱州市| 阿拉善左旗| 尚义县| 广州市| 平果县| 五大连池市| 泰州市| 大同市| 颍上县| 徐闻县| 建阳市| 库伦旗| 林芝县| 牟定县| 嫩江县| 渭南市| 锦州市|