T5 外部 Flash 添加说明

更新时间:2025-04-15 06:09:06下载pdf

本文为您介绍如何在涂鸦提供的 SDK 中添加您自己的 QSPI 驱动及调用关系,文中以 GD5F1GQ5 为例进行说明。

添加驱动文件

./vendor/T5/t5_os/bk_idk/middleware/driver/qspi/ 目录中添加驱动文件,如
./vendor/T5/t5_os/bk_idk/middleware/driver/qspi/qspi_flash_GD5F1GQ5.c

驱动文件对外暴露数据结构

QSPI 驱动数据结构如下:

typedef struct {
    const char *name;

    uint32_t page_size;
    uint32_t block_size;
    uint32_t total_size;

    QFLASH_INIT_T           init;
    QFLASH_DEINIT_T         deinit;
    QFLASH_READ_ID_T        read_id;
    QFLASH_UNLOCK_T         unblock;
    QFLASH_PAGE_READ_T      read_page;
    QFLASH_PAGE_WRITE_T     write_page;
    QFLASH_BLOCK_ERASE_T    erase_block;

} qspi_driver_desc_t;

参数说明

参数 描述
name 用来索引驱动程序,该字段为驱动唯一标识
  • page_size
  • block_size
  • total_size
Flash 属性,可通过 Flash 规格书获取。该参数在 Flash 读写擦除操作及文件系统相关操作中会使用到
  • init
  • deinit
初始化及反初始化操作,设置 QSPI 工作频率等参数,可参考 GD51F1G 中的设置
read_id 读 Flash ID
unblock Flash 解保护
  • read_page
  • write_page
  • erase_block
Flash 实现读写擦除操作;
根据 Flash 规格书,发送相应命令及参数执行对应操作。与预期不一致时,可用逻辑分析仪抓取总线上数据辅助排查

驱动文件引用

定义 qspi_driver_desc_t 结构后,完成以下操作:

  1. vendor/T5/t5_os/bk_idk/include/driver/qspi_flash_common.h 文件中添加声明,如:
    extern qspi_driver_desc_t qspi_gd5f1g_desc;

  2. vendor/T5/t5_os/bk_idk/middleware/driver/qspi/qspi_flash_common.c 文件的 qspi_flash_devices 全局变量中添加引用,如下所示:

    static qspi_driver_desc_t *qspi_flash_devices[] = {
        &qspi_gd5f1g_desc,
        &qspi_gd25q127c_desc,
    };
    
  3. vendor/T5/t5_os/bk_idk/middleware/driver/CMakeLists.txt 中,添加文件到编译系统。然后,在 CONFIG_QSPI 的 if 条件中添加如下图所示的文件:

    T5 外部 Flash 添加说明

配置及应用初始化

vendor/T5/t5_os/projects/tuya_app/config/bk7258/config 配置文件中添加配置项
CONFIG_TUYA_QSPI_FLASH_TYPE,赋值为 QSPI 驱动数据结构 中的参数 const char *name 的值,如下图所示:

T5 外部 Flash 添加说明