20210622查看天玑800(MT6873)的UFS的设备ID

本文档展示了如何通过系统命令行检查设备的UFS存储类型,包括访问设备ID的服务代码和查看`/sys/class/block`目录来识别UFS或eMMC。此外,还介绍了UFS设备描述符、标识和属性的重要性,以及如何通过特定命令获取UFS设备的规格版本。
摘要由CSDN通过智能技术生成

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 启动步骤


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值