You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Zephyr USB Mass Storage示例以使用XTSD 512MB SPI闪存?

配置Zephyr USB Mass Storage使用XTSD 512MB SPI闪存的实操步骤

1. 启用核心驱动与XTSD支持

在项目的prj.conf中添加以下配置项:

  • 启用SPI外设:CONFIG_SPI=y
  • 启用SPI闪存基础库:CONFIG_SPI_FLASH=y
  • 开启XTSD(SPI NAND)专属支持:CONFIG_SPI_FLASH_XTSD=y
  • 指定闪存容量(512MB对应字节数):CONFIG_SPI_FLASH_XTSD_SIZE=536870912
  • 绑定SPI总线与片选引脚(根据硬件调整):
    CONFIG_SPI_0=y
    CONFIG_SPI_FLASH_XTSD_SPI_DEV_NAME="SPI_0"
    CONFIG_SPI_FLASH_XTSD_CS_GPIO=<你的片选GPIO编号,如GPIO_A_5>
    

2. 替换MSC的存储后端

Zephyr默认MSC示例用RAM磁盘,需改为SPI闪存:

  • 移除prj.conf中RAM磁盘相关配置,如CONFIG_DISK_RAM_STORAGE_SIZE
  • 添加SPI闪存磁盘驱动:CONFIG_DISK_DRIVER_SPI_FLASH=y
  • 修改MSC示例代码(通常在samples/subsys/usb/msc目录),将存储设备指向SPI闪存:
    static const struct disk_info msc_disk = {
        .name = "SPI_FLASH",
        .blksz = 512, // 匹配XTSD的扇区规格
    };
    
  • 确保初始化流程中调用disk_access_init(&msc_disk),验证磁盘挂载状态。

3. 设备树配置(推荐)

在板级设备树中定义XTSD节点:

&spi0 {
    status = "okay";
    xtsd_flash: xtsd@0 {
        compatible = "xtsd,spi-nand";
        reg = <0>;
        spi-max-frequency = <40000000>; // 参考XTSD datasheet调整
        cs-gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
    };
};

4. 调试与验证

  • 编译烧录后连接USB到主机,检查系统是否识别到存储设备
  • 若设备未识别,开启调试日志排查:
    CONFIG_LOG=y
    CONFIG_LOG_LEVEL_DBG=y
    CONFIG_USB_MSC_LOG_LEVEL_DBG=y
    CONFIG_SPI_FLASH_LOG_LEVEL_DBG=y
    
  • 确保坏块管理功能启用:CONFIG_SPI_FLASH_BAD_BLOCK_MARKER=y,避免写入坏块导致数据异常

内容的提问来源于stack exchange,提问作者Sid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 22:12:33