首页 > 其他分享 >CPU与UFS设备的通信

CPU与UFS设备的通信

时间:2024-09-29 10:16:15浏览次数:1  
标签:控制器 主机 通信 SCSI UFS CPU 设备

CPU与UFS(Universal Flash Storage)设备通信的过程涉及多个层次,硬件、固件以及软件协议相互配合。

1. 硬件层面

CPU与UFS设备通过硬件总线进行通信,具体的总线通常是MIPI(Mobile Industry Processor Interface)*联盟定义的*MIPI M-PHY。UFS协议在硬件上使用MIPI M-PHY作为物理层,提供高速串行通信。

2. UFS主机控制器

在CPU和UFS设备之间,存在一个称为UFS主机控制器(UFS Host Controller)*的模块。这个控制器管理通信,并且通常通过*PCIe(PCI Express)或AHB/APB(Advanced High-performance Bus/Advanced Peripheral Bus)与CPU连接。

主机控制器的主要任务是处理传输请求、响应命令,并将这些操作转换为UFS协议中定义的低级通信格式。UFS协议是基于SCSI命令集的。

3. 协议栈

在软件层面,UFS使用了一组协议栈,帮助CPU以标准化的方式与存储设备进行通信。

a. UFS协议层

UFS设备使用的是一种专有的协议,遵循UFS协议层(Unipro和SCSI协议集)。这套协议定义了如何在主机(CPU)和设备(存储)之间发送命令和数据。UFS的通信协议主要包括以下几部分:

  • Unipro协议:用于数据链路层和物理层的通信。
  • UFS Transport Protocol (UTP):用于传输数据包(如命令、状态、数据传输请求等)。
  • SCSI命令集:UFS使用SCSI命令集来处理数据读写请求等操作。

CPU通过操作系统的驱动程序,发出SCSI命令,这些命令被封装在UFS的传输协议中,通过UFS主机控制器发送到设备。设备处理这些命令后,返回相应的结果。

b. SCSI协议

UFS设备在更高层次上使用了SCSI协议。UFS主机控制器和设备使用SCSI命令(如READWRITEINQUIRY)来请求数据读写操作。CPU通过操作系统发出这些命令,通过UFS主机控制器将它们转发到UFS设备上。

  • SCSI命令:这些命令定义了存储设备如何响应主机的请求。例如,READ命令会请求从存储设备中读取数据,而WRITE命令会将数据写入存储设备。

4. 操作系统层面

在操作系统(如Linux或Android)中,UFS设备的通信通常是通过设备驱动程序来处理的。操作系统通过驱动程序与UFS主机控制器通信,然后主机控制器与UFS设备进行低级通信。

a. UFS驱动程序

在Linux内核中,UFS驱动程序负责管理CPU与UFS设备之间的通信。驱动程序实现了上层的SCSI协议,并处理命令的发送、数据传输以及错误处理等。

驱动程序通过标准的文件I/O接口(如read()write()等)与应用程序交互。用户或应用程序发出的读写请求,会被转换成SCSI命令,并通过UFS协议发送到UFS设备。

b. UFS的文件系统接口

在大多数情况下,用户与UFS设备的交互是通过文件系统实现的。当你通过文件系统进行文件读写时,操作系统会将这些高层次的文件系统操作转换为块设备读写操作,最终通过UFS协议传送到UFS存储设备。

5. UFS设备的初始化和通信过程

以下是UFS设备与CPU通信的典型过程:

  1. 初始化阶段:当系统启动时,UFS主机控制器会初始化并检测到UFS设备。主机控制器通过MIPI M-PHY接口与UFS设备建立连接。
  2. 配置阶段:系统检测到UFS设备后,会通过SCSI命令集(如INQUIRY命令)获取设备的描述信息。UFS驱动程序会根据设备信息进行配置。
  3. 数据传输阶段:应用程序请求读取或写入数据时,操作系统会将这些请求传递给UFS主机控制器。主机控制器将请求转换为UFS协议的传输命令(如READWRITE),并通过MIPI M-PHY接口发送到UFS设备。
  4. 设备响应:UFS设备处理传输请求后,返回响应数据或状态,主机控制器接收后,反馈给操作系统,最后传递给应用程序。

总结:

  • 物理层:CPU通过MIPI M-PHY与UFS设备通信。
  • 控制层:UFS主机控制器负责管理通信。
  • 协议层:使用SCSI和UFS传输协议封装命令和数据。
  • 操作系统层:操作系统通过UFS驱动程序和文件系统接口与UFS设备进行交互。

CPU最终通过这些分层的通信协议与UFS设备实现数据的读写和控制。

标签:控制器,主机,通信,SCSI,UFS,CPU,设备
From: https://www.cnblogs.com/haungmang/p/18438981

相关文章

  • 【射频通信电子线路第六讲】射频信号与调制包括调幅和部分调频的内容
    一、调制(Modulation)与解调(Demodulation)1、相关概念调制是指使一个信号(如光信号、高频电磁振荡等)的某些参数(振幅、频率和相位)按照另一个欲传输的信号的特点变化的过程。解调是指调制的逆过程,作用是从已调信号中取出原来的调制信号。载波:未受调制的周期性振荡信号基带信号:要......
  • MySQL查找占用CPU过高的SQL
    作为DBA工作中都会遇到过数据库服务器CPU飙升的场景,我们该如何快速定位问题?又该如何快速找到具体是哪个SQL引发的CPU异常呢?下面我们说两个方法。聊聊MySQL中如何快速定位占用CPU过高的SQL。技术人人都可以磨炼,但处理问题的思路和角度各有不同,希望这篇文章可以抛砖引玉。 以一......
  • Lenovo SR850服务器亮黄灯维修和升级CPU扩展模块
    佛山市三水区某高校1台LenovoThinksystemSR850服务器黄灯故障到现场检修和升级3号和4号CPU。加强服务器的计算性能;故障情况是该学校it管理员这一天看到这台SR850服务器前面板亮了一个黄灯,但是目前系统运行正常,出于安全考虑,工程师跟用户协商先通过远程的方式进服务器的X......
  • 物联网系统中基于IIC通信的数字温度传感器测温方案
    01物联网系统中为什么要使用数字式温度传感器芯片物联网系统中使用数字式温度传感器芯片的原因主要有以下几点:高精度与稳定性高精度测量:数字式温度传感器芯片,如DS18B20,采用芯片集成技术,能够有效抑制外界不同程度的干扰,从而提供高精度的温度测量。这对于物联网系统来说至关......
  • 嵌入式学习——进程间通信方式(2)—— 信号
    一、基本概念什么是信号:由进程或系统发出的,用来通知发生了某个事件,希望接收方进行响应。    信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。正如我们所了解的中断服务函数一样,在中断发......
  • top命令 cpu行参数解释
    %Cpu0:0.0us,0.0sy,0.0ni,100.0id,0.0wa,0.0hi,0.0si,0.0st1.us(user)-0.0%用户态进程的CPU使用率。这是运行在用户空间中的程序(非系统内核进程)的CPU占用率。例如,运行中的应用程序、脚本等。在这个例子中,0.0us表示用户进程几乎没有使用......
  • 嵌入式常用硬件电路设计及分析 — 通信篇
    目录一、简介二、RS232通信1、硬件电路设计2、硬件电路设计分析(1)常规电路(2)EMC设计使用注意事项3、DB9接头定义三、RS485通信1、硬件电路设计2、硬件电路设计分析(1)自动收发电路(2)上下拉电阻注意事项(3)TVS管作用(4)末端匹配电阻作用四、USB转串口(1)常规电路设计(2)ISP......
  • 三大硬核方式揭秘:Java如何与底层硬件和工业设备轻松通信!
    大家好,我是V哥,程序员聊天真是三句不到离不开技术啊,这不前两天跟一个哥们吃饭,他是我好多年前的学员了,一直保持着联系,现在都李总了,在做工业互联网相关的项目,真是只要Java学得好,能干一辈子,卷死的是那些半吊子。感谢李总给我分享了工业互联网项目的事情,收获很多,今天的内容来聊一聊......
  • 大模型驱动,开启智能通信时代
    从2021年,我们介绍了5G消息如何赋能各行各业;2022年,我们探讨了云原生驱动的融合通信;去年,我们提出了融合通信的未来可期,并介绍了云通信在各种场景下的解决方案以及与AI的结合。今年,我们继续探讨基于大模型驱动的融合通信,分享我们在这一领域的思考、探索和实践。规模化使用云通......
  • 三大硬核方式揭秘:Java如何与底层硬件和工业设备轻松通信!
    大家好,我是V哥,程序员聊天真是三句不到离不开技术啊,这不前两天跟一个哥们吃饭,他是我好多年前的学员了,一直保持着联系,现在都李总了,在做工业互联网相关的项目,真是只要Java学得好,能干一辈子,卷死的是那些半吊子。感谢李总给我分享了工业互联网项目的事情,收获很多,今天的内容来聊一......