基于正点原子F407的RT-Thread的FAL分区配置步骤

Fal配置(片内flash+外部flash_W25Q128)

  • 开启BSP片上 Flash驱动(STM32F407-atk-exploer-Hal)

基于正点原子F407的RT-Thread的FAL分区配置步骤_第1张图片

1.开启FAL工具包

基于正点原子F407的RT-Thread的FAL分区配置步骤_第2张图片

每个功能的配置说明如下:

  • 开启调试日志输出(默认开启);
  • 分区表是否在 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 工程

此时工程新添加的文件如下图:

基于正点原子F407的RT-Thread的FAL分区配置步骤_第3张图片

 

2.修改drv_flash_f4.c

rt_unit64_t修改为rt_unit32_trt-thread-3.1.2并不支持64位)

基于正点原子F407的RT-Thread的FAL分区配置步骤_第4张图片

 

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测试函数

添加

基于正点原子F407的RT-Thread的FAL分区配置步骤_第5张图片

参考D:\STM32_RT_Thread_Code\fal_test.c

 

注:因为程序本来就是下载到片内flash的,所以在bench性能测试的时候,如果对已存在固件程序的地址进行测试,那么会导致板子的固件被清除,从而卡住。因此设置分区的时候要配置好偏移地址。

基于正点原子F407的RT-Thread的FAL分区配置步骤_第6张图片

                                                            图1 片内flash的各分区测试正常

开启BSP的SPI Flash_W25Q128
基于正点原子F407的RT-Thread的FAL分区配置步骤_第7张图片

1.开启FALSFUD(万能spi-flash驱动)库的支持

基于正点原子F407的RT-Thread的FAL分区配置步骤_第8张图片

 

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

基于正点原子F407的RT-Thread的FAL分区配置步骤_第9张图片

 

基于正点原子F407的RT-Thread的FAL分区配置步骤_第10张图片

 

FAL功能测试方法参考:

https://github.com/RT-Thread-packages/fal

你可能感兴趣的:(STM32,rtthread,物联网)