主題:求助!SD卡被我寫(xiě)壞了 共有38443人關(guān)注過(guò)本帖 |
---|
EM9260用戶(hù) |
1樓 |
求助!SD卡被我寫(xiě)壞了 Post By:2011-6-3 16:39:00 [只看該作者]
我用SD卡來(lái)保存數(shù)據(jù),之前格式化為FAT16格式,發(fā)現(xiàn)頻繁重啟后,會(huì)導(dǎo)致SD卡中文件異常,具體表現(xiàn)是會(huì)自動(dòng)出現(xiàn)一些名稱(chēng)很奇怪的文件,其中一些還無(wú)法刪除。后來(lái)我格式化為了FAT32格式。
現(xiàn)在的問(wèn)題是:我的應(yīng)用需要保存大量歷史數(shù)據(jù),目前我使用CE版本的SQLLite數(shù)據(jù)庫(kù)來(lái)保存,應(yīng)用大概每5分鐘產(chǎn)生16筆數(shù)據(jù),每筆數(shù)據(jù)大約有100字節(jié),歷史數(shù)據(jù)要保存不少于3個(gè)月,每次采集后我將其循環(huán)寫(xiě)入到SQLLite庫(kù)中。 應(yīng)用運(yùn)行幾個(gè)月以后,SD卡就打不開(kāi)了,用讀卡器接在電腦上打開(kāi),會(huì)提示“驅(qū)動(dòng)器 H 中的磁盤(pán)未被格式化。想現(xiàn)在格式化嗎?” SD卡并未損壞,格式化后還能再用。 所用SD卡是SanDisk class2的,其內(nèi)部NAND Flash應(yīng)該是MLC型的,也就是擦寫(xiě)1萬(wàn)次那種。 我看網(wǎng)上說(shuō)SD卡內(nèi)置了磨損平衡,但似乎也經(jīng)受不住我這樣的狂寫(xiě)。 |
|
單帖管理 | 引用 | 回復(fù) |
zhl |
2樓 |
Post By:2011-6-5 14:04:00 [只看該作者]
1、SD卡最好是格式化為FAT格式,也就FAT32格式。
2、磁盤(pán)扇區(qū)表被寫(xiě)壞這個(gè)問(wèn)題的確需要花時(shí)間來(lái)測(cè)試這個(gè)問(wèn)題,我們?cè)贓M9X60系列板卡做過(guò)SD卡文件連續(xù)讀寫(xiě)操做上萬(wàn)次的測(cè)試,SD卡還是很穩(wěn)定的。 |
|
單帖管理 | 引用 | 回復(fù) |
EM9260用戶(hù) |
3樓 |
Post By:2011-7-19 17:21:00 [只看該作者]
目前優(yōu)化了寫(xiě)入方式,改為1小時(shí)寫(xiě)入一次,實(shí)際效果如何,還有待測(cè)試。
|
|
單帖管理 | 引用 | 回復(fù) |
EM9260用戶(hù) |
4樓 |
Post By:2011-8-5 10:47:00 [只看該作者]
SQLite每次事務(wù)都會(huì)自動(dòng)產(chǎn)生journal文件,事務(wù)完成了自動(dòng)刪除,如果頻繁寫(xiě)數(shù)據(jù),F(xiàn)AT表不堪重負(fù)。所以現(xiàn)在把采集到的數(shù)據(jù)先緩存在內(nèi)存中,1個(gè)小時(shí)集中寫(xiě)入一次。
另外要注意SQLite數(shù)據(jù)庫(kù)文件大小問(wèn)題, 1 要限制住數(shù)據(jù)庫(kù)中記錄的總條數(shù); 2 要防止數(shù)據(jù)庫(kù)碎片。碎片會(huì)導(dǎo)致數(shù)據(jù)庫(kù)占用空間不斷增大,使得SD卡的磨損平衡可用空間越來(lái)越小。雖然可以使用VACUUM來(lái)整理碎片,但整理過(guò)程中要數(shù)據(jù)大小的空閑空間。 以下情況會(huì)產(chǎn)生碎片: 1 在執(zhí)行update語(yǔ)句時(shí)where條件后面的字段不是數(shù)據(jù)庫(kù)表的主鍵,沒(méi)update操作一次就會(huì)分配額外的空間,造成碎片。 2 執(zhí)行update語(yǔ)句時(shí)某字段的新值所需存儲(chǔ)空間比原來(lái)的大,也會(huì)造成碎片。 |
|
單帖管理 | 引用 | 回復(fù) |
zhl |
5樓 |
Post By:2011-8-5 12:54:00 [只看該作者]
謝謝與大家分享技術(shù)心得。
|
|
單帖管理 | 引用 | 回復(fù) |