STM32F769I-disc片内flash对接fal框架(基于RT-thread)

Posted monarch-t

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F769I-disc片内flash对接fal框架(基于RT-thread)相关的知识,希望对你有一定的参考价值。

STM32F769I-disc flash

目标:完成f769的片内flash驱动,并且对接fal
平台:STM32F769I并运行RT-thread内核

FAL介绍:FAL (Flash Abstraction Layer) Flash 抽象层是对 Flash 及基于 Flash 的分区进行管理、操作的抽象层,对上层统一了 Flash 及 分区操作的 API ,并具有以下特性:
支持静态可配置的分区表,并可关联多个 Flash 设备;

  • 分区表支持,自动装载。避免在多固件项目,分区表被多次定义的问题;
  • 代码精简,对操作系统无依赖,可运行于裸机平台,比如对资源有一定要求的 Bootloader;
  • 统一的操作接口。保证了文件系统、OTA、NVM(例如:EasyFlash)等对Flash有一定依赖的组件,底层 Flash 驱动的可重用性;
  • 自带基于 Finsh/MSH的测试命令,可以通过Shell 按字节寻址的方式操作(读写擦)Flash或分区,方便开发者进行调试、测试;
  1. 第一步很重要 因为FAL需要Flash支持,所以要添加如下代码,到board下的kconfig中
	config BSP_USING_ON_CHIP_FLASH
		bool "Enable ON_CHIP_FLASH"
		default y

技术图片
2. 在env下输入menuconfig进入配置界面,在 Hardware Drivers Config → On-chip Peripheral Drivers中确认BSP_USING_ON_CHIP_FLASH呗选中了;进入RT-Thread online packages → system packages选中fal: Flash Abstraction Layer implement. Manage flash device and partition.使能RT_thread中的fal框架,使用最新版本,然后保存并推出配置;
3. 此时,工程中多了一个fal-latest的文件夹,这就是fal框架,同时由于fal需要fal_cfg.h配置文件,而配置完以后,不会帮你自动添加,所以我们需要手动加一个;我们可以将/sample/porting目录下的fal_cfg.h文件复制到inc目录下;
4. 在env中使用scons工具编译工程
5. 回到工程,技术图片,我们可以发现Drivers中有一个文件drv_flash_fx.c(由于我是f769所以这里是drv_flash_f7.c),这里可以看到对on_chip_flash的支持![]
(https://img2020.cnblogs.com/blog/1544288/202003/1544288-20200324113859291-808772565.jpg)
6. 打开fal_cfg.h文件,我对此稍作修改,只用到了on_chip的部分技术图片;标号1和标号2的位置,是我选择上一张图片中的函数替换了原来的stm32f2_onchip_flash这个函数;标号3的位置我把norflash0的两个分区删除了(如果以后有需要的话,可以自己查询芯片手册添加);
7. 最后在main.c中编写

//记得要添加fal的头文件
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include <fal.h>
static int fal_test(const char *partiton_name);
int main(void)
{
    fal_init();
    ...
    
    ...
}
  1. 最后看一下效果:

技术图片












以上是关于STM32F769I-disc片内flash对接fal框架(基于RT-thread)的主要内容,如果未能解决你的问题,请参考以下文章

RTT+stm32f107移植FAL组件

stm32 f103和f407的区别?

stm32f769ni-discovery编译例程需要修改

STM32F0xx_FLASH编程(片内)配置详细过程

STM32 开发板资源梳理

STM32F10x_SPI(硬件接口 + 软件模拟)读写Flash(25Q16)