本目录下主要存放了基于 RT-Thread 的移植参考示例。主要基于以下两种底层 Flash 驱动
fal : Flash 抽象层
SFUD : 万能 SPI Flash 驱动库
如果你的 Flash 驱动使用的是上面中的一种,那么移植 EasyFlash 将会非常简单,具体参考下面的文档。如果没有使用上面的驱动,请参考 EasyFlash 的 移植文档进行移植。在 EasyFlash 官方仓库下有很多 demo,也可以参考。
移植参考文件位于 /ports/ef_fal_port.c 。先将该文件拷贝至项目中,在文件顶部有如下宏定义
/* EasyFlash partition name on FAL partition table */
#define FAL_EF_PART_NAME "ef"
再修改该宏定义为 EasyFlash 备份区位于 fal 分区表中的分区名即可,默认是 "ef"。
注意:在使用 fal 时,由于上面指定好了会使用整个
"ef"
分区给 EasyFlash,同时ef_fal_port.c
中的移植也是基于分区读写,所以配置的 EasyFlash 起始地址应从 0 地址开始,即PKG_EASYFLASH_START_ADDR
配置应为 0。
移栽参考文件位置于/ports/ef_sfud_port.c。首先将文件选取贝至项目中,在文件中的ef_port_init
函数中有关于SFUD Flash设备的获取的相关代码,如下所示
static const sfud_flash *flash;
EfErrCode ef_port_init(ef_env const **default_env, size_t *default_env_size) {
EfErrCode result = EF_NO_ERR;
...
/* 从 RT-Thread 的 SPI Flash 设备中获取 SFUD Flash 设备对象 */
extern rt_spi_flash_device_t w25q64;
flash = (sfud_flash_t)(w25q64->user_data);
return result;
}
flash在中中中中中中w25q64
设备设备时时时时时时时时时时时w25q64 = rt_sfud_flash_probe("w25q64", "spi10");
的的返回返回值。该该对象对象对象对象是是是是是rt-thread user_data
spi spi spi spi flashflash
对象
原作者:armink
更多回帖