自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

guozhidixian的博客

emmc读写简析

  • 博客(43)
  • 资源 (7)
  • 收藏
  • 关注

原创 UFS Power Mode Change 介绍

1.UFS Power Mode指的是Unipro层的Power State, 也可以称为链路(Link)上的Power Mode, 可以通过配置Unipro Attribute, 然后控制切换Unipro Power State, 当前Power Mode Change有两种触发方式:(1) 通过DME Power Mode Change触发Power Mode Change(2)通过DME SET PA_PWRMode[0x1571]触发Power Mode Change。

2024-06-22 20:10:54 1158

原创 UFS DMA介绍

我们知道DMA是Direct Memory Access, 不需要CPU的参与,也可以直接访问内存中的数据。CPU 虚拟地址:内核空间由于有MMU内存管理,正常使用的是虚拟地址CPU物理地址:virtual memory system (TLB, page tables, etc) 会将CPU虚拟地址转换为物理地址。总线地址: IO设备主要使用的是总线地址,如果一个设备在MMIO地址上有寄存器,或者如果它执行DMA来读取或写入系统存储器,那么该设备使用的地址就是总线地址。

2024-03-25 21:35:16 1186

原创 UFS Clk Gate介绍

UFSClk Gate是UFS Host Controller的一个功能,指的是UFS System空闲的时候,将UFSClock关闭,并且让UFS MPHY Link进入Hibernate状态,减少系统资源的开销。

2022-07-25 22:42:28 1717 1

原创 UFS Power Management 介绍

UFS Power Management介绍,从System PM 和 Runtime PM两个角度来介绍UFS Power Management。

2022-06-28 21:15:25 2601

原创 UFS Hibernate介绍--代码部分

一 . UFS Hibernate简介

2022-05-22 13:06:25 2934

原创 UFS 理解 - Reference Clock

Reference Clock:1. Reference是UFS Host控制器(SOC侧)通过REF_CLK Pin脚控制,由UFS Host侧提供Reference clock, 默认是26MHz。2.Reference clock的作用是保持ufs host侧和ufs devices的正常通信,其实是ufs host mphy和ufs device mphy之间的通信。Note:有些ufs host侧没有REF_CLK Pin脚,就需要提供一个clock源,输出26MHz保持ufs hos

2022-05-15 16:07:06 3045

原创 UFS Hibernate介绍--协议部分

一. UFS Hibernate 简介Hibernate是一种Unipro的状态,这个Hibernate 进出的流程是在M-PHY定义的。Hibernate 是一种 UniPro 状态,其中 PHY 处于 HIBERNATE_STATE,UniPro 堆栈保持 只有最小的一组功能处于活动状态。 UniPro 堆栈保留每个堆栈层定义的最小状态。 在休眠期间,UniPro 堆栈无法进行应用级数据传输/通信, 并且应用程序级接口的原语 T_CO_SAP 具有未定义的行为。 中 休眠,DME 继续可供 DM

2022-05-04 18:03:16 2711

原创 UFS 手机相关调试接口

一. 前言我们拿到一款手机,怎么去知道手机UFS相关的信息呢,接下来我们一起来看下吧!二 . UFS相关信息预置环境:最好有root权限的手机版本,可以连接adb1. 查看UFS分区sgdisk --print /dev/block/sdx(块设备节点,对应UFS的一个Lun):/# sgdisk --print /dev/block/sdaDisk /dev/block/sda: 124655616 sectors, 475.5GIBSector size(logical/p

2022-04-16 21:43:43 3184

原创 HPB Not Work On Android System

目录一. HPB 简介二 .HPB Not Work On Android SystemHPB 全称为Host Performance Booster, 是将UFS Device端的L2P表缓存到Host Memory,提升Random Read性能。HPB版本主要有HPB1.0, HPB1.5, HPB2.0HPB Host Driver现在市场上是由两个版本,一个是三星版本的HPB Driver, 适用的产品有Samsung, Micron, 一个是海力士版本的HPB Driv...

2022-01-15 16:07:56 2722

原创 UFS 启动

一. UFS启动概述二.

2021-12-11 20:45:32 4495 1

原创 UFS空片杂谈

一. UFS空片介绍UFS空片是一个很干净的UFS Devices,只有Firmware,没有数据,更没有所谓的Android系统,没有配置Lun,只有一个逻辑的空间。 二. UFS空片应用1. Hikey970 Recovery Mode下载 当UFS为空片时,我们可以选择拨码到Recovery Mode下载Hikey970 OS Image.2 . Hikey970 Fastboot下载 当UFS为空片时且处于Fastboot M...

2021-09-22 22:58:31 943

原创 UEFI 之 UFS Recovery模式下载

一.开发环境平台 Hikey970 内部存储 64G UFS2.1 USB USB2.0/USB3.0 内存 6GB DDR4  外部存储 SD卡 二.Hikey970 Recovery 模式下载流程1 .首先拨码到Reovery Mode2. Hikey970上电,此时系统运行Romcode代码(其中Romcode在CPU内部Ram),检测到UFS设备为空片时,进入Recovery Mode。3 .执行recovery-flash.

2021-09-12 22:16:02 1392

原创 HPB Introduction

一. HPB Overview HPB全称为Host Performance Booster, 是利用手机内存缓存UFS Devices 主控(这里指的是Ufs Device Controller, 比如群联/慧荣等厂商的Ufs,控制运行FTL程序代码)的L2P表,来提升读性能,尤其是长时间使用后的随机读性能。 HPB技术是Jedec UFS3.1加入的Feature, 用来提升随机读性能,其实这个技术在无缓存的SSD上很常见。二. 手机HPB方案介绍 目前Qc...

2021-07-11 22:29:53 3359 2

原创 f2fs学习四: f2fs文件系统挂载

f2fs_mount

2021-04-07 23:03:59 4584

原创 内存知识---内存问题分析方法及思路

分析内存问题主要需要具备以下知识掌握:1. 熟悉内存分配和回收机制2. 熟悉swap/zram和/proc/sys/vm/swappiness的作用3. 熟悉Android的LMK和底层的OOMAndroid的lowmemory killer是基于linux的OOM(out ofmemory)规则改进而来的。OOM通过一些比较复杂的评分机制,对运行进程进行打分,然后将分数高的进程判定为bad进程,杀死进程并释放内存。OOM只有当系统内存不足的时候才会启动检查,而lowmemory kille

2021-04-04 21:53:28 1074

原创 文件系统新增分区

新增一个fat32 partition:1. sgdisk新增一个分区2. mkfs.ext4制作userdata.ing3.adb pull /dev/block/sdd28(sdd28为新增的分区) .4.mkfs.vfat sdd28(如果超过500M,默认格式化为fat32,不超过500M,格式化为fat16或fat12)5.adb push sdd28 /data6. dd if=/data/sdd28 of=/dev/block/sdd287.losetup /dev/block

2021-04-04 20:32:01 164

原创 f2fs学习三: 文件系统初始化

文件系统

2021-04-04 20:15:42 1136

原创 单元测试

1.C语言测试框架https://cmocka.org/2. 这个只能是逻辑,代码并不是在内核跑 如果要在内核里面跑,还得用一些内核单元测试框架 kunit 我之前调研过 但对内核版本要求比较高 要5.0内核3.C语言单元测试框架:CUnit官网:http://cunit.sourceforge.net/参考链接:(1) https://www.cnblogs.com/linux-sir/archive/2012/08/25/2654557.html4.C语言单元测试框架: gtest..

2021-03-18 22:29:56 167

原创 Display相关知识学习

查看手机刷新率:adb shell dumpsys SurfaceFlinger | grep refresh-rate查看分辨率:wm size查看密度:wm density

2021-03-18 22:22:55 322

原创 Git命令总结

1. git查看分支的创建者git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n

2021-03-11 22:24:51 164

原创 Block块设备层Plug和Unplug机制

https://www.pianshen.com/article/11461004172/

2021-03-10 23:19:09 2040

原创 f2fs学习二:预分配

F2FS在Write的时候,会进行预分配Data分区的logical data block, 而且每次进行只分配一个data block(大小为4k), 分配好之后再进真正的数据落盘(将数据写入到data分区)。 Ext4在Write的时候,预分配的时候会进行连续分配(分配N个logical data block, N = test_block_size/4k ),连续分配完之后再进行数据落盘(将数据写入到data block)。 ...

2021-02-18 22:19:38 1549

转载 F2FS学习一:简介

什么是闪存友好文件系统(F2FS)?================================================== =============================基于NAND闪存的存储设备(例如SSD,eMMC和SD卡)具有 已安装在从移动系统到服务器系统的各种系统上。自从 已知它们具有与传统旋转不同的特性 磁盘,文件系统,存储设备的上层,应适应 在设计级别从草图更改。F2FS是利用基于NAND闪存的存储设备的文件系统, 基于日志结构的文件系统(L...

2021-02-18 21:57:52 4033

原创 UFS学习一:UTP层和UPIU

一。协议层对UTP层和UPIU的认识下图是UFS Device协议架构图,UTP层上面对接UCS层,左上对接Device Manager(主要是Query Request), 右上对接Task Manager。UTP层的作用:将应用层传下来的请求数据以UPIU的数据包下发给UIC层(Unipro和M-PHY), 将底层传上来的UPIU数据包解析之后将数据传给应用层UFS传输事务是由UFS协议信息单元(UPIU)的数据包组成,这些数据包在Unipro总线上的设备之间传输,传输事务请求.

2021-01-24 17:31:39 6046 3

原创 控制台输出(打印)和串口输出(打印)分析

我们来简单分析一下控制台输出和串口输出:1.printk/pr_info/printf:能在串口输出或者是dmesg输出, 但是打印等级必须比系统输出等级优先级高pr_info(" pwq %d:", pool->id);默认demsg的输出等级为7系统输出打印等级:*/** These can be used to print at the various log levels.* All of these will print unconditionally, al...

2021-01-11 20:46:02 1833

原创 WriteBooster Study之flushneeded

WriteBooster Buffer的大小是由FTL去配置,可以配置为12G,24G,36G等,

2021-01-10 19:05:20 793 1

原创 ext4之discard

1. ext4如果配置discard模式,在删除文件的时候,会立刻下发discard/fstrim命令到ufs driver, ufs driver会下发umap命令到ufs devices, 此时文件系统地址(lba)到ufs devices 地址(pba)之间的映射就会断开,这时候ufs devices的文件数据就会标记为无效的数据, 此时FW就可以在合适的时间去回收这些数据(backgroud garbage collect)....

2021-01-07 21:29:21 2571

原创 writebooster study 之 flush_during_hibernate

排查wb的flush during hibernate功能是否生效方法与思路?1. 关闭wb flush enable, 全程只开启flush during hibernate enable,排除wb flush的影响2. 确认系统是否下发hibernate 到ufs device层,系统下发hibernate有三种方式:(1)auto hibernate (2) clkgate hibernate (3)ufs suspend hibernate3.确认ufs devic...

2021-01-01 19:44:58 313

原创 WriteBooster study 1

xiaomi:1. 开机:打开writebooster enable(控制是否写入SLC ), 打开writebooster flush during enable(控制是否flush during enable) , 关闭writebooster flush enable(控制是否flush during hibernate), 开机之后不操作这几个开关,2. writebuffer type: Lun based3. storage: samsung + ufs3.14. bAvail.

2020-12-13 18:14:57 932

原创 ufs runtime suspend/resume

1

2020-12-07 19:48:05 817 1

原创 WriteBooster Introduction

Write Booste是UFS3.1和UFS2.2新增的Feature, 也有叫做Turbo Write的,其实这个就是SSD上已经广泛使用的SLC Cache技术, 可以显著提高写入速度, 此技术已在存储设备厂商和手机厂商中运用了。以下是协议里面关于Write Booster的介绍:13.4.14 WriteBooster13.4.14.1 OverviewThe write performance of TLC NAND is considerably lower th...

2020-12-06 20:14:15 3198 1

原创 性能分析方法和工具

1. systrace工具Systrace是分析Android性能问题的神器,Google IO 2017上更是对其各种强推. 是分析卡顿掉帧问题核心工具,只要能提供卡顿现场,systrace就能很好定位问题原理在介绍使用之前,先简单说明一下Systrace的原理:它的思想很朴素,在系统的一些关键链路(比如System Service,虚拟机,Binder驱动)插入一些信息(我这里称之为Label),通过Label的开始和结束来确定某个核心过程的执行时间,然后把这些Label信息收集起来得到系统

2020-09-19 22:14:49 1099

转载 Ext4文件系统架构分析(二)

Ext4 文件系统 ioctl功能概述ioctl.c 源码功能概述Ext4的ioctl提供给用户以下接口,以方便用户更改文件系统的各种设置和状态:(1) EXT4_IOC_GETFLAGS: 获取inode的标志位,用户获取当前的inode标志位信息;(2) EXT4_IOC_SETFLAGS: 设置inode的标志位,用户为inode标志位设置新的信息;(3) EXT4_IOC_GETVERSION 或EXT4_IOC_GETVERSION_OLD:获取inode-...

2020-06-13 17:25:17 667

转载 Ext4文件系统架构分析(一)

本文描述Ext4文件系统磁盘布局和元数据的一些分析,同样适用于Ext3和Ext2文件系统,除了它们不支持的Ext4的特性外。整个分析分两篇博文,分别概述布局和详细介绍各个布局的数据结构及组织寻址方式等。感兴趣的看官敬请留意和指导!1. Ext4文件系统布局综述一个Ext4文件系统被分成一系列块组。为减少磁盘碎片产生的性能瓶颈,块分配器尽量保持每个文件的数据块都在同一个块组中,从而减少寻道时间。以4KB的数据块为例,一个块组可以包含32768个数据块,也就是128MB。1.1磁盘布局Ext4.

2020-06-13 16:50:26 1782

原创 Ftrace浅析

Ftrace是系统的内部追踪器,这个设计是为了帮助开发人员和设计人员去查找Kernel内部发生的情况,他还可以用来分析和调试用户空间之外的延迟和性能问题。 尽管通常将ftrace视为函数跟踪器,但实际上它是多个分类跟踪实用程序的框架,可以进行延迟跟踪,以检查禁用和启用的中断之间发生了什么,以及抢占以及从唤醒任务到计划任务的时间。 ftrace最常见的用途之一是事件跟踪。 整个内核中有数百个静态事件点,可以通过tracefs文件系统启用这些事件点,以查看内核某些部...

2020-06-13 11:50:24 1070

原创 UFS读写请求完成的处理流程

UFS传输分为三个过程:制作并下发Request阶段 , 处理Request请求阶段 , Request请求完成后的阶段,这里主要是简单说明一下Request请求完成后的阶段,即在ufs request请求处理完成之后系统还需要做清理的工作,释放资源等,ufs host需要接收ufs devices返回的请求完成的状态走对应的流程, ufs devices返回一些状态status./**function: scsi_request_fn()** Purpose:...

2020-06-07 17:03:32 3801

原创 UFS发生命令超时处理流程

1. 在UFS的上层发送命令下来,会有出现超时的处理,首先 我们先看数据传输是驱动程序的本质目的,通过数据的传输,来完成作为存储介质的使命,read & write,在read流程中,ufs向应用程序提供数据,在write流程中,应用程序向ufs存放数据。本节分三个阶段关注数据的流向,分别是:系统调用数据到bio的组成,bio到电梯队列request的组成,request到con...

2020-04-25 22:47:07 3490

原创 UFS 的个人理解

一 .控制器层1.UFS is a simple, high performance, serial interface. It is primarily for use in mobile systems, between host processing and NVM mass storage devices.2.Interface ArchitectureUFS ho...

2019-09-22 16:46:16 7089 2

原创 guozhidixian_vimrc

" .vimrc - Vim configuration file."" Copyright (c) 2010 Jeffy Du. All Rights Reserved."" Maintainer: Jeffy Du <jeffy.du@gmail.com>" Created: 2010-01-01" LastChange: 2010-04-22" GENERA...

2019-09-21 23:43:15 135

原创 Linux下的USB转SATA学习

kernel/drivers/usb/storage/uas.c使用usb 的设备添加一个scsi设备kernel/drivers/scsi/libsas/sas_ata.cscsi与sata的转换,直接操作sata硬盘kernel/drivers/ata/该目录下是一些sata驱动的具体实现(SATA转USB控制器芯片)ASM1053E ASM1153E对比http...

2019-08-19 16:56:56 2084

FTL相关的技术总结

FTL的相关介绍,GC(垃圾回收),WA(写放大),WearLeveling(磨损平衡),Mapping(LBA到PBA的映射)等

2021-01-09

jedec ufs2.2

definition of a UFS Universal Flash Storage electrical interface and a UFS memory device. This standard defines a unique UFS feature set and includes the feature set of eMMC standard as a subset. This standard replaces JESD220C, UFS 2.1, and introduces feature called WriteBooster.

2020-11-29

git开源工具,可以下载github代码

git 下载工具可以下载源码,使用git add, git clone, 可以下载,提交相关的代码,大家可以查找相关的用法,然后再使用git 去进行相关操作

2020-10-31

Android SDK

Android SDK里面有常用的调试工具如: adb tool, fastboot tool, hprof-conv tool, mke2fs tool, systrace tool, etc

2020-09-19

usb_20_20190524.7z

里面有USB的协议和OTG的协议,讲述USB的一些协议规范,请大家有需要的可以下载看一下,可以遇到问题的时候看看协议规范

2019-12-29

VM_install_document.7z

VMware15的安装和ubuntu虚拟机的安装,本图片仅供参考,

2019-08-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除