- 博客(1237)
- 资源 (46)
- 收藏
- 关注
原创 PCIe Switch 问题点
全球PCIe交换芯片(PCIe Switch)核心厂商包括Broadcom、Microchip和Texas Instruments等,前三大厂商占有全球大约80%的份额。产品类型而言,PCIe 3.0是最大的细分,占有大约47%的份额。就下游来说,企业级是最大的下游领域,占有约45%的份额。青芯说,国内现在他们的 PCIe4 Switch 用的最多的是 Storage RAID 卡(下行多个x4,上行一般是x8或者x16),和 GPU的一卡双芯(上行X16,两个下行X16)
2025-05-16 18:43:11
860
原创 WL-G4048 Multi-Port PCIe 4.0 Switch
基本信息WL-G4048是青芯半导体自主研发的无阻塞、低延迟多端口PCle Gen4交换机芯片,最多支持48条PCle Gen4 SerDes Lanes。内嵌RISC-VMCU,可通过多种方式配置和调试,如MCU外设、FUSE烧写等,还可根据用户需求提供不同固件。典型配置支持多种型号配置,如WL-G4048(Gen4 X16)、WL-G4044(Gen4 X162等)、WL-G4040(Gen4 X82等)、WL-G4036(Gen4 X8*2等),不同型号的上行端口和下行端口配置不同。
2025-05-16 18:37:47
830
原创 Gen5 应用实例
SSw 模式下,两个 PCIe 交换机之间的链路可以连接两个交换矩阵端口,所有 TLP 都通过目标 ID 路由到这两个端口。全局 ID 的构成:GID 由 {domain[7:0],ID[15:0]} 组成,其中 ID 值是一个 PCIe 标准 ID,由 {bus[7:0], device[5:0], 和 function[2:0]} 组成。此外,光纤链路可以在对等端点(一个在 A0 上,一个在 A1 上)之间提供性能更高的路径(更高的吞吐量和更低的延迟),而不是在两个根联合体之间使用连接(图中虚线)。
2025-05-16 18:31:16
894
原创 PCIeSwitch 学习
一文读懂什么是PCIe SwitchPCIe Switch是一种硬件设备,提供扩展或聚合能力,并允许更多的设备连接到一个PCle端口。连接多个设备:PCIe switch允许多个设备通过单个PCIe总线连接到主机系统,从而扩展系统的连接性。数据交换:PCIe switch可以在多个设备之间传输数据,允许设备之间直接通信而无需通过主机处理器。动态分配:支持动态分配带宽和资源,根据需要调整设备之间的通信速率和优先级。:支持NTB技术,允许两个或多个系统之间直接通信,提高数据传输效率。
2025-05-16 18:25:29
1311
原创 SwitchtecPSX_Gen4
Switchtec PSX Gen4 可编程 PCIe 交换机系列包含可编程和高可靠性的交换机,支持多达 100 条通道、52 个端口、26 个虚拟交换机分区、48 个非透明桥(NTB)、每个端口的硬件和意外插拔控制器、高级错误隔离、全面的诊断和调试功能、广泛的 I/O 接口以及集成的 MIPS 处理器。PSX 系列的典型应用包括 PCIe SSD 机箱、闪存阵列、多主机架构、高密度服务器、刀片服务器、共享存储/计算以及需要定制化、高可靠性 PCIe 交换的应用。
2025-05-13 11:30:49
802
原创 85657_Gen5
Broadcom® BCM85657 是一款 16 通道、低功耗、低延迟、对称的 PCIe Gen5 和 CXL 集成 MAC 和 PHY retimer。该设备可在 32 GT/s 时在根复合体(RC)和端点(EP)之间扩展超过 40 dB 的损耗。每个通道支持多种数据速率,包括 Gen5(32G)、Gen4(16G)、Gen3(8G)、Gen2(4G)和 Gen1(2.5G)。一个 16 通道链路(1×16)两个 8 通道链路(2×8)四个 4 通道链路(4×4)
2025-05-13 10:03:49
898
原创 PEX88000_Gen4
这些交换机专为混合硬件/软件平台设计,提供高可配置性(主机数量、下游端口以及将这些端口分配给插槽的方式)。配置完成后,数据直接在连接的设备之间流动,硬件支持实现非阻塞、线速性能,并具备I/O共享和DMA等功能。该解决方案提供了一种创新的方法来设置和控制PEX88000交换机,配置路由表,处理错误、热插拔事件,并通过嵌入式CPU或外部CPU启用解决方案,而不会影响通过交换机的数据流。
2025-05-13 09:58:29
698
原创 PEX_8796_Gen3
在多主机模式下,PEX8796最多可配置四个上游主机端口,每个端口都有自己的专用下游端口。在故障转移模式下,如果主机发生故障,指定的故障转移主机将禁用连接到故障主机的上游端口,并将该主机的下游端口编程到自己的域中。图4b显示了主机1故障后主机2接管了主机1的所有端点。发送到不同 CPU 的数据包将发送到不同的(用户分配的)PEX8796 上行端口,允许更好的排队和负载平衡能力,从而实现更⾼的性能。在多主机模式下,可以选择最多四个端口作为主机/上游端口,并为每个主机分配所需数量的下游端口。
2025-05-13 09:43:15
1034
原创 威科夫操盘手法笔记
牛市终止于 需求减弱 和 供应扩大 。价格滞涨是因为市场上供应增加对价格产生压力,所以买方不用抬价,平价就能买到股票,这就导致价格滞涨。
2025-05-03 10:15:43
791
原创 中断控制器及处理
是Linux中断子系统应对硬件多样性和复杂拓扑的核心机制,通过类型标签实现中断域的精准标识与隔离,保障了中断处理的灵活性与高效性。其设计体现了内核对可扩展性和硬件抽象的深刻考量。// 全局链表节点// 域名称// 回调函数集// 私有数据(如中断控制器状态)// 对应设备树节点// 最大 HW IRQ 号// 基数树根节点(用于树形映射)// 线性映射大小// 线性映射表(直接索引 HW IRQ)关键成员解析ops:指向,包含映射、解除映射、设备树解析等回调函数。例如:map()
2025-04-24 10:53:39
829
原创 PCIe 中断
PCIe(Peripheral Component Interconnect Express)中断是硬件设备与CPU之间通信的核心机制,用于在数据传输完成或事件触发时通知CPU进行处理。其设计目标包括提升实时性、降低延迟以及支持高吞吐量场景。PCIe中断机制经历了从传统INTx到现代MSI/MSI-X的演进,逐步解决了共享中断、扩展性差等问题。
2025-04-21 11:20:48
928
原创 经济指标学习(二)
基本定义经营现金流是企业通过日常运营(如销售商品、提供劳务、支付供应商货款等)产生的现金净流入,扣除与长期投资、证券交易相关的成本后的剩余资金。公式国际会计准则定义经营现金流 = 经营产生的现金流 - 息税 - 投资收益 - 股息支付其中,经营产生的现金流 = 从客户收到的现金 - 向供应商支付的现金。简化计算公式经营现金流 = 营业收入 - 付现成本 - 所得税或经营现金流 = (营业收入 - 付现成本) × (1 - 税率) + 折旧 × 税率。关键数据来源现金流入。
2025-04-18 18:29:40
775
原创 经济指标学习(一)
营业成本(Cost of Goods Sold, COGS)是企业在一定时期内为生产和销售商品、提供劳务所发生的直接成本,需与营业收入配比。直接性:与生产或服务直接相关,如原材料、人工等。可变性:随产量或业务量变化,如制造业中原材料成本随产量增加而上升。可追溯性:可明确归属到具体产品或服务,如某批次产品的原材料消耗。营业成本是企业核心运营活动的直接成本体现,其准确核算与有效控制对利润分析和战略决策至关重要。不同行业的成本结构差异显著,需结合业务特点针对性管理。营业总成本。
2025-04-16 17:03:33
901
原创 PCIe 学习笔记(一)
TS1和TS2是PCIe物理层链路训练的核心机制,通过有序集的交互实现参数协商与状态控制。其设计兼顾了灵活性与兼容性,支持从Gen1到Gen6的速率演进,并通过Modified TS优化了高速链路的均衡能力。
2025-04-15 16:01:49
842
原创 xHCI 上 USB 读写分析
函数用来处理发送给 RootHub 的控制传输。其通过 MMIO 直接获取相关的信息,如此处的设备描述符。USB 可以进行批量传输、中断传输、实时传输、控制传输。将URB提交给USB核心,后者根据URB的端点类型和设备地址路由请求。对于外接的 USB 设备(如 U 盘)的设备描述符获取,则走。其初始化两个有优先级的工作队列,工作队列执行函数为。函数来添加 HCD ,该函数中有如下代码来初始化工作队列。,该函数实现了成功发送完 URB 后的清理及通知工作。函数来对 URB 清理,同时通知。
2025-04-10 18:24:57
1095
原创 DMA 概念与讲解
但是,您可以再次将整个过程视为“从设备请求中收到 32 个字节的响应”。,理论上可以直接访问 ZONE_NORMAL 的物理内存(如 0x80000000 ~ 0x7FFFFFFFFF)。的关键技术,其核心目标是通过中间缓冲区实现数据的安全传输。(4GB),高端设备(如 NVMe SSD、GPU)可能支持。老旧设备(如 ISA 总线设备)的 DMA 控制器仅支持。但实际可用范围受限于设备硬件、控制器和操作系统的实现。PCIe 的 DMA 支持的内存寻址范围取决于。TLP 遍历层次结构。
2025-04-07 18:39:38
1246
原创 IO 端口与 IO 内存
IO端口:当寄存器或内存位于IO空间时,称为IO端口。一般寄存器也俗称I/O端口,或者说I/O ports,这个I/O端口可以被映射在Memory Space,也可以被映射在I/O Space。IO内存:当寄存器或内存位于内存空间时,称为IO内存。
2025-04-02 18:17:54
361
原创 Ubuntu 下 systemd 介绍
以下是systemd用途 :存放由软件包安装的systemd单元文件,包括各种服务(.service)、目标(.target)、挂载(.mount)等单元文件。特点 :该目录下的配置文件是由软件包管理器(如 apt、rpm 等)安装软件时自动放置的,通常不需要用户手动修改。它为系统提供了各种预定义的服务和功能配置。用途 :存放系统运行时动态生成的单元文件。这些文件通常是在系统运行过程中,由各种服务或进程根据需要创建的。
2025-02-17 17:10:59
1362
原创 制作Ubuntu根文件
qemu-user-static 是一个用于在 x86 主机上运行 ARM 或其他非 x86 操作系统的工具。它是一个静态版本的 QEMU,因此它可以直接从磁盘运行,而无需安装 QEMU 或任何其他软件.PS: LightDM 和 GDM 都是 Linux 系统的显示管理器,负责显示登录界面,并允许用户登录系统。安装它用于在PC主机上运行下载下来的UBUNTU镜像, 方便修改镜像的内容。最终生成的镜像文件:linuxroot.img。PC 上替换源好像有些问题,也许源不对。
2025-02-15 11:54:08
846
原创 QEMU 通过网络实现共享文件
在启动 QEMU 时,使用 -netdev user 和 -device virtio-net 参数来配置 NAT 网络。为了在虚拟机重启后自动挂载共享文件夹,可以将挂载命令添加到 /etc/fstab 文件中。选项用于指定共享目录的路径、安全模型以及挂载点等参数。是一种高效且灵活的文件共享方式,它基于 9p 文件系统协议。如果能够成功 ping 通,说明虚拟机已经可以访问外网。虚拟机启动后,QEMU 会自动为虚拟机分配一个。将需要共享的文件放入此目录中。
2025-02-14 18:01:22
933
原创 Linux 文件系统挂载
虚拟根文件系统中没有/init在initrd阶段,如果虚拟根文件系统中没有/init文件,则会执行函数来挂载真实根文件系统。为了识别根文件系统所在的介质(如 SD、SCSI 等),内核会通过函数加载相关的介质驱动。这些驱动程序确保内核能够正确识别和访问根文件系统所在的设备。虚拟根文件系统中有/init在initrd阶段,如果虚拟根文件系统中有/init文件,则不执行函数来挂载真实根文件系统,真实根文件系统挂载将在/init脚本中进行。
2025-02-14 13:58:59
829
原创 Linux 下注册分析(4)
用于创建设备并在 sysfs 中注册指向该设备应该注册到的结构类的指针。这个函数可以被 char 设备类使用。在 Linux 系统中,是一个非常重要的概念。它是 Linux 内核中用来管理设备驱动程序的一种机制,通过对设备进行分类注册,实现设备间的协作和管理。在 Linux 系统中,设备驱动程序是连接硬件设备和操作系统内核的桥梁,而 class_register 机制可以帮助内核更好地管理这些设备驱动程序,并且提供一种灵活的方式来处理设备的注册和注销。
2025-01-24 17:39:07
1128
原创 Linux 下注册分析(3)
用于设备的注册,即将一个设备实例注册到设备模型中,使得系统能够识别和管理该设备。该函数通常由设备驱动的初始化函数调用,用于将设备的相关信息注册到设备模型中,包括设备的名称、设备的操作方法、设备的资源等。设备注册后,系统可以通过设备名称或设备号来访问和操作该设备。
2025-01-24 17:08:44
772
原创 Linux 下注册分析(2)
Linux 设备树Linux 下注册分析(1) 首先通过实例来看 bus/class/device/driver 的关系。下图绘制的是 qemu 启动 ARM64 后,sysfs 中 platform 总线下部分目录和文件的关系。框图说明:总结: 添加的 device 会在 /sys/devices 下生成子目录。注册的 driver 会在 /sys/bus 所属的总线目录(如 platform)下的 drivers 生成子目录。 注册的 class 会在 /sys/class
2025-01-23 19:12:27
899
原创 Linux 下注册分析(1)
用于驱动的注册,即将一个驱动实例注册到驱动模型中,使得系统能够识别和加载该驱动。该函数通常由驱动的初始化函数调用,用于将驱动的相关信息注册到驱动模型中,包括驱动的名称、驱动的操作方法、驱动支持的设备类型等。驱动注册后,系统可以根据设备类型来匹配并加载对应的驱动,从而实现设备的自动识别和驱动加载。驱动程序的探测函数(probe)将在设备与驱动程序匹配时调用,以便进行设备的初始化。移除函数(remove)将在设备从系统中移除时调用,以进行相关的清理操作。
2025-01-22 12:39:42
1189
原创 Linux 设备树
Linux 知识(2) 设备树(Device Tree),将这个词分开就是“设备”和“树”,描述设备树的文件叫做 DTS(Device Tree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU 数量、 内存基地址、IIC 接口上接了哪些设备、SPI 接口上接了哪些设备等等,如下图所示: 在以前的内核中,还没有采用设备树,内核源码中有大量的arch/arm/mach-xxx和arch/arm/plat-xxx文件夹,用于存储不同平台的板级信息,
2025-01-21 18:42:41
812
原创 树莓派 4B 指南
树莓派,(英语:Raspberry Pi,简写为RPi,别名为RasPi / RPI) [1]是为学习计算机编程教育而设计,只有信用卡大小的微型电脑,其系统基于Linux。随着Windows 10 IoT的发布,用户可以用上运行Windows的树莓派。
2025-01-15 15:07:02
1324
原创 Linux 工作队列
可以使用动态分配的也可以使用静态方式定义,最后再调用来初始化 work ,其次是衍生的一些其他接口,大多是标志位的不同,其次是delay_work这才是中断低半部常用的接口。
2025-01-09 17:03:31
794
原创 SCSI 简述
SCSI 协议主要是在主机和存储设备之间传送命令、状态和块数据。操作系统对外部设备(如磁盘、磁带、光存储、打印机和扫描仪)的I/O操作,可以通过SCSI协议来实现,一般情况下SCSI协议都嵌入到设备驱动器或者主机适配器的板载逻辑中。因为SCSI协议层位于操作系统和外部资源之间,它具有不同的功能组件。例如,应用程序一般将数据作为文件或者记录来访问。尽管数据最终都将在磁盘或者磁带介质上以数据块的方式存放,但是文件的检索需要一系列功能将未加工的块数据装配成应用程序能够操作的连续文件。
2025-01-09 10:04:28
411
原创 Linux 知识(2)
Linux中 /boot 目录介绍Linux中/boot目录当前 Linux 系统的 kernel 配置文件,可以使用下面指令查看。initrd.img-4.14.0-kali3-amd64(cpio格式)initrd 全名 initial ram disk,启动系统所需加载的虚拟磁盘。它是 vmlinuz 的映像文件。linux 的正式内核。内核符号映射表,顾名思义就是将内核中的符号(也就是内核中的函数)和它的地址能联系起来的一个列表。grub引导加载程序相关的文件。
2025-01-06 11:00:41
1067
原创 Linux 内核调试
如果你需要在系统启动时自动加载特定的内核模块,你可以编辑/etc/modules-load.d目录下的配置文件或者在/etc/modules文件中直接添加模块名。自动加载驱动程序通常意味着当某些事件发生时,系统会自动加载相应的内核模块。modprobe基于内核配置中的依赖关系和模块参数来决定是否自动加载模块。默认的内核编译命令会编译使能的模块,但生成的ko文件分散在各个文件夹内可在编译时传入参数。在系统下次启动时,这些模块将会自动通过modprobe或insmod加载。
2024-12-31 14:32:34
627
原创 USB Hub 检测设备
第二个函数,usb_set_device_state(),这个函数用来设置设备的状态,在 struct usb_device 结构体中,有一个成员 enum usb_device_state state,这一刻会把这个设备的状态设置为 USB_STATE_POWERED,即上电状态。第五个函数,usb_get_status(),这个函数是专门为 Hub 准备的,不是为当前的这个 Hub,而是说当前 Hub 的这个端口上连接的如果又是 Hub,那么和连接普通设备就不一样。后面会用实例来查看效果。
2024-12-25 17:19:28
2497
原创 USB Root Hub 分析
会向主机控制器返回一些信息,或者说 Data,这个 Data 被称作 “Hub and Port Status Change Bitmap”,而从软件角度来看,主机控制器的驱动程序接下来会在处理好这个过程的 urb 之后,调用该 urb 的 complete 函数,对于 Hub 来说,这个函数就是。这里是 Root Hub,所以相应的 hub 驱动会识别这些 device。在这里我们匹配的刚才的接口设备,所以其会调用 hub 驱动的。我们知道,每当驱动注册到总线上,其会识别挂载在总线上的设备。
2024-12-25 11:53:51
575
原创 xHCI 简单分析
struct bus_type 是 Linux 内核中用于表示一种特定类型总线的数据结构。在内核中,每种总线类型(如 USB、PCI、I2C 等)都有自己的 bus_type 实例,用于定义和管理该总线上设备的注册、枚举和驱动程序绑定等操作。// 总线名称,如:usb, pci等字符串;// 总线属性列表// 驱动程序列表// 设备列表// ... 其他字段 ...
2024-12-20 16:46:57
1245
原创 WSL Ubuntu
适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生虚拟机开销。在 Microsoft Store 中选择你偏好的 GNU/Linux 分发版。运行常用的命令行软件工具(例如 grep、sed、awk)或其他 ELF-64 二进制文件。运行 Bash shell 脚本和 GNU/Linux 命令行应用程序,包括:工具:vim、emacs、tmux。
2024-12-19 11:26:55
1342
原创 vscode 使用说明
中defines控制宏定义,控制头文件搜索。],"MODULE"],],vscode添加宏定义VSCode#include头文件时找不到头文件:我的解决方法。
2024-12-18 14:03:54
1384
原创 PCIe 与 USB 的补充知识
每次有一个新的设备注册到上面,都会去匹配右边的驱动,看是否能匹配上。然后将设备添加到驱动的 p->klist_devices 域。同理,每注册一个驱动,都会去匹配左边的设备,如果匹配成功,将则设备加到驱动的 p->klist_devices 域 ,再将设备的 is_registerd 置为 0。创建注册的这条总线需要的目录文件。初始化这条总线上的设备链表:struct klist klist_devices;将会在 /sys/class 目录下产生一个 “pci_bus” 的目录。
2024-12-11 09:06:41
244
原创 XHCI 1.2b 规范摘要(15)
如果要将设备模拟到 VM,则 VMM 应加载一个可以在多个 VM 之间共享设备资源的“主”驱动程序,并且对于将与之共享设备的每个 VF,模拟设备到 VM 的连接事件,建立模拟的设备槽,并将该槽映射到相应 VM 拥有的 VF。VF 生成的后续工作项将由 VMM 的设备主驱动程序处理,并转发到 VMM 拥有的物理 USB 设备。如上所述,当设备连接时,VMM 将对其进行评估并有选择地将其分配给 VM,但在这种情况下,VMM 将在 VM 的模拟外部集线器实例上模拟连接事件,而不是在 VM 事件环上生成。
2024-11-11 18:15:12
1190
Android内核剖析
2016-08-30
Android开发艺术探索随书源码之PinExpandableListView
2016-08-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人