<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CodingCos的博客]]></title><description><![CDATA[且将新火试新茶，诗酒趁年华]]></description><link>https://blog.csdn.net/sinat_32960911</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; sinat_32960911]]></copyright><item><title><![CDATA[【AI 学习使用专栏 1 -- Claude code 安装及使用详细介绍】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/160902137</link><guid>https://blog.csdn.net/sinat_32960911/article/details/160902137</guid><author>sinat_32960911</author><pubDate>Sat, 09 May 2026 22:05:11 +0800</pubDate><description><![CDATA[命令之后就可以看到当前支持模型，然后使用上下键就可以选择模型了。]]></description><category></category></item><item><title><![CDATA[【GDB 使用专栏 1 -- GDB 常用命令概述】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/159586539</link><guid>https://blog.csdn.net/sinat_32960911/article/details/159586539</guid><author>sinat_32960911</author><pubDate>Sat, 28 Mar 2026 21:55:37 +0800</pubDate><description><![CDATA[常常会使用 GDB 进行C源码调试，比如检查某个指针是否为空，读取某个全局变量的值，读取结构体指针的值，读取结构体指针中对应成员的值，查看函数局部变量的值，判断某个函数是否得到了执行，在函数指定的行加断点，在断点停止后，指定执行到某个地方，重新设置PC的值等等。假设程序是用  编译的：

二、检查指针是否为空
2.1 示例代码

2.2 GDB操作

判断是否为空：

三、读取全局变量的值
示例

GDB

即使不在当前函数也可以访问
GDB


五、读取结构体成员

推荐：

六、查看函数局部变量

或：]]></description><category></category></item><item><title><![CDATA[【PCIe 总线及设备入门学习专栏 2.3 -- TS1 与 TS2 问题实战】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/157299865</link><guid>https://blog.csdn.net/sinat_32960911/article/details/157299865</guid><author>sinat_32960911</author><pubDate>Fri, 23 Jan 2026 22:11:16 +0800</pubDate><description><![CDATA[摘要： PCIe EP首次Hot Reset后卡在S_POLL_ACTIVE状态，问题集中在Polling.Active阶段的TS1交换失败。可能原因包括： TS1字段不匹配（如Link/Lane Number、Speed/Lanes配置冲突）； TS1未被有效识别（PHY对齐或检测问题）； EP未发送合规TS1（参数未初始化）； RC拒绝协商（FPGA模型常见）。首次Hot Reset时EP参数未校准，而二次Reset或Cold Boot因历史状态已稳定可快速完成。调试需结合cxpl_debug_info]]></description><category></category></item><item><title><![CDATA[【PCIe 总线及设备入门学习专栏 2.2 -- PCIe 链路训练 之 Lane Reversal（通道反转） 和 EQ（均衡，Equalization）】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/157299673</link><guid>https://blog.csdn.net/sinat_32960911/article/details/157299673</guid><author>sinat_32960911</author><pubDate>Fri, 23 Jan 2026 21:42:39 +0800</pubDate><description><![CDATA[如果Endpoint支持 Lane Reversal，它会按照一个预定义的规则（通常是反转映射）来重新解释这些通道号，并将重新映射后的通道号填入它自己要发送的TS1中。： 经过Reversal后，Endpoint的逻辑通道0可能连接到Host控制器的物理通道3，逻辑1连物理2，逻辑2连物理1，逻辑3连物理0。DFE是 Gen4/Gen5 性能的关键。： 一个x4的Endpoint，其逻辑通道0（Lane 0） 应连接到Host控制器的物理通道0（Lane 0），逻辑1连物理1，以此类推。]]></description><category></category></item><item><title><![CDATA[【PCIe 总线及设备入门学习专栏 2.1 -- PCIe 链路训练 之 TS1 和 TS2】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/157299558</link><guid>https://blog.csdn.net/sinat_32960911/article/details/157299558</guid><author>sinat_32960911</author><pubDate>Fri, 23 Jan 2026 21:26:16 +0800</pubDate><description><![CDATA[链路训练就是两端设备通过发送特殊的、结构化的有序集（Ordered Sets）来协商链路参数、建立稳定通信的过程。： 这个过程是双向的。： TS1中包含发送者的链路号（Link Number）和通道号（Lane Number），初始时这些值都是未配置的（通常为PAD）接收端通过比较不同通道上接收到的TS1中的特殊符号（如COM符号），来测量并补偿这个偏斜，确保所有通道的数据能够被对齐处理。在链路训练的不同阶段扮演着不同角色，当设备退出复位状态后，它开始在其所有通道（Lane）上连续发送TS1。]]></description><category></category></item><item><title><![CDATA[【PCIe 总线及设备入门学习专栏 9.1 -- PCIe AER 中的 aer_layer 与 aer_agent】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/155827476</link><guid>https://blog.csdn.net/sinat_32960911/article/details/155827476</guid><author>sinat_32960911</author><pubDate>Thu, 11 Dec 2025 21:45:59 +0800</pubDate><description><![CDATA[字段意义错误发生在 PCIe 事务层（TLP 协议级错误）发起 TLP 的设备（DMA/RC/EP）发现错误因此：发起 PCIe 请求的设备在处理返回的 Completion 或协议时发现 TLP 错误。多数情况由非法访问、UR、格式错误、Completion Timeout导致。]]></description><category></category></item><item><title><![CDATA[【PCIe 总线及设备入门学习专栏 9 -- PCIe AER】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/155647884</link><guid>https://blog.csdn.net/sinat_32960911/article/details/155647884</guid><author>sinat_32960911</author><pubDate>Mon, 08 Dec 2025 21:06:19 +0800</pubDate><description><![CDATA[摘要：PCIe AER机制用于检测和处理PCIe传输错误，在Linux内核中通过pci_error_handlers结构体实现错误回调。触发hot reset时出现的&quot;AER: device recovery failed&quot;报错属于正常现象，原因是reset会暂时断开链路导致访问超时。建议优化方案包括实现错误处理回调、等待链路恢复后再访问设备，或使用相关API（如pci_wait_for_pending_transaction）改进reset流程。该报错不影响reset结果，但完善错误处]]></description><category></category></item><item><title><![CDATA[【PCIe 总线及设备入门学习专栏 5.4 -- Linux EP driver iommu 与 DMA】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/155579538</link><guid>https://blog.csdn.net/sinat_32960911/article/details/155579538</guid><author>sinat_32960911</author><pubDate>Thu, 04 Dec 2025 21:50:53 +0800</pubDate><description><![CDATA[本文介绍了IOMMU在Linux系统中的应用场景及关键概念。IOMMU主要用于PCIe设备DMA访问时的地址转换(IOVA→PA)、提供安全隔离以及支持虚拟化场景。文章对比了启用/关闭IOMMU的差异，详细说明了IOVA的使用时机，并列举了内核态地址转换的相关API，包括虚拟地址转物理地址(virt_to_phys)、用户态地址转换(get_user_pages)以及IOMMU相关转换(iommu_iova_to_phys)。特别指出CPU访问BAR时不经过IOMMU，只有PCIe设备DMA时才需要IOMM]]></description><category></category></item><item><title><![CDATA[【PalladiumZ2 使用专栏 5 -- 模拟电路是否可以仿真?】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/152838013</link><guid>https://blog.csdn.net/sinat_32960911/article/details/152838013</guid><author>sinat_32960911</author><pubDate>Thu, 09 Oct 2025 22:19:19 +0800</pubDate><description><![CDATA[仿真阶段：验证 PCIe 协议功能和 Controller-Phy 接口。EMU 阶段：验证 SoC 集成、软件驱动，但不能验证 PHY 模拟特性。硅后阶段：验证 PHY 的 TAP、PLL、EQ、信号完整性等真实特性。SoC 设计保证机制：依赖厂商硬核 PHY + 集成验证 + 规范的 bring-up 测试计划。模拟电路无法在 Palladium/Zebu 验证：因为它们是纯数字仿真器，不支持 SPICE/AMS，也没有真实 SerDes 电路的物理特性。]]></description><category></category></item><item><title><![CDATA[【ARM 嵌入式 编译系列 7.5.1 -- 链接脚本中的 VMA 和 LMA】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/152834185</link><guid>https://blog.csdn.net/sinat_32960911/article/details/152834185</guid><author>sinat_32960911</author><pubDate>Thu, 09 Oct 2025 22:06:25 +0800</pubDate><description><![CDATA[链接脚本中会设定各个段的开始地址与结束地址，比如 text 段 bss 段，这些段最终在 bin文件中的偏移地址与链接脚本中设定的地址关系，比如当前将 text 段的开始地址设置为。，但没有把段的 LMA 设置成相应值（或 linker 把 LMA 设为 0），最终 bin 中该段会在文件起始处 —— 这正是你遇到的问题。，那么 objcopy 会在生成的 bin 中填充（pad）到该偏移位置，段数据就会出现在 bin 的对应偏移处（bin 会很大）。这是你当前正在做的方式。]]></description><category></category></item><item><title><![CDATA[【ARM 嵌入式 编译系列 10.4.3 -- 查看 bss 段在bin 文件中存在吗？】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/152833156</link><guid>https://blog.csdn.net/sinat_32960911/article/details/152833156</guid><author>sinat_32960911</author><pubDate>Thu, 09 Oct 2025 21:54:20 +0800</pubDate><description><![CDATA[通过链接脚本生成的 elf 然后在通过 objcopy 生成 binary文件中有bss段中的内容吗？如果有，那么如何从 bin 文件中找到 bss 中的值，比如某个静态变量的值。，所以在 bin 文件里看不到，运行时才由启动代码清零。里占用地址空间，但不会有实际的存储内容。所以在生成的 bin 文件里，你是看不到。没有，bin 文件里没有 bss 的内容。，在 bin 文件里可以直接找到初始值。在 ELF 文件里，BSS 段只会在。往往是 0（即不会在文件中占字节）。，因为它在 ELF 中没有实际数据。]]></description><category></category></item><item><title><![CDATA[【ARM 嵌入式 编译系列 10.9.1 -- llvm-size -B 与 llvm-readelf -S 区别】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/152830092</link><guid>https://blog.csdn.net/sinat_32960911/article/details/152830092</guid><author>sinat_32960911</author><pubDate>Thu, 09 Oct 2025 21:46:33 +0800</pubDate><description><![CDATA[→ 逻辑分类（text/data/bss 总览）→ 实际段名（受链接脚本影响）所以出现一个有 data，一个没有 .data 段名的情况是正常的，主要原因在于链接脚本或段合并。]]></description><category></category></item><item><title><![CDATA[【芯片设计-信号完整性 SI 学习 1.2.2 -- 时序裕量（Margin）】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/151444685</link><guid>https://blog.csdn.net/sinat_32960911/article/details/151444685</guid><author>sinat_32960911</author><pubDate>Mon, 15 Sep 2025 21:06:47 +0800</pubDate><description><![CDATA[在高速数字接口中，数据信号在接收端需要满足一定的建立时间（setup time）和保持时间（hold time）要求，才能被可靠采样。时序裕量（Timing Margin）指的是实际信号的采样时序与标准时序要求之间的余量，用来衡量设计的稳健性和抗干扰能力。正裕量：信号满足时序要求，并且还有额外余量（安全）。负裕量：信号不满足时序要求（可能导致误码）。时序裕量= 系统实际有效采样窗口 − 标准要求窗口。在 SI 测试中主要通过眼图、BER 扫描、bathtub 曲线来度量。在。]]></description><category></category></item><item><title><![CDATA[【芯片设计-信号完整性 SI 学习 1.2.1 -- BER 误码率介绍】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/151433113</link><guid>https://blog.csdn.net/sinat_32960911/article/details/151433113</guid><author>sinat_32960911</author><pubDate>Wed, 10 Sep 2025 22:28:49 +0800</pubDate><description><![CDATA[BER错误比特数总传输比特数BER = \frac{\text{错误比特数}}{\text{总传输比特数}}BER总传输比特数错误比特数​任何通信系统的关键功能之一就是无差错地发送和接收数据。也就是说，通信系统在发送和接收过程中具有尽可能小的BER。因此，误码率是衡量通信系统设计好坏的一个重要指标。为了证明一个通信系统设计得很好，必须证明估计的（理论上计算的误码率）低于某一可接受水平，并且在建立设备后测量的误码率低于某一可接受水平。]]></description><category></category></item><item><title><![CDATA[【芯片设计-信号完整性 SI 学习 1.2 -- loopback 回环测试】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/151373631</link><guid>https://blog.csdn.net/sinat_32960911/article/details/151373631</guid><author>sinat_32960911</author><pubDate>Wed, 10 Sep 2025 21:26:34 +0800</pubDate><description><![CDATA[验证 PHY 内部收发电路，排查芯片本身问题。]]></description><category></category></item><item><title><![CDATA[【芯片设计-信号完整性 SI 学习 1.1.1 -- Unit Interval，比特周期】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/151419409</link><guid>https://blog.csdn.net/sinat_32960911/article/details/151419409</guid><author>sinat_32960911</author><pubDate>Wed, 10 Sep 2025 20:06:07 +0800</pubDate><description><![CDATA[在高速信号传输与信号完整性 (SI)测试中，就是1 个比特的持续时间。它等价于比特周期 (Bit Period)。UITb1UITb​1​TbT_bTb​：比特周期Data Rate：数据传输速率（bit/s）比特周期与数据速率成反比在眼图中表现为水平宽度，用于度量信号抖动和时间裕量。]]></description><category></category></item><item><title><![CDATA[【芯片设计-信号完整性 SI 学习 1.1 -- 眼图、抖动、反射、串扰】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/151372390</link><guid>https://blog.csdn.net/sinat_32960911/article/details/151372390</guid><author>sinat_32960911</author><pubDate>Tue, 09 Sep 2025 22:42:15 +0800</pubDate><description><![CDATA[项目定义在眼图中的表现测试方法举例眼图综合波形叠加，直观表征信号质量开口高度=电压裕量；开口宽度=时间裕量示波器采集眼图PCIe、DDR bringup 验证抖动采样时间偏移水平闭合TIE/Jitter 分析，BER 仿真PCIe Gen4 TJ@BER 测试反射阻抗不连续导致回波噪声叠加，竖直闭合TDR/TDT，示波器波形DDR 终端不匹配导致振铃串扰相邻走线耦合干扰噪声/时序漂移，眼图收窄Crosstalk 仿真，示波器/误码仪。]]></description><category></category></item><item><title><![CDATA[【芯片设计-信号完整性 SI 学习 1.0 -- SI 介绍】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/151372133</link><guid>https://blog.csdn.net/sinat_32960911/article/details/151372133</guid><author>sinat_32960911</author><pubDate>Tue, 09 Sep 2025 21:34:42 +0800</pubDate><description><![CDATA[设计验证阶段（Pre-Silicon）：以建模 + SI 仿真为主，确保接口符合标准。Bringup 阶段（Post-Silicon）：以实测验证为主，确保仿真和实物一致，验证接口在真实环境下稳定性。SI-PI 联合仿真：更真实地反映电源噪声对信号质量的影响，是高性能 SoC（如 DDR5/PCIe Gen5/SerDes 56G）的必做环节。]]></description><category></category></item><item><title><![CDATA[【PCIe EP 设备入门学习专栏 -- 8.2.3 Local Bus Controller (LBC) 详细介绍】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/151332601</link><guid>https://blog.csdn.net/sinat_32960911/article/details/151332601</guid><author>sinat_32960911</author><pubDate>Mon, 08 Sep 2025 21:23:44 +0800</pubDate><description><![CDATA[功能LBC 模块为远端链路伙伴 (PCIe Wire)和本地 CPU (通过 DBI)提供统一的访问机制。CDM (Configuration and Debug Module) 内部寄存器外部应用寄存器 (通过 ELBI 接口连接到控制器)访问来源远端 RC 侧（PCIe Wire）本地 CPU（通过 DBI 接口）]]></description><category></category></item><item><title><![CDATA[【PCIe EP 设备入门学习专栏 -- 8.2.2 PCIe EP Controller Register Types 介绍】]]></title><link>https://blog.csdn.net/sinat_32960911/article/details/151332356</link><guid>https://blog.csdn.net/sinat_32960911/article/details/151332356</guid><author>sinat_32960911</author><pubDate>Mon, 08 Sep 2025 21:07:35 +0800</pubDate><description><![CDATA[类别默认行为可写条件访问路径只读且DBI (特殊寄存器通过 DBI2 (dbi_cs2=1) 访问DBI2 (Wire 访问 (RC 侧)永远只读无法变为可写PCIe 配置事务一句话总结：→ 可以用 DBI 写部分 RO/HwInit Registers（仅本地）。→ 必须用 DBI2 写。Wire (RC 访问)→ RO 永远只读，不受任何设置影响。]]></description><category></category></item></channel></rss>