找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5047|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

小型FLASH的管理(原理)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:82781 發(fā)表于 2015-6-13 01:11 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
                 最近有些問題困擾左右。一些小數(shù)據(jù)的存儲(chǔ)問題,現(xiàn)在的片上系統(tǒng)或者單片機(jī)系統(tǒng)或多或少的會(huì)帶一點(diǎn)DATA flash的存儲(chǔ)區(qū),大不比以前的24cxx的時(shí)代了,當(dāng)然24CXX也算的上是經(jīng)典的存儲(chǔ)。但是就目前我做過的這種存儲(chǔ)大都是一些簡單的數(shù)據(jù)或者變量。只要存幾個(gè)地址即可,根本不存在管理的問題。也正是基于此,導(dǎo)致現(xiàn)在如果要是實(shí)現(xiàn)一個(gè)小的FLASH管理就顯得很繁雜,甚至無從下手,考慮了許久,想到了內(nèi)存池,內(nèi)存池的概念基本上和Data Flash 相似的,對比他們之間的差別主要在于扇區(qū)地址尋址和擦寫上,SRAM當(dāng)然是讀寫隨便了,只要指針直搗之處即使原始物理地址寫入讀出即可,但是FLASH的特性注定不能這樣子搞。他是塊擦寫的。如此就很難搞的和內(nèi)存池一樣靈活。
我想這樣解決之:
1、建立一個(gè)數(shù)據(jù)結(jié)構(gòu)來管理已知的FLASH,作一個(gè)記錄,這個(gè)記錄由若干個(gè)小塊組成,小塊用鏈表。
2、按照MEM_POOL構(gòu)建FLASH的分配和釋放機(jī)制,為APP提供接口。
3、建立中間區(qū)域,所謂中間區(qū)域即使最小可擦寫扇區(qū),一般標(biāo)定為512byte,用來作為程序-中間緩沖區(qū)-FLASH三者協(xié)同。
4、在管理記錄中加入兩套函數(shù)指針,指向驅(qū)動(dòng)層的驅(qū)動(dòng)函數(shù),以提高靈活性,適應(yīng)片外EEPROM或者小容量FLASH。
5、塊校驗(yàn)和存儲(chǔ)自己的映像。管理為單鏈表結(jié)構(gòu),數(shù)據(jù)塊為線性結(jié)構(gòu)。以減低代碼實(shí)現(xiàn)的復(fù)雜程度。

倘若是上百兆的FLASH或者NAND之類的,毫無疑問直接上文件系統(tǒng)是嘴有效的。主要是有些應(yīng)用介于大容量之間,有沒有足夠的資源,只能是自己實(shí)現(xiàn)一套管理機(jī)制,


數(shù)據(jù)結(jié)構(gòu)參考如下:
                                POOL list and BLOCK

                                BLOCK在這里不適用,換成最小的快,即=512BYTE
                                POOL管理FLASH
                                list 提供塊數(shù)量,
                                自從此數(shù)據(jù)結(jié)構(gòu)誕生之時(shí)起就決定了他的物理存儲(chǔ)邊界和塊大小。
                                顯然對mem_pool做了裁剪,變成了一個(gè)完全是單鏈表的結(jié)構(gòu),代碼復(fù)雜度低得多。





說到底其實(shí)就是一張餅,然后用刀切,切成均勻的一小塊一小塊,小塊上面有的有芝麻有的沒有。
應(yīng)該做出這張餅!


老偉
比特電子








分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:353593 發(fā)表于 2018-6-18 11:32 | 只看該作者
您好,能發(fā)下flash管理的源碼嗎?謝謝
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表