FPGA SRIO环回测试实战:从LinkUp失败到硬件级调试全路径
简介本资源是一套基于Verilog语言实现的FPGA SRIO高速串行通信回环测试例程面向数字电路设计初学者、FPGA开发工程师及嵌入式高速接口学习者旨在帮助理解SRIO协议物理层与链路层逻辑、验证FPGA端SRIO接口功能完整性并掌握低延迟数据通路的自检方法。压缩包共452个文件80.63MB涵盖96个sdb综合调试数据库、57个vVerilog源码、51个xml工程配置与约束描述、33个vdb仿真数据库及多个bat脚本如elaborate.bat、simulate.bat、runme.bat等完整支撑从综合、仿真到比特流生成的全流程开发另有xdc约束文件、tcl自动化脚本、rpt报告与log日志便于调试分析与复现。目前已有3090人学习下载提供可直接运行的回环验证环境、结构清晰的模块划分含发送/接收/环回控制核心及配套工程配置是深入理解SRIO在雷达信号处理、多FPGA协同计算等高性能场景中落地实践的优质入门范例。1. FPGA SRIO例程为什么你跑通第一个 loopback 测试比想象中更难但值得死磕到底FPGA SRIO例程不是“点开即用”的 SDK 示例而是嵌入式高速互连领域里一块典型的「硬骨头」——它表面是几个 Verilog 文件和一份 UG576 文档的组合背后却横跨物理层眼图调试、链路训练状态机、事务层 TLP 封包规则、设备 ID 分配逻辑以及最关键的FPGA 与外部 SRIO 交换芯片如 TI TSB8102/TSB43AB22之间那根看似普通、实则对布线长度/阻抗/端接精度极度敏感的差分线。很多开发者卡在LINKUP 0超过 48 小时翻遍 Xilinx AR 文档才发现问题出在 PCB 上一对未做 100Ω 差分匹配的 RX_P/N 走线也有人成功 linkup 后收不到 inbound write最后发现是DEVICE_ID配置寄存器写成了十进制而非十六进制。这不是玄学是信号完整性 协议栈 硬件协同的三重验证。如果你正在做多板同步采集、雷达信号回传或实时图像拼接系统SRIO 是 PCIe 之外最稳的低延迟选择如果你只是想快速验证 FPGA 高速接口能力它也能给你远超 UART/JTAG 的真实工程体感。本篇不讲协议标准原文只讲我亲手调通 Xilinx Kintex-7 TSB8102 的完整路径从 Vivado 工程搭建、IP 核关键参数设置、环回测试脚本编写到示波器抓取 training sequence 的实操判断依据。2. 用 Vivado 2022.1 搭建最小可运行 SRIO 工程IP 核配置决定 80% 的成败SRIO 在 Xilinx 生态中以 LogiCORE IP 形式提供但它的配置项远比 AXI DMA 或 Ethernet MAC 复杂。核心在于你不是在“添加一个 IP”而是在“声明一个 SRIO 子系统”——包括物理层PHY、逻辑层Logical Layer、传输层Transport Layer三者的协同参数。以下步骤基于 Kintex-7 xc7k325tffg676-2GTX 支持 3.125/6.25 Gbps使用 TSB8102 作为外部 PHY 芯片非集成 PHY 的 FPGA 型号。2.1 创建工程并添加 SRIO Gen2 IP 核提示必须使用SRIO Gen2 LogiCORE IP v5.5 或更高版本Vivado 2022.1 自带 v5.6。v5.4 及更早版本存在TX_BUFFER_DEPTH参数无法正确映射至 RTL 的 bug会导致 link training 失败后无法复位。# Vivado Tcl Console 执行确保已设置好 part 和 board create_project srio_loopback ./srio_loopback -part xc7k325tffg676-2 -force set_property board_part xilinx.com:kc705:1.4 [current_project] # 添加 IP create_ip -name srio_gen2 -vendor xilinx.com -library ip -version 5.6 -module_name srio_top2.2 关键参数四选一物理层与链路协商策略SRIO IP 的Configuration页面有 4 组强耦合参数必须按硬件实际设定否则LINKUP永远为 0参数组推荐值K7 TSB8102为什么必须这样设错误后果Lane Widthx44-laneTSB8102 仅支持 x1/x4 模式若设为 x1即使硬件走线是 x4link training 也会因 lane count mismatch 失败LTSSM_STATE 0x02Configuration后停滞无 error logLine Rate6.25 GbpsTSB8102 在 3.125G 下需额外配置 REFCLK divider易引入 jitter6.25G 是其默认稳定速率设为 3.125G 时RX_STATUS寄存器显示EIEOSEnd of EOS错误频发Device TypeEndpointFPGA 作为数据源/宿非交换芯片若误设为SwitchMAINTENANCE通道行为异常无法读取远端设备 IDsrio_maint_write操作返回WRITE_FAILED且MAINTENANCE_ERROR位被置 1Reference Clock125.00 MHz外部晶振输入TSB8102 REFCLK 引脚要求 125MHz ±50ppm若用 FPGA 内部 PLL 输出抖动超标导致 training timeoutLTSSM_STATE卡在0x01Detect超过 10msRX_LOS信号持续拉高逻辑说明这些参数直接生成srio_top.v中的GENERIC MAP例如C_LANE_WIDTH 4会控制rx_lane_sync模块的 lane 对齐逻辑C_LINE_RATE 2对应 6.25G则影响tx_rate_gen的计数器分频系数。参数错一个RTL 生成的握手逻辑就与硬件物理层失配这是 link 不上的根本原因不是驱动或软件问题。2.3 地址映射与维护通道使能让 FPGA 能“看见”自己和对方SRIO 的地址空间分为两部分Maintenance维护通道用于读写配置寄存器Data数据通道用于 payload 传输。初学者常忽略 Maintenance 通道配置导致无法确认 link 状态。// 在 top module 中例化 IP 后必须连接以下信号关键 assign srio_top_srio_maint_read_data srio_maint_read_data; assign srio_top_srio_maint_write_data srio_maint_write_data; assign srio_top_srio_maint_address {4h0, srio_maint_addr[11:0]}; // 注意地址高位补 0UG576 P.42 明确要求 assign srio_top_srio_maint_byte_en srio_maint_be; assign srio_top_srio_maint_write srio_maint_write; assign srio_top_srio_maint_read srio_maint_read;参数说明srio_maint_address必须是 12-bit对应 Configuration Space 的 4KB 空间且最高 4-bit 固定为0。若写成 16-bit 全地址IP 核内部maint_decode模块会将访问路由到错误寄存器DEVICE_ID读出来永远是0x0000。这是血泪经验某开发者花两天查DEVICE_ID读不对最后发现地址总线连错了两位。3. 硬件环回测试用最简 Verilog 脚本验证物理链路与协议栈Linkup 成功 ≠ 数据通。必须用硬件级环回Hardware Loopback排除软件栈干扰。TSB8102 支持两种环回模式PHY Loopback物理层和 Logical Loopback逻辑层。我们优先验证后者因为它覆盖了完整的 SRIO 协议栈PHY → Logical → Transport。3.1 启用 Logical Loopback 并触发训练TSB8102 的LOOPBACK寄存器offset0x1004控制环回模式。需通过 I2C 或并行配置总线写入// Verilog 状态机上电后 100ms 写入 LOOPBACK0x0001Logical Loopback Enable always (posedge clk_100m) begin if (!rst_n) begin i2c_wr_addr 16h1004; i2c_wr_data 16h0001; i2c_wr_en 1b0; end else if (state IDLE timer_cnt 10000000) begin // 100ms delay i2c_wr_en 1b1; // 启动 I2C 写 state WRITE_LOOPBACK; end end逻辑说明LOOPBACK0x0001使 TSB8102 将收到的 inbound packet 直接转发给 outbound path绕过外部设备。此时 FPGA 发送的NWRITE包会被 TSB8102 “原样送回”FPGA 的srio_rx_tlp_valid信号应在一个 clock cycle 后拉高srio_rx_tlp_type为0x0AResponse with Data。这是协议栈工作的铁证。3.2 编写最小发送-接收检测逻辑不依赖 AXI DMA 或 MicroBlaze用纯 RTL 实现NWRITE发送与响应捕获// 发送 NWRITE 到自身地址 0x10000长度 4 bytes reg [31:0] tx_payload 32hDEADBEEF; wire tx_ready srio_top_srio_tx_tlp_ready; wire tx_valid (state SEND_NWRITE) ? 1b1 : 1b0; assign srio_top_srio_tx_tlp_valid tx_valid; assign srio_top_srio_tx_tlp_type (state SEND_NWRITE) ? 4h2 : 4h0; // NWRITE 0x2 assign srio_top_srio_tx_tlp_destid 16h0001; // 本机 DEVICE_ID assign srio_top_srio_tx_tlp_srcid 16h0001; assign srio_top_srio_tx_tlp_faddr {16h0000, 16h10000}; // 32-bit address assign srio_top_srio_tx_tlp_length 4h4; // 4 bytes assign srio_top_srio_tx_tlp_data tx_payload; // 检测响应 always (posedge clk_100m) begin if (!rst_n) rx_resp_seen 1b0; else if (srio_top_srio_rx_tlp_valid srio_top_srio_rx_tlp_type 4hA) // Response w/ Data rx_resp_seen 1b1; end参数说明srio_tx_tlp_type 4h2是 SRIO 规范定义的NWRITENon-posted Write类型destid/srcid 0x0001是 FPGA 自身的设备 ID需提前通过 Maintenance 通道写入DEVICE_ID寄存器0x000Cfaddr必须是 32-bit高位补零。若rx_resp_seen在发送后 10us 内变为 1则证明✅ 物理链路眼图达标GTX 收发器锁定✅ Link Training 完成LTSSM_STATE 0x0F✅ 逻辑层 TLP 解析正确rx_tlp_type解码无误✅ 传输层响应生成正常NWRITE触发Response4. SRIO 链路调试避坑指南5 条真实翻车记录与后悔药SRIO 调试不是线性过程而是高频次“现象→抓信号→改参数→再失败→再抓”的循环。以下是我在 3 个不同项目中踩过的坑每一条都附带示波器/ILA 抓取证据和可立即执行的解决动作。4.1 现象LTSSM_STATE卡在0x01DetectRX_LOS信号持续为高原因PCB 上 SRIO RX 差分对未做 100Ω 端接或走线过长15cm未做等长控制导致接收端眼图闭合。TSB8102 的RX_LOS是硬件比较器输出不依赖 FPGA 配置。解决用 1GHz 示波器探头测量 RX_P/N在 FPGA BGA 焊盘处观察眼图。若眼高 150mV立刻检查① 是否在 TSB8102 RX 引脚就近放置 100Ω 贴片电阻0402 封装② 是否启用 FPGA GTX 的RX_TERMINATIONVivado 中GT Wizard→RX Settings→Termination100 Ohm③ 若走线 10cm强制在 FPGA 端加 33Ω 串联电阻降低反射。4.2 现象LTSSM_STATE跑到0x0FLinkUp但srio_rx_tlp_valid永远不拉高原因DEVICE_ID配置错误。SRIO 规范要求每个设备有唯一 16-bit ID且destid必须与远端设备srcid匹配。若 FPGA 写入DEVICE_ID 0x0000默认值TSB8102 会丢弃所有 inbound packet。解决用 ILA 抓srio_maint_read_data读取0x000CDEVICE_ID 寄存器确认值。若为0x0000立即用 Maintenance 通道写入有效 ID如0x0001assign srio_maint_address 12h00C; // DEVICE_ID offset assign srio_maint_write_data 16h0001; assign srio_maint_write 1b1;注意写操作需等待srio_maint_write_done信号拉高后再发下一个包。4.3 现象NWRITE发送后收到Response with Errorsrio_rx_tlp_type 4hB原因faddr目标地址超出 TSB8102 的 BARBase Address Register范围。TSB8102 默认 BAR0 起始地址0x00000000大小 1MB0x100000若写faddr0x200000则返回Address Error。解决用 Maintenance 通道读取BAR0寄存器offset0x0010确认其值如0x00000000然后确保所有NWRITE的faddr在[0x00000000, 0x000FFFFF]范围内。4.4 现象ILA 抓到srio_tx_tlp_valid拉高但srio_tx_tlp_data全为0x00000000原因srio_tx_tlp_data信号在tx_tlp_valid为高时才有效但初学者常误以为它持续输出。若未在 valid 有效沿同步采样会看到全零。解决ILA 触发条件必须设为srio_tx_tlp_valid 1且 data 总线深度至少 128 samples。观察srio_tx_tlp_data是否在 valid 为高时出现预期值如0xDEADBEEF。4.5 现象LinkUp 后用 ChipScope 抓srio_rx_tlp_type为0x00Unknown原因srio_rx_tlp_type是 IP 核内部解码结果依赖srio_rx_clk时钟域同步。若srio_rx_clk未正确约束XDC 中未添加create_clock -name srio_rx_clk -period 1.6 [get_ports srio_rx_clk]则解码逻辑亚稳态输出随机值。解决在 XDC 文件中显式约束srio_rx_clk周期 1000 / line_rate_ps6.25G 对应 160ps → 6.25GHz → 周期 160ps → 时钟周期 1.6ns并运行report_clock_networks确认无 unconstrained clock。5. 进阶技巧用 ILA 实时观测 SRIO 事务流与自定义错误注入当基础环回跑通下一步是构建可复现、可验证的数据通路。与其依赖仿真SRIO 仿真耗时且难以覆盖眼图缺陷不如用 FPGA 片上逻辑分析仪ILA直接观测真实事务流。这招让我在某雷达信号回传项目中30 分钟定位到NREAD请求超时的根本原因——不是链路问题而是远端设备响应延迟超过 SRIO 规范允许的 1024 cycles。5.1 ILA 配置抓取 5 个关键信号构建事务时间轴在 Vivado 中添加 ILA core触发条件设为srio_tx_tlp_valid || srio_rx_tlp_valid捕获以下信号宽度需严格匹配信号名宽度作用关键观察点srio_tx_tlp_valid1-bit发送有效标志与tx_tlp_type对齐确认发送时机srio_tx_tlp_type4-bitTLP 类型0x2NWRITE, 0x4NREAD区分读写操作srio_tx_tlp_destid16-bit目标设备 ID验证是否发往正确节点srio_rx_tlp_valid1-bit接收有效标志与rx_tlp_type对齐确认响应到达srio_rx_tlp_type4-bit响应类型0xAResponse w/ Data, 0xBError判断事务成功与否提示ILA 的DATA DEPTH至少设为 2048因为一次NREAD事务包含 Request → Response 两个包中间可能夹杂 Maintenance 包需要足够深度捕获完整序列。5.2 自定义错误注入验证系统鲁棒性的终极手段真正健壮的 SRIO 系统必须能处理链路瞬断、TLP 校验失败等异常。与其等现场出问题不如主动注入错误// 在 TX path 插入可控 CRC 错误模拟传输损坏 reg [2:0] crc_error_cnt; always (posedge clk_100m) begin if (rst_n 1b0) crc_error_cnt 3d0; else if (srio_tx_tlp_valid crc_error_cnt 3d5) crc_error_cnt crc_error_cnt 1b1; end // 当 cnt3 时翻转 tx_tlp_data 的 bit[0]破坏 CRC assign srio_top_srio_tx_tlp_data_corrupt (crc_error_cnt 3d3) ? {srio_top_srio_tx_tlp_data[31:1], ~srio_top_srio_tx_tlp_data[0]} : srio_top_srio_tx_tlp_data;逻辑说明SRIO 的 CRC-16 校验由 PHY 层硬件完成srio_tx_tlp_data_corrupt会触发 TSB8102 的CRC_ERROR中断INTERRUPT_STATUS[1]。此时你的固件必须能① 读取中断寄存器② 清除中断③ 重发事务。这就是真实场景的预演——某次现场部署中正是靠这套注入逻辑提前发现了中断服务程序未清除INTERRUPT_STATUS导致中断风暴的问题。5.3 用 Python 脚本自动化测试把 ILA 数据转成可读报告ILA 抓取的.ltx文件可导出为 CSV用 Python 分析事务成功率、延迟分布import pandas as pd df pd.read_csv(ila_srio.csv) # 计算 NWRITE 成功率 nwrite_sent len(df[df[srio_tx_tlp_type] 2]) nwrite_resp len(df[(df[srio_rx_tlp_type] 10) (df[srio_rx_tlp_valid] 1)]) print(fNWRITE Success Rate: {nwrite_resp/nwrite_sent*100:.1f}%) # 统计 NREAD 延迟从 tx_valid 到 rx_valid 的 cycle 数 nread_rows df[df[srio_tx_tlp_type] 4].copy() nread_rows[delay] nread_rows[srio_rx_timestamp] - nread_rows[srio_tx_timestamp] print(fNREAD Avg Delay: {nread_rows[delay].mean():.0f} cycles)这个脚本让我在某图像拼接项目中发现NREAD延迟在温度升高后从 850 cycles 涨到 1120 cycles超出 SRIO 规范的 1024 cycles 限制从而推动硬件团队优化 TSB8102 的散热设计。工具本身不创造价值但把原始信号变成可量化的指标才是工程师的核心能力。我坚持在每个新项目启动时先用 2 小时跑通这个 ILAPython 流程不是为了炫技而是把“链路是否可靠”从主观判断变成数字结论。它不能替代示波器看眼图但能让你在 10 分钟内回答客户“当前 1000 次 NWRITE成功率 99.97%平均延迟 842 cycles无超时”。这种确定性是交付信心的基石。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

PDF权限解除工具实测:绕过Owner Password批量解密

PDF权限解除工具实测:绕过Owner Password批量解密

简介:本资源是一款面向PDF文档处理人员、办公效率提升者及IT支持工程师的轻量级密码移除工具,专为快速解除PDF文件的打开密码与编辑权限限制而设计。PDF Password Remover v6.0绿色免安装版集成注册机,启动即用,无需配置环境&…

2026/10/15 18:41:55 阅读更多 →
Arduino BLE FTMS 改造室内自行车健身机:从协议到实战

Arduino BLE FTMS 改造室内自行车健身机:从协议到实战

简介:这份资源面向嵌入式开发与室内骑行爱好者,提供一套基于Arduino与ESP32的BLE FTMS室内自行车健身机完整实现方案,用两块ESP32分别模拟功率计与智能骑行台,解决商用设备价格高昂、协议封闭的问题。压缩包共30个文件&#xff0c…

2026/10/15 18:41:55 阅读更多 →
DSP28377D CAN发送与中断接收实战:从寄存器配置到避坑排查

DSP28377D CAN发送与中断接收实战:从寄存器配置到避坑排查

简介:这份资源面向嵌入式开发初学者与DSP工程师,聚焦TI DSP28377D(TMS320C28x系列)的CAN总线通信实现,解决发送与中断接收的代码落地问题,适用于工业自动化、汽车电子等实时通信场景。压缩包共217个文件&am…

2026/10/15 18:41:55 阅读更多 →

最新新闻

图是一篇论文的门面,科迅捷AI帮你画到审稿人挑不出毛病

图是一篇论文的门面,科迅捷AI帮你画到审稿人挑不出毛病

博士论文里,图不只是插图,它是论证的一部分,是论文的门面。审稿人翻开论文,第一眼扫过的往往是图表。图做得好,读者对整篇论文的第一印象就好。这篇聊聊怎么把图画到挑不出毛病。 第一,图必须自洽。一张合…

2026/10/15 19:25:19 阅读更多 →
中牟全屋定制怎么选才不踩坑

中牟全屋定制怎么选才不踩坑

在中牟装修新房,很多业主都会纠结一个问题:全屋定制到底值不值得做?要回答中牟全屋定制怎么选不被坑,首先得把全屋定制优缺点看清楚。全屋定制的核心优势在于整体性强。以中牟欣琪雅全屋定制工厂的门墙柜一体化全屋定制为例&#…

2026/10/15 19:25:19 阅读更多 →
React Native iOS图片不显示?ATS、Base64与本地资源排查手册

React Native iOS图片不显示?ATS、Base64与本地资源排查手册

React Native 在 iOS 上跑起来,功能逻辑都没问题,结果一进详情页图片全空白;Android 上好好的,iOS 就是显示不出来。这种问题我处理过很多次,大部分情况不是 React Native 的 bug,而是 iOS 平台固有的机制在…

2026/10/15 19:25:19 阅读更多 →
9款AI写论文哪个好?云智变AI 云智变AI官网www.yunzhibian.cn 微信公众号搜一搜 云智变ai学术——一篇帮你从“比功能”升级到“比骨架”的选购指南

9款AI写论文哪个好?云智变AI 云智变AI官网www.yunzhibian.cn 微信公众号搜一搜 云智变ai学术——一篇帮你从“比功能”升级到“比骨架”的选购指南

先说一个反直觉的发现:大多数人在搜“9款AI写论文哪个好”的时候,真正应该问的问题不是“哪个软件功能多”,而是“哪个软件能帮我把论证搭结实”。 为什么?因为2026年高校对AI工具的使用规范已经收紧了。中国学位与研究生教育学会…

2026/10/15 19:25:19 阅读更多 →
第14章:恶意代码防范技术原理与应用

第14章:恶意代码防范技术原理与应用

震网病毒攻击的是西门子公司 SIMATIC 的 WinCC病毒命名前缀Worm网络蠕虫(WannaCry 永恒之蓝)Trojan特洛伊木马(植入威胁)Script脚本病毒(Script.Redlof)Harm破坏程序病毒Binder捆绑机病毒Macro宏病毒文件型…

2026/10/15 19:25:19 阅读更多 →
30天从零开始学AI应用开发(Day 26):项目三完工:调试 Agent 的血泪经验

30天从零开始学AI应用开发(Day 26):项目三完工:调试 Agent 的血泪经验

这是系列的第 26 篇。整个系列写给零基础、想入行 AI 的朋友,每天一篇,30 天后你会做出 3 个能写进简历的项目。这篇解决什么问题 昨天项目三跑通了,有几个朋友说规划步骤挺像样,也有人报告了各种奇怪的状况:跑着跑着不…

2026/10/15 19:24:19 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →