自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(167)
  • 资源 (3)
  • 收藏
  • 关注

原创 黑猫详解【UFS M-PHY】第1篇:MIPI M-PHY基础知识

M-PHY是一个串行通信协议。体系结构M-PHY的基本单元是1ane(信道),它既可以是一个发射器(M-TX),也可以是一个接收器(M-RX)。每个lane被视为一个独立单元,拥有自己的配置和数据接口。一个lane管理器(与协议适配器关联)负责控制线路状态(活动/非活动);当多个1ane被聚合,用以提高吞吐量时,它负责管理时钟补偿和1ane校准。一条由上下行子链路构成的链路负责处理芯片间通信。每条子链路可以聚合一个或多个1anes,用于创建一对M-TX/M-RX。

2024-02-29 22:52:59 252

原创 黑猫带你学NandFlash第7篇:NandFlash写操作详解

编程(写入)操作(programming operation)是用来将数据从cache寄存器或data寄存器搬运到一个或多个plane中。在编程操作中,cache和data寄存器中的数据内容会被内部控制逻辑修改

2024-02-20 08:24:40 177

原创 黑猫带你学NandFlash第2篇:NandFlash部分相关名词释义

本文为本人工作学习中常听到或常用到关乎于nandflash/fw的一些关键词合集,没有固定分类,不需要强行记忆,供查询使用。

2024-02-18 20:38:09 124

原创 黑猫带你学NandFlash第5篇:NAND的封装与引脚定义

spec中规定nand封装尺寸有以下几种:TSOP-48\WSOP-48LGA52BGA63\100\132\146\152\154\178\252\272\316

2024-02-18 19:41:44 337

原创 黑猫带你学eMMC协议第31篇:什么是eMMC的驱动强度(Drive Strength)

首先要清楚:内阻越大,驱动强度越小;内阻越小,驱动强度越大。ECSD[185]可调节DS(drive strength), 是所有eMMC的基本功能,一般厂商样片都是可调的。当emmc使用在一些平台上,出现CRC的问题时候,可以考虑调整驱动强度。相关寄存器只读,表示emmc是否支持调节驱动强度及支持的强度等级。bit7-bit4用来调节驱动强度。驱动强度修改影响的总线有哪些?这个驱动强度会调节整个IO的驱动,也就是包括emmc的cmd、data、ds pin。

2023-12-04 21:36:13 1318 1

原创 黑猫带你学NandFlash第3篇:nandflash介质工作原理,你想要的都在这里!

1、nand组成的cell是什么?什么原理用来存储电荷?2、NAND Flash存储单元组织结构是什么样子的?3、nand的读写擦的本质原理是什么?4、program前必须erase的本质原因。

2023-11-22 08:59:00 617 3

原创 黑猫带你学NandFlash第6篇:NAND寻址(行列地址和block/page/LUN之间的关系)

稍微了解一点nand的朋友都知道,nand是由一个一个MOSFET(cell)组成,形成一个阵列结构,同时为了方便管理nand的这些cell,划分了lun、block、page等区域。下面两张图相信大家都是有见过的。个人认为,只要搞清楚上述讲解的几个周期的含义,就一定能搞懂行列地址和block、page、LUN之间的公式,反而这些公式让人不知所云。首先发送的是列地址,其次发送的是行地址。注意,SLC和TLC的寻址方式还不一样:TLC的page address是12bit的,SLC的是10bit的。

2023-11-05 17:14:54 555

原创 黑猫带你学eMMC协议第30篇:eMMC的boot mode和boot operation详解

boot operation是干嘛的?boot operation期间,将boot区域的数据全部吐出来。如果emmc用在手机里面,吐出来的这些数据用于启动手机,也就是说boot区域已经提前放置了安卓系统等信息。boot operation也可以从uda吐数据,但是emmc的init过程很长,所以放在boot area就可以很快速将这些数据给出来。这也就是为什么手机电源键一按,屏幕等设备就会快速工作起来。流程框图如图所示,按照蓝紫色箭头标注出来的流程就是boot operation的流程。

2023-08-21 00:32:26 895 2

原创 黑猫带你学NandFlash第4篇:NandFlash结构详解

相信对于初学者,看到CE/LUN/DIE/PLANE/BLOCK/PAGE/CELL这些名词的时候,傻傻分不清,笔者当年才学习flash的时候,也一直对于这些名词处于一个混沌状态。后来仔细查阅资料,才终于搞明白。先来看图:Target/CE:在一个nand芯片中,共享CE引脚的多个LUN,成为Target。有多个LUN的时候,通过CE引脚来决定操作哪个LUN。LUN/Die:LUN:logical unit number,即逻辑单元。其别名就是Die。所以,Die就表示LUN。

2023-06-24 18:55:02 1417

原创 黑猫带你学eMMC协议第29篇:eMMC设备锁详解(CMD42)

通过cmd42命令,可以给emmc设置密码,并且锁定emmc。这时候就不能对emmc的user分区进行读写数据访问了。设备锁在V4.3版本后的emmc里面,就只能保护user area分区,因此,被锁定的emmc,依旧可以正常访问BOOT\RPMB\GPP分区。emmc内部有128 bit PWD寄存器,用来存放密码,以及有8bit PWD_LEN寄存器,用来密码长度。这两个寄存器非易失性,掉电也不会丢失。

2023-05-02 17:49:01 2011 1

原创 黑猫带你学eMMC协议第28篇:eMMC的开漏和推挽模式(push-pull & open drain)

RDAT和RCMD是上拉寄存器,当设备驱动都处于高阻抗模式时,用来保护CMD和DATA免受过大的浮动。host打开/关闭ROD用来控制push-pull/open drain mode。对于XU4平台,应该是设置CTRL register的ENABLE_OD_PULLUP字段用来控制ROD是打开还是关闭。如果有一个稳定的电流(包括稳定的上升沿和下降沿),那就可以代替RCMD达到一个更好的性能。如果host没办法控制RCD,固定的RCMD可以被利用起来。因此,如果RCMD的电阻大于给出的最小工作值,那

2023-03-04 10:52:01 1091

原创 黑猫带你学UFS协议第7篇:UFS传输层(UTP)简介

SCSI体系结构模型[SAM]用作UTP的通用体系结构模型,SAM任务管理功能用于任务管理。SAM模型就是客户端-服务器模型,或者说是请求-响应模型。这种客户端-服务器模型就是客户端发送请求,服务端响应的一个过程。

2023-01-23 11:32:26 1953

原创 黑猫带你学UFS协议第3篇:UFS简介

速率模式:UFS强制支持HS-G1 ~ HS-G4使用ufs的产品:手机、汽车、UMPC, DSC, PMP, MP3、相机供电情况:VCCQ power supply: 1.2 V (nominal)VCCQ2 power supply: 1.8 V (nominal)VCC power supply: 2.5 V/3.3 V (nominal)UFS层级:(1)UFS Command Set Layer (UCS)基于SBC和SPC的简单SCSI命令集。(2)UFS Tran

2023-01-22 22:52:38 3123 2

原创 黑猫带你学UFS协议第6篇:UFS链路层简介(MIPI UNIPRO)

T_CO_SAPs:Cports和T_CO_SAPs的关系:CPorts可以被看做UniPro T_CO_SAP的实例。DME:Device Management Entity,设备管理实体EOM:SOM:MTU:Maximum Transmission Unit,最大传输单元。MTU其实就是在每一个节点的管控值,只要是大于这个值的数据帧,要么选择分片,要么直接丢弃。从数据层面来说,UFS的UTP层和UniPro的通信是通过UniPro的传输层的CPorts端口的原语来实现。

2023-01-22 18:24:49 1849

原创 黑猫带你学UFS协议第5篇:UFS物理层简介(MIPI M-PHY)

M-RX应包括可切换的差分终端。默认情况下,M-RX终止必须在PWM-Burst状态下关闭,并可以打开适当的MIPI属性。由于不支持未终止的HS-BURST,因此在HS‐BURST状态下,默认情况下应打开终止。SLEEP和STALL状态不进行终止。在DISABLE and HIBERNATE states,M‐TX驱动High‐Z(高阻态),而M‐RX通过“Dif‐Z保持器”终止通道。

2023-01-22 17:51:42 3029

原创 黑猫带你学UFS协议第25篇:全网最全UFS RPMB LU详解(重放保护逻辑单元)

全文约14500字,主要内容有:1、什么是UFS 的RPMB LU?2、为什么叫做RPMB?什么又是重放攻击?3、如何对RPMB LU进行读写、密钥编程等操作?4、对RPMB区域操作又有哪些限制、规则?4、ufs的RPMB LU和emmc的RPMB partition有什么异同?

2022-12-25 21:17:47 1468

原创 黑猫详解【UFS HCI】第2篇:UFS HCI register详解

host软件设置对应bit为0,用来向host controller表示请求传输的命令槽将被释放。host软件置1,表示host端准备好去执行某个请求了,主机软件通过将此字段中的相关位设置为“0”来指示请求插槽没有更改。host软件置1,表示host端准备好去执行某个task请求了,主机软件通过将此字段中的相关位设置为“0”来指示请求插槽没有更改。host软件将UTMRLRSR的值从1变为0,那么这个字段的值将会被清零。host软件将UTRLRSR的值从1变为0,那么这个字段的值将会被清零。

2022-11-20 11:44:52 995

原创 黑猫带你学UFS协议第22篇:UFS语境管理详解(context management)

为了更好地区别大的顺序操作和小的随机操作,并提高多任务支持,可将语境与读或写关联。将一组命令与一个语境关联,使得设备能够优化数据的处理。多个读或写命令与此语境关联,就在它们之间创建出某种逻辑关系,以便设备优化性能。通俗来说,通过context管理,进行多块读写的时候,ufs的性能有一定的优化。至于为什么会优化,该怎么优化,这就是fw的事情了。

2022-11-20 11:25:34 879

原创 黑猫详解【UFS Unipro】第1篇:Unipro协议框架详解

UniPro规范适用于广泛的设备类型,如应用程序处理器、co-处理器、调制解调器、存储子系统,包括非易失性内存模块、显示器、相机传感器、3D图形和多媒体加速器。它还适用于不同类型的数据流量,如控制消息、批量数据传输和分组流。MIPI UniPro是一个成熟的通用接口,易于实现、可在传统模块化设备架构中灵活使用,适合满足并应对移动和其他行业不断增长的需求。UniPro充当UFS的数据链路层,负责host和device的连接。UniPro不仅定义了数据链路层,它本是也是一个比较完整的协议栈。

2022-11-06 11:01:23 1974

原创 黑猫带你学UFS协议第15篇:什么是逻辑单元(LU)与逻辑块(Sector)

我们对与UFS、emmc一类存储芯片,最重要的功能是什么?无非就是存数据和取出数据,也就是读写功能。既然要存取数据,那么就需要考虑数据往哪里存放,就像我们住房,买了床会放在卧室,买了厨具会放在厨房。同样的道理,emmc/ufs内部也划分了有很多“房间”,这些“房间”在emmc里面叫做分区,在ufs里面叫做逻辑单元。在emmc里面有user/rpmb/boot/gpp分区的概念,把emmc的空间划分为多个区域。

2022-10-23 21:18:36 1668

原创 黑猫带你学UFS协议第13篇:UFS标志(Flags)和属性(Atrributes)详解

UFS中的标志其实就是一些开关,布尔型,非0即1,打开或者关闭。这些标志可以用来使能或者禁止UFS设备的一些功能、模式或者状态。简单来说,flag和attribute、discriptor一样,都是ufs的寄存器罢了。只不过spec将这些寄存器分类了,分成这三种大的类型了而已。标志可以被清除、复位、设置、触发、读。主机也是通过设备管理器的Query Request UPIU来读取或者写标志。

2022-10-15 17:17:04 1213 3

原创 黑猫详解【UFS Unipro】第2篇:Power States & Power Modes详解

了解power mode之前先要知道:一个是功率模式,一个是功率状态,不要搞混了!UniPro定义了六种功率模式,它们是从底层PHY提供的功率模式中抽象出来的功率模式。UniPro在所有模式下,每个方向最多支持4个PHY信道。未使用的信道保持HIBERNATE_STATE状态。未连接的信道保持OFF_STATE状态。能够实现所有功率模式中最高的数据传输速率。链接总是随时准备发送和接收数据,同时提供一个定义良好的延迟,这是任何UniPro功率模式中最低的。

2022-10-03 21:46:38 1521 1

原创 黑猫带你学UFS协议第24篇:UFS命令队列详解(CMDQ)

UFS设备可以实现以下两种队列架构中的一种:(1)独立于任务集,用于对任务进行排队的资源可以静态分配给每个LU,以便LU能够对新任务进行一定深度的排队(2)也可以由所有LU共享,以便根据接收到的任务将排队资源动态分配给LU。...

2022-08-30 00:30:00 1776

原创 黑猫详解【UFS HCI】第1篇:UFSHCI系统框架介绍

Host Controller Interface (HCI),也叫做UFSHCI,本文中统一使用HCI。根据其名字也能大概知道这是什么意思:主机控制器接口。其作用就是为ufs提供一个统一的硬件接口,方便host cotroller使用统一的驱动。简单来说,ufs被应用到不同的平台设备中,这些不同的平台设备如何与ufs进行交互?通过HCI这种统一的硬件接口与ufs通信。不同的厂商生产的平台设备就要遵守HCI,才能和ufs通信,这样,一来能减少各种硬件接口不同导致的问题,二来软件驱动又能兼容。...

2022-08-29 00:51:32 1425 1

原创 黑猫带你学UFS协议第23篇:UFS cache详解

UFS cache是一个临时的存储空间,用来提高host读写的访问时间。例如host如果写数据到flash中需要很长时间,而host下发的数据写到ufs的cache中就很快了。这样ufs内部自己可以再从cache中将数据搬移到flash中。此时host就可以去干自己的事情了,不需要等待UFS把数据再写入flash中。对于读同理,提前把数据放到cache中,当要读数据的时候,host直接从cache中拿即可,访问时间大大加快。host不能直接访问UFS的cache。

2022-08-21 14:31:57 1256

原创 黑猫详解【UFS Unipro】第3篇:DME reset详解

三种reset:这三种reset对于Unipro来说是强制的。Cold Reset和Warm Reset会对host和device的整个UniPro stack中的L1.5至L4层都有影响,包括相应的属性。UniPro Cold Reset or UniPro Warm Reset进程结束时,UniPro Link是不使能的,要么进入Off State(DME_POWEROFF.req),要么进入Boot程序被发起(DME_ENABLE.req)。...

2022-08-14 23:00:48 953 1

原创 黑猫带你学UFS协议第9篇:UFS电气特性详解(Power、CLK、Reset等)

UFS强制支持secure mode。UFS设备可能会存储个人或者公司的信息,UFS提供把数据永久从设备上移除的功能,并且保证对存储介质进行逆向恢复数据也恢复不回来原有数据。安全模式是以逻辑单元为单位进行应用的,不同的逻辑单元可以有不同的安全模式。由于UFS设备的存储介质不同,所以把数据安全从存储介质上移除方式会有不同,spec提供了三种通用的移除方法,UFS设备至少支持其中一种。● 对存储的位置进行一次擦除操作。● 对存储的位置使用单一字符(比如0xAA)覆盖写,然后进行擦除。.........

2022-08-14 15:24:20 2100

原创 黑猫带你学Makefile第13篇:Makefile编译问题合集

如图:查看到上面make生成的.depend到哪里突然不生成了。原因就可能是Makefile生成了依赖关系了,但是实际代码中并没有该.c文件导致的。

2022-08-09 23:37:35 353

原创 黑猫带你学Makefile第12篇:常见Makefile问题汇总

本文结合个人工作/学习经验、网络资料辛苦整理/撰写而成,付费内容,禁止转载。本文所在专栏《》在工作/学习过程中,即使深入学习研究了makefile,依旧有很多杂七杂八的问题产生,本文将这些问题整理汇总,方便查阅。...

2022-08-09 23:37:18 225

原创 黑猫带你学Makefile第11篇:当头文件a.h改变时,如何将所有依赖头文件a.h的.c文件都重新编译

自定义了.d文件,通过定向符>将gcc -MM命令生产的依赖关系放在.d文件,然后通过sinclude在makefile中展开,就产生了依赖关系,当.h文件发送变化,依赖.h文件的所有.c文件都会重新编译。(3)使用sinclude/-include/include将自定义文件的依赖关系展开。如果一条命令前面加上了-号,当这条命令执行失败的时候,不至于退出,继续向下执行。本文结合个人工作/学习经验、网络资料辛苦整理/撰写而成,付费内容,禁止转载。例如:-rm -f $(SUB_TGT)......

2022-08-09 23:36:52 333

原创 黑猫带你学Makefile第10篇:如何将未被编译的代码/自己写的驱动编译进uboot

本文结合个人工作/学习经验、网络资料辛苦整理/撰写而成,付费内容,禁止转载。本文所在专栏《》如何将自己写的code或者板子中未被编译的code编译进uboot呢?此处通过两个例子来讲解。

2022-08-07 15:11:15 202

原创 黑猫带你学Makefile第9篇:menuconfig/Kconfig/deconfig/.config及Makefile之间的关系

本文结合个人工作/学习经验、网络资料辛苦整理/撰写而成,付费内容,禁止转载。本文所在专栏《》Linux内核源码文件繁多,搞不清Makefile、Kconfig、.config间的关系,不了解内核编译体系,编译修改内核有问题无从下手,自己写的驱动不知道怎么编进内核,不知道怎么配置内核,这些问题都和Makefile、Kconfig、.config有关,下面简单谈谈Makefile、Kconfig和.config。...

2022-08-07 14:51:49 2214

原创 黑猫带你学Makefile第8篇:uboot/kernel中的makefile基本语法与流程

学习了Makefile的基本语法,依旧看不懂uboot/kernel中的makefile。就像刚学完C语言基本语法就去看内核代码一样。因此,想要看懂uboot/kernel这种大型工程中的makefile,还得了解uboot/kernel中makefile的一些架构才可以。本文通过uboot/kernel中makefile的架构及主makefile的分析,让你能够更加快速了解uboot/kernel中的Makefile。...

2022-08-07 14:41:06 248

原创 黑猫带你学Makefile第7篇:Makefile简单例程一览

本文结合个人工作/学习经验、网络资料辛苦整理/撰写而成,付费内容,禁止转载。本文所在专栏《》本文列出几个很简单的例子,大家根据前面的语法学习,这些例子自然是能看懂什么意思的。如果完全看不懂,那就是有问题了。文末推荐几个连接,个人认为是网上比较好的例子,可以参考学习。...

2022-08-07 11:22:54 176

原创 黑猫带你学Makefile第6篇:Makefile重要规则

输入make后:1. make会在当前目录下找名字叫“Makefile”或“makefile”的文件。2. 如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。3. 如果edit文件不存在,或是edit所依赖的后面的 .o 文件的文件修改时间要比edit这个文件新,那么,他就会执行后面所定义的命令来生成edit这个文件。4. 如果edit所依赖的.o文件也存在,那么make会在当前文件中找目标为.o文件的依赖性

2022-08-07 11:12:09 199

原创 黑猫带你学Makefile第5篇:Makefile中函数的使用

在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。...

2022-08-07 10:58:20 1233

原创 黑猫带你学Makefile第4篇:Makefile中变量的使用

变量在声明时需要给予初值,而在使用时,需要给在变量名前加上“”符号,但最好用小括号“()”或是大括号“”把变量给包括起来。如果你要使用真实的“”符号,但最好用小括号“()”或是大括号“{}”把变量给包括起来。如果你要使用真实的“”符号,但最好用小括号“()”或是大括号“”把变量给包括起来。如果你要使用真实的“”字符,那么你需要用“$$”来表示。makefile或者shell中都是,变量赋值给变量,要用$如下:如果写成A = B就不对。延迟赋值“=”写成这样也可以,输出结果一样。立即赋值“:=”

2022-08-07 10:04:40 337

原创 黑猫带你学Makefile第3篇:Makefile基本语法

对于makefile,可以认为其是一种用于代码编译的工具,也可以认为其是一种编程语言。就像python常用于数据处理/AI、C#常用来写图形化界面一样,makefile是用来实现自动化编译的一种编程语言。之所以称makefile是一种编程语言,其原因还在于makefile也有变量、函数的概念,当然可以认为是一种编程语言。既然是一种编程语言,其一样有语法,只不过大多数人称之为“规则”。只要知道其是一个意思即可。......

2022-08-07 09:43:28 200

原创 黑猫带你学Makefile第1篇:什么是Makefile

一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。...

2022-08-07 09:30:38 250

原创 黑猫带你学Makefile第2篇:程序编译的过程

想要学习makefile,就得了解代码编译链接的过程。

2022-08-07 09:26:09 194

eMMC 5.1协议规范(JESD84-B51)

Jedec官方eMMC 5.1协议规范

2021-08-22

ripard-dmaengine.pdf

ripard-dmaengine.pdf

2021-07-11

Linux DMA from User Space-public.pdf

Linux DMA from User Space-public.pdf

2021-07-11

空空如也

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

TA关注的人

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