UFS 驱动调试指南
S100芯片内置 UFS Host 控制器,硬件最高支持 UFS3.1协议,软件接口最高支持3.0,支持 HS-G4速率模式,支持2路数据 通道。本文档介绍 UFS 驱动的开发、配置和调试方法。
UFS 硬件架构
S100 UFS 控制器特性
S100芯片内置 UFS Host 控制器,支持以下特性:
| 特性 | 说明 |
|---|---|
| UFS 协议版本 | 支持 UFS 2.0 / 2.1 / 3.0 / 3.1 |
| UniPro 版本 | 支持 UniPro 1.61 / 1.8 |
| M-PHY 版本 | 支持 M-PHY 3.0 |
| 速率模式 | HS-G4(11.6Gbps/通道) |
| 数据通道 | 2路数据通道 |
| 功能支持 | 数据高速读写、安全存储 |
硬件模块组成
UFS 子系统由以下几个部分组成:
-
UFS Host Controller (UFSHC) - 主机控制器
- 支持 UFS 3.0协议
- 支持 HS-G4速率(11.6Gbps/通道)
- 支持2路数据通道
- 内置 SCSI 命令队列管理
-
MPHY - 物理层接口
- 支持 Rate A 和 Rate B 两种速率模式
- 支持发射端均衡器(Tx Equalization)配置
- 支持自动校准功能
-
系统寄存器控制
- 时钟门控控制
- 复位控制
- AXI 缓存配置
软件架构
┌─────────────────────────────────────────────────────────────┐
│ 应用层 │
├─────────────────────────────────────────────────────────────┤
│ 文件系统层 │
├─────────────────────────────────────────────────────────────┤
│ 块设备层 │
├─────────────────────────────────────────── ──────────────────┤
│ SCSI子系统 │
├─────────────────────────────────────────────────────────────┤
│ UFS核心层 (ufshcd) │
│ ┌───────────┬───────────┬───────────┬──────────────────┐ │
│ │ UTP传输层 │ UIC控制层 │ DME管理层 │ 电源管理层 │ │
│ └───────────┴───────────┴───────────┴──────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Host Controller层 │
│ ┌──────────────────────────────┐ │
│ │ Hobot UFS HSI层 │ │
│ │ (ufs-hobot.c/ufs-hobot-hsi.c)│ │
│ └──────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ MPHY物理层 │
└─────────────────────────────────────────────────────────────┘
代码路径
# Hobot UFS驱动文件
hobot-drivers/ufs/ufs-hobot.c # 主驱动文件
hobot-drivers/ufs/ufs-hobot.h # 头文件
hobot-drivers/ufs/ufs-hobot-hsi.c # HSI层实现
hobot-drivers/ufs/ufs-hobot-hsi.h # HSI层头文件
hobot-drivers/ufs/Kconfig # 内核配置选项
hobot-drivers/ufs/Makefile # 编译配置
# Linux内核UFS核心代码
drivers/ufs/core/ufshcd.c # UFS核心层
drivers/ufs/core/ufshcd.h # UFS核心头文件
drivers/ufs/host/ufshcd-pltfrm.c # 平台驱动层
# 设备树配置
kernel-dts/drobot-s100-soc.dtsi # S100 SoC配置