RTthread的FAL组件介绍


文章目录

  • RTthread的FAL组件介绍
  • 前言
  • 一、FAL组件下载安装及配置
  • 二、FAL组件使用
    • 1.分区介绍
    • 2.数据处理函数
      • 向分区写入数据
      • 从分区读取数据
      • 擦除分区数据
      • 擦除整个分区数据
      • 查找 Flash 分区
  • 总结

前言

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)
参数 描述
name Flash 分区名称
return 如果查找成功,将返回 Flash 分区对象,查找失败返回 NULL

总结

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

RTthread的FAL组件介绍相关推荐

  1. RT-Thread FAL 组件使用

    RT-Thread FAL 组件使用 FAL 组件开源项目地址:https://gitee.com/RT-Thread-Mirror/fal/tree/master FAL 组件是 RT-Thread ...

  2. 【RT-Thread】nxp rt10xx SFUD和FAL组件搭建与使用

    开发前准备 硬件平台:nxp rt10xx单片机 IDE: Keil spi设备驱动框架已经搭建完毕(本章使用spi2,flash挂载在该位置) SFUD 简介 SFUD 全称 Serial Flas ...

  3. RT-Thread 使用FAL多字节读写FLASH

    RT-Thread 使用FAL多字节读写FLASH FAL 简介 在RT-Thread上使用FAL 添加SPI 总线驱动 添加SFUD驱动 添加SPI DEVICE 使用SFUD添加SPI 块设备 添 ...

  4. RT-Thread源码下载介绍

    转载:https://blog.csdn.net/RootCode/article/details/84066981 RT-Thread 源码下载应用笔记 摘要 本文将详细介绍如何获取 RT-Thre ...

  5. RT-thread4.1.0更新后文件系统fal组件修改

    RT-thread更新到4.1.0后,将fal组件更新为内部组件,目录为:compments-->fal;其中sample目录不参与编译,但是我们如果指定分区表的话需要将sample下的fal_ ...

  6. 客快物流大数据项目(六):Docker与虚拟机的形象比喻及组件介绍

    目录 Docker与虚拟机的形象比喻及组件介绍 一.Docker与虚拟机的形象比喻

  7. 2021年大数据Hadoop(二十六):YARN三大组件介绍

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Yarn三大组件介绍 ResourceManager No ...

  8. 【Netty】Netty组件介绍

    Netty组件介绍 Netty有 Bootstrap/ServerBootstrap,Channel,EventLoop,ChannelFuture, ChannelHandler,ChannelPi ...

  9. c# BackgroundWorker组件介绍(属性、方法、事件)

    c# BackgroundWorker组件介绍(属性.方法.事件) 2008-07-03 16:28 在VS2005中添加了BackgroundWorker组件,该组件在多线程编程方面使用起来非常方便 ...

最新文章

  1. 微软 Internet 信息服务器(IIS) 5.0 和 6.0 状态代码说明
  2. Monkey测试1——Monkey的使用
  3. Android 通用流行框架大全
  4. python正则表达式指南_Python正则表达式指南
  5. js 读取php页面内容,js读取html文件 js获取html页面显示内容
  6. vs2015 单元测试 linux,VS2015做单元测试
  7. 如何 更换vue的图标_vue如何实现图标点击选中后换一个图标(只单选)
  8. jquery的扩展方法介绍
  9. python通信编程_python 通信编程
  10. 对BottomTagFragment的理解
  11. 转:Java多线程学习(吐血超详细总结)
  12. 线程基础阶段性总结和扩展(二)——ThreadLock
  13. 微信8.0自动发送炸弹python脚本
  14. 第三方支付——微信web端支付(java)
  15. 高清渐变动态壁纸来了 手把手教你做动态壁纸
  16. Apache虚拟主机的实现方式
  17. 在springboot中使用腾讯QQ邮箱发送邮件时出现的错误
  18. 2022-2028全球与中国语音生物识别市场现状及未来发展趋势
  19. Web前端期末大作业-响应式艺术培训机构网页设计(bootstrap+HTML+CSS+JavaScript+)实现
  20. Python爬虫HTTP异常:rllib.error.HTTPError: HTTP Error 418,伪装User-Agent以及fake-useragent插件的妙用

热门文章

  1. [SSD核心技术:FTL 16] 固态硬盘预读技术详解
  2. 神经网络在故障诊断中的应用
  3. TCP/IP协议及常见状态码说明(SYN,FIN,ACK,PSH,RST)
  4. 十分钟看懂图像语义分割技术
  5. 浮动练习之猫眼电影的电影页面
  6. 在html中雪碧图的坐标怎么看,Webpack中雪碧图使用详解
  7. 计算机与我的工作 生活作文600字,我和电脑
  8. 带你深入了解什么是商业数据分析
  9. 安全产品设计的重要性
  10. WSL 2 installation is incomplete.【BUG解决】【Docker之云原生基石】