在 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 电源控制
};
⚙️ 验证步骤
检查内核配置:
zcat /proc/config.gz | grep -E "USB|SCSI|BLK_DEV_SD|VFAT"
插入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)
检查设备节点:
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 # 多队列支持
💡 最终建议:
- 使用
make menuconfig
或手动编辑.config
文件启用上述选项- 重新编译内核并更新启动加载器
- 确保硬件上 USB 端口有足够供电(RV1126 需外部 5V 供电)