1 引言
SM卡是一種nash Memory存儲卡,輕薄短小是其未來產(chǎn)品的發(fā)展趨勢。SM卡具有體積?。?5 mm×37 mm x0.76mm),質(zhì)量輕(僅1.8克),結(jié)構(gòu)簡單,攜帶方便,且具有較高的擦寫性能,功耗低,易于升級,帶有便于數(shù)據(jù)傳輸?shù)腜CMCIA界面等優(yōu)點,但存在兼容性差和容量小的缺點。
采用大容量的SM卡作為存儲介質(zhì)用于存儲采集的數(shù)據(jù)具有突破性發(fā)展。但其最關(guān)鍵技術(shù)問題是要保證各種大量的數(shù)據(jù)能夠在計算機中正確地回放和分析,保證計算機正確無誤地識別出SM卡中的數(shù)據(jù),因此要求SM卡的存儲數(shù)據(jù)格式應與DOS文件系統(tǒng)相兼容。錯誤檢查與糾正編碼簡稱ECC,是一種實現(xiàn)計算機錯誤檢查和糾正的技術(shù),可使整個計算機系統(tǒng)工作時安全穩(wěn)定。而ECC技術(shù)應用于大容量SM卡,使其數(shù)據(jù)采集、儲存更安全穩(wěn)定,并給出了ECC編碼算法,程序設計及查錯校正的實現(xiàn)。
2 ECC與SM的地址轉(zhuǎn)換
按照DOS文件操作系統(tǒng)存儲數(shù)據(jù)的方法,SM卡除存儲數(shù)據(jù)功能外,還具有以下5個區(qū)域:卡信息結(jié)構(gòu)(Card Information Structure,簡稱CIS)、主引導記錄(Master Boot Record簡稱,MBR)、分區(qū)引導記錄(Partition Boot Record,簡稱PBR)、分件分配表(File A11ocation Table,簡稱FAT)、根目錄(Root Directory,簡稱DIR)。CPU采用邏輯地址操作存儲介質(zhì),由于邏輯地址與物理地址不同,物理地址是存儲介質(zhì)的實際地址,如果按照物理地址順序存儲數(shù)據(jù),則不便于文件增加或刪減的操作,因此,其DOS邏輯地址與物理地址必須按照轉(zhuǎn)換表進行轉(zhuǎn)換。而SM卡的轉(zhuǎn)換表處于每頁存儲區(qū)的冗余區(qū)內(nèi)。
SM卡每頁包括528字節(jié),分為512字節(jié)數(shù)據(jù)區(qū)和16字節(jié)的冗余區(qū)。冗余區(qū)的格式如表l所示,其中ECC編碼區(qū)和邏輯、物理轉(zhuǎn)換區(qū)是最為重要部分。
由表1可以看出:邏輯地址區(qū)1和邏輯地址區(qū)2完全一致,ECC編碼區(qū)2是指256“512字節(jié)的ECC編碼,ECC編碼區(qū)l是指0”255字節(jié)的ECC編碼,數(shù)據(jù)狀態(tài)標志和塊狀態(tài)標志為FFH時正常,否則異常。邏輯地址區(qū)是針對DOS文件系統(tǒng)的邏輯地址和物理地址的轉(zhuǎn)換表,格式如表2所示,其中BA9~BA0為邏輯地址,P為奇偶區(qū)標志。
所謂邏輯地址是相對于DOS文件系統(tǒng)而言,DOS文件系統(tǒng)在存儲文件時,并不是完全按照物理地址的順序存儲的,而是將物理地址按一定的算法分配成邏輯地址,文件存儲是按照FAT表中標注的邏輯地址,再根據(jù)冗余區(qū)中的邏輯地址的內(nèi)容找到相應的物理地址區(qū)實現(xiàn)的。整個SM卡的邏輯地址分布如表3所示。
3 ECC編碼
ECC與奇偶校驗(Parity)相類似,然而Parity只能檢測錯誤,而ECC則可糾正每頁的l位錯誤。經(jīng)過內(nèi)存糾錯,計算機的操作指令才能繼續(xù)。
由于SM卡存在“寫入干擾”,易引起數(shù)據(jù)錯誤,而且該錯誤不能利用寫入Flash狀態(tài)進行檢查。根據(jù)SM卡實驗結(jié)果推斷,寫入干擾引發(fā)的錯誤在l頁中(512字節(jié))只有1位出現(xiàn)錯誤。因此認為這類錯誤可利用ECC碼檢查并糾正,而不視為壞塊。這樣將大大提高SM卡的可靠性和壽命。在設計中以512字節(jié)為一組數(shù)據(jù),加上ECC碼(3字節(jié)),這樣可以使ECC碼的比例達到最低。
4 ECC編碼算法和程序設計
4.1 ECC碼的普通算法
以64字節(jié)一組數(shù)據(jù)為例說明ECC碼的普通算法,前52字節(jié)為輸入數(shù)據(jù),后面12字節(jié)補零或64字節(jié)參加運算。先將64字節(jié)數(shù)據(jù)排成一列,即最高地址數(shù)據(jù)bit7,bit 6…bit O,然后為次高地址數(shù)據(jù)bit 7,bit 6…bit O,依次根據(jù)地址由高到低,直至最低地址數(shù)據(jù)bit 7,bit 6…bit 0,總共512位。
首先將512位分成前256位和后256位。計算前256位中“1”的個數(shù)k,如果k為奇數(shù),令P(256)=l;若k為偶數(shù),則令P(256)=O。然后計算后面256位中“1”的個數(shù)為j,如果j為奇數(shù),則令Q(256)=1;若j為偶數(shù),則Q(256)=0。
然后,再把512位等分4塊,每一塊均為128位。把第一塊、第三塊合在一起,計算其中“1”的個數(shù)l,如果l為奇數(shù),令P(128)=l;若f為偶數(shù),令P(128)=0;把第二塊和第四塊合在一起,計算其中“1”的個數(shù)m,如果m為奇數(shù),則令Q(128)=1,若m為偶數(shù),令Q(128)=0。
第三步,把512位等分為8塊,每塊為64位,把奇數(shù)次塊合并在一起,計算“l(fā)”的個數(shù),決定P(64)是“1”還是“0”,再把偶數(shù)次塊合并在一起,計算“1”的個數(shù),決定Q(64)是“1‘,還是“0”。
依次類推,每次塊數(shù)增加一倍,其塊的位數(shù)減少一半,直到每塊中只有1位為止。將奇數(shù)次塊合并在一起,然后決定P(16)、P(8)、P(4)、P(2)、P(1)分別是“1”還是“0”;把偶數(shù)次塊合在一起,決定Q(16)、Q(8)、Q(4)、Q(2)、Q(1)分別是“1”,還是“0”。
最后,把上述P(i)、Q(i)排成一列得P(256)Q(256)P(128)Q(128)P(64)Q(64)…P(1)Q(1)總共18位就構(gòu)成ECC碼,ECC碼為3字節(jié),多余位全為零。
4.2 簡化ECC碼算法
計算ECC碼是一個子程序,要求程序要短,ECC子程序的長度為120字節(jié),F(xiàn)015的程序空間可以容納;執(zhí)行要快,ECC子程序的執(zhí)行時間約為2 ms。由于F015的程序空間不大,而子程序是在記錄過程中經(jīng)數(shù)據(jù)采集,運算再加上ECC碼,然后存入Flash。運算時間過長會干擾下一點數(shù)據(jù)采集,破壞數(shù)據(jù)完整性。數(shù)據(jù)采集周期為1/8 s(125 ms),ECC運行時間應小于12.5 ms。
程序采用數(shù)據(jù)平行處理,巧妙重復利用F015指令,從而達到系統(tǒng)要求。
5 查錯和校正
5.1 錯誤類型
常見內(nèi)存錯誤為:單位、多位、列、行等錯誤。其中單位錯誤大多在讀取一個完整比特時有一位出錯;而多位錯誤是讀相同比特時總是同一位數(shù)據(jù)出錯;如果單位錯誤發(fā)生在很多詞中,則視為列或行錯誤。
5.2 查錯和校正算法
無錯誤時,ECC碼全為0;當主區(qū)有1位錯誤,每一個相似組(eg:P8&P8’)有l(wèi)&0或0&1,可以糾錯;如果Flash有多于2位以上的錯誤,則沒辦法修正。
在數(shù)據(jù)存入前產(chǎn)生的ECC碼為PQ先,在讀出數(shù)據(jù)后計算得的ECC碼為PQ后,具體算法如下:
(1)若PQ先^PQ后(^為異或),
(2)若異或后000 000 000 000 000 000,則表示數(shù)據(jù)無錯。PQ先^PQ后,R=RF(256)RQ(256)RP(128)RQ(128)…RP(1)RQ(1),其中RP(256)=P(256)先^P(256)后,RQ(256)=Q(256)先^Q(256)后。
若RP(i)^RQ(i)為l,對所有i(i=1,2,4…256)都成立,則
存在1位錯碼,其出錯的位置:由RP(256)RP(128)RP(64)RP(32)RP(16)RP(8)地址決定的這一字節(jié)中地址(范圍0—63)在RP(4)RP(2)RP(1)的位上(O“7位)。將上述參數(shù)決定的該字節(jié)的位數(shù)據(jù)取非,就可校正數(shù)據(jù)中的錯誤。
(3)RP(i)^RQ(i)=1,只對一個i(i=1,2,4…256)成立。則ECC碼PO先出錯,數(shù)據(jù)正確。
(4)若出現(xiàn)其他情況,則無法校正數(shù)據(jù)錯誤。
6 ECC編碼的實現(xiàn)
256字節(jié)數(shù)據(jù)的ECC碼是3個字節(jié),其中22個字節(jié)是有用的。ECC編碼的產(chǎn)生、計算方法及錯碼檢測方法框圖分別如表4、圖1和圖2所示。
由圖1和圖2可看出,寫入DOS文件系統(tǒng)所需的各功能區(qū)的內(nèi)容,在實際編程中要嚴格按照其結(jié)構(gòu)編寫,否則計算機將無法識別。
7 結(jié)語
通過討論和分析可見,SM卡的存儲結(jié)構(gòu)、DOS存儲格式以及ECC代碼的編寫所構(gòu)成SM卡數(shù)據(jù)存儲系統(tǒng)的軟件部分,說明了將ECC技術(shù)應用于大容量的SM卡是可行的。
-
存儲
+關(guān)注
關(guān)注
13文章
4337瀏覽量
85994 -
計算機
+關(guān)注
關(guān)注
19文章
7523瀏覽量
88315 -
數(shù)據(jù)采集
+關(guān)注
關(guān)注
39文章
6200瀏覽量
113831
發(fā)布評論請先 登錄
相關(guān)推薦
評論