RT-Thread 配置片外Flash与EasyFlash组件


背景

由于内部 512KB FLASH 无法空出多的空间来运行 EasyFlash ,所以增加了外置的 W25Q128 存储芯片,容量为 128M Bit,即16M Byte,足够满足需求,并且有足够的空间为后续的 OTA升级、LOG 记录所使用。

配置FLASH

bsp 自带了使能外部 spi1 flash的选项,型号也一致,直接打开就可以

在设备驱动中可以看到相应的 sfud 等文件被加入,SFUD (Serial Flash Universal Driver) 串行 Flash 通用驱动库是一款开源的串行 SPI Flash 通用驱动库。由于现有市面的串行 Flash 种类居多,各个 Flash 的规格及命令存在差异, SFUD 就是为了解决这些 Flash 的差异现状而设计,让我们的产品能够支持不同品牌及规格的 Flash,提高了涉及到 Flash 功能的软件的可重用性及可扩展性,同时也可以规避 Flash 缺货或停产给产品所带来的风险。

移植 FAL 接口

在配置工具中使能选项,并命名设备(默认为 norflash0)

在工程 FAL 文件夹中添加示例移植文件

做部分修改,这个nor_flash0是需要写到 FLASH 设备表中的名字,容量修改为 16M,同时查找设备直接查找挂在spi10的设备就可以。

最后再修改分区表,打开fal_cfg.h,在设备表中添加外置 FLASH

添加新的分区,这块分区由于是给 EasyFlash 用的,分区命名为"easyflash" ,属于 "nor_flash0" 这块设备,相对设备的起始地址为 0 ,大小是 512 K.

编译下载后可以看到新增的外置 FLASH 初始化成功,分区表也成功分配。

配置 EasyFlash

重新配置 EasyFlash 组件

添加ef_fal_port.c文件,修改FAL_EF_PART_NAME宏定义为"easyflash"


完成相关的初始化

测试

设置新的 env 变量 temp = 404,然后打印了该变量,执行 reboot,再次打印该变量,测试通过。

  • 分享:
评论
还没有评论
    发表评论 说点什么