有些应用场合需要使用 Flash 储存配置数据。大多数微控制器内建 Flash 用以储存程序代码。M487 微控制器内建 512K Bytes APROM 和 4K Bytes LDROM 的 Flash 内存。RT-Thread 的 fal (Flash 抽象层) 套件提供统一的操作接口分区管理与存取功能。因此利用 fal 的分区管理功能很容易在 M487 的 APROM 分割一个区块做为数据储存。
这次仍以 NuMaker-IoT-M487 开发板为操作范例。关于开发板的介绍,请参考系列文章第一篇 “NuMaker-IoT-M487 的 RT-Thread 快速上手指南”。
在 “NuMaker-IoT-M487 加载RT-Thread软件包 at_device, 三分钟上手Wi-Fi 模块” 文章里的范例不仅包含 RT-Thread OS、at_device 套件,也加入 fal 套件。展开范例计划里的 packages,可以看到 fal-latest,因此不用再额外加入 fal 套件。
从 RT-Thread 的 fal 套件说明 (https://packages.rt-thread.org/detail.html?package=fal) 得知叫用 init() 后,就可以对 Flash 做read()、erase()、write() 的操作。但是必须先为 fal 设定 M487 的 Flash 配置。这个范例里已经有配置。展开计划里的 board, 开启 fal_cfg.h。
这里配置有规划两个 Flash 空间,一个是 ldrom,另一个是 aprom 。 ldrom 有 4K bytes,整个都可以使用,因此从 ldrom 的地址 0 开始,大小有 4K (0x1000) 。aprom 有 512K bytes,规划最后的 128K bytes 做为数据储存空间,因此从 aprom 的地址 384K (0x60000) 开始, 大小有 128K (0x20000)。
请继续按照前篇文章的步骤编译,再把固件刻录到 NuMaker-IoT-M487 开发板。利用 RT-Thread 的console, 可以测试 Flash, 暂且不用另写代码。当按下 NuMaker-IoT-M487 的Reset 键,终端机出现msh /》后就可以下命令。在终端机里输入
fal probe, 列出 ldrom 和aprom 两个 flash.
fal probe aprom, 选用 aprom
fal erase, 清除一块区块
fal read, 读取结果确认是清除的, 内容都为 0xFF.
fal write, 写入一些数据, 这里是 Nuvoton 的 ASCII 码。
再 fal read, 确认数据写入。
再 fal erase, fal read, 确认数据又清除了。
全部0条评论
快来发表一下你的评论吧 !