自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 收藏
  • 关注

原创 Python进阶之-加密库cryptography使用详解

cryptography 库是一个强大的 Python 加密库,提供了对加密算法和协议的高层和低层访问。它是用来实现数据加密、签名、密钥管理等功能的。以下是一些常见用法的详解,帮助你理解如何使用这个库。

2024-09-02 11:23:15 1579

原创 如何对CXL Port做Link Disable和Hot Reset

在CXL设备的验证测试中,对CXL设备做Link Disable和Hot Reset对比PCie的Port做相同的操作略有不同。

2024-08-01 11:30:10 304

原创 Python进阶之Openpyxl详解

openpyxl 是一个用于读取和编辑 Excel 文件(即 .xlsx 格式文件)的 Python 库。以下是 openpyxl 的详细介绍及常见操作示例。

2024-07-24 19:58:49 1894

原创 X86/Aarch64下编译PMDK工具

什么是PMDK?Intel的PMDK(‌Persistent Memory Development Kit)‌是一个库,‌旨在简化持久内存的应用开发并解决一些常见挑战。‌PMDK,‌全称为Persistent Memory Development Kit,‌是由Intel开发的一套函数库和工具的集合,‌适用于所有的持久内存(‌厂商中立)‌,‌无论这些内存来自哪个制造商。

2024-07-12 16:27:06 882

原创 Centos7安装Glibc 2.32版本(超详细)

这应该会输出刚刚安装的4.2.1版本信息。将make cp到/usr/bin 目录。

2024-07-11 11:37:35 3215 5

原创 Python中random使用详解

Python标准库中的random模块提供了生成伪随机数的工具。

2024-07-04 08:30:00 893

原创 Python中序列化利器pickle使用详解

Python 中的 pickle 模块是一个序列化和反序列化Python对象结构的工具,也就是说它可以把Python中任意一个对象转化为一串字节流,也可以将这串字节流重新恢复为原来的对象。这个过程也分别被称为“pickling”(序列化)和“unpickling”(反序列化)。

2024-07-03 11:02:57 475

原创 Jenkins通过Squid代理服务器添加局域网节点机器

当jenkins在公网上的时候,如果要添加局域网内的服务器为节点机器构建的时候,这里就需要通过squid代理服务来实现了。当然你也可以使用其他的方式例如Apache等等,这里主要介绍通过Squid的方式。Squid是一种广泛使用的缓存代理服务器,它主要用于缓存和转发HTTP、HTTPS、FTP等常见的网络协议数据。Squid能够帮助减少带宽消耗、提高内容加载速度,并提供安全的网络访问控制。

2024-06-26 23:48:36 1077

原创 Python中位运算详解

在Python中,位运算用于直接操纵数值的二进制位。

2024-06-24 22:46:16 382

原创 Python类中变量定义详解

Python中的类可以定义两种类型的变量:类变量和实例变量。类变量(Class Variables): 类变量是在类级别上定义的变量,它们是对所有实例共享的。这意味着类变量只有一个副本,无论你创建了多少个类的实例,类变量的值都是相同的。如果你通过任意一个实例或者类本身改变了类变量的值,这个改变对所有实例都是可见的。

2024-06-19 11:39:20 1820

原创 CXL协议中 Register Locator DVSEC详解

Register Locator DVSEC(Designated Vendor-Specific Extended Capability)是一种PCI Express(PCIe)配置空间的能力,专为CXL(Compute Express Link)技术中的设备设计。这包括CXL根端口、CXL下行交换端口、CXL上行交换端口以及非RCD(即非寄存器配置数据)设备。这项能力的主旨是帮助这些设备实现额外的寄存器块,以便更好地配置和管理CXL技术提供的高级功能。

2024-06-13 22:35:13 1226

原创 Ubuntu编译指定版本NVMe Cli工具

【代码】Ubuntu编译指定版本NVMe Cli工具。

2024-06-07 16:08:34 420

原创 Python进阶之-mmap详解

Python中的mmap模块允许你创建一个内存映射的文件,这意味着文件数据直接映射到虚拟内存。这样做的好处包括:提高文件访问速度、可通过修改内存来修改文件、可以像操作普通内存一样操作这块特殊的内存区域。

2024-06-07 10:07:57 1322

原创 【CXL协议-控制和状态寄存器(8)】

设备 0、功能 0 DVSEC 中的功能、状态和控制字段控制整个 CXL 设备的 CXL 功能。在此过程中应保持向后兼容性。Bit 7: CXL 复位功能:如果设置,表示设备支持 CXL 复位并在此寄存器中实现 CXL 复位超时字段、在 CXL Control2 寄存器中启动 CXL 复位位并在 CXL Status2 寄存器中实现 CXL 复位完成状态。此 DVSEC 还位于 CXL 2.0 根端口、上行交换机端口、下行交换机端口和 CXL 2.0 设备的主要功能(设备 0、功能 0)的配置空间中。

2024-06-04 09:30:00 1174

原创 Memory测试工具-lmbench使用详解

什么是lmbench?lmbench 是一个广泛使用的、开源的系统性能测量工具,它能对Unix-like操作系统(包括Linux、BSD等)进行全面的性能测试。这个套件包含了一系列针对不同系统组件(如处理器、内存、文件系统等)的基准测试工具。在内存测试方面,lmbench 主要测量内存的带宽和延迟。

2024-06-03 14:36:28 2009

原创 Memory测试工具-stressapptest详解

stressapptest 是一个用于在各种系统组件上施加压力的工具,特别专注于内存和CPU。通过运行各种模式的访问测试,stressapptest 旨在模拟高负载下的系统行为,并帮助发现潜在的错误,比如硬件故障、过热或系统组件的不稳定性。

2024-05-31 11:33:44 3156 2

原创 MMIO知识小记

MMIO和端口I/O都是处理器与I/O设备之间通信的方法。选择哪一种方法取决于硬件设计和特定的应用场景。在现代系统中,MMIO因为其灵活性和易于编程等优势越来越常用,特别是在需要大块数据传输的情况下。端口I/O则主要在传统的或简单的硬件接口(如早期的PC架构)中使用。在具体的编程实践中,高级语言通常通过操作系统提供的抽象(如设备驱动程序接口)来间接访问这些硬件资源,因而开发者通常不必担心底层访问的细节。

2024-05-30 15:32:38 1372

原创 PCIe协议之-DLLP详解

数据链路层将从物理层中获得报文, 并将其传递给事务层;同时接收事务层的报文, 并将其转发到物理层;核心的功能有以下三点1.保证TLP在 PCIe 链路中的正确传递;2.数据链路层使用了容错和重传机制,保证数据传送的完整性与一致性,3.此外数据链路层还需要对PCIe 链路进行管理与监控。DLLP全称是Data Link Layer Packet,是在PCI Express (PCIe) 架构中,数据链路层使用的一种数据包类型。

2024-05-28 22:22:04 1541

原创 Python进阶之-ctypes详解

什么是ctypes?ctypes 是 Python 的一个标准库,它提供了和 C 语言库进行交互的能力,允许在 Python 代码中调用 C 库中的函数,并操作 C 语言数据类型。使用 ctypes 可以创建、访问和修改 C 数据类型,并且可以加载动态链接库(DLLs,在 Windows 上)或共享库(.so 文件,在 Unix/Linux 上),调用其中定义的函数。

2024-05-27 17:08:41 2472

原创 PCIe协议之-Flow Control基础

Flow Control即流量控制,这一概念起源于网络通信中。PCIe总线采用Flow Control的目的是,保证发送端的PCIe设备永远不会发送接收端的PCIe设备不能接收的TLP(事务层包)。也就是说,发送端在发送前可以通过Flow Control机制知道接收端能否接收即将发送的TLP。

2024-05-24 16:03:25 1397

原创 Python进阶之-collections详解

Python中的collections模块提供了一些额外的数据类型:Counter、deque、OrderedDict、defaultdict、namedtuple以及在Python 3.7之后加入的ChainMap。这些数据类型补充了Python标准的内置数据类型,为不同场景提供了更优的数据结构解决方案。

2024-05-21 16:34:48 1130

原创 PCIe协议之-TLP Header详解(四)

PCIe中的Message主要是为了替代PCI中采用边带信号,这些边带信号的主要功能是中断,错误报告和电源管理等。所有的Message请求采用的都是4DW的TLP Header,但是并不是所有的空间都被利用上了,例如有的Message就没有使用Byte8到Byte15的空间。Message请求的TLP Header格式如下图所示:下面将分别进行介绍一下,· 数据有效负载可能包含也可能不包含在任一类型中。· 2. 消息通过Vendor ID 字段进行区分。

2024-05-20 13:50:31 1279

原创 PCIe协议之-TLP Header详解(三)

一个读请求可能会对应多个CplD(因为4KB的地址边界问题,以及RCB的限制),但是返回的总的数据量应当与请求的数据量保持一致,否则可能会出现Completion Timeout的错误;· 当任何非配置请求的Completion中的状态码为CRS时,都会被认为是非法的,并被认为是Malformed TLP;👉Tag: 这与最初的Memory Read TLP中的Tag字段相对应,它是为了匹配Completion与它所完成的原始请求。说明: 这表明请求被成功完成,没有错误发生。

2024-05-17 10:22:09 1013

原创 PCIe协议之-TLP Header详解(二)

在PCIe中,存在几种不同类型的请求,主要包括IO(Request)请求、存储器(Request)请求和配置(Request)请求。这些请求类型允许CPU与连接在PCIe总线上的设备进行通信和控制。

2024-05-15 18:06:15 1281

原创 PCie协议之-TLP Header详解(一)

在PCIe通信过程中,事务层数据包(Transaction Layer Packets,简称TLP)扮演着非常重要的角色。TLP用于在设备之间传递数据和控制信息,它们是PCIe的基本信息传输单元。TLP可分为几个部分,最核心的是TLP Header,它负责携带有关数据包的关键信息,包括数据包类型、长度以及传输方向等等。

2024-05-14 22:58:58 2419

原创 Python进阶之-反射机制详解

什么是反射?Python中的“反射”是一个编程术语,它指的是程序在运行时能够检查和操作其自身状态的能力,特别是通过名称(通常是字符串)来访问对象的属性、方法和其他组成部分。这种机制允许代码动态地发现和使用它可能不知道名字的具体元素。

2024-05-12 09:00:00 783

原创 Python进阶之-inspect模块详解

Python中的inspect模块是用于获取对象的信息的模块,比如查看源代码、列出成员、检查类和函数的参数等,非常适用于调试和反射(introspection)。接下来,我会详细解释inspect模块,并结合例子说明一些常用的方法。inspect 模块的主要功能包括:获取对象信息:可以获取对象的类型、名称、模块、源代码等信息。获取函数和方法的参数信息:可以获取函数或方法的参数列表、默认参数值、注解等信息。获取类的继承关系和属性信息:可以获取类的基类、方法、属性等信息。

2024-05-11 10:00:00 1813

原创 PCIe协议之-TLP路由基础

在PCI Express (PCIe) 技术中,数据包的路由方式对于确保信息能够高效、准确地传送至目标设备至关重要。PCIe定义了几种路由方式,主要有以下几种。

2024-05-10 10:00:00 1972

原创 Python进阶之-paramiko详解

ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography)。有了Paramiko以后,我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作。

2024-05-09 10:41:44 7699 6

原创 Python进阶之-hashlib详解

在计算机科学中,“哈希” (Hash) 是一种算法,它接受输入(或者“消息”),并返回一个固定长度的字符串,这个字符串称为输入的 “哈希值” 或者 “消息摘要” (Message Digest)。哈希函数的设计目的是尽可能快地将任意长度的数据转换为固定长度的输出结果,通常输出的哈希值远小于输入数据。

2024-05-08 15:38:44 1674

原创 Python进阶之-jinja2详解

Jinja2 是一个强大的 Python 模版引擎,主要用于生成HTML或其他文本文件。这个库非常适合开发动态网站和Web应用的视图层,因为它支持逻辑操作如循环和条件判断,还可以继承和重用模板。Jinja2以其灵活性和性能著称。jinja2是Flask作者开发的一个模板系统,起初是仿django模板的一个模板引擎,为Flask提供模板支持,由于其灵活,快速和安全等优点被广泛使用。

2024-05-07 11:33:59 2263

原创 Python进阶之-上下文管理器

在Python中,上下文管理器是支持with语句的对象,用于为代码块提供设置及清理代码。上下文管理器广泛应用于资源管理场景,例如文件操作、网络连接、数据库会话等,其目的是确保如文件或网络会话等资源的正确获取和释放,即使在发生异常时也能保证这点。要创建自定义上下文管理器,你可以定义一个类并实现__enter__和__exit__方法。""""""")")return False # 如果返回True,则异常不会被重新抛出;否则会被抛出。")

2024-05-06 17:53:43 1227 1

原创 Python进阶之-ast使用详解

ast模块在Python中用于将源码转换成抽象语法树(Abstract Syntax Trees,AST)。通过AST,我们可以读取、修改、分析Python代码。本质上,它将源码转化为树形结构,节点代表语法构造,如表达式、语句等。这对于编写代码分析、优化工具或自动代码生成等任务非常有用。抽象语法树(AST)组成部分Expression: 在Python的AST中,Expression节点表示一个表达式。这里,它是整个AST的根节点。Expression节点有一个body属性,用于存储表达式的主体。

2024-05-04 09:52:01 2170

原创 PCIe协议之RCB、MPS、MRRS详解

PCIe总线的存储器写请求、存储器读完成等TLP中含有数据负载,即Data Payload。Data Payload的长度和MPS(Max Payload Size)、MRRS(Max Read Request Size)和RCB(Read Completion Boundary)相关。RCB(Read Completion Boundary)是PCI Express(PCIe)总线中定义的一个参数,它指定了在完成PCIe内存读取请求时可以返回的数据包的最大对齐字节边界。

2024-05-01 10:00:00 3638 6

原创 Python进阶之-traceback详解

在日常开发中,我们会做一些基本的异常处理,但是有时候只能打印我们处理的结果或者将异常打印出来,不能直观的知道在哪个文件中的哪一行出错。在Python中,traceback是一个用来跟踪异常错误信息的标准库,常用于异常处理和调试。它可以帮助开发者了解异常发生的上下文,并提供关于异常发生处的调用堆栈的信息。在实际开发中,通过使用traceback模块,可以更清晰地看到错误发生的位置及其前后调用关系,从而帮助快速定位并修复问题。

2024-04-30 09:30:00 4071

原创 Python进阶之-Enum(枚举)

枚举(Enumeration)是一种数据类型,其中每个枚举值都是一个实例,都代表该数据类型的一个可能的值。在很多编程语言中,比如C、Java、C#和Python等,枚举都得到了支持,枚举成员常常用于代替一组硬编码的常量。枚举是一种编程模式,用于定义一组有限、固定且通常不可变的值 的集合。这些值称为枚举的成员(或元素)。枚举的每个成员都有一个名称和一个相关联的数值(可以是整数、字符串或任何其它字面量)。

2024-04-29 10:00:00 4120

原创 PCIe协议中断机制详解

PCIe中断通常分为以下几种:INTx传统中断:这是遵循早期PCI总线规范的传统中断方式。在PCI总线中,设备使用一个共享的中断线(INTA#, INTB#, INTC# 或 INTD#)向CPU发送中断信号。PCIe中也提供了对这些传统中断的支持,以确保与旧设备的兼容性。但由于这种方式使用的是共享线路,它可能导致中断冲突,并且效率低下。MSI是一种改进的中断机制,它不再依赖共享的物理中断线。相反,设备通过写入特定的数据到特定的内存地址向CPU发送一个中断消息。

2024-04-28 15:49:16 2268

原创 PCIe协议Ack/NAK详解

在PCIe通信协议中,ACK(Acknowledgement)和NAK(Negative Acknowledgement)是两种重要的信号,它们用于控制和确保数据传输的可靠性。ACK信号用于确认接收端成功接收了一条消息或数据包。在数据传输过程中,发送端发送数据后,接收端在收到并成功校验数据无误后,会向发送端发送ACK信号,表示数据已成功接收且无误。ACK信号是通信过程中确保数据正确送达的重要机制。

2024-04-27 08:21:46 1709 2

原创 Python实现定时器的几种方式(超详细)

在Python编程中,定时器是一种非常有用的工具,用于执行特定任务或函数,例如定时任务、轮询操作、定时检查等。Python提供了多种方式来创建和使用定时器,本文将介绍一些高级的定时器使用方式,包括使用threading模块、使用schedule库以及在异步编程中使用定时器。定时器是Python编程中的一个重要工具,用于执行定时任务和操作。本文介绍了多种高级的定时器使用方式,包括使用 threading 模块、schedule 库以及在异步编程中使用定时器。选择合适的方法取决于具体需求和项目的要求。

2024-04-26 11:30:42 6484

原创 PCIe基础BDF和配置空间详解

在PCI Express (PCIe) 架构中,"BDF"和"配置空间"是两个重要概念,它们与PCIe设备的识别和配置紧密相关。BDF是一种寻址机制,用于唯一标识系统中每个PCIe设备。BDF的全称是Bus/Device/Function,带有以下组成部分:Bus:一个 8 位字段,表示设备所在的总线号。因为是8位,所以PCIe可以支持256个总线。Device:一个 5位字段,表示特定总线上的设备号。每个总线可以有32个设备,编号从0到31。

2024-04-25 17:39:31 2608

pytest中文文档详解

对于刚学习pytest框架的同学来说可以看看

2024-04-10

空空如也

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

TA关注的人

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