有些應(yīng)用場合需要使用 Flash 儲(chǔ)存配置數(shù)據(jù)。大多數(shù)微控制器內(nèi)建 Flash 用以儲(chǔ)存程序代碼。M487 微控制器內(nèi)建 512K Bytes APROM 和 4K Bytes LDROM 的 Flash 內(nèi)存。RT-Thread 的 fal (Flash 抽象層) 套件提供統(tǒng)一的操作接口分區(qū)管理與存取功能。因此利用 fal 的分區(qū)管理功能很容易在 M487 的 APROM 分割一個(gè)區(qū)塊做為數(shù)據(jù)儲(chǔ)存。
這次仍以 NuMaker-IoT-M487 開發(fā)板為操作范例。關(guān)于開發(fā)板的介紹,請參考系列文章第一篇 “NuMaker-IoT-M487 的 RT-Thread 快速上手指南”。
在 “NuMaker-IoT-M487 加載RT-Thread軟件包 at_device, 三分鐘上手Wi-Fi 模塊” 文章里的范例不僅包含 RT-Thread OS、at_device 套件,也加入 fal 套件。展開范例計(jì)劃里的 packages,可以看到 fal-latest,因此不用再額外加入 fal 套件。
從 RT-Thread 的 fal 套件說明 (https://packages.rt-thread.org/detail.html?package=fal) 得知叫用 init() 后,就可以對 Flash 做read()、erase()、write() 的操作。但是必須先為 fal 設(shè)定 M487 的 Flash 配置。這個(gè)范例里已經(jīng)有配置。展開計(jì)劃里的 board, 開啟 fal_cfg.h。
這里配置有規(guī)劃兩個(gè) Flash 空間,一個(gè)是 ldrom,另一個(gè)是 aprom 。 ldrom 有 4K bytes,整個(gè)都可以使用,因此從 ldrom 的地址 0 開始,大小有 4K (0x1000) 。aprom 有 512K bytes,規(guī)劃最后的 128K bytes 做為數(shù)據(jù)儲(chǔ)存空間,因此從 aprom 的地址 384K (0x60000) 開始, 大小有 128K (0x20000)。
請繼續(xù)按照前篇文章的步驟編譯,再把固件刻錄到 NuMaker-IoT-M487 開發(fā)板。利用 RT-Thread 的console, 可以測試 Flash, 暫且不用另寫代碼。當(dāng)按下 NuMaker-IoT-M487 的Reset 鍵,終端機(jī)出現(xiàn)msh /》后就可以下命令。在終端機(jī)里輸入
fal probe, 列出 ldrom 和aprom 兩個(gè) flash.
fal probe aprom, 選用 aprom
fal erase, 清除一塊區(qū)塊
fal read, 讀取結(jié)果確認(rèn)是清除的, 內(nèi)容都為 0xFF.
fal write, 寫入一些數(shù)據(jù), 這里是 Nuvoton 的 ASCII 碼。
再 fal read, 確認(rèn)數(shù)據(jù)寫入。
再 fal erase, fal read, 確認(rèn)數(shù)據(jù)又清除了。
-
微控制器
+關(guān)注
關(guān)注
48文章
7455瀏覽量
150858 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
4898瀏覽量
97061 -
代碼
+關(guān)注
關(guān)注
30文章
4723瀏覽量
68236
發(fā)布評論請先 登錄
相關(guān)推薦
評論