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

14 篇文章 0 订阅
8 篇文章 2 订阅

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_trt-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.开启FALSFUD(万能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功能测试方法参考:

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

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值