自定义博客皮肤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的博客

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

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

原创 【嵌入式开发学习必备专栏 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 3860 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 6548

原创 【芯片设计- RTL 数字逻辑设计入门 4.2 -- 组合逻辑赋值 + 时序逻辑状态保持】

本文解析了Verilog RTL设计中一个典型的状态保持结构: 使用组合逻辑生成下一状态:reg_halt_mode_nx = halt_taken | (reg_halt_mode & ~halt_return) 使用时序逻辑保持当前状态:reg_halt_mode <= reg_halt_mode_nx 该结构实现了halt模式的进入(halt_taken)、保持(reg_halt_mode)和退出(halt_return)控制,具有逻辑清晰、易于扩展和避免生成锁存器等优点。通过组合当前状

2025-06-06 23:44:23 361

原创 【ARM AMBA APB 入门 1.1 -- APB 读写寄存器 RTL 实现】

从上面代码可以看到 当 psel 为 高,且 pwrite 为 低的时候 去判断 paddr 的地址对应哪个寄存器的地址,然后将该寄存器的值赋值给 prdata。这个信号为高,这个信号的作用是保证 寄存器的地址已经APB 总线都准备好了之后才进行写操作。同时也可以看到,SOC_PLL0_CFG_REG 位域中的各个值,来源于不同的信号。从上面的代码中可以看到,在写。这个寄存器的的时候需要先保证。

2025-05-29 09:26:37 322

原创 【芯片设计- SoC 常用模块 9.1 -- PLL 介绍】

锁相环(PLL)是SoC芯片设计中的关键电路,主要功能是将不稳定或低频时钟信号转换为稳定高频信号。文章通过舞蹈教室的比喻形象地解释了PLL的工作原理:它像智能助手一样调整芯片模块的"舞步"节奏,使其精准跟随参考时钟。PLL具有时钟倍频、稳定、同步和多输出等核心功能,广泛应用于CPU核心、外设接口等模块。其基本结构包含鉴相器、环路滤波器、压控振荡器和反馈路径等部件,通过闭环调节实现时钟锁定。文章还对比了模拟PLL、数字PLL等不同类型,并解释了震荡和相位等基本概念。PLL就像芯片的&quo

2025-05-28 23:13:17 120

原创 【芯片设计- RTL 数字逻辑设计入门 14.1 -- SRAM RTL 实现举例】

这个定义等价于:声明一个叫mem的数组,它包含多个寄存器,每个寄存器的位宽是DATA_WIDTH,索引范围是从0到。

2025-05-27 09:23:28 41

原创 【芯片设计- RTL 数字逻辑设计入门 14 -- SRAM 与 FIFO 区别 RTL 详解】

本文对比了SoC设计中SRAM和FIFO两种存储模块的主要区别。SRAM支持随机访问指定地址,具有地址线接口,适合缓存、寄存器等应用;而FIFO遵循先进先出原则,无地址输入,主要用于数据流处理。文章还提供了Verilog代码示例:SRAM模块通过地址线实现指定位置读写,FIFO模块则采用读写指针实现顺序存取。两者的选择取决于具体应用场景,SRAM适用于需要随机存取的场合,FIFO则更适合流式数据处理。

2025-05-27 09:05:23 134

原创 【PalladiumZ2 使用专栏 3 -- 信号值的获取与设置 及 memory dump 与 memory load】

在调试问题的时,有时需要将某些信号强制设置为某个值,或者某几个信号强制设置为某个值,这里就要用到 force 命令。经常遇到需要查看某个信号的值,比如寄存器的值,比如复位信号的值,这时就可以使用。当然也可以指定起始地址和结束地址,但是需要注意的是不能使用绝对物理地址。

2025-05-23 22:42:33 221

原创 【ARM/RISCV 嵌入式 编译系列 16 -- GCC 进制优化编译的常用方法】

方法适用情况是否推荐写在 C 代码中推荐KEEP()+ section写在链接脚本 + C/汇编都适用强力推荐直接放在_start中简单项目推荐关闭优化(-O0调试期可用有副作用,慎用。

2025-05-23 21:55:32 554

原创 【【嵌入式开发 Linux 常用命令系列 19 -- linux top 命令的交互使用介绍】

在 Linux 环境中,top 命令是实时监控系统资源和进程状态的重要工具。通过交互式命令,用户可以动态控制输出内容、排序、筛选等。常用命令包括:P(按 CPU 使用率排序)、M(按内存使用率排序)、u(按用户筛选进程)、k(杀死进程)、r(修改进程优先级)、s(设置刷新时间间隔)等。示例场景包括按内存排序显示用户的前 10 个进程、杀死占用资源最多的进程、调整刷新频率等。top 的显示在不同 Linux 发行版中可能略有差异,高级用户也可使用 htop 等更强大的工具。

2025-05-23 21:47:49 693

原创 【ARM 嵌入式 编译系列 10.4.2 -- 查看 bss 段中有哪些内容】

本文介绍了如何分析GCC编译程序中.bss段占用过大的问题。首先解释了.bss段的作用,它存放未初始化的全局/静态变量,运行时初始化为0但编译时不占空间。然后提供了三种查看方法:1)使用size命令查看各段大小;2)用nm命令配合grep查看.bss段具体符号;3)用objdump查看段结构。常见导致.bss过大的原因包括定义了大数组、库内部缓冲区、堆栈分配等。最后建议检查源代码大数组、链接脚本配置,并使用工具排查具体占用变量。

2025-05-23 21:37:28 1119 1

原创 【芯片设计- RTL 数字逻辑设计入门 番外篇 9.5 -- SoC DV 验证中的 UPF】

UPF(统一电源格式,Unified Power Format)是由IEEE 1801定义的一种**描述电源意图(Power Intent)**的语言,它与 RTL 代码分离,专门用于描述:电源域(Power Domain)电源开关(Power Switch)电源状态表(Power State Table)电源相关的约束(如隔离、保持、重置)

2025-05-08 07:35:30 587

原创 【芯片设计- RTL 数字逻辑设计入门 13.2 -- wire 和 reg 的本质区别】

wire示例:组合逻辑连接// wire 必须通过连续赋值 assignendmodulereg示例:时序逻辑(触发器)if (rst)q <= 1'b0;elseq <= d;endendmodule这里的q是reg,因为它在always块中被赋值用法wire用于 assign 连续赋值✅❌用于 always 块中赋值❌✅用于组合逻辑中间变量✅(配 assign)✅(配 always @(*))用于时序逻辑中存储(触发器)❌✅初始值❌✅。

2025-05-08 07:30:14 217

原创 【芯片设计- RTL 数字逻辑设计入门 13.1 -- RTL 中的覆盖参数的实例化写法】

(// 内部逻辑使用 WIDTH 和 DEPTHendmodule)(endmodule内容推荐写法/建议覆盖参数推荐方式命名式 .WIDTH(32)多层参数传递使用 localparam 转接不允许被覆盖的常量用 localparam 定义遗留写法 defparam不推荐使用,改为参数覆盖。

2025-05-08 07:18:57 70

原创 【芯片设计- RTL 数字逻辑设计入门 4.1 -- verilog 组合逻辑和时序逻辑延时比较】

简单、稳定,方便综合(synthesis)和时序分析(timing analysis)去驱动时序逻辑,容易出现组合路径过长导致 setup/hold 失败。(时钟上升沿)触发赋值的同步逻辑。慢一拍(晚一个时钟周期变化)。我们来详细分析下面这段。很清晰的同步逻辑结构,

2025-05-08 07:11:58 554

原创 【ARM AMBA AHB 入门 3.1 -- AHB控制信号】

每个slave最小的地址空间为1KB,所有的master的burst传输上限也是1KB,如此设计保证了不会出现地址越界问题。当一个设计不会用到所有的地址空间时,可能出现访问到一个不存在的地址的情请况,这就需要增加一个附加的默认slave (default slave)来为上面的情况提供一个响应。当IDLE或BUSY传输访问到个不存在的地址,默认slave会响应OKAY。Master 发起一笔传输后, slave 可以决定这笔传输的进程, 而 Master 不能取消已经发出的传输。

2025-05-07 22:27:27 1403

原创 【ARM AMBA AHB 入门 3 -- AHB 总线介绍】

AHB 总线的强大之处在于它可以将微控制器(CPU)、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线Master、各种拥有AHB接口的控制器等等连接起来构成一个独立的完整的SOC系统,不仅如此,还可以通过AHB-APB桥来连接APB总线系统AHB 可以成为一个完整独立的SOC芯片的骨架。

2025-05-07 22:05:18 1471

原创 【Windows 常用工具系列 22 -- vscode markdown preview 字体大小设置】

控制 Markdown 预览中使用的字号(以像素为单位)。

2025-05-06 10:57:37 393

原创 【SQL 基础入门 1. -- SQL 基本语法详解及举例】

创建新的数据库时,如果该数据库已经存在,则会出现错误,所以我们在创建新的数据库时一般会判断该数据库是否存在,如果已存在,则不会创建。为了避免出现错误,我们一般会先判断该数据库是否存在,如果不存在,则不会删除。插入多行数据之后,查看表格内容。

2025-04-23 09:44:42 243

原创 【芯片设计- RTL 数字逻辑设计入门 12 -- 地址空间 中的 hole 和 reserve 地址空间的区别】

项目Hole(地址空洞)Reserved(保留地址)含义系统中未被任何模块或设备响应的地址区域系统中已定义但暂未实现功能的地址区域是否有模块响应❌ 没有✅ 有(或未来会有)访问时响应通常为 bus error、无响应(例如 AXI SLVERR)有响应,但不执行有效操作,通常返回 0 或固定值是否有意义对系统无意义的空洞,访问为非法通常为向后兼容或留作扩展使用,访问后行为定义明确可否后期利用❌ 不推荐✅ 可用于后续版本功能添加特性Hole 地址空间。

2025-04-23 09:37:22 57

原创 【DDR 内存学习专栏 1.4 -- DDR 的 Bank Group】

它将多个Bank组合在一起形成一个Bankgroup,目的是为了进一步提高内存访问的并行性和带宽。DDR的bankgroup可以理解为是将颗粒分成了group进行操作,也可以抽象成是把黑色颗粒chip内又独立成了各个单独的小颗粒,即各个bankgroup。我们每次发送的读写命令都是操作的各个颗粒里面同一个位置的bank。比如chip0的bank3,chip1的bank3,chip2的bank3…:Bankgroup包含多个Bank,可以理解为Bank的上一级组织结构。

2025-04-14 23:15:12 1004

原创 【DDR 内存学习专栏 1.3.1 -- DDR 的 Bank 及 burst 访问】

这是因为在这种设计中,每个DDR颗粒可以输出 8bit 数据,而这个Rank总共有8颗这样的芯片,所以它们被同时访问的bank以及bank内的行地址和列地址都是完全一致的。由于缓存行内的字在内存中是连续紧邻的,我们可以充分利用cell阵列中的行缓存。在 Rank 中,每个芯片(内存颗粒) 都共享内存通道的地址线、控制线和数据线,同时每个芯片(内存颗粒)还提供一组输出线,这些输出线汇聚成内存条的总输出线。值得注意的是,有些DIMM条的设计是双面的,即每面都布有内存芯片,这样的DIMM条就拥有两个rank。

2025-04-14 22:58:30 936

原创 【DDR 内存学习专栏 1.3 -- DDR 的 Rank 和 Bank】

这个格子(cell)阵有很多列(Column)和很多行(Row),这样我们想存取某个格子(cell),只需要告知是哪一行哪一列就行了,这也是为什么内存可以随机存取而硬盘等则是按块存取的原因。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。实际上每个格子的存储宽度是内存颗粒(Chip)的位宽,在这里由8个Chip组成一个Rank,而CPU寻址宽度是64bit,所以64/8=8bit,即每个格子是1个字节。

2025-04-13 22:52:50 899

原创 【DDR 内存学习专栏 1.2 -- DDR Channel 介绍】

通道是CPU与内存之间的独立数据传输路径,每个通道包含完整的信号线(数据线、地址线、控制线)。位宽:每个通道的位宽通常为 64位(现代DDR标准),双通道则为 128位,以此类推。带宽公式。

2025-04-13 22:19:06 922

原创 【DDR 内存学习专栏 1. -- DDR 内存带宽与 CPU 速率】

比如,3GHz的CPU,假设每个周期处理4个指令(IPC=4),理论峰值是3×4=12G指令/秒。大家有没有想过 CPU 的速度可以达到2.5G或者3G,那么芯片上DDR的带宽需要达到多少才能满足CPU的需求呢?而CPU的处理速度如果很高,比如每个周期处理多个指令,可能需要更高的内存带宽来支持数据供给,否则CPU会因为等待数据而闲置,影响性能。,表示CPU每秒的时钟周期数,但实际性能还与架构(IPC,每周期指令数)相关。另外,实际应用中,CPU通常有缓存层次结构,可以缓解内存带宽的压力,

2025-04-11 09:26:54 686

原创 【PalladiumZ2 使用专栏 1 -- 波形 trigger 抓取详细介绍】

下图是PalladiumZ2 抓取波形的配置页面,可以通过 GUI 页面来配置也可以使用命令行的方式来配置,这里先会介绍 GUI 界面抓取波形的常用按钮。Palladium Z2 通过高效编译、多模块并行验证及创新功能,成为复杂 SoC 设计验证的关键工具,助力企业应对日益增长的系统复杂度与软件开发需,芯片规模越来越大,仿真速度制约了验证进度,palladium因此被越来越多的使用。在抓取波形的时候我们需要在特定的点去抓,比如当某个信号或者某个寄存器的值变化,或者变成特定的值之后,才去抓取波形,

2025-04-07 22:09:22 324

原创 【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 248

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

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

2025-03-25 22:49:47 1017

原创 【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 155

原创 【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 432

原创 【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 309

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

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

2025-03-24 09:14:23 87

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

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

2025-03-21 23:15:29 210

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

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

2025-03-21 23:00:13 125

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

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

2025-03-21 22:33:57 247

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

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

2025-03-21 22:22:16 399

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

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

2025-03-21 22:11:08 347

原创 【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 212

原创 【芯片设计- - SoC 常用模块 8 -- SoC 设计中的 Macro】

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

2025-03-21 21:58:17 118

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

在。

2025-03-14 11:05:58 1361

Zadig USB驱动安装

Zadig USB驱动安装

2024-11-11

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

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

2023-07-05

空空如也

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

TA关注的人

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