1、总体框图
1.1、Android Architecture的Flash Memory Driver
Android Architecture - Detailed Explanation - InterviewBit
1.2、IO栈
https://www.thomas-krenn.com/en/wikiEN/images/8/83/Linux-storage-stack-diagram_v6.2.png
1.2.1、文件系统层
1.2.1.1、F2FS
F2FS: A New File System for Flash Storage | USENIX
1.2.1.2、ext4
XXX
1.2.2、Block层(承上启下)
https://www.cs.cornell.edu/courses/cs4410/2021fa/assets/material/lecture24_blk_layer.pdf
1.2.3、驱动层
1.2.4、器件层
1.3、IO请求的生命周期
XXX
1.4、Android启动流程
XXX
1.4.1、深入MTK平台bootloader启动
XXX
1.4.2、UFS启动分析
XXX
1.4.3、kernel启动流程
XXX
1.4.4、高通8996启动流程
XXX
1.5、Linux PM(待机S1、休眠S4)
休眠、唤醒
2、与UFS相关的内容是什么?
3、上层对UFS做的操作是什么?
1.link startup
2.NOP OUT
3.Query Request(SET FLAG fDeviceInit)
4.Query Request(READ FLAG fDeviceInit)
5.配置不同的分区进行操作
4、不同平台的host日志整理
4.1、Qcom
4.2、Unisoc
4.3、MTK
4.4、kirin
5、Write Booster(UFS 2.2新增)
XXX
6、UFS Hibernate系统上的行为
1.Auto-Hibernate
2.Clk-gate with hiberate
3.suspend with hiberate(runtime/system/shutdown)
4.Clock gating/scale
为什么有auto h8后还会有clock gating?
这种对UFS的影响是什么?如何与UFS进行交互的?
7、HPB
8、Linux代码研究
9、参考资料
9.1、cnblogs、csdn等
https://kernel.dk/systor13-final18.pdfhttps://kernel.dk/systor13-final18.pdf
https://www.cnblogs.com/Linux-tech/p/12961293.htmlhttps://www.cnblogs.com/Linux-tech/p/12961293.html
https://www.cnblogs.com/Linux-tech/p/12961286.htmlhttps://www.cnblogs.com/Linux-tech/p/12961286.html
UFS Power Management 介绍_ufs驱动_果汁底线的博客-CSDN博客文章浏览阅读1.7k次。UFS Power Management介绍,从System PM 和 Runtime PM两个角度来介绍UFS Power Management。_ufs驱动https://blog.csdn.net/guozhidixian/article/details/125364022clock Gating-CSDN博客文章浏览阅读1w次,点赞25次,收藏240次。一、为什么要做clock gating?芯片中的功耗可以广义的定义为动态功耗和静态功耗。静态功耗通常包含芯片在不翻转的状态下产生漏电功耗(关不紧产生的功耗)、衬底电流产生的功耗、热电子效应导致的电流效应而产生的功耗等及部分组成。通常情况下,静态功耗在前端设计阶段很难做出一些优化(可以做电源关断处理)。而是一般要基于ME/BE的流程或者工艺方面的改善才能够达到更好的结果。静态功耗如下图:动..._clock gating
https://blog.csdn.net/weixin_43727437/article/details/104966528linux runtime pm机制的深入理解_pm_runtime_get_noresume-CSDN博客文章浏览阅读1.2w次,点赞8次,收藏20次。一:runtime机制说明 何为runtime机制?也就是系统在非睡眠状态,设备在空闲时可以进入runtime suspend状态同时不依赖系统wake_lock机制,非空闲时执行runtime resume使得设备进入正常工作状态。 主要代码放在Runtime.c (drivers\base\power)中,同时附带的Runtime_pm.txt (documentati_pm_runtime_get_noresume
https://blog.csdn.net/linux_devices_driver/article/details/38092115BLOCK层代码分析(0)存储IO框架介绍_linux解码者的博客-CSDN博客文章浏览阅读2.6k次,点赞6次,收藏33次。更新了BLOCK层代码分析(1)(2)后,觉得有必要对存储IO框架层次做介绍,因此增加了本小节。1.存储IO框架存储IO内核框架如下图所示:以上列出几种驱动的存储软件框架,包含NVME驱动/SAS驱动/SATA驱动。IO依次经过系统调用层、文件系统层、BLOCK层、SCSI层、LIBSAS/LIBATA层以及LLDD。但并不是所有的这些层都经过,比如对于NVME驱动,对接BLOCK层,并不会经过SCSI层等。并且上图只是简单的描述,每层...
https://blog.csdn.net/flyingnosky/article/details/121341392VFS基础学习笔记 - 1.概述_inode i_private-CSDN博客文章浏览阅读647次。目录1. 前言2. Linux文件系统分层架构3. Linux VFS各对象之间的关系4. VFS的构建|- -init_rootfs|- -init_mount_tree参考文档1. 前言本专题我们开始学习虚拟文件系统VFS的相关内容。本专题主要参考了《存储技术原理分析》、ULA、ULK的相关内容。本文是概述部分,主要介绍VFS基本框架,各对象之间的关联,以及VFS最初的模型是如何构建起来的。kernel版本:5.10平台:arm64注:为方便阅读,正文标题采用分级结构标识,每一级用一个"-_inode i_private
https://blog.csdn.net/jasonactions/article/details/115869530
linux block layer第一篇bio 子系统数据结构及初始化_geshifei的博客-CSDN博客文章浏览阅读3.7k次,点赞9次,收藏54次。介绍:block layer在内核中起着承上(文件系统层)启下(设备驱动层)的作用,struct bio是block层的基本数据结构,可以理解成将bio输入block层,由block layer对其加工处理,然后再输出给底层。与bio相关的代码涉及bio内存管理、提交、合并拆分、完成时的回调处理等内容,是内核中一个很小的子系统,该文对其中涉及的代码进行分析,作为笔记,以备查阅。内核源码:linux-5.10.3bio数据结构bio是block层最基本的结构,用来描述io请求属性及状态。从内_block layerhttps://blog.csdn.net/geshifei/article/details/119959905SCSI子系统基础学习笔记 (之UFS子系统) - 3. UFS命令处理_ufshcd_pltfrm_init -19-CSDN博客文章浏览阅读3.5k次。目录1. 前言2. scsi_queue_rq|- -ufshcd_queuecommand3. ufshcd_intr1. 前言本专题我们开始学习SCSI子系统的相关内容。本专题主要参考了《存储技术原理分析》、ULA、ULK的相关内容。本专题主要以硬件UFS为例,记录SCSI子系统的框架流程。前面主要讲述了UFS的初始化过程,通过ufshcd_pltfrm_init负责获取IO资源,中断号,通过scsi_host_alloc为Scsi_host及私有数据空间hba分配空间,同时通过解析DTS中的属性_ufshcd_pltfrm_init -19
https://blog.csdn.net/jasonactions/article/details/116749869
9.2、其它IO栈
XXX