RK3576 AMP异构混合部署实现EtherCAT主站:Linux与RT-Thread实时控制方案
做EtherCAT控制这些年我最大的感受是协议本身不难难的是让每一个控制周期都精准落在该落的时间点上。RK3576最近在工业圈里热度不低4个Cortex-A72大核加4个Cortex-A53小核外设也齐全不少人拿它做HMI、做机器视觉一体机也有不少团队想让它直接出EtherCAT运动控制方案。但真要在Linux上把EtherCAT主站跑得稳定光靠操作系统的默认调度是远远不够的——网络中断、文件系统、后台服务、桌面任务随便哪个都能让周期抖动飙到几百微秒。所以我这个项目从一开始就定了一个基调Linux负责大而全的上层业务EtherCAT主站交给独立的实时核心去跑RT-Thread两边通过共享内存通信。这套方案在业内叫AMP异构混合部署听上去高端落地以后其实就是把合适的工作交给合适的系统。今天把整个项目的选型思路、架构设计、具体配置和排障过程整理出来给打算在RK平台做实时控制的工程师一个可以照着走的参考。整个系统跑下来EtherCAT以1ms周期稳定输出抖动控制在几十微秒内连续运行多天不丢帧、不脱网算是一个验证过的方案。1. 方案选型为什么选RK3576又为什么一定要混合部署1.1 RK3576的硬件底子适不适合干控制先说芯片本身。RK3576走的是“4个A72大核 4个A53小核”的异构路线内存接口支持LPDDR4/LPDDR5外设集成了PCIe、USB3.2、多路CAN部分板卡和千兆以太网MAC再加上NPU做工业控制加上视觉检测的一体机非常合适。跟早几年的RK3399比它在功耗控制和DDR带宽上都有明显提升尤其是在多核高负载场景下A72集群的持续性能比RK3399稳定不少。很多人会问EtherCAT对CPU要求高吗说实话单跑一个EtherCAT主站对CPU负载很低真正要命的是实时性。EtherCAT一个周期里主站要完成“收发报文 解析PDO 运行控制算法 计算下周期目标值”这一整套动作任何一个环节被延迟周期就会抖动伺服轴就会跟着抖。朴素的方案是给Linux打PREEMPT_RT补丁把中断线程化再用CPU隔离把EtherCAT任务钉在一个核上这种做法能做到几十微秒的抖动在要求不高的场合够用。但如果你接的是多轴高速贴片、印刷、包装设备动辄8轴16轴还要求250微秒甚至更短的周期Linux那一堆中断源和内核活动永远是潜在的雷。所以我把手段升级了一档直接在A53集群里隔离出一个核让RT-Thread跑在这个核上独占EtherCAT主站。RT-Thread是实时操作系统调度延迟是可控的、确定性的在独立核心上运行不受Linux任何活动干扰。A72集群继续跑Linux界面、数据库、网络通信、视觉算法都丢给它。这就是典型的AMP混合部署。1.2 为什么不用纯Linux或者纯RTOS这个选择背后其实是一笔很现实的账。纯Linux方案开发效率高生态丰富IP通信、文件系统、数据库、视觉库、上位机框架应有尽有但它不是硬实时系统哪怕打了PREEMPT_RT也无法保证在最坏情况下的响应时间。纯RTOS方案实时性好可靠性高但你让人在RT-Thread上写Web服务、接MySQL、跑OpenCV那体验会很痛苦而且后面想扩展功能会越来越吃力。混合部署的逻辑就是把系统里对实时性敏感的、对确定性要求高的任务比如EtherCAT周期任务、伺服控制、快速IO响应放到RT-Thread侧把那些需要复杂生态支撑的、对实时性不敏感的任务人机交互、数据记录、远程通信、视觉检测放到Linux侧。两个系统靠共享内存传输数据丢包率、延迟都可控。项目前期多花一点时间打通通信链路后面扩展业务的时候就非常舒服。2. AMP架构设计与核间通信方案2.1 核间分工谁干实时谁干业务在项目里我采用的是“1个A53核跑RT-Thread其余7个核全归Linux”的分配方式。RK3576的4个A72大核性能强留给Linux跑业务和视觉4个A53小核中预留最后一个CPU7给RT-Thread剩下的A53核作为Linux的低功耗调度池。之所以选A53跑RT-Thread是因为EtherCAT主站负载本身不高A53的单核性能已经完全够用而且A53簇与A72簇在核间通信的延迟也更低。ARM架构里的CPU编号和Linux逻辑编号并不一定一一对应不同平台可能不同所以实际操作中要先用cat /sys/devices/system/cpu/possible确认系统的CPU编号范围再通过设备树和内核参数把目标核隔离出来。我用的内核命令行参数是isolcpus7 nohz_full7 rcu_nocbs7 irqaffinity0-6isolcpus7把CPU7从Linux调度器中移除不跑普通任务nohz_full7让CPU7关闭周期性时钟中断减少不必要的核间打扰rcu_nocbs7把RCU回调从CPU7上剥离irqaffinity0-6强制所有中断都只进0~6号核避免打断CPU7这样配置以后Linux侧等于“看不见”CPU7这个核已经完全让位给RT-Thread。启动阶段由Linux的remoteproc框架把RT-Thread固件加载到预留内存中再启动这个核。2.2 共享内存怎么设计才不踩雷两个系统跑在同一个SoC上通信最快的方式就是共享物理内存。我在DDR里预留了两块区域一块给RT-Thread的代码和数据另一块做核间通信的共享内存。设备树里这样预留reserved-memory { #address-cells 2; #size-cells 2; ranges; rtthread_reserved: rtthread78000000 { reg 0x0 0x78000000 0x0 0x8000000; no-map; }; shm_reserved: shm7f800000 { reg 0x0 0x7f800000 0x0 0x400000; no-map; }; };关键点是no-map。如果这段内存被Linux内核映射并纳入页表管理RT-Thread访问的时候可能撞上缓存一致性或者TLB的问题甚至可能被Linux的页面回收机制动到。加了no-map以后Linux只把这部分地址空间保留出来不建立页表映射RT-Thread可以安全使用。核间共享内存区域的布局我建议设计成环形缓冲区加状态标志位发送方写入数据后更新写索引再通过硬件中断通知对方接收方读取数据更新读索引。没有锁没有信号量全靠原子操作和内存屏障这样在裸机侧和RTOS侧都容易实现。struct ipc_ring { volatile uint32_t head; volatile uint32_t tail; volatile uint32_t status; uint8_t buf[4096]; };2.3 EtherCAT数据流完整走向整个系统的数据流是这样的伺服驱动器或IO从站通过网线接入RK3576板卡的千兆PHYRT-Thread上的EtherCAT主站负责收发报文、解析PDO数据然后把轴的当前速度、位置、报警信息写到共享内存。Linux侧的上位机程序比如基于QT写的人机界面周期性从共享内存读取这些状态同时把用户下发的目标速度、目标位置、启停命令写入共享内存。RT-Thread读到以后在下一个周期把它封装成EtherCAT的PDO数据发出去。这个流程里有一个非常重要的设计理念 RT-Thread侧不要依赖Linux侧的任何状态。即使Linux侧崩溃了、死锁了RT-Thread侧的EtherCAT周期任务照常运行伺服系统不会失控顶多是没有新的目标值更新而已。这也是工业安全的要求。我们做过一个极端测试强制让Linux进入hung task状态共享内存区域没有任何响应但是RT-Thread依然保持1ms周期的EtherCAT通信驱动器没有报警轴没有抖动。这种隔离性是混合部署最大的价值。3. Linux侧准备内核、设备树与RT-Thread加载3.1 内核版本与实时补丁Linux侧我用的是6.6.119版本的内核这个版本是我实际验证过的稳定版本而且对多个网卡驱动包括igc、e1000e这类EtherCAT常用网卡驱动支持比较完整。如果你板子上用的是Intel I210/I225这类PCIe网卡6.6.x内核会省很多适配功夫。不过我的主方案是RK3576内部GMAC加YT8521 PHY这里也要单独调。如果后续你打算在Linux侧直接用IgH或SOEM跑EtherCAT作为后备方案建议把PREEMPT_RT补丁也打上。6.6版本的PREEMPT_RT补丁已经比较成熟在RT-Thread还没有适配好的阶段可以先让Linux侧用实时补丁顶着跑。我的建议是优先把RT-Thread方案作为量产架构Linux侧的PREEMPT_RT作为研发阶段的临时验证手段这样两条腿走路比较稳。3.2 设备树配置预留地址与remoteproc节点预留内存节点写好后还需要添加remoteproc设备节点让Linux内核知道“有一个远程处理器要从哪块内存启动”remoteproc0 { compatible rockchip,rk3576-remoteproc; memory-region rtthread_reserved; clocks cru CLK_CORE7; clock-names core; resets cru SRST_CORE7; status okay; };这里clocks和resets需要对照芯片手册确认控制在远程核的时钟和复位。启动远程核的完整操作是echo rtthread_ethercat.elf /sys/class/remoteproc/remoteproc0/firmware echo start /sys/class/remoteproc/remoteproc0/state如果一切正常dmesg里可以看到remoteproc框架的加载日志。RT-Thread的固件建议编译成ELF格式这样remoteproc能正确解析加载地址和入口地址避免自己手动搬运二进制镜像时搞错地址。3.3 如何验证RT-Thread真的跑起来了固件加载不代表RT-Thread真的在跑我习惯用几层方式交叉验证。第一层看remoteproc的状态节点cat /sys/class/remoteproc/remoteproc0/state显示running说明远程核已经启动。第二层观察共享内存中的状态字。我在RT-Thread的启动代码里专门写了一个很小的自检逻辑系统启动后立即在共享内存的标志位区域写一个特定的魔数比如0x52545754代表RTWTLinux侧上位机每100ms读一次这个魔数。如果魔数正确且持续更新说明RT-Thread的内核时钟在跑共享内存链路是通的。第三层通过串口日志。RT-Thread如果接了调试串口启动时会有彩色的RT-Thread logo和版本信息打印这是最直观的确认手段。4. RT-Thread侧实时核上的EtherCAT主站搭建4.1 RT-Thread系统裁剪与BSP适配RT-Thread本身针对ARM64有不错的支持但RK3576不是官方标配BSP需要基于官方或者已有的Rockchip BSP做适配核心工作集中在三块启动代码、时钟和中断控制器、串口驱动。启动代码要能正确在预留内存地址上运行所以RT-Thread链接脚本里的ROM起始地址必须和DTS预留的地址一致。这一步如果搞错固件加载进去就是跑飞连启动日志都看不到。BSP里我用的是SCons构建体系。RT-Thread的标准做法是通过menuconfig配置组件然后scons编译。裁剪的时候我把文件系统、网络协议栈、POSIX层全部关掉了只保留内核、调度器、互斥锁、定时器、串口驱动和EtherCAT主站这几个核心部分。尽量让内核小、路径短、行为可预测这是实时系统的原则。4.2 EtherCAT主站组件怎么接入RT-Thread的EtherCAT主站我用的方案是基于SOEMSimple Open EtherCAT Master的移植版。SOEM本身是一个轻量级的EtherCAT主站库代码量不大依赖少很适合RTOS环境。移植工作主要就是三件事提供以太网收发接口、提供定时器接口、提供互斥锁接口。SOEM的底层以太网收发在RK3576板子上走的是GMAC。你需要确认RK3576的GMAC驱动在RT-Thread里能正常工作这往往是整个项目中工作量最大的部分。RT-Thread自带的GMAC驱动未必适配RK3576的版本很可能是从Rockchip Linux内核驱动里移植过来改的。我实际做下来这一块的工时占了整个RT-Thread侧的一半还多。EtherCAT主站的周期任务代码大概是这样的结构static void ethercat_cycle_entry(void *param) { while (1) { /* 等待下一个周期点 */ rt_sem_take(cyc_sem, RT_WAITING_FOREVER); /* 更新PDO数据 */ ec_slave[0].inputs input_buf; ec_slave[0].outputs output_buf; ec_send_processdata(0); ec_receive_processdata(EC_TIMEOUTRET); } }周期由高精度定时器驱动定时器中断到来时释放信号量EtherCAT任务醒来执行发送和接收然后把控制周期误差记录下来供调优。4.3 YT8521 PHY与GMAC节点调试这里专门讲讲YT8521因为很多人容易在这里卡住。YT8521是一款国产的千兆以太网PHY支持RGMII/SGMII接口RK3576板卡上很常见。它本身没什么大问题但RGMII接口尤其需要注意时钟相位。RK3576的GMAC通过RGMII连接YT8521时MAC侧和PHY侧的TX时钟需要有一个约2ns的延迟来对齐数据否则会出现“链接偶尔建立但吞吐量极低”或者“完全不通”的现象。Linux的设备树里一般用rgmii-id或者rgmii-rxid、rgmii-txid来控制这个延迟。到了RT-Thread侧没有设备树帮你做就需要在GMAC驱动的初始化代码里手动配置PHY的寄存器。我用的做法是在RT-Thread的以太网驱动初始化里为YT8521单独写一个mdio_write回调配置它的RGMII TX延迟寄存器。这个数值不是固定的不同板卡的PCB走线长度不一样需要调整。我调试时是用逻辑分析仪观察RGMII信号对比时钟沿和数据沿的相位一点点把延迟调出来的。如果你没有逻辑分析仪也有一个笨办法改一个值、跑一下socket回环测试反复试直到速度稳定。5. EtherCAT周期控制调优实录5.1 周期抖动从哪里来系统起来以后最关心的指标就是周期抖动。EtherCAT主站的理想状态是每一个周期都在精确的时间点发出第一帧数据偏差越小越好。抖动来源主要分成三类RTOS调度抖动、以太网驱动收发抖动、DC同步机制带来的从站侧偏差。RTOS调度抖动方面RT-Thread虽然是实时系统但如果中断优先级和任务优先级设计不合理周期任务依然会被其他中断打断。我把周期任务的优先级设到最高同时把非必要的中断比如调试串口中断、定时器中断优先级调低。EtherCAT周期定时器用的是芯片的高精度定时器单独分配一个硬件定时器通道不和其他功能共用。以太网收发抖动方面GMAC的中断处理要尽可能短只在中断里做数据搬移所有协议解析放到周期任务里做否则中断里处理时间动不动几十微秒周期一定受影响。5.2 实测数据与调优手段我把调优前后的数据记录下来给大家一个直观感受项目调优前调优后周期设定1ms1ms平均抖动85us9us最大抖动320us47us丢帧次数24h230主要做的三件事第一调整了GMAC中断线程的优先级确保收发中断独享一个高优先级第二把RT-Thread周期任务内部逻辑精简PDO解析、控制算法、共享内存写数据全部在30us内完成第三给共享内存的写操作加了内存屏障避免CPU的写缓存导致数据延迟可见。调优时我习惯在RT-Thread里放一个32位的计数器每次周期任务递增同时把计数器和一条GPIO电平翻转绑定。用示波器勾GPIO波形直接数周期抖动这种方法最直观不需要在网络报文级别去抓包分析。5.3 DC分布式时钟对多轴同步的影响如果你的项目是多轴同步EtherCAT的DC分布式时钟特性非常关键。DC的作用是让网络中所有从站共享同一个时间基准这样每个轴都在同一时刻执行位置插补而不是各自延迟一个帧周期。RK3576做EtherCAT主站需要正确开启DC并设置同步模式。SOEM库里有对应的API去写从站的DC寄存器但要注意从站支持不支持DC以及从站的同步周期是多少。使用如松下、汇川、台达这类常见伺服时通常能配合得当但个别低成本IO从站不支持DC那就只能退回到FreeRun模式系统同步精度会差一些。6. 踩坑记录与问题速查表6.1 高频问题的排查过程项目里遇到最典型的问题有这么几个每一个都花了不少时间。第一个问题是RT-Thread固件加载后串口没有任何输出。排查结果是链接脚本的ROM地址和DTS预留地址差了8MB。RT-Thread固件被remoteproc加载到了0x78000000但固件内部的代码段链接地址还是0x70000000程序一跑就跳到错误位置。处理方式是把RT-Thread的链接脚本修改为与其匹配。第二个问题是EtherCAT通信能建立但周期运行十几分钟后自动断开。抓包发现从站返回的工作计数器WKC错误后来确认是共享内存中保存从站状态的数据结构被Linux侧的一个进程意外改写了。原因是我在Linux侧读共享内存时用了普通指针访问没有做映射对齐导致跨页访问越界。处理方式是统一用mmap映射共享内存区域并严格按结构体大小读写。第三个问题和YT8521有关。板卡上电后EtherCAT主站日志显示link up正常但数据全部超时。后来用网线直连电脑发现PHY能自协商到千兆速率但是RGMII接口的TX延迟不对导致MAC侧采到的数据全错。把设备树或RT-Thread驱动里的TX延迟调大以后恢复正常。第四个问题是共享内存数据对不上RT-Thread已经写了新数据Linux读到的还是旧值。这个就是典型的缓存一致性问题。ARM处理器的缓存是软的跨核共享内存必须处理好缓存同步。我在RT-Thread侧写共享内存前手动执行clean和invalidate操作在Linux侧读之前也做对应处理或者直接用mmap时带上MAP_SHARED并配合dma_alloc_coherent这类一致性内存接口。如果你的平台支持DMA堆共享内存建议直接从DMA堆分配这样缓存一致性问题少很多。6.2 快速排查对照表现象可能原因处理建议RT-Thread启动无日志固件加载地址与链接地址不一致核对DTS预留地址与链接脚本remoteproc启动失败时钟/复位配置错误检查remoteproc节点的clocks和resetsEtherCAT link up但数据超时RGMII时钟延迟不对调YT8521的TX/RX延迟寄存器周期抖动突增高优先级中断抢占用/proc/interrupts排查中断源共享内存读到旧数据缓存一致性问题使用一致性内存DMA堆或手动clean/invalidateEtherCAT运行后自动断开WKC错误、从站电源不稳检查总线供电抓包定位错误从站6.3 一个容易被忽略的工程坑启动顺序与看门狗最后必须提一下启动顺序和看门狗。量产设备最怕的是“Linux还没起来RT-Thread已经把轴动了”这非常危险。我建议在硬件设计上让伺服使能信号和EtherCAT主站启动完成为“与”关系RT-Thread的EtherCAT周期任务起来后才允许输出使能信号Linux侧的业务程序在启动早期不要写共享内存中的目标值等状态标志位显示RT-Thread已进入周期运行状态后再下发命令。看门狗方面我在RT-Thread侧单独跑了一个独立看门狗任务喂狗信号和EtherCAT周期绑定如果某个周期没有正常运行看门狗立即复位整个系统。Linux侧同样有自己的软看门狗两边互不依赖。这样即使Linux死机RT-Thread也不会因为等待Linux而失控反过来RT-Thread异常时Linux也能触发系统级复位。最后再分享一点我的实际体会这套混合部署方案从立项到稳定运行前后花了大约两个多月大头时间不是花在EtherCAT协议本身而是花在把RK3576的GMAC驱动移植到RT-Thread、以及反复调整YT8521这种底层细节上。如果你也在做类似的项目我的建议是先确保RT-Thread侧的EtherCAT主站能稳定周期性收发再去做Linux侧的业务功能核间通信的数据结构一定要固定下来字段顺序、字节对齐、版本号都要提前定义清楚否则后面联调会非常痛苦。另外共享内存这种跨核通信方式虽然快但调试工具少出现问题不好追建议从一开始就在共享内存里埋好CRC校验和心跳计数这样出问题时能快速定位到底是数据写坏了还是读到的时序问题。这个方案后续还有很多可以扩展的地方比如把视觉检测结果直接通过共享内存传给RT-Thread做动态跟随或者用RT-Thread侧做安全联锁逻辑配合Linux侧做设备管理整个控制器架构会越来越完整。

相关新闻

Java健身俱乐部管理系统实战:数据模型、排课冲突与课时结算

Java健身俱乐部管理系统实战:数据模型、排课冲突与课时结算

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

2026/10/5 1:21:01 阅读更多 →
FPGA从JTAG到AS模式:EP4CE10E22C8N配置与排查实战

FPGA从JTAG到AS模式:EP4CE10E22C8N配置与排查实战

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

2026/10/5 1:21:01 阅读更多 →
MRAM工业存储实战:MR25H40CDF与PIC24FV32KA304驱动详解

MRAM工业存储实战:MR25H40CDF与PIC24FV32KA304驱动详解

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

2026/10/5 1:21:01 阅读更多 →

最新新闻

WiX Toolset v3.x 本地化构建指南:指定构建区域性(Cultures to build)与多语言回退机制

WiX Toolset v3.x 本地化构建指南:指定构建区域性(Cultures to build)与多语言回退机制

开发工具构建工具 【免费下载链接】wix3 WiX Toolset v3.x 项目地址: https://gitcode.com/gh_mirrors/wi/wix3 点击查看 免费下载 导读 本文面向使用 WiX Toolset v3.x(当前仓库即 WiX Toolset v3.x 源码仓库)构建多语言 Windows Installe…

2026/10/5 2:07:28 阅读更多 →
cloudflare-os 集成测试:workerd 里跑真实 Worker 的 6 个反直觉坑

cloudflare-os 集成测试:workerd 里跑真实 Worker 的 6 个反直觉坑

cloudflare-os 集成测试:workerd 里跑真实 Worker 的 6 个反直觉坑 【免费下载链接】cloudflare-os Agent workspace built on Cloudflare Workers for creating documents, building apps, and running agents with your company’s context and systems. 项目地…

2026/10/5 2:07:28 阅读更多 →
Webots 控制器终端编译指南:环境变量配置与 Makefile 构建系统实战

Webots 控制器终端编译指南:环境变量配置与 Makefile 构建系统实战

科研自动驾驶物理引擎 【免费下载链接】webots Webots Robot Simulator 项目地址: https://gitcode.com/gh_mirrors/web/webots 点击查看 免费下载 导读 Webots 机器人仿真器的控制器(Controller)既可以借助内置代码编辑器的一键构建按钮完…

2026/10/5 2:07:28 阅读更多 →
LX Music:免费开源的多音源音乐搜索播放器,三步跑起来

LX Music:免费开源的多音源音乐搜索播放器,三步跑起来

LX Music:免费开源的多音源音乐搜索播放器,三步跑起来 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop LX Music 是免费开源的多音源聚合音乐播放器&#x…

2026/10/5 2:07:28 阅读更多 →
3步存下视频号抖音无水印视频:res-downloader资源下载器完整入门指南

3步存下视频号抖音无水印视频:res-downloader资源下载器完整入门指南

3步存下视频号抖音无水印视频:res-downloader资源下载器完整入门指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader …

2026/10/5 2:07:28 阅读更多 →
AI Agent 面试题 155:LoRA和QLoRA微调技术在Agent场景中的应用实践

AI Agent 面试题 155:LoRA和QLoRA微调技术在Agent场景中的应用实践

🔥 AI Agent 面试题 155:LoRA和QLoRA微调技术在Agent场景中的应用实践摘要:本文深入解析了「LoRA和QLoRA微调技术在Agent场景中的应用实践」这一 AI Agent 领域的核心面试题。文章从 模型微调与适配 的基本概念出发,系统性地剖析了…

2026/10/5 2:06:28 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

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

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

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

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/4 11:40:45 阅读更多 →
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/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练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/4 20:14:29 阅读更多 →