嵌入式技术论坛
直播中

李明

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

基于RT-Thread的EasyFlash移植参考示例

1、简介

本目录下主要存放了基于 RT-Thread 的移植参考示例。主要基于以下两种底层 Flash 驱动

fal : Flash 抽象层
SFUD : 万能 SPI Flash 驱动库

如果你的 Flash 驱动使用的是上面中的一种,那么移植 EasyFlash 将会非常简单,具体参考下面的文档。如果没有使用上面的驱动,请参考 EasyFlash 的 移植文档进行移植。在 EasyFlash 官方仓库下有很多 demo,也可以参考。

2、基于 fal : Flash 抽象层

移植参考文件位于 /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。

3、基于SFUD : 万能SPI Flash驱动库

移栽参考文件位置于/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_dataspi spi spi spi flashflash对象

原作者:armink

更多回帖

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