【RTT】SPI Flash 与文件系统(2):FAL

本文介绍了FAL(Flash Abstraction Layer)在RT-Thread中的应用,它作为Flash和分区管理的抽象层,提供统一的API。内容包括FAL的概述、使用方法,如定义Flash设备(片内与片外)、创建Flash设备表和分区表,以及如何在正点原子潘多拉开发板上使用FAL进行分区操作,特别强调了分区的配置注意事项。
摘要由CSDN通过智能技术生成

  
参考文档(国内):FAL 参考文档

  

一、概述

  FAL (Flash Abstraction Layer) ,即 Flash 抽象层,是对 Flash 及基于 Flash 的分区进行管理、操作的抽象层,对上层统一了 Flash 及 分区操作的 API。

在这里插入图片描述
  对于 FAL 的依赖来说,对 RT-Thread 无依赖,也可用于裸机。但是,测试命令功能需要依赖 RT-Thread FinSH/MSH。

  

二、FAL 的使用

  对于 FAL 的使用,详细介绍可以查看上面的参考手册,这里只是做一个简单的分析。
  使用的开发板是正点原子的潘多拉开发板,所以下面的分析也是以这个开发板的 bsp 源码为基础,仅供参考。

  

1、 定义 Flash 设备

  对于要定义的 Flash 设备。可以是片内 flash, 也可以是片外的 spi flash。
  简单来说,就是定义具体的 Flash 设备对象,用户需要根据自己的 Flash 情况分别实现 init、 read、 write、 erase 这些操作函数。

  

1.1、 片内 Flash

  对于 STM32L475 的片内 Flash 驱动,RT-Thread 为我们移植好了源码,只需要打开 “Enable on-chip FLASH” 选项即可。

/* bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_l4.c */

const struct fal_flash_dev stm32_onchip_flash = 
{
    
	"onchip_flash", 				/* Flash 设备的名字 */
	STM32_FLASH_START_ADRESS,		/* 对 Flash 操作的起始地址:0x08000000 */ 
	STM32_FLASH_SIZE, 				/* Flash 的总大小:512 KB */
	FLASH_PAGE_SIZE, 				/* Flash 块/扇区大小:2048 */
	/* Flash 的操作函数 */
	{
   	
		NULL, 						/* init 函数 */
		fal_flash_read, 			/* read 函数 */
		fal_flash_write, 			/* write 函数 */
		fal_flash_erase				/* erase 函数 */
	} 
};

/* 这里的分析以 write 函数为例 */
static int fal_flash_write(long offset, const rt_uint8_t *buf, size_t size)
{
   
	/**
	 * RT-Thread 已经为我们实现了 stm32_flash_write 函数
	 * 这个函数也是调用了 stm32 HAL 库提供的接口 
	 **/
    return stm32_flash_write(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值