- 博客(134)
- 资源 (10)
- 收藏
- 关注
原创 NVMe Namespace
Namespace是一种可以由Host直接访问的格式化的non-valatiele memory,Namespace ID (NSID) 是Controller用来提供对Namespace访问的标识符。Unallocated NSID Type: 指NVM Subsystem中不存在的Namespace;,如果NSID为0或超过identify中上报的Number of Namespaces field的值为。,NSID = FFFFFFFFh是一个广播值,用于指定所有的Namespace。
2024-09-02 23:33:44 207 1
原创 NVMe Reset
Reset在PCIe设备中,是很重要的基础流程,参考NVMe Spec协议,定义了三种类型的复位: 下面针对这三种类型分别进行介绍:
2024-09-01 23:36:09 921
原创 Memory-based Controller Shutdown (PCIe)
Host发送Delete I/O Submission Queue Command,删除之前Create的I/O Submission Queue,成功完成Delete I/O Submission Queue Command的结果就是,Submission Queue中任何剩余outstanding command都将被Aborted。本文介绍NVMe协议中定义的Controller Shutdown流程,当Host需要下电或关机的情况下,应该按下面步骤对控制器进行有序的下电操作。
2024-08-28 23:41:15 338
原创 Memory-based Controller Initialization (PCIe)
在NVMe协议中,当控制器初始化完成后,Host应该按照顺序执行一些动作来初始化控制器,以便后续能够正常的发送命令。执行完这些步骤后,控制器就可以处理主机发出的Admin或I/O命令了。注意:要退出D3电源状态,也需要执行以上的步骤。
2024-08-27 23:52:09 353
原创 Security Protocol and Data Model (SPDM) Specification
SPDM(Security Protocol for Data Mobility)是一种安全协议,用于保护数据在移动存储设备之间的安全性和完整性。它是由 Trusted Computing Group (TCG) 的 Storage Work Group 开发的一个规范,旨在为存储设备提供一个安全的数据传输和存储环境。SPDM 协议的目标是确保数据在设备之间移动时不会被未授权访问、篡改或泄露。:SPDM 允许设备相互验证对方的身份,确保数据传输是在可信的设备之间进行。
2024-05-24 15:16:08 1775 1
原创 Secured Messages using SPDM over MCTP Binding Specification
本文档将使用SPDM的Secured Messages绑定到MCTP传输,并进一步定义了使用SPDM的安全消息中的传输特定的细节。
2024-05-22 17:35:44 251 1
原创 SPDM over MCTP Binding Specification
SPDM (Security Protocol and Data Model) 旨在成为一个高效接口和数据模型,使能够有效地访问低级安全功能和操作。 SPDM over MCTP binding 定义了通过MCTP传输的SPDM消息的格式。
2024-05-22 13:59:03 461
原创 NVM Express Basic Management Command
本文针对NVMe-Mi 1.2c中Appendix A中的Subsystem Management Data Structure进行说明。
2024-03-29 11:21:05 307
原创 MCTP Control Protocol
MCTP control message用于在MCTP通信的协议中,来设置和初始化MCTP通信。
2024-03-02 16:45:03 1988 4
原创 PCIe设备的枚举过程
配置空间包含了设备的重要信息,如设备ID、厂商ID、BAR(Base Address Registers)、中断信息等。如果检测到一个设备,主机控制器会为该设备分配一个唯一的设备号,并初始化该设备。每个设备都有一个唯一的设备号。总的来说,PCIe设备的枚举过程确保了系统能够发现和有效地与所有连接的设备进行通信。PCI Express(PCIe)设备的枚举过程是系统在启动时自动发现和配置连接到PCIe总线的设备的过程。一旦PCIe设备被枚举和初始化,系统将加载适当的驱动程序,以便与设备进行通信和控制。
2023-11-10 11:25:35 1206
原创 PCI Express --- LTSSM
LTSSM是指Link Training and Status State Machine,是PCIe物理层实现的,用于控制和管理PCIe总线上的数据链路。它提供了一组状态,以便设备进行链路训练和链接协商。在PCIe总线上,发送端和接收端需要进行链路训练,以便确定最佳的链接速度和链接宽度。LTSSM的作用是控制这个过程,并在链路训练期间跟踪链路状态和错误。
2023-06-13 14:43:53 3258
原创 PCI Express架构概述
PCIe(Peripheral Component Interconnect Express)是一种用于连接计算机内部硬件设备的高速串行总线。它是在PCI(Peripheral Component Interconnect)总线的基础上发展而来的。PCI总线是在1992年由Intel推出的,以取代ISA(Industry Standard Architecture)总线。PCI总线使用并行传输,速度相对较慢,最高只能达到133MB/s。为了满足高速数据传输的需求,PCIe总线于2003年问世。
2023-06-08 17:46:09 2003 1
原创 PCIe总线引脚定义
用浅绿色标出来的是检测插槽上设备的“长度”(X1/X4/X8或X16)的,比如,X1的设备的对应的针脚和这个相连,就可以让主板知道这是X1的设备,然后正常工作。可以看出,PCI-E具有串行、可变多通道、差分传输、多功能等优势,是比较先进的接口标准,不仅可以用于内部设备(显卡、网卡、磁盘阵列卡、USB扩展卡、声卡、视频采集卡等),也可以用于外部设备。这一段的作用是时钟信号、一路双向的串行差分信号,并且有6路地线(有些过多了,但是对于插槽而言多几根地线成本并不高,并且可以提高可靠性)。
2023-03-20 15:55:27 3563 1
原创 NVMe-MI --- Management Interface Command Set
NVMe-MI消息结构以及所有NVMe-MI消息共有的字段在3.1节中定义。管理接口命令集的响应消息结构在第4.1.2节中定义。如果请求数据的大小与命令信息的指定数据长度不匹配,那么响应者会以通用错误响应和无效的命令输入数据大小状态进行响应。图57显示了对NVMe存储设备以及使用带内隧道机制的NVMe Enclosure来说,哪些管理接口命令集是必须的、可选的和禁止的。图56显示了对NVMe存储设备以及使用带外机制的NVMe Enclosure来说,哪些管理接口命令集是必须的、可选的和禁止的。...
2022-08-12 17:31:50 595
原创 NVMe-MI --- Message Servicing Model(消息服务模型)
本文主要介绍NVMe-MI消息服务模型,两个主要类别是请求消息和响应消息。并介绍带外机制消息服务状态机。
2022-08-12 07:30:44 1073
原创 NVMe-MI --- Message Transport(消息传输)
NVMe-MI规范定义了一个支持多种消息传输的接口。消息格式与带外机制和带内隧道机制相同。
2022-08-12 07:24:41 3543 2
原创 入门到放弃之 NVMe-MI --- 协议简介
在学习NVMe-MI协议之前,感觉协议是如此的枯燥,通过短时间的阅读Spec发现协议规范定义的精妙绝伦;协议中各种细节处理的相当到位,最有趣的是消息服务模型的状态机设计,希望大家一起在学习的过程中,碰撞出火花。.........
2022-08-09 11:22:34 8010
原创 Altium Designer20 PCB规则设置
我们在进行PCB布线之前,需要对PCB布线进行规则设置,如果大家只是DIY爱好者,那我们将设置价格最经济的PCB规则,我们可以以捷配官网的PCB工艺信息作为参考;下面我将介绍常用的PCB布线规则设置。..................
2022-08-03 22:20:46 23792 4
原创 bat批处理---实现输入指定拷贝文件
在平常的给芯片下载程序过程中,经常遇到需要在多个文件夹下面拷贝bin文件的情况,为了实现能够通过输入参数,来选择需要拷贝的问下,写了一个.bat批处理文件。大家可以参考下面的框架来自行实现所需要的功能。......
2022-08-03 14:30:06 3168
原创 Altium Designer20 批量修改元件丝印大小和位置
在进行PCB布线时,我们经常需要调整元件丝印的大小和位置,下面介绍一种便捷的方法,来实现批量修改元件丝印和位置。
2022-08-03 07:36:34 10326 1
原创 Altium Designer20 交叉选择模式
在使用Altium Designer进行PCB布局时,首先我们需要将原理图元器件更新到PCB中,所有的元件封装都会汇集到PCB中,但并没有根据电路模块进行分类聚集;我们可以使用AD的交叉选择模式,这时任意选中原理图或者PCB中的元件时,在对于的PCB或原理图中会高亮,我们可以根据交叉选择模式将电路功能模块进行分类。......
2022-08-01 23:18:38 6916 7
原创 单片机开发入门---从零开始玩转FRDM-KL25Z
《西蒙游戏》是一款益智休闲类小游戏,它的游戏规则是,让玩家记住不同颜色的灯的亮灯顺序后,依次点击灯,如果次序与AI给予的次序相同,则游戏继续并增加难度,否则游戏结束,重置游戏。我们将使用开发板来实现改进版《新版西蒙》二、芯片资源介绍..................
2022-06-11 12:21:59 5186 2
原创 音响发烧友---HiFi音频功放
最近一直想做个开源的电子项目,思考许久还是选择做个HiFi音频功放。作为一个音响发烧友,带大家DIY一台属于自己的功放。聆听一下,纯正的音乐之美
2022-06-01 07:43:06 5785 1
原创 SSD---ECC原理
我们知道, 所有型号的闪存都无法保证存储的数据会永久稳定, 这时候就需要ECC(纠错码) 去给闪存纠错。 ECC能力的强弱直接影响到SSD的使用寿命和可靠性。 本章将简单介绍ECC的基本原理和目前最主流的ECC算法——LDPC。...
2022-02-14 11:07:19 1213
原创 SSD---NVMe介绍
何为NVMe? NVMe即Non-Volatile Memory Express, 是非易失性存储器标准, 是跑在PCIe接口上的协议标准。 NVMe的设计之初就有充分利用了PCIe SSD的低延时以及并行性, 还有当代处理器、 平台与应用的并行性。 相比现在的AHCI标准, NVMe标准可以带来多方面的性能提升。 NVMe为SSD而生, 但不局限于以闪存为媒介的SSD, 它同样可以应用在高性能和低延时的3D XPoint这类新型的介质上。...
2022-02-14 11:05:02 811
原创 SSD核心技术---FTL
FTL算法的优劣与否, 直接决定了SSD在性能(Performance) 、 可靠性(Reliability) 、 耐用性(Endurance) 等方面的好坏, FTL可以说是SSD固件的核心组成。
2022-02-14 10:47:10 749
原创 SSD---系统架构
SSD主要由两大模块构成---主控和闪存介质。另外可选的还有Cache缓存单元。主控是SSD的大脑,承担着指挥、运算和协调的作用,具体表现在:前端实现标准主机接口与主机通信,接口包括SATA、PCIe、SAS等。 后端实现与闪存的通信,主要包含数据编解码和ECC。 SSD固件运行SSD内部FTL算法。一款主控芯片的好坏直接决定了SSD的性能、寿命和可靠性。...
2022-02-14 10:39:43 3827
原创 Makefile常用函数
在 Makefile 中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。 make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。
2022-01-13 16:34:31 213
原创 Makefile学习笔记
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个shell脚本一样,也可以执行操作系统的命令
2022-01-13 15:27:14 384
原创 状态机设计模式:电动车报警器项目实战
本章将带领大家掌握在嵌入式软件开发中,如何对新项目需求进行软件架构设计,其中包括软件概要设计,软件功能需求分解,功能流程图设计等。
2021-12-10 17:47:46 1954 7
原创 Linux系统编程---用户空间与内核空间
一、基本概念Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。用户空间的内存映射采用段页式,而内核空间有自己的规则。(1)Linux内核地址空间划分通常32位Linux内核虚拟地址空间划分0~3G为用户空间,3~4G为内核空间(注意,内核可以使用的线性地址只有1G)。注意这里是32位内核地址空间...
2021-12-10 11:49:22 2030
原创 Linux驱动开发---杂项设备
一、基本概念Linux设备驱动类型:字符设备:字符设备是能够像字节流一样被访问的设备。 一般说来对硬件设备 IO 的操作可以归结为字符设备。 常见的字符设备有 led、 蜂鸣器、 串口、 键盘等; 块设备:块设备室通过内存缓冲区访问, 可以随机存取的设备, 一般性的理解就是存储介质类的设备。常见的字符设备有 U 盘、 TF 卡、 eMMC、 电脑硬盘、 光盘等等; 网络设备:可以和其它主机交换数据的设备。常见的以太网设备、WIFI、蓝牙等。杂项设备:杂项设备是字符设备的一种,可以自动生.
2021-12-09 15:25:10 1726
原创 使用BusyBox制作最小Linux根文件系统
一、Busybox简介 制作文件系统需要使用到Busybox工具。BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Linux 系统的自带的shell。 ...
2021-12-06 19:31:53 1988
原创 Linux系统编程---信号量
一、基本概念 (1)信号量(Semaphore)信号量本质上是一个计数器(不设置全局变量是因为进程间是相互独立的,而这不一定能看到,看到也不能保证++引用计数为原子操作),用于多进程对共享数据对象的读取,它和管道有所不同,它不以传送数据为主要目的,它主要是用来保护共享资源(信号量也属于临界资源),使得资源在一个时刻只有一个进程独享。 (2)信号量的工作原理由于信号量只能进行两种操作等待和发送信号,即P(sv)和V(sv),他们的行为是这样的:...
2021-12-03 16:00:17 788
原创 Linux系统编程---消息队列
一、基本概念消息队列,Unix的通信机制之一,可以理解为是一个存放消息(数据)容器。将消息写入消息队列,然后再从消息队列中取消息,一般来说是先进先出的顺序。消息队列本质上是位于内核空间的链表,链表的每个节点都是一条消息。每一条消息都有自己的消息类型,消息类型用整数来表示,而且必须大于 0。每种类型的消息都被对应的链表所维护。...
2021-12-03 11:22:24 1741
原创 linux系统编程---共享内存
一、基本概念共享内存是 Unix下的多进程之间的通信方法 ,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。其他进程能把同一段共享内存段“连接到”他们自己的地址空间里去。所有进程都能访问共享内存中的地址。如果一个进程向这段共享内存写了数据,所做的改动...
2021-12-02 16:53:17 689
原创 linux系统编程---无名管道和有名管道
一、基本概念无名管道:无名管道是linux系统内核的特殊文件,用于进程之间的通信,无名管道相当于一个队列结构,fd[1]为写入端(入队),fd[0]为读出端(出队)。其中信息读出后即删除,再次读取时即为下一个信息。 有名管道:二、无名管道管道是创建在内存中的,进程结束空间释放,管道不复存在; 无名管道和有名管道都是半双工通信,实现双向通信需要建立两个管道; 无名管道是linux特殊文件; 无名管道只用于父子进程之间,有名管道可用于无亲缘关系的进程之间。(1)接口说明 ..
2021-12-01 16:27:51 1697
中国电信物联网开放平台_NB-IoT模组对接指导书_v1.4
2018-05-19
NB-IoT低功耗机制与业务场景说明
2018-03-19
NB-IoT BC95_AT指令集中文版V1.0
2018-01-29
网络是怎样连接的-高清-卢根勒
2017-09-21
Huawei LiteOS Kernel中文开发指南
2017-09-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人