FAL组件的移植

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

从上图可以看出FAL抽象层位于SFUD框架的上层,可以将多个Flash硬件(包括片内Flash和片外Flash)统一进行管理,并向上层比如OTA层提供对底层多个Flash硬件的统一访问接口,方便上层应用对底层硬件的访问操作。我上篇文章介绍的FOTA就是在FAL层之上做的,理解了这篇文章,FOTA的底层就理解了。参考文章:STM32通用Bootloader——FOTA

2.1 主要特点:

  • 支持静态可配置的分区表,并可关联多个 Flash 设备;
  • 分区表支持 自动装载 。避免在多固件项目,分区表被多次定义的问题;
  • 代码精简,对操作系统 无依赖 ,可运行于裸机平台,比如对资源有一定要求的 Bootloader;
  • 统一的操作接口。保证了文件系统、OTA、NVM(例如:EasyFlash) 等对 Flash 有一定依赖的组件,底层 Flash 驱动的可重用性;
  • 自带基于 Finsh/MSH 的测试命令,可以通过 Shell 按字节寻址的方式操作(读写擦) Flash 或分区,方便开发者进行调试、测试;
  • 2.2 如何移植:
    项目地址:https://github.com/RT-Thread-packages/fal

  • 项目地址: 

  • 下载内容 

     

    同样在移植过程中一定要参考两个资料:项目的readme文档和samples的移植说明。

    对于使用rtthread完整版来说,对于使用者只需要勾选就可以了:


    对于rtthread完整版的来说移植很简单,所以本次移植教程还是以rtthread nano为例,在上个移植完SFUD工程的基础上,继续移植FAL。

    2.2.1 下载FAL项目源码,并添加到工程目录中;

  •  

    移植
    fal的移植是建立在SFUD的底层驱动上的,所以如果没还没移植好SFUD,看上一篇文章

    一样先下源码。

  • Gitee仓库:RT-Thread-Mirror/fal - Gitee.comhttps://gitee.com/RT-Thread-Mirror/fal/tree/master

    fal_cfg.h文件

  • 导FAL软件包的目录如下,其中samples文件夹下为移植接口文件:

  •  其中fal_cfg.h 为fal 配置文件(Flash 设备配置和分区表配置) :

  •  

  • 入工程之后是这样样子的

  • 在定义 Flash 设备表前,需要先定义 Flash 设备。可以是片内 flash, 也可以是片外基于 SFUD 的 spi flash:

    定义片内 flash 设备可以参考 fal_flash_stm32f2_port.c 。
    定义片外 spi flash 设备可以参考 fal_flash_sfud_port.c 。

    注意一下,因为我使用的是SPI-FLASH所以使用fal_flash_sfud_port.c这个.C文件,如果是片内flash请选其他啊,不过一般这个用的多吧


  • 注意一下,因为我使用的是SPI-FLASH所以使用fal_flash_sfud_port.c这个.C文件,如果是片内flash请选其他啊,不过一般这个用的多吧

  • 跟着套路先改fal_cfg.h文件

  • 没有修改前  在fal.cfg.h  报错  

  • 还有一点需要注意   由于本文没有使用RT-THREAD  操作系统   所以需要将 

  • "rtconfig.h"和

  •  fal_cfg.h文件

  • FAL API说明文档  链接:

  • docs/fal_api.md · RT-Thread-Mirror/fal - Gitee.com

  • FAL API

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值