SPI FLASH存儲設計一

       SPI FLASH的優點就是相對EEPRom的存儲容量更大,相對於大容量的SD卡和U盤,價格有優勢,但其缺點是每次寫入的數據空間都要是沒有寫過的,否則可能都要去擦除一次扇區,在去寫入數據,在擦除扇區之前還要對這個扇區之前的數據進行保存,擦除完成後,再將老數據和新數據一起寫入。好的器件擦個十幾萬次可能都沒問題,不好的器件可能幾萬次都扛不住。

如何解決這樣的缺點?針對不同的系統可能有不同的方案。因爲最近在做SPI FLASH的數據保存和查找,所以想到了一些方案,寫出來供以後再深究。

1.根據該系統能提供的最長曆史記錄的時間來設計。

假設我的系統最長能提供3個月的歷史記錄查詢,那麼我只要估計出每個月我的系統,最大的歷史記錄條數是多少?一條歷史記錄的字節數是多少?這裏假設每個月我的系統最大的歷史記錄條數是1000條,一條歷史記錄的字節數是40個字節,那麼一個扇區4096/40,這樣一個月的記錄大概需要十個扇區,這樣3個月的記錄加上一個輪詢的緩衝就需要40個扇區來完成這樣的系統設計。40*4094/1024=160KByte,這樣的容量的SPIFALSH是很小的,所以你可以提供半年的歷史記錄查詢都可以。優點:每個扇區的擦除次數可能3個月纔有一次,查找數據快,不需要考慮數據的COPY工作。

但是這樣設計系統有自己的限制:

1)受制於系統的RTC,倘若系統沒有RTC,或者RTC故障,會直接影響數據的可靠和實時性。

2)每個月我的系統,最大的歷史記錄條數是多少?這個問題可能不是由我確定的,而是用戶確定的,你不能限制用戶。

3)如果最長要提供一年的歷史記錄,或者一條歷史記錄就有100Byte,你會發現這樣的設計也很吃FLAH的。

2.根據該系統最多能提供多少條歷史記錄來設計。

假設我能提供10000條記錄,每條的記錄信息佔80個字節,則我大約需要197個扇區。首先看優點:不受限於RTC,不受限於用戶每個月的操作的次數。缺點:查找數據的範圍變大,響應可能變慢,10000條數據一旦寫完,回頭再寫時,每個扇區的老數據是保存還是不保存?不保存可能會引起用戶不滿,保存,勢必要不斷的擦除扇區,在寫入數據。這裏一定要注意扇區的擦除次數是有限的,要是產保3年,FLASH能不能扛的了,是要關注的首要問題。

處理上面的問題,方法可能有很多?最長見的可能是不對舊數據保存,一個扇區一旦再被寫,直接先扇區擦除(如果數據很久遠也到無所謂)。第二種:劃出2197個扇區,或者更多,在第一個197個扇區寫滿8萬次的時候(這裏自己設計到底寫完多少次?)啓用第二個197個扇區去保存數據,這樣對數據的查找變得更爲複雜......

 

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章