嵌入式技术论坛
直播中

王刚

7年用户 1196经验值
私信 关注
[经验]

基于RT-Thread的FAL分区该怎样去配置呢

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_Codefal_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



原作者:SeniorZ

更多回帖

发帖
×
20
完善资料,
赚取积分