開篇分割線,上一篇我們聊了SFUD掛載flash設備的組件,說白了就是為了適配各種類型的flash用于讀寫、擦除操作,接下來我們來講一下fal分區(qū),關于fal的概念很重要,實際上它有不一定非要基于RTOS實現(xiàn)裸機也一樣,那么fal到底是什么呢?
FAL (Flash Abstraction Layer) Flash 抽象層,是對 Flash 及基于 Flash 的分區(qū)進行管理、操作的抽象層,對上層統(tǒng)一了 Flash 及 分區(qū)操作的 API (框架圖如下所示):
想想windows系統(tǒng)中的ABCD盤,其實就是fal分區(qū)的結果,比如插入一個U盤以后會自動掛在為一個新的分區(qū),當然如果沒有分過區(qū)它可能不識別或者提示為請先進行分區(qū)操作,在我們的rtos中它需要的操作就是fal_init();
當我們對于flash類型的設備(片內(nèi)或片外)完成分區(qū)以后,就可以建立文件系統(tǒng)或者是flash數(shù)據(jù)庫,用于服務應用程序,下一篇我們就來講一下flashdb數(shù)據(jù)庫的應用(扯遠了繼續(xù)我們的fal大業(yè))。
1. 接下來就進入實戰(zhàn)時基于studio創(chuàng)建fal分區(qū):
2. 完成fal組件的添加后,嘗試編譯整個工程,編譯結果如下:
3. 編譯結果提示無法找到fal_cfg.h文件,這個文件是需要我們手動創(chuàng)建的,也就是所謂的分區(qū)表:
4.完成分區(qū)表的創(chuàng)建后,調(diào)用fal_init(),完成分區(qū)功能:
下載程序到板子里面,我么你可以看到綠色部分有SFUD初始化成功及FAL分區(qū)表創(chuàng)建完成的提示,我們可以在msh明令中調(diào)用fal操作對應的分區(qū),本篇文章就到這里結束了,感謝閱讀。