在 RV1126 Linux 系统中启用 USB 2.0 HOST 的 U 盘(SCSI 设备)支持

发布于:2025-07-10 ⋅ 阅读:(25) ⋅ 点赞:(0)

在 RV1126 Linux 系统中启用 USB 2.0 HOST 的 U 盘(SCSI 设备)支持,需要在内核配置中启用以下关键选项:
在这里插入图片描述


📌 必须的内核配置项(在 .config 文件中添加)

# ========== USB 核心支持 ==========
CONFIG_USB_SUPPORT=y
CONFIG_USB=y
CONFIG_USB_HOST=y                   # 启用 USB Host 模式
CONFIG_USB_DEFAULT=y                # 使用默认 USB 主机控制器驱动

# ========== RV1126 专用控制器驱动 ==========
CONFIG_USB_DWC2=y                   # DesignWare USB2.0 控制器 (RV1126 使用)
CONFIG_USB_DWC2_HOST=y              # 强制主机模式
CONFIG_USB_DWC2_PLATFORM=y          # 平台设备支持

# ========== USB 存储支持 ==========
CONFIG_USB_STORAGE=y                # USB 大容量存储支持
CONFIG_USB_STORAGE_REALTEK=y        # 瑞昱芯片 U 盘支持 (可选)
CONFIG_USB_UAS=y                    # USB Attached SCSI (UAS) 支持

# ========== SCSI 子系统 ==========
CONFIG_SCSI=y                       # SCSI 设备支持
CONFIG_BLK_DEV_SD=y                 # SCSI 磁盘支持 (必须)
CONFIG_SCSI_MOD=y                   # SCSI 模块化支持

# ========== 文件系统支持 ==========
CONFIG_VFAT_FS=y                    # FAT/FAT32 文件系统
CONFIG_NLS_CODEPAGE_437=y           # 英语代码页
CONFIG_NLS_ISO8859_1=y              # 西欧语言支持
CONFIG_NLS_UTF8=y                   # UTF-8 编码支持

🔧 设备树配置示例rv1126.dtsi

/* USB 控制器配置 */
&usbdrd {
    status = "okay";
};

&usbdrd_dwc2 {
    status = "okay";
    dr_mode = "host";  // 强制为主机模式
    phys = <&u2phy_otg>; 
    phy-names = "usb2-phy";
    
    /* 解决某些U盘的兼容性问题 */
    snps,dis_enblslpm_quirk;
    snps,dis_u2_susphy_quirk;
};

/* USB PHY 配置 */
&u2phy {
    status = "okay";
};

&u2phy_otg {
    status = "okay";
    vbus-supply = <&vcc5v0_otg>;  // USB 电源控制
};

⚙️ 验证步骤

  1. 检查内核配置

    zcat /proc/config.gz | grep -E "USB|SCSI|BLK_DEV_SD|VFAT"
    
  2. 插入U盘后查看内核日志

    dmesg | tail -30
    # 正常应显示:
    # [   5.123456] usb 1-1: new high-speed USB device number 2 using dwc2
    # [   5.345678] scsi host0: usb-storage 1-1:1.0
    # [   5.456789] scsi 0:0:0:0: Direct-Access     Kingston DataTraveler 3.0 PMAP PQ: 0 ANSI: 6
    # [   5.567890] sd 0:0:0:0: [sda] 60555264 512-byte logical blocks: (31.0 GB/28.9 GiB)
    
  3. 检查设备节点

    ls /dev/sd*  # 应出现 /dev/sda, /dev/sda1 等
    

⚠️ 常见问题解决

1. U盘无法识别(无 sd* 设备)

# 检查USB设备列表
lsusb
# 若无输出,加载DWC2驱动:
modprobe dwc2
modprobe usb-storage

# 查看SCSI设备
cat /proc/scsi/scsi

2. 出现 “device descriptor read/64 error”

// 在设备树中添加电源调节
&u2phy_otg {
    vbus-supply = <&vcc5v0_host>;  // 确保有5V供电
    phy-supply = <&vcc3v3_sys>;    // PHY电源
};

3. 支持大容量U盘(>2TB)

CONFIG_64BIT=y                     # 64位系统支持
CONFIG_LBDAF=y                     # 大磁盘支持
CONFIG_SCSI_MQ_DEFAULT=y           # 多队列支持

💡 最终建议

  1. 使用 make menuconfig 或手动编辑 .config 文件启用上述选项
  2. 重新编译内核并更新启动加载器
  3. 确保硬件上 USB 端口有足够供电(RV1126 需外部 5V 供电)

网站公告

今日签到

点亮在社区的每一天
去签到