RTthread的FAL组件介绍

RTthread的FAL组件介绍



前言

FAL (Flash Abstraction Layer) Flash 抽象层,是对 Flash 及基于 Flash 的分区进行管理、操作的抽象层,对上层统一了 Flash 及 分区操作的 API (框架图如下所示)。


废话不多说,开始!

一、FAL组件下载安装及配置

打开rt-thread setting 文件,左上角添加软件包,搜索fal,可以找到fal组件,版本号v1.0.0:

在这里插入图片描述

保持原始配置即可:

在这里插入图片描述

点击退出即可完成自动安装,编译,结果如下:

在这里插入图片描述

二、FAL组件使用

1.分区介绍

分区路径packages\fal-v1.0.0\samples\porting\fal_cfg.h。

代码如下(示例):

#ifdef FAL_PART_HAS_TABLE_CFG
/* partition table */
#define FAL_PART_TABLE                                                               \
{                                                                                    \
    {FAL_PART_MAGIC_WORD,        "bl",     "stm32_onchip",         0,   64*1024, 0}, \
    {FAL_PART_MAGIC_WORD,       "app",     "stm32_onchip",   64*1024,  704*1024, 0}, \
    {FAL_PART_MAGIC_WORD, "easyflash", NOR_FLASH_DEV_NAME,         0, 1024*1024, 0}, \
    {FAL_PART_MAGIC_WORD,  "download", NOR_FLASH_DEV_NAME, 1024*1024, 1024*1024, 0}, \
}
#endif /* FAL_PART_HAS_TABLE_CFG */

这里解释一下:以 {FAL_PART_MAGIC_WORD, “app”, “stm32_onchip”, 641024, 7041024, 0}这一行数据为例:
FAL_PART_MAGIC_WORD :是默认的数据,不用理它;
“app” :是我们建立的分区名称;
“stm32_onchip” :是指片内FLASH还是片外FLASH,这里是片内
641024 : 代表所分配空间的起始地址;也就是前64k空间分配给了"bl",“app” 所用空间大小由641024开始,共计704*1024 大小;
最后的 0 :Flash 的操作函数,如果没有 init 初始化过程,第一个操作函数位置可以置空。

当然,这些是程序默认配置,我们需要根据不同的需要去修改占用空间的大小,若是想增加删除分区,按照程序中相同的格式去更改就可以了,修改时注意各分区的大小及起始地址不要发生冲突。

修改后正常输出如下:

在这里插入图片描述
好,完成分区。

2.数据处理函数

fal数据处理即为对flash进行相应操作,包含数据擦除、读取及写入。

向分区写入数据
int fal_partition_write(const struct fal_partition *part, uint32_t addr, const uint8_t *buf, size_t size)
参数描述
part分区对象
addr相对分区的偏移地址
buf存放待写入数据的缓冲区
size待写入数据的大小
return返回实际写入的数据大小

从分区读取数据
int fal_partition_read(const struct fal_partition *part, uint32_t addr, uint8_t *buf, size_t size)
参数描述
part分区对象
addr相对分区的偏移地址
buf存放待读取数据的缓冲区
size待读取数据的大小
return返回实际读取的数据大小
擦除分区数据
int fal_partition_erase(const struct fal_partition *part, uint32_t addr, size_t size)
参数描述
part分区对象
addr相对分区的偏移地址
size擦除区域的大小
return返回实际擦除的区域大小
擦除整个分区数据
int fal_partition_erase_all(const struct fal_partition *part)
参数描述
part分区对象
return返回实际擦除的区域大小
查找 Flash 分区
const struct fal_partition *fal_partition_find(const char *name)
参数描述
nameFlash 分区名称
return如果查找成功,将返回 Flash 分区对象,查找失败返回 NULL

总结

本文介绍fal分区的创建及相关api函数的介绍,后面会着重讲述fal组件的应用。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuDvei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值