自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CodingCos的博客

且将新火试新茶,诗酒趁年华

  • 博客(909)
  • 收藏
  • 关注

原创 【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】

嵌入式学习必备专栏: ARM Core 的详细介绍, Cache 与 MMU/MPU专栏,Coresight 专栏,劳德巴赫 trace32 专栏, AXI/APB/AHB/ACE/CHI总线专栏、CoreLink 专栏,CSH/BASH/TCL专栏,芯片设计入门专栏、ARM GCC 编译专栏,VIM工具专栏

2023-12-30 12:25:07 3737 1

原创 【ARM Coresight | AMBA BUS | Cache 与 MMU/MPU | CoreLink | GCC | CSH 专栏导读】

1. ARM Coresight(SoC-400/SoC-600) 专栏2. ARMv8/v9 CPU/Cache 专栏3. Linux ARM AMBA 总线 专栏4. Trace32/DS-5 专栏。。。

2023-10-17 10:26:34 6146

原创 【RISC-V CPU Debug 专栏 1 -- RISCV 相关文档的区别与联系】

ISA(指令集架构)是 RISC-V 体系结构的核心部分,定义了指令集、寄存器和执行行为等基本内容。这部分文档由组织批准(Ratified),是处理器实现的基础。Profiles(配置文件)定义了 RISC-V处理器应实现的最低 ISA 组合,以确保不同处理器的软件兼容性。通过限定 ISA 组合,避免厂商各自扩展导致碎片化。Non-ISA 规范不涉及CPU 指令集,而是 RISC-V生态系统相关标准。这些标准有助于软件、调试、存储器接口、芯片互连等领域的发展。规范类型主要作用主要内容示例。

2025-03-26 09:41:56 131

原创 【SOC 芯片设计 DFT 学习专栏 -- IDDQ 测试 与 Burn-In 测试】

特性IDDQ 测试Burn-in 测试目标检测制造工艺缺陷(桥接、断开等)。筛选潜在早期失效芯片,验证可靠性。应用阶段通常在芯片生产的功能测试环节应用。通常在生产完成后或出货前进行。应力条件静态、低功耗电流检测。高温、高电压加速测试。测试成本较低,需精密电流测量仪器。较高,高应力设备及较长时间成本。效果补充功能测试覆盖,发现特定缺陷。增强产品可靠性,减少现场失效率。两者的结合在芯片测试流程中至关重要,可以有效提高产品的质量和市场竞争力。

2025-03-25 22:49:47 607

原创 【RISC-V CPU debug 专栏 4.1 -- RISCV CSR C 内嵌汇编访问介绍】

在 RISC-V 架构中,M-mode(Machine Mode) 是最高特权级别,负责处理系统底层操作,包括中断和异常。:CSR 立即数置位指令(csrsi mstatus, 0x8 等价于 mstatus |= 1 << 3)。**作用:**控制全局中断使能。:控制不同类型中断的单独使能。:查询中断挂起状态(只读)。:CSR 立即数清除指令。:读取 CSR 寄存器。

2025-03-25 22:09:18 114

原创 【PCIe 总线及设备入门学习专栏 5.3 -- PCIe 与 EP 中的 DMA协同工作介绍】

当EP 端和 Host 端有大量数据交互时,比如 NPU 的训练或者推理场景中,就需要Host 端向 EP 端搬运大量数据,这种场景就可以在 PCIe 系统中实现个 DMA,用来数据搬运。在PCIe环境中,比如,GPU 作为端点设备(EP),需要通过DMA从主机内存中读取数据,比如进行图形渲染或计算任务时的大量数据传输。比如主机主动将数据写入GPU的显存,这时候主机使用Memory Write TLP,而GPU不需要发送请求,只需要接收数据。主机驱动程序分配系统内存(源地址:0x8000_0000)。

2025-03-24 22:30:15 339

原创 【PCIe 总线及设备入门学习专栏 3.3 -- PCIe 数据搬运组包介绍】

PCIe使用TLP来传输数据,而TLP有最大载荷限制(Max Payload Size),通常是256字节或更大,这取决于 PCIe版本和设备的能力。GPU驱动发起DMA请求,指定源地址(内存0x8000_0000)和目标地址(GPU显存0x1000_0000),数据长度1MB。若PCIe设备支持,可将多个连续地址的TLP合并为更大的有效载荷(需硬件支持),减少TLP数量,提升吞吐量。若数据地址按MPS对齐(如256字节对齐),可避免跨地址边界的TLP分割,简化处理流程。

2025-03-24 09:31:09 267

原创 【LInux 维测专栏 1 -- printk extension 介绍】

是一个平台特定的扩展选项,用于在某些架构或平台上定制化printk行为。具体的实现和作用因平台而异,主要用于满足特定硬件或调试需求。

2025-03-24 09:14:23 57

原创 【PCIe 总线及设备入门学习专栏 3.2 -- PCIe 在进行大数据搬运时是如何组包的?】

同时,数据链路层和物理层的处理可能不需要用户过多关注,但需要简要提及它们的作用,比如确保数据包的可靠传输和物理信号的正确性。首先,当需要传输大量数据时,比如 GPU 进行显存和系统内存之间的数据传输,PCI e是如何处理这些数据的,如何将大数据分成多个包,以及这些包的格式是怎样的。若PCIe设备支持,可将多个连续地址的TLP合并为更大的有效载荷(需硬件支持),减少TLP数量,提升吞吐量。若数据地址按MPS对齐(如256字节对齐),可避免跨地址边界的TLP分割,简化处理流程。

2025-03-21 23:15:29 164

原创 【PCIe 总线及设备入门学习专栏 3.1 -- PCIe 中为何只有 TLP 会被 Switch 和 RC 进行路由?】

TLP在事务层生成,需要端到端传输,因此必须被路由;而DLLP和Ordered Set分别服务于数据链路层和物理层的本地功能,仅在相邻设备间传递,无需路由。这种设计优化了网络效率,减少了不必要的处理,确保了各层职责明确。

2025-03-21 23:00:13 98

原创 【Linux 维测专栏 1 -- Hung Task 分析与验证】

Hung Task 是 Linux 内核中的一个检测机制,用于监控长时间处于 D 状态(不可中断睡眠状态) 的任务(进程或线程)。如果某个任务在 D 状态停留时间过长,内核会认为该任务可能已经“挂起”(Hung),并触发相应的警告或调试信息,帮助开发者定位问题。

2025-03-21 22:33:57 160

原创 【Linux 维测专栏 5 -- linux pstore 使用介绍】

pstore(Persistent Storage)是 Linux 内核的一个功能模块,用于在系统崩溃(如内核 panic)或重启时,将调试信息(如日志、堆栈跟踪等)持久化保存到非易失性存储介质(如闪存、EFI 变量等)。pstore 的主要目的是帮助开发者和系统管理员分析系统崩溃的原因。

2025-03-21 22:22:16 276

原创 【Linux 维测专栏 2 -- Deadlock detection介绍】

【代码】【Linux 维测专栏 2 -- Deadlock detection介绍】

2025-03-21 22:11:08 300

原创 【NPU 系列专栏 3.0 -- scale-out 和 scale-in 和 scale-up 和 scale-down

特性Scale-outScale-inScale-upScale-down方向横向扩展横向缩减纵向扩展纵向缩减资源增加更多节点减少节点提升单个设备能力降低单个设备能力应用场景分布式系统资源回收高性能设备升级低功耗或低性能要求在 AI SoC 中,这四种方法通常结合使用。例如:数据中心可能会采用Scale-out的方式增加更多 AI SoC。终端设备(如手机、摄像头)可能更多使用Scale-up和Scale-down方法以适应不同性能和功耗需求。

2025-03-21 22:05:39 79

原创 【芯片设计- RTL 数字逻辑设计入门 9.3 -- SoC 设计中的 Macro】

综上,Macro 在 SoC 设计中是不可或缺的功能单元,其种类与用途非常多样。设计者根据设计目标和工艺节点选择合适的类型,以实现性能、成本和功耗的综合平衡。” 通常指的是具有特定功能的模块或单元,其可以是预设计、可复用的硬件模块。Macro 的作用是加速设计开发过程,降低复杂性,同时提升模块的性能和可靠性。:SRAM、DRAM 控制器、ROM 单元等被设计为硬宏,可以直接嵌入 SoC 中,实现数据存储功能。:用于处理音频、视频或信号数据(如 FFT 运算),在不同的场景下灵活定制功能。

2025-03-21 21:58:17 67

原创 【SOC 芯片设计 DFT 学习专栏 --DFT(Design for Test)中的 Tessent 和 TestMAX 工具】

在。

2025-03-14 11:05:58 1002

原创 【PCIe 总线及设备入门学习专栏 4 -- PCIe GIC LPI 与 MSI 中断机制】

能产生 MSI 中断的设备, 都有一个 DeviceID (设备ID), 它产生的每一个MSI中断都有一个EventID(事件ID)。ARM的 cpu,特别是 cortex-A 系列的 CPU,都是多 core 的 cpu,因此对于多 core 的 cpu 的中断管理,就不能像单 core 那样简单去管理,由此 arm定义了。对于原来的 SPI, 它也是可以使用MSI的方式传递的,这个功能是可选的。如果GICV3支持MSI方式的SPI,要产生/清除中断时, 操乍如下。架构,来支持多核 cpu 的中断管理。

2025-03-13 09:39:03 274

原创 【网络 MAC 学习专栏 -- linux 环境下 网路port端口使用情况查看】

方法命令说明netstat旧版工具,仍然可用ssss -tulnp更快,推荐lsof查找某个端口的进程fuser显示占用该端口的进程 ID。

2025-03-13 09:05:41 358

原创 【PCIe 总线及设备入门学习专栏 3 -- PCIe 三种路由方式详细介绍】

所谓 为了保证传输的可靠性,A设备会有一个buffer,里面会保存TLP, 它会一直保存,直到接收到了一个回应,如果过了一段时间没有收到回应,那么 A 设备会把 buffer 中的报文重发一下,所以 TAG 就是用来标记TLP的,收到的回应里面也会有 tag,根据收到的TLP 的 tag 把 buffer 中的 TLP 释放掉。下面的那些设备也可以发出一些消息,比如汇报一些产生的中断,汇报一些电源相关的信息,这些消息称为消息报文,它们使用的就是隐式路由。所以可以通 TLP 中获取具体使用的是哪种路由方式。

2025-03-12 23:23:09 169

原创 【C++ 系列文章 基础 01 -- std::string 与 fmt::format】

是 C++ 标准库中定义的一个类,用于表示和操作字符串。它提供了动态内存管理、丰富的成员函数以及与 C 风格字符串的互操作性。动态内存管理:std::string 自动处理内存分配和释放,避免了手动管理内存所带来的错误。丰富的成员函数:支持查找、替换、拼接、子串提取等多种操作,使得字符串处理更加方便。兼容性好:可以与 STL 算法和容器无缝集成,同时支持与 C 风格字符串的转换 () (

2025-03-12 22:42:12 980

原创 【SOC 芯片设计 DFT 学习专栏 -- Scan chain 和 SDFFs及 EDT】

SDFFs是DFT中用于构建扫描链的基本单元,支持功能模式和测试模式的切换,显著提高芯片的可测试性。EDT是一种高效的测试压缩技术,通过减少测试数据量和测试时间,适应大规模芯片的测试需求。两者的结合为SoC设计提供了高效、可靠的测试解决方案,是现代芯片设计中不可或缺的技术123。

2025-03-12 22:36:57 981

原创 【PCIe 总线及设备入门学习专栏 1.3.1 -- PCIe Controller and PHY】

在该模式下,数据传送由CPU执行I/O端口指令来按照字节或更大的数据单位来处理,占用大量的CPU资源,数据传输速度也大大低于DMA模式。国内应该有公司做出相应的phy芯片(例如芯动科技、牛芯半导体),毕竟常见的PCIe 3.0才8 Gbps的速率,最新的6.0才64Gbps。在该模式下,数据传送不是由CPU负责处理,而是由一个特殊的处理器DMA控制器来完成,因此占用极少的CPU资源。控制器逻辑包含了 IP 的 host 设计,以及 PCIe 协议中所规定的事务层、数据链路层、物理层实现逻辑,

2025-03-12 09:25:33 132

原创 【PCIe 总线及设备入门学习专栏 4.5 -- PCIe 中断 MSI 与 MSI-X 机制介绍】

软件在初始化的时候会把 cpu 地址空间的 中断地址转化为 PCIe 地址空间的地址,再 写入设备,同时也会把 Message Data 写入数据,后面 PCI/PCIe 想发中断的时候只需要将 Message Data 写入到 Message Address 上即可,也即会发出一个信号的写传输, 当 PCIe Controller 或者 GIC 收到数据后就会触发中断。表示中断的状态,不管是否屏蔽中断,设备想发出中断的时候,可能是被屏蔽了,但是即使被mask 掉了,pending bit 还是会置位。

2025-03-05 22:41:21 102

原创 【PCIe 总线及设备入门学习专栏 1.3 -- 访问 PCIe 设备过程】

由于A是一个桥,所以需要进行一个深度优先的配置,看看A 桥下面有哪些设备,结果发现A设备下面是一个C设备,然后就去配置C设备,接着就要去读C设备的配置寄存器,发现它仍然是一个桥,既然是一个桥,那么又需要去配置它的三个总线号,C设备的上游总线号是1,它自己的总线号加1,也即为2,它下游所有桥的最大总线号暂时设置为255,这时把C桥配置好了;那么对于终端的设备呢?Bus0 在发送数据的时候,发送的时串行数据包,那么我们需要了解下它的数据包是什么样子的,这里我们就需要先了解 PCIe 设备的层次结构。

2025-02-28 23:32:33 103

原创 【PCIe 总线及设备入门学习专栏 10.1 -- Linux PCIe 驱动框架 之 RK3399 Region1 访问】

如上图 1-3 所示,在addr0 寄存器中有 bit[5:0],这六位用来表示 cpu 发出来的地址里面可以使用多少位放到 如图 2-15 中的 TLP里面,TLP 需要64位数据,这64位数据里面有一部分可以由CPU 提供,另外一部分可以由 addr0 和 addr1提供,由cpu提供的位数由addr0 的bit[5:0] 来决定,不够的再由 addr0 和 addr1 中的其他位来提供,以后 cpu 发出访问 region 1 的地址的时候,就会产生如下图2-15 所示的TLP 包。

2025-02-28 23:26:39 232

原创 【PCIe 总线及设备入门学习专栏 10 -- Linux PCIe 驱动框架】

假设 EP1 中的配置空间中声明了需要100Bytes的地址空间, EP2 声明了需要200Bytes的地址空间,软件驱动程序在扫描设备的时候就会知道 EP1 需要100Bytes 的地址空间, EP2 需要 200Bytes 的地址空间,于是软件就在 addr1 到 addr2 中划出100Bytes的空间,在 addrA 到 addrB 中划出100Bytes 的空间,并且会把首地址写入到EP1 配置空间的寄存器中。probe 函数就会去扫描识别出挂载 pcie 总线上的一个或者多个pcie 设备。

2025-02-28 22:48:50 245

原创 【PCIe 总线及设备入门学习专栏 1 -- PCI | PCIe 总线概述】

当CPU 发出一个地址,这个地址属于某个 PCIe 设备时,这时会选中PCIe 控制器,PCIe 控制器会把CPU发出来的地址加上偏移值得到PCI地址空间的地址,然后把得到的地址通过PCIe/PCI 总线发给对应的PCI/PCIe 设备,PCI/PCIe 设备会检测PCI总线或者PCIe 总线上的信号,但它发现PCI/PCIe 总线上的地址属于自己的范围时,它就会进行回应。对于软件来说 PCIe 或者 PCI 总线都是一样的,它们都是兼容的,软件程序只是去访问某个地址。

2025-02-19 08:56:35 215

原创 【RISCV 常见汇编指令学习 1.2 -- CSRW | CSRR | XORI | ANDI | DRET | J | JR】

CSRW/CSRR:用于写入和读取控制与状态寄存器,支持调试和状态管理。SW/lw:实现内存与寄存器间数据传输,是数据存取的基础。XORI/ANDI:进行位运算操作,常用于状态标志和掩码处理。J/JR:实现无条件和寄存器间接跳转,支持静态与动态跳转。ret/dret:分别用于函数返回与调试模式退出,帮助程序在不同执行环境中正确恢复状态。这些指令构成了 RISCV 汇编编程的基础,理解它们的功能和使用场景对于开发高效、正确的底层软件至关重要。

2025-02-18 14:32:36 999

原创 【PCIe 总线及设备入门学习专栏 1.4 -- PCI 设备访问方法】

比如对于设备1 它的 IDSEL 肯定是某一个信号,同样对于设备2,它的IDSEL肯定是另外一个信号,到底是通过哪个引脚来选中这个设备,不同的 Root Bridge 有不同的设计,比如可以设计成功过 AD31 信号来选中 PCI 设备1,通过 AD30 来选中设备2,当然也可以通过其他引脚来单独选中PCI设备1。CPU 发出的地址位于CPU的地址空间,CPU 发出的某个地址有可能是访问内存的或者是访问某个其它模块的,也有可能是访问某个PCI 设备的,CPU 发出的地址范围不一样,它访问到的外设就不一样。

2025-02-17 23:28:17 164

原创 【PCIe 总线及设备入门学习专栏 10 -- pci linux driver】

每种类的PCI设备都可以用结构类型pci_dev来描述。更为准确地说,应该是每一个PCI 功能,即 PCI 逻辑设备都唯一地对应有一个pci_dev设备描述符。该数据结构的定义如下(/* 全局链表元素 global_list:每一个 pci_dev 结构都通过该成员连接到全局 pci 设备链表 pci_devices 中 *//* 总线设备链表元素 bus_list:每一个pci_dev结构除了链接到全局设备链表中外,还会通过这个成员连接到* 其所属PCI总线的设备链表中。

2025-02-10 14:01:52 285

原创 【低功耗 Power 学习专栏 -- Power Switch】

合理的做法就是让模块/IP内部的所有标准单元依次加电,而不是同时加电,所以一般采用daisy chain的方式连接电源开关,也就是前一个电源开关打开后会有一个输出,连到后一个电源开关的控制输入端,以此类推,把所有的开关串成一条链。细心的同学可能要问了,那么最原始的输入控制信号从哪里来呢?当需要关断的 module 比较小的时候,少量的 switch cell 即可实现开启关断,此时的cell摆放不必局限于某种特别的形式,只要保证连接正确,供电满足需求,将switch cell聚集在一起排列起来也没有问题。

2025-02-10 09:08:25 874

原创 【低功耗 Power 学习专栏 -- isolation cell】

Isolation Cell 的作用确保 Power-Gated Module 关闭时,其信号不会影响 Always-On Module。维持确定的逻辑状态(0 或 1)。降低功耗,保证低功耗模式下的可靠性。与 Shutdown Module、Always-On Module 的关系主要用于连接 Shutdown Module 和 Always-On Module,防止浮动信号。Primary Power 和 Secondary PowerPrimary Power:被关断的模块的电源,如。

2025-02-06 16:08:17 706

原创 【低功耗 Power 学习专栏 -- Power domian 和 power rail】

Power rail 是指芯片中的一条或多条电源轨,负责传输特定电压的电流到相应的电路模块。

2025-02-05 10:32:03 756

原创 【PCIe 总线及设备入门学习专栏 6.2 -- PCIe VDM (Vendor Defined Messages)】

在PCIe协议中,Vendor Defined Messages (VDMs) 是一种允许厂商定义和传输特定功能的消息类型。这种机制扩展了标准 PCIe 消息的功能,可以用于实现供应商自定义的功能,例如固件更新、设备配置和诊断信息传输。PCIe VDM 是通过实现的,它遵循 PCIe 协议栈的结构,包括事务层、数据链路层和物理层。

2025-01-20 22:12:52 292

原创 【PCIe 总线及设备入门学习专栏 6.1 -- PCIe MCTP】

MCTP 是由 DMTF(Distributed Management Task Force)定义的协议,用于提供设备和主机间基于不同传输层(如 PCIe、I²C、USB 等)的管理消息通信能力。在 PCIe 环境下,MCTP 消息作为的一种特殊形式传输,并被赋予唯一的 VDM Code 值0000b,以区别于其他 VDM。MCTP 在 PCIe 环境中作为一种基于 Type 1 VDM 的管理通信协议,提供了设备与主机之间的灵活数据传输能力。

2025-01-20 21:53:26 328

原创 【芯片设计- RTL 数字逻辑设计入门 番外篇 7.2 -- Power Binning】

定义Power Binning 是根据芯片的功耗水平将其分成多个等级的过程。这些等级通常反映了芯片在特定工作频率和电压条件下的能耗表现。目的优化性能与效率:通过选择适合功耗要求的芯片,设备厂商可以在性能和电池续航之间找到最佳平衡点。提升产品覆盖范围:制造商通过分级,可以将不同性能的芯片推向不同的市场。降低成本:可以将不符合高规格要求的芯片投入中低端市场,减少浪费。适应散热设计需求:根据系统散热能力选择适合功耗的芯片。

2025-01-20 21:40:20 81

原创 【PCIe 总线及设备入门学习专栏 9 -- PCIe linux 命令学习】

是一个强大的工具,可以获取详细的设备信息。结合配置信息、设备状态和扩展功能字段,可以深入诊断 PCI 设备问题,例如中断配置错误、内存分配问题或功能支持状态。

2025-01-20 21:32:45 362

原创 【PCIe 总线及设备入门学习专栏 2 -- PCIe 的 LTSSM 和 Enumeration】

何谓枚举呢,其实枚举就是RC发现整个 PCIe拓扑结构的过程。PCIe作为一个局部总线设计,有着复杂的拓扑结构,只有知道了这个拓扑结构,才方便RC传递数据,路由数据。枚举过程中RC采用DFS(深度优先搜索)算法进行设备BDF的发现和分配,BDF这个三元组决定了PCIe设备的唯一性。

2025-01-20 09:34:02 304

原创 【PCIe 总线及设备入门学习专栏 1.3.3 -- PCIe Inbound and Outbound】

Outbound:主机发起,数据流主要从主机到设备。Inbound:设备发起,数据流主要从设备到主机。请求和 Completion 的方向是相对的,但它们的命名基于最初的请求方向。

2025-01-20 09:24:05 137

原创 【PCIe 总线及设备入门学习专栏 5.3.2 -- PCIe 枚举与 PCIe PHY firmware 的区别与联系】

PCIe(Peripheral Component Interconnect Express)枚举是指操作系统或固件对 PCIe 总线上的设备进行探测、识别并为其分配资源(如地址空间、中断号)的过程。它是确保 PCIe 设备能够正确注册和参与系统运行的关键步骤。

2025-01-16 09:16:22 641

Zadig USB驱动安装

Zadig USB驱动安装

2024-11-11

寄存器 bits 查看小工具, 可以用于查看及修改 32bit,64bit, 128bit, 256bit

寄存器 bits 查看小工具, 可以用于查看及修改 32bit,64bit, 128bit, 256bit

2023-07-05

空空如也

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

TA关注的人

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