- 博客(168)
- 资源 (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 1006
原创 黑猫带你学NandFlash第7篇:NandFlash写操作详解
编程(写入)操作(programming operation)是用来将数据从cache寄存器或data寄存器搬运到一个或多个plane中。在编程操作中,cache和data寄存器中的数据内容会被内部控制逻辑修改
2024-02-20 08:24:40 470
原创 黑猫带你学NandFlash第2篇:NandFlash部分相关名词释义
本文为本人工作学习中常听到或常用到关乎于nandflash/fw的一些关键词合集,没有固定分类,不需要强行记忆,供查询使用。
2024-02-18 20:38:09 302
原创 黑猫带你学NandFlash第5篇:NAND的封装与引脚定义
ONFI5.1中规定nand封装尺寸有以下几种LGA52为什么不同的封装,会导致nand支持不同的data interface?封装尺寸和设计:不同的封装类型(如TSOP、WSOP、LGA、BGA等)具有不同的尺寸和设计,这可能影响可用的引脚数量和布局,进而影响支持的接口类型。电气特性:封装的电气特性,如信号完整性、阻抗匹配和电源管理,对高速数据传输至关重要。不同的封装可能具有不同的电气特性,从而影响对不同数据接口的支持。
2024-02-18 19:41:44 966
原创 黑猫带你学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 2007 2
原创 黑猫带你学NandFlash第3篇:nandflash介质工作原理,你想要的都在这里!
1、nand组成的cell是什么?什么原理用来存储电荷?2、NAND Flash存储单元组织结构是什么样子的?3、nand的读写擦的本质原理是什么?4、program前必须erase的本质原因。
2023-11-22 08:59:00 776 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 1091
原创 黑猫带你学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 1422 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 1807
原创 黑猫带你学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 2413 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 1352
原创 黑猫带你学UFS协议第7篇:UFS传输层(UTP)简介
SCSI体系结构模型[SAM]用作UTP的通用体系结构模型,SAM任务管理功能用于任务管理。SAM模型就是客户端-服务器模型,或者说是请求-响应模型。这种客户端-服务器模型就是客户端发送请求,服务端响应的一个过程。
2023-01-23 11:32:26 2259
原创 黑猫带你学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 3637 4
原创 黑猫带你学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 2139
原创 黑猫带你学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 3498
原创 黑猫带你学UFS协议第22篇:全网最全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 1755 2
原创 黑猫详解【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 1162
原创 黑猫带你学UFS协议第19篇:UFS语境管理详解(context management)
为了更好地区别大的顺序操作和小的随机操作,并提高多任务支持,可将语境与读或写关联。将一组命令与一个语境关联,使得设备能够优化数据的处理。多个读或写命令与此语境关联,就在它们之间创建出某种逻辑关系,以便设备优化性能。通俗来说,通过context管理,进行多块读写的时候,ufs的性能有一定的优化。至于为什么会优化,该怎么优化,这就是fw的事情了。
2022-11-20 11:25:34 1001
原创 黑猫详解【UFS Unipro】第1篇:Unipro协议框架详解
UniPro规范适用于广泛的设备类型,如应用程序处理器、co-处理器、调制解调器、存储子系统,包括非易失性内存模块、显示器、相机传感器、3D图形和多媒体加速器。它还适用于不同类型的数据流量,如控制消息、批量数据传输和分组流。MIPI UniPro是一个成熟的通用接口,易于实现、可在传统模块化设备架构中灵活使用,适合满足并应对移动和其他行业不断增长的需求。UniPro充当UFS的数据链路层,负责host和device的连接。UniPro不仅定义了数据链路层,它本是也是一个比较完整的协议栈。
2022-11-06 11:01:23 2540
原创 黑猫带你学UFS协议第14篇:什么是逻辑单元(LU)与逻辑块(Sector)
我们对与UFS、emmc一类存储芯片,最重要的功能是什么?无非就是存数据和取出数据,也就是读写功能。既然要存取数据,那么就需要考虑数据往哪里存放,就像我们住房,买了床会放在卧室,买了厨具会放在厨房。同样的道理,emmc/ufs内部也划分了有很多“房间”,这些“房间”在emmc里面叫做分区,在ufs里面叫做逻辑单元。在emmc里面有user/rpmb/boot/gpp分区的概念,把emmc的空间划分为多个区域。
2022-10-23 21:18:36 2015
原创 黑猫带你学UFS协议第12篇:UFS标志(Flags)和属性(Atrributes)详解
UFS中的标志其实就是一些开关,布尔型,非0即1,打开或者关闭。这些标志可以用来使能或者禁止UFS设备的一些功能、模式或者状态。简单来说,flag和attribute、discriptor一样,都是ufs的寄存器罢了。只不过spec将这些寄存器分类了,分成这三种大的类型了而已。标志可以被清除、复位、设置、触发、读。主机也是通过设备管理器的Query Request UPIU来读取或者写标志。
2022-10-15 17:17:04 1415 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 1805 1
原创 黑猫带你学UFS协议第21篇:UFS命令队列详解(CMDQ)
UFS设备可以实现以下两种队列架构中的一种:(1)独立于任务集,用于对任务进行排队的资源可以静态分配给每个LU,以便LU能够对新任务进行一定深度的排队(2)也可以由所有LU共享,以便根据接收到的任务将排队资源动态分配给LU。...
2022-08-30 00:30:00 2075
原创 黑猫详解【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 1663 1
原创 黑猫带你学UFS协议第20篇: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 1493
原创 黑猫详解【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 1262 1
原创 黑猫带你学UFS协议第8篇:UFS电气特性详解(Power、CLK、Reset等)
UFS强制支持secure mode。UFS设备可能会存储个人或者公司的信息,UFS提供把数据永久从设备上移除的功能,并且保证对存储介质进行逆向恢复数据也恢复不回来原有数据。安全模式是以逻辑单元为单位进行应用的,不同的逻辑单元可以有不同的安全模式。由于UFS设备的存储介质不同,所以把数据安全从存储介质上移除方式会有不同,spec提供了三种通用的移除方法,UFS设备至少支持其中一种。● 对存储的位置进行一次擦除操作。● 对存储的位置使用单一字符(比如0xAA)覆盖写,然后进行擦除。.........
2022-08-14 15:24:20 2571 1
原创 黑猫带你学Makefile第13篇:Makefile编译问题合集
如图:查看到上面make生成的.depend到哪里突然不生成了。原因就可能是Makefile生成了依赖关系了,但是实际代码中并没有该.c文件导致的。
2022-08-09 23:37:35 429
原创 黑猫带你学Makefile第12篇:常见Makefile问题汇总
本文结合个人工作/学习经验、网络资料辛苦整理/撰写而成,付费内容,禁止转载。本文所在专栏《》在工作/学习过程中,即使深入学习研究了makefile,依旧有很多杂七杂八的问题产生,本文将这些问题整理汇总,方便查阅。...
2022-08-09 23:37:18 274
原创 黑猫带你学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 379
原创 黑猫带你学Makefile第10篇:如何将未被编译的代码/自己写的驱动编译进uboot
本文结合个人工作/学习经验、网络资料辛苦整理/撰写而成,付费内容,禁止转载。本文所在专栏《》如何将自己写的code或者板子中未被编译的code编译进uboot呢?此处通过两个例子来讲解。
2022-08-07 15:11:15 244
原创 黑猫带你学Makefile第9篇:menuconfig/Kconfig/deconfig/.config及Makefile之间的关系
本文结合个人工作/学习经验、网络资料辛苦整理/撰写而成,付费内容,禁止转载。本文所在专栏《》Linux内核源码文件繁多,搞不清Makefile、Kconfig、.config间的关系,不了解内核编译体系,编译修改内核有问题无从下手,自己写的驱动不知道怎么编进内核,不知道怎么配置内核,这些问题都和Makefile、Kconfig、.config有关,下面简单谈谈Makefile、Kconfig和.config。...
2022-08-07 14:51:49 2339
原创 黑猫带你学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 284
原创 黑猫带你学Makefile第7篇:Makefile简单例程一览
本文结合个人工作/学习经验、网络资料辛苦整理/撰写而成,付费内容,禁止转载。本文所在专栏《》本文列出几个很简单的例子,大家根据前面的语法学习,这些例子自然是能看懂什么意思的。如果完全看不懂,那就是有问题了。文末推荐几个连接,个人认为是网上比较好的例子,可以参考学习。...
2022-08-07 11:22:54 208
原创 黑猫带你学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 247
原创 黑猫带你学Makefile第5篇:Makefile中函数的使用
在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。...
2022-08-07 10:58:20 1341
原创 黑猫带你学Makefile第4篇:Makefile中变量的使用
变量在声明时需要给予初值,而在使用时,需要给在变量名前加上“”符号,但最好用小括号“()”或是大括号“”把变量给包括起来。如果你要使用真实的“”符号,但最好用小括号“()”或是大括号“{}”把变量给包括起来。如果你要使用真实的“”符号,但最好用小括号“()”或是大括号“”把变量给包括起来。如果你要使用真实的“”字符,那么你需要用“$$”来表示。makefile或者shell中都是,变量赋值给变量,要用$如下:如果写成A = B就不对。延迟赋值“=”写成这样也可以,输出结果一样。立即赋值“:=”
2022-08-07 10:04:40 388
原创 黑猫带你学Makefile第3篇:Makefile基本语法
对于makefile,可以认为其是一种用于代码编译的工具,也可以认为其是一种编程语言。就像python常用于数据处理/AI、C#常用来写图形化界面一样,makefile是用来实现自动化编译的一种编程语言。之所以称makefile是一种编程语言,其原因还在于makefile也有变量、函数的概念,当然可以认为是一种编程语言。既然是一种编程语言,其一样有语法,只不过大多数人称之为“规则”。只要知道其是一个意思即可。......
2022-08-07 09:43:28 270
原创 黑猫带你学Makefile第1篇:什么是Makefile
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。...
2022-08-07 09:30:38 309
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人