Fal配置(片内flash+外部flash_W25Q128)
-
开启BSP片上 Flash驱动(STM32F407-atk-exploer-Hal)
1.开启FAL工具包
每个功能的配置说明如下:
- 开启调试日志输出(默认开启);
- 分区表是否在 fal_cfg.h 中定义(默认开启)。如果关闭此选项,fal 将会自动去指定 Flash 的指定位置去检索并装载分区表,具体配置详见下面两个选项;
- 存放分区表的 Flash 设备;
- 分区表的 结束地址 位于 Flash 设备上的偏移。fal 将从此地址开始往回进行检索分区表,直接读取到 Flash 顶部。如果不确定分区表具体位置,这里也可以配置为 Flash 的结束地址,fal 将会检索整个 Flash,检索时间可能会增加。
- 启用 FAL 针对 SFUD 的移植文件(默认关闭);
- 应输入调用 rt_sfud_flash_probe 函数时传入的 FLASH 设备名称(也可以通过 list_device 命令查看 Block Device 的名字获取)。该名称与分区表中的 Flash 名称对应,只有正确设置设备名字,才能完成对 FLASH 的读写操作。
然后让 RT-Thread 的包管理器自动更新,或者使用 pkgs --update 命令更新包到 BSP 中。
配置完毕后,先使用 pkgs --update
命令将所需要的软件包下载下来,然后使用 scons --target=mdk5
命令重新生成 mdk 工程
此时工程新添加的文件如下图:
2.修改drv_flash_f4.c
rt_unit64_t修改为rt_unit32_t(rt-thread-3.1.2并不支持64位)
3.修改fal_cfg.h
#19
#define FLASH_SIZE_GRANULARITY_128K (8 * 128 * 1024) //1M容量
#23
#define STM32_FLASH_START_ADRESS_128K STM32_FLASH_START_ADRESS 0x08000000
修改flash device table
修改partition table
4.在main.c中添加fal测试函数
添加
参考D:\STM32_RT_Thread_Code\fal_test.c
注:因为程序本来就是下载到片内flash的,所以在bench性能测试的时候,如果对已存在固件程序的地址进行测试,那么会导致板子的固件被清除,从而卡住。因此设置分区的时候要配置好偏移地址。
图1 片内flash的各分区测试正常
开启BSP的SPI Flash_W25Q128
1.开启FAL对SFUD(万能spi-flash驱动)库的支持
2.在fal_flash_sfud.port.c中定义fal_flash设备
struct fal_flash_dev nor_flash0 = {FAL_USING_NOR_FLASH_DEV_NAME, 0, 16*1024*1024, 4096, {init, read, write, erase}};
注:FAL_USING_NOR_FLASH_DEV_NAME为上图中的norflash0
3.修改fal_cfg.h
引入上面定义的fal_flash设备
将设备加入设备表
添加新的flash分区
4.修改fal_flash_sfud_port.c
FAL功能测试方法参考: