20210622查看天玑800(MT6873)的UFS的设备ID
Microsoft Windows [版本 10.0.18363.1500]
(c) 2019 Microsoft Corporation。保留所有权利。
C:\Users\DELL>adb shell
k6873v1_64:/ $ su
k6873v1_64:/ #
k6873v1_64:/ # cd /sys/block/sda/device
k6873v1_64:/sys/block/sda/device #
k6873v1_64:/sys/block/sda/device # ls -l
total 0
drwxr-xr-x 3 root root 0 2021-06-22 14:41 block
--w------- 1 root root 4096 2021-06-22 14:54 delete
-r--r--r-- 1 root root 4096 2021-06-22 14:54 device_blocked
-r--r--r-- 1 root root 4096 2021-06-22 14:54 device_busy
lrwxrwxrwx 1 root root 0 2021-06-22 14:54 driver -> ../../../../../../bus/scsi/drivers/sd
-rw-r--r-- 1 root root 4096 2021-06-22 14:54 eh_timeout
-r--r--r-- 1 root root 4096 2021-06-22 14:54 evt_capacity_change_reported
-r--r--r-- 1 root root 4096 2021-06-22 14:54 evt_inquiry_change_reported
-r--r--r-- 1 root root 4096 2021-06-22 14:54 evt_lun_change_reported
-r--r--r-- 1 root root 4096 2021-06-22 14:54 evt_media_change
-r--r--r-- 1 root root 4096 2021-06-22 14:54 evt_mode_parameter_change_reported
-r--r--r-- 1 root root 4096 2021-06-22 14:54 evt_soft_threshold_reached
-r--r--r-- 1 root root 0 2021-06-22 14:54 inquiry
-r--r--r-- 1 root root 4096 2021-06-22 14:54 iocounterbits
-r--r--r-- 1 root root 4096 2021-06-22 14:54 iodone_cnt
-r--r--r-- 1 root root 4096 2021-06-22 14:54 ioerr_cnt
-r--r--r-- 1 root root 4096 2021-06-22 14:54 iorequest_cnt
-r--r--r-- 1 root root 4096 2021-06-22 14:54 modalias
-r--r--r-- 1 root root 4096 2021-06-22 14:54 model
drwxr-xr-x 2 root root 0 2021-06-22 14:41 power
-rw-r--r-- 1 root root 4096 2021-06-22 14:54 queue_depth
-rw-r--r-- 1 root root 4096 2021-06-22 14:54 queue_ramp_up_period
-rw-r--r-- 1 root root 4096 2021-06-22 14:54 queue_type
--w------- 1 root root 4096 2021-06-22 14:54 rescan
-r--r--r-- 1 root root 4096 2021-06-22 14:54 rev
drwxr-xr-x 3 root root 0 2021-06-22 14:41 scsi_device
drwxr-xr-x 3 root root 0 2021-06-22 14:41 scsi_disk
-r--r--r-- 1 root root 4096 2021-06-22 14:54 scsi_level
-rw-r--r-- 1 root root 4096 2021-06-22 14:54 state
lrwxrwxrwx 1 root root 0 2021-06-22 14:41 subsystem -> ../../../../../../bus/scsi
-rw-r--r-- 1 root root 4096 2021-06-22 14:54 timeout
-r--r--r-- 1 root root 4096 2021-06-22 14:54 type
-rw-r--r-- 1 root root 4096 2021-06-22 14:41 uevent
-r--r--r-- 1 root root 4096 2021-06-22 14:54 vendor
-r--r--r-- 1 root root 0 2021-06-22 14:54 vpd_pg80
-r--r--r-- 1 root root 0 2021-06-22 14:54 vpd_pg83
-r--r--r-- 1 root root 4096 2021-06-22 14:54 wwid
k6873v1_64:/sys/block/sda/device #
k6873v1_64:/sys/block/sda/device # cat wwid
t10.SKhynix\0H9HQ53AECMMDAR 0D684E575A62\0
k6873v1_64:/sys/block/sda/device #
k6873v1_64:/sys/block/sda/device #
这些东西有没有什么 解释?每一个字节怎么定义的?
——没有回复
你们这边应该是 批量 出货 的呀,后六位 怎么 跳跃的 这么大呢?
(序列号不应该是连续的嘛?)也许是调货的!^_
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.server.os;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.os.Build;
import android.os.IDeviceIdentifiersPolicyService;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.util.Log;
import android.util.ByteStringUtils;
import com.android.internal.telephony.TelephonyPermissions;
import com.android.server.SystemService;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.nio.charset.Charset;
import java.util.Locale;
/**
* This service defines the policy for accessing device identifiers.
*/
public final class DeviceIdentifiersPolicyService extends SystemService {
private static final String TAG = "DeviceIdentifiers";
private static final String PERMISSION_ACCESS_UDID = "com.huawei.permission.sec.ACCESS_UDID";
private static final String UDID_EXCEPTION = "AndroidRuntimeException";
// The emmcid needs to be stored in either of the following paths:
private static final String EMMC_ID_PATH = "/sys/block/mmcblk0/device/cid";
//private static final String EMMC_ID_PATH_UFS = "/proc/bootdevice/cid";
private static final String EMMC_ID_PATH_UFS = "/sys/block/sda/device/wwid";
public DeviceIdentifiersPolicyService(Context context) {
super(context);
}
@Override
public void onStart() {
publishBinderService(Context.DEVICE_IDENTIFIERS_SERVICE,
new DeviceIdentifiersPolicy(getContext()));
}
private static final class DeviceIdentifiersPolicy
extends IDeviceIdentifiersPolicyService.Stub {
private final @NonNull Context mContext;
static String udid = null;
public DeviceIdentifiersPolicy(Context context) {
mContext = context;
}
@Override
public @Nullable String getSerial() throws RemoteException {
// Since this invocation is on the server side a null value is used for the
// callingPackage as the server's package name (typically android) should not be used
// for any device / profile owner checks. The majority of requests for the serial number
// should use the getSerialForPackage method with the calling package specified.
if (!TelephonyPermissions.checkCallingOrSelfReadDeviceIdentifiers(mContext,
/* callingPackage */ null, "getSerial")) {
return Build.UNKNOWN;
}
return SystemProperties.get("ro.serialno", Build.UNKNOWN);
}
@Override
public @Nullable String getSerialForPackage(String callingPackage) throws RemoteException {
if (!TelephonyPermissions.checkCallingOrSelfReadDeviceIdentifiers(mContext,
callingPackage, "getSerial")) {
return Build.UNKNOWN;
}
return SystemProperties.get("ro.serialno", Build.UNKNOWN);
}
/* will throw AndroidRuntimeException if serial number, emmcId, bluetooth mac address and wifi mac address are all read failed */
public String getUDID() throws RemoteException {
mContext.enforceCallingOrSelfPermission(PERMISSION_ACCESS_UDID, "does not have access udid permission!" );
if (udid != null) {
Log.i(TAG, "udid has been read success, return!");
return udid;
}
String readResult = "";
// get serial number
String serNum = SystemProperties.get("ro.serialno", Build.UNKNOWN);
if (serNum != null) {
readResult += serNum.toUpperCase(Locale.US);
}
// get emmcId
String emmcId = getEmmcId();
if (emmcId != null) {
readResult += emmcId.toUpperCase(Locale.US);
}
// get bluetooth mac address
String btMacAddress = getBtMacAddress();
if (btMacAddress != null) {
readResult += btMacAddress.toUpperCase(Locale.US);
}
// get Wifi mac address
String wifiMacAddress = getWifiMacAddress();
if (wifiMacAddress != null) {
readResult += wifiMacAddress.toUpperCase(Locale.US);
}
if (readResult.length() == 0) {
Log.e(TAG, "getUDID failed, readResult is empty.");
return UDID_EXCEPTION;
}
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA256");
messageDigest.update(readResult.getBytes(Charset.forName("UTF-8")));
udid = ByteStringUtils.toHexString(messageDigest.digest());
} catch (NoSuchAlgorithmException e) {
Log.w(TAG, "MessageDigest throw Exception!");
}
return udid;
}
private String getEmmcId() {
String emmcId = getEmmcIdFromPath(EMMC_ID_PATH);
if (emmcId != null && emmcId.length() != 0) {
return emmcId;
}
return getEmmcIdFromPath(EMMC_ID_PATH_UFS);
}
private String getEmmcIdFromPath(String emmcIdPath) {
//try {
// FileInputStream inputStream = new FileInputStream(emmcIdPath);
// BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
// return reader.readLine();
//} catch(IOException e) {
// Log.e(TAG, "getEmmcId failed!");
// return "";
//}
try {
//FileInputStream inputStream = new FileInputStream("/home/rootroot/fanzong/wwid");
FileInputStream inputStream = new FileInputStream("/sys/block/sda/device/wwid");
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String str = reader.readLine();
str = str.substring(str.indexOf("\\")+1);
str = str.substring(str.indexOf(" ")+1,str.indexOf("\\"));
//System.out.println(str);
return str;
} catch(IOException e) {
Log.e(TAG, "getEmmcId failed!");
return "";
}
}
private String getBtMacAddress() {
// An empty string is returned temporarily.
// The implementation of obtaining the Bluetooth MAC address needs to be added here.
return "";
}
private String getWifiMacAddress() {
// An empty string is returned temporarily.
// The implementation of obtaining the Wifi MAC address needs to be added here.
return "";
}
}
}
https://blog.csdn.net/pkgfs/article/details/70482850
查看手机是UFS还是emmc
gscene 2017-04-23 09:58:06 10232 收藏 3
分类专栏: note
版权
不需要额外安装软件,也不需要root权限,使用一款普通文件管理器,进入根目录,
查看sys/class/block目录下的文件,如果存在sda字样就是ufs,如果存在mmc字样就是emmc或者tf卡;
UFS标准采用SCSI Architecture Model及指令协议,支持具有队列功能的多指令模式以及多线程编程模式。
Microsoft Windows [版本 10.0.18363.1500]
(c) 2019 Microsoft Corporation。保留所有权利。
C:\Users\DELL>adb shell
* daemon not running; starting now at tcp:5037
* daemon started successfully
k6873v1_64:/ $ su
k6873v1_64:/ #
k6873v1_64:/ # cd sys/class/block
k6873v1_64:/sys/class/block #
k6873v1_64:/sys/class/block # ll
/system/bin/sh: ll: inaccessible or not found
127|k6873v1_64:/sys/class/block #
127|k6873v1_64:/sys/class/block # ls -l
total 0
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 dm-0 -> ../../devices/virtual/block/dm-0
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 dm-1 -> ../../devices/virtual/block/dm-1
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 dm-2 -> ../../devices/virtual/block/dm-2
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 dm-3 -> ../../devices/virtual/block/dm-3
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 dm-4 -> ../../devices/virtual/block/dm-4
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 dm-5 -> ../../devices/virtual/block/dm-5
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop0 -> ../../devices/virtual/block/loop0
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop1 -> ../../devices/virtual/block/loop1
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop10 -> ../../devices/virtual/block/loop10
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop11 -> ../../devices/virtual/block/loop11
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop12 -> ../../devices/virtual/block/loop12
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop13 -> ../../devices/virtual/block/loop13
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop14 -> ../../devices/virtual/block/loop14
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop15 -> ../../devices/virtual/block/loop15
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop2 -> ../../devices/virtual/block/loop2
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop3 -> ../../devices/virtual/block/loop3
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop4 -> ../../devices/virtual/block/loop4
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop5 -> ../../devices/virtual/block/loop5
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop6 -> ../../devices/virtual/block/loop6
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop7 -> ../../devices/virtual/block/loop7
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop8 -> ../../devices/virtual/block/loop8
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 loop9 -> ../../devices/virtual/block/loop9
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram0 -> ../../devices/virtual/block/ram0
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram1 -> ../../devices/virtual/block/ram1
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram10 -> ../../devices/virtual/block/ram10
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram11 -> ../../devices/virtual/block/ram11
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram12 -> ../../devices/virtual/block/ram12
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram13 -> ../../devices/virtual/block/ram13
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram14 -> ../../devices/virtual/block/ram14
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram15 -> ../../devices/virtual/block/ram15
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram2 -> ../../devices/virtual/block/ram2
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram3 -> ../../devices/virtual/block/ram3
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram4 -> ../../devices/virtual/block/ram4
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram5 -> ../../devices/virtual/block/ram5
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram6 -> ../../devices/virtual/block/ram6
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram7 -> ../../devices/virtual/block/ram7
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram8 -> ../../devices/virtual/block/ram8
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 ram9 -> ../../devices/virtual/block/ram9
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sda -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:0/block/sda
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdb -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:1/block/sdb
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc1 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc1
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc10 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc10
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc11 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc11
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc12 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc12
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc13 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc13
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc14 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc14
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc15 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc15
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc16 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc16
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc17 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc17
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc18 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc18
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc19 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc19
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc2 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc2
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc20 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc20
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc21 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc21
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc22 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc22
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc23 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc23
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc24 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc24
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc25 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc25
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc26 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc26
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc27 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc27
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc28 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc28
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc29 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc29
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc3 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc3
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc30 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc30
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc31 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc31
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc32 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc32
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc33 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc33
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc34 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc34
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc35 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc35
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc36 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc36
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc37 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc37
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc38 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc38
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc39 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc39
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc4 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc4
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc40 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc40
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc41 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc41
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc42 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc42
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc43 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc43
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc44 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc44
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc45 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc45
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc46 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc46
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc5 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc5
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc6 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc6
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc7 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc7
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc8 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc8
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 sdc9 -> ../../devices/platform/bootdevice/host0/target0:0:0/0:0:0:2/block/sdc/sdc9
lrwxrwxrwx 1 root root 0 2021-06-22 14:44 zram0 -> ../../devices/virtual/block/zram0
k6873v1_64:/sys/class/block #
k6873v1_64:/sys/class/block #
https://www.sohu.com/a/141219542_223764
鉴别EMMC/UFS如此简单!小工具一键识别闪存
Microsoft Windows [版本 10.0.18363.1500]
(c) 2019 Microsoft Corporation。保留所有权利。
C:\Users\DELL>adb shell
k6873v1_64:/ $ su
k6873v1_64:/ #
k6873v1_64:/ # cd /proc/fs
k6873v1_64:/proc/fs # ls -l
total 0
dr-xr-xr-x 12 root root 0 2021-06-22 14:46 ext4
dr-xr-xr-x 2 root root 0 2021-06-22 14:46 f2fs
dr-xr-xr-x 9 root root 0 2021-06-22 14:46 jbd2
dr-xr-xr-x 2 root root 0 2021-06-22 14:46 nfsd
k6873v1_64:/proc/fs #
http://www.360doc.com/content/17/1019/14/35706938_696364990.shtml
如何判断自己的手机是UFS还是eMMC?
代码:cat /sys/kernel/debug/ufs/dump_device_desc (cat后有半角空格)
结果:返回结果中“Device Deor[Byte offset 0x10]: wSpecVersion = 0x2”则为UFS2.0,“Device Deor[Byte offset 0x10]: wSpecVersion = 0x21”则为UFS2.1。此方法通过直接读取闪存标志位,不用查询具体型号,即可获得闪存类型。
k6873v1_64:/sys/kernel/debug # find . -name dump*
./vpu/vpu1/dump
./vpu/vpu0/dump
./emi_mbw/dump_buf
./ged/gpu_tuner/dump_status
./mtk_pmic/dump_ldo_status
./mtk_pmic/dump_pmic_reg
./mtk_spmi/dump_spmimst_all_reg
./mtk_spmi/dump_pmif_record_reg
./mtk_spmi/dump_pmif_all_reg
./mtk_spmi/dump_pmif_swinf
./mtk_spmi/dump_pmif_busy_reg
k6873v1_64:/sys/kernel/debug #
https://www.sohu.com/a/234348201_505795
https://cloud.tencent.com/developer/news/234729
蛋蛋读UFS之三:UFS数据包UPIU
https://blog.csdn.net/don_chiang709/article/details/89314297
UFS系列六:UFS设备初始化和启动
https://www.ssdfans.com/?p=92744
蛋蛋读UFS之七:描述符、标识和属性
Posted on 2018年5月31日 by 蛋蛋
原创内容,转载请注明: [https://www.ssdfans.com] 谢谢!
UFS中也有吉祥三宝,那就是描述符(Descriptors)、标识(Flags)和属性(Attributes),主机通过这三宝,来控制与管理UFS设备。
https://blog.csdn.net/weixin_37802735/article/details/109695215
UFS系列5:逻辑单元(LU)
https://blog.csdn.net/comeonbestxiaohe/article/details/88549918
UFS的初始化过程(一)
https://blog.csdn.net/shenjin_s/article/details/79761485
UFS 启动步骤
https://blog.csdn.net/don_chiang709/article/details/89312118
UFS的硬件原理和软件初始化流程
http://www.elecfans.com/emb/jiekou/20190314885370.html
基于UFS2.1标准的UFS接口简单介绍
https://www.cnblogs.com/Linux-tech/p/12961288.html
UFS特性介绍
https://blog.csdn.net/weixin_31849185/article/details/112578447
和ufs_UFS特性介绍
https://blog.csdn.net/feelabclihu/article/details/105502169
UFS特性介绍
https://blog.xiocs.com/archives/41/
UFS Host Controller 工作流程
https://blog.csdn.net/shenjin_s/article/details/79761485
UFS 启动步骤