Zephyr RTOS月度观察:新驱动、开发板选型与避坑指南

1. 月刊到底是什么,为什么值得每个月追

先把这个事儿说透。Zephyr 爱好者月刊,本质上是给关注 Zephyr RTOS 生态的人准备的一份“月度信息索引”。不是论文,不是教程,是帮你把散落在几十个仓库、邮件列表、论坛、社交媒体里的碎片信息捞出来,挑干货、按主题整理成一份能快速读的东西。

Zephyr 这个项目本身更新节奏很快,主仓库几乎每天都有新的 PR(Pull Request)合入,核心子系统(调度器、驱动框架、构建系统、网络协议栈)时不时就会有小改动。如果你完全靠刷 GitHub Notifications 跟进,一天能收到上百封邮件,根本看不完。月刊的价值就在这儿:它帮你把这个月“值得关注”的东西筛选出来,比如哪些驱动合入了、哪些实验性功能转正了、哪些不兼容变更需要留意、社区里大家在吵什么。这样你花半小时读完,就能知道下个月写代码的时候要小心什么、可以试用什么。

适合谁来读?我的体感是两类人收益最大。一类是刚接触 Zephyr 没几个月的开发者,月刊里的信息密度比较高,提前知道“生态现在关注什么”,能少走很多弯路。另一类是把 Zephyr 用在真实产品里的团队,因为版本升级带来的风险、驱动合入带来的选型变化,都是直接影响交付进度的东西,月刊相当于给你一个每月一次的风险预警。当然,纯爱好者也完全可以当技术资讯看,这里面的内容质量普遍比刷新闻源要高。

我每个月都会花一两个晚上把看到的资料整理归档,看的时候不觉得什么,月底回头看才发现信息量相当可观。所以说月刊这个形式,最大的好处就是把持续性的关注变成了一种有节奏的、可积累的阅读习惯。

2. 这个月值得关注的几个方向

2.1 项目库更新里,藏着生态的方向标

每一期的月刊,最实打实的部分是项目库的更新。这一块我最看重的是“新驱动合入”和“新开发板支持”两个子项。为什么?因为这两类内容直接决定了你下一个项目能不能用 Zephyr 省事地跑起来。

先说驱动合入。Zephyr 的驱动框架做得比较规整,外设驱动分了设备树兼容层和驱动实现层,合入一个新驱动意味着某类传感器、无线模组或存储芯片在 Zephyr 里变成了“一等公民”。比如说这个月如果合入了一款常见的工业级加速计驱动,那你在下一块板子上选传感器的时候就可以少纠结一下驱动移植成本。我在实际项目里见过太多方案,硬件明明很好,就是因为没有 Zephyr 驱动,导致软件评估周期硬生生多了两周。所以每个月翻一遍新驱动列表,其实是在给自己的选型清单打勾。

再说开发板支持。Zephyr 官方支持板子的速度不算快,但一直在稳步推进。每次新增板子,背后往往意味着某个厂商或社区团队在认真做 Zephyr 适配,这种信号的意义不仅仅在板子本身,更在它代表的生态投入。比如某款常见的 MCU 系列被加进来之后,你原有的裸机代码迁移到 Zephyr 的路径就清晰了很多。月刊把这些变化集中列出来,你评估“某芯片能不能跑 Zephyr”的时候就可以直接查,不用自己去翻板级支持包列表。

2.2 不兼容变更,这一栏一定不能跳过

很多人读月刊喜欢看新功能,但我个人觉得“不兼容变更”和“已弃用功能”是优先级最高的信息。Zephyr 虽然语义化版本做得还行,但在大版本之间出现 API 调整、设备树绑定改动是非常正常的。这些变更一旦你踩中,编译报错都是小事,最怕的是那种编译能过、运行时行为变了的情况。

举一个典型的例子:某个子系统的设备树兼容属性改了名,旧名字被保留做兼容处理,但如果你在自定义设备树覆盖文件里用的是旧名字,日志里只会有一条 Kconfig 或者 devicetree 级别的 warning。开发的时候很容易忽略,等 QA 阶段出了问题再回头查,浪费的时间以天计。

月刊里的不兼容变更列表,相当于是官方变更日志的“翻译版”,用更直白的话说明白了:什么被改了,你需要去哪里改代码。我每次拿到新一期的第一件事,就是拿这些变更信息去和我手头的工程做交叉对照。只要有正在维护的项目,这个步骤无论如何都不能省。

2.3 内核与网络协议栈的演进,像追连续剧

对于做 IoT 或者网关类产品的开发者来说,网络协议栈的更新每个月都有看头。Zephyr 的协议栈基于线程模型,跟 Linux 那种进程模型不一样,因此很多优化思路都是在减少内存拷贝、优化收包路径、处理少量连接场景下的性能表现。这些改动在 release note 里可能就一两行,但背后其实是有性能测试数据的。月刊如果能把这些实验数据或社区讨论的背景讲清楚,对读者判断“我这个场景要不要摸一摸新版本”非常有帮助。

内核这一块,我的关注点主要是调度器行为变化、锁的实现调整、内存管理(特别是 cache 和 MPU 相关的改动)。做实时系统的人都知道,调度延迟哪怕微小的抖动,在特定工况下都会被放大。所以这不是“看看热闹”的事,而是要对变更保持敏感的事。

3. 开发板推荐与选型策略

3.1 怎么看一块板子适不适合跑 Zephyr

有很多人私信问我,选开发板的依据到底是什么。我的回答基本稳定在三个维度:官方支持状态、外设覆盖率和资料完善度。

官方支持状态是最硬性的标准。如果这块板子已经进了 Zephyr 主仓库的 board 目录,那意味着它每个版本都会有自动化构建和测试覆盖,你出现诡异问题的概率会低很多。如果只是社区第三方支持,那就得自己掂量了——不是不能用,而是出了问题可能要自己动手去查板级配置。月刊里列的板子信息,通常会把主仓库支持和第三方支持分得很清楚,这个细节建议展开看。

外设覆盖率这个维度很容易被新手忽略。很多人选板子只看主控芯片型号,忽略了一个事实:板载的调试器、传感器、无线芯片在 Zephyr 里是否都有现成驱动,直接决定了你的上手速度。比如标称支持某颗 Wi-Fi/蓝牙组合芯片,但如果 Zephyr 这边只实现了蓝牙部分,Wi-Fi 还得自己适配,实际工作量就比自己从零开始没省多少。月刊里如果能把每块板子的“板载资源-Zephyr驱动映射”列出来,读者一眼就能扫出哪些板子真正开箱即用。

资料完善度指的是示例代码和文档的齐全程度。Zephyr 官方文档覆盖率在所有 RTOS 里算很不错的了,但具体到不同板子差别依然很大。冷门板子可能只有最少跑通示例,热门板子则有周边生态的整套参考实现。我不建议只因为它进了官方支持列表就无脑入手,还是要在官方 sample 和文档里翻一翻,确认自己要用到的外设都有参考代码。

3.2 低成本方案的坑,我踩过你也躲开

这一节专门说低成本开发板。我理解很多人想用低成本方案做原型验证,十几块钱的板子性能也够跑基础示例,但这里有几个坑需要提前做好预期管理。

第一类是调试器问题。低成本板子的板载调试器通常只支持最基础的下载和复位,像 SWO 跟踪输出、RTT 这种高级功能可能被拿掉了。所以如果你后续计划做性能分析或者日志追踪,建议从一开始就选带完整调试器方案的板子,或者预留外接调试器的接口。否则做到一半发现没法跟踪,就只能焊排针,体验真的谈不上好。

第二类是晶振精度问题。很多低成本板子用的晶振精度一般,跑普通业务没问题,但涉及需要时间同步的无线协议栈,比如 BLE 连接事件时序要求比较高的时候,就可能出现偶发断连。这个问题用软件几乎很难彻底解决,属于硬件选型的硬伤。月刊里的板子测评如果提到了时钟精度,那这条信息价值就很大,值得做笔记。

第三类是电源设计。低成本板子为了省成本,LDO 的纹波抑制能力和最大输出电流都比较保守。外接传感器模块一多,供电不稳导致的随机复位会让人排查得非常痛苦。我建议原型阶段就把电源预算留够30%余量,不要卡着上限用。

4. 社区驱动的价值不只是代码

4.1 怎么从一堆驱动库里筛出靠谱的

现在 Zephyr 相关的第三方驱动仓库不少,但质量差距真的大。我在月刊建模的时候,其实花了很大精力去整理一套“社区驱动质量评估表”,今天把最关键的标准列出来。

第一看维护活跃度。这个指标比 star 数重要得多。去看仓库最近一次 commit 是什么时候,如果已经半年没动了,那基本可以判断作者已经弃坑。再跑一下 issue 列表,看看新 issue 有没有人响应。一个驱动仓库如果连续三个月有 commit 且有 issue 响应,就算得上活跃。

第二看测试覆盖。驱动这东西,光能编译通过是远远不够的。真正靠谱的驱动仓库都会贴出在什么板卡上、用什么 sensor 跑了什么测试、结果如何。哪怕是简单的 read 循环测试,也能说明作者至少动过硬件。那些只贴 Kconfig 配置就说能用的,大概率是理论驱动,底层的寄存器初始化流程可能都没跑通。

第三看 License 和代码风格。License 要你亲自确认干净,尤其是从芯片厂商仓库里抄来的代码,有时候会有专有代码片段混在里面。代码风格方面,Zephyr 的 checkpatch 规则很严格,如果第三方驱动过不了 Zephyr 代码风格检查,它大概率也不会有机会进主仓库。所以看到风格混乱的驱动仓库,不管功能多吸引人,都得提高警惕。

4.2 高手都在用的工具链与调试方法

月刊里经常会提到一些工具,但很少单独讲方法论。这里我补一段个人经验。

首先是 west 命令行工具。很多人只在构建时用一下 west build,其实 west 的扩展机制非常值得研究。你可以写自己的 west 命令来管理自定义 flash 脚本、启动后自动跑测试或者抓日志。我现在本地就挂了一个自定义命令,负责一键完成构建、烧录、串口日志采集和测试结果汇总,效率提升非常明显。这个能力在新手文档里讲得很少,建议深入读一下 west 相关章节。

其次是逻辑分析仪的使用。调试 Zephyr 的无线协议栈时,逻辑分析仪配合协议分析软件,能直接看到空中包和数据包,这个视角跟只看日志完全不同。特别是 BLE 连接参数更新、信道跳频这类行为,不用逻辑分析仪你根本不知道协议栈在干什么。预算不高的话,入门级逻辑分析仪就够用了,不用一上来就买好几万的高级货。

最后是 trace 工具。Zephyr 自带的 tracing 机制加上功耗分析工具,可以从系统层面看到每个线程跑的时间片,分析任务切换的频率和耗时。优化任务划分的时候,这个数据比任何 profiling 神器都好使。月刊里如果推荐了这类工具链组合,往往是作者自己真的跑过一遍才写的,照着搭一套基本不会翻车。

4.3 创意项目实战:不只是跑通示例

每期月刊我都会分享一个创意项目。这个板块的意义不在于代码多高级,而在于它展示了“Zephyr 和某些常见模块还能这么组合着用”。

以最近让我印象很深的一个项目为例:有人把 Zephyr 跑在了一颗非常小的 MCU 上,外接一个低功耗 LoRa 模块,做成了一枚纽扣电池供电的户外环境监测器。说实话方案本身不复杂,Zephyr 的线程调度和功耗管理在这里用得也算常规,但它的表达方式很有意思:所有上报数据都经过一套特别精简的文本协议,只要一条短信就能看完整条链路的状态。

我推荐这类项目的出发点很简单:很多人学 RTOS 看多了官方示例,思维会被“官方 API 用法”框住。而创意项目展示的是边界之外的用法,是“把若干基础能力组合出新的场景”的思维训练。哪怕你不做 LoRa 也不做环境监测,看别人怎么把功耗、通信、数据格式揉在一起,对设计自己的系统也很有启发。

5. 避坑与排查经验汇总

5.1 配置了但没生效,先查这几件事

这是我在 Zephyr 开发里遇到最多的一类问题——明明打开了 Kconfig 配置,编译出来行为还是不对。下面这个排查顺序,我记了整整半年才总结顺手。

第一步,查 prj.conf 有没有真的被读进去。Zephyr 的构建系统是支持多配置来源的,包括 build 目录下缓存、boards 目录下的 defconfig、app 目录下的 prj.conf。如果你改的是 prj.conf 但项目里还有 board-level 的 defconfig,后者优先级可能更高,你的配置就被覆盖了。发生过太多次以为自己配置对了,其实是改错文件的情况。

第二步,查 CMakeCache 里对应的变量值。确认配置真的生效了,最直接的方式是在 build 文件夹里搜索变量名,看最终编译用的到底是多少。Zephyr 的配置系统从 Kconfig 生成了头文件,也生成了配置报告,直接读报告是最不会骗人的。

第三步,查设备树节点状态。很多外设觉得没生效,其实是设备树里节点 status 是 disabled,或者 compatible 匹配不上。设备树覆盖文件写完之后,记得用构建生成的设备树导出文件确认一下自己写的覆盖是否真的合入,这里非常容易踩坑。

5.2 编译失败的错误信息,怎么看最省时间

Zephyr 的编译失败有两类:一类是构建系统层面的,比如 west 环境没配对、工具链找不到;另一类是代码层面的,比如类型不匹配、宏定义缺失。这两者报错信息风格差异很大。

构建系统层面的报错,我见过最多的是工具链版本问题。Zephyr 对工具链版本比较敏感,有些版本在某平台上有知名问题,比如链接器脚本兼容、浮点 ABI 支持。所以看到工具链相关报错,第一个动作不是去改代码,而是先确认当前用的是不是官方推荐的工具链版本组合。

代码层面的报错,建议直接定位到报错输出的最后一个源码文件,从最底层开始修。很多时候编译报错一大堆,其实源于一个头文件缺失或者一个宏定义错误,后面的全是连锁反应。按“第一个真实错误”来修,往往改完就全通过了。

5.3 串口调试与日志降级原则

Zephyr 的日志系统做得很完善,按模块、按级别过滤都支持。但我见过不少开发者遇到问题之后不关日志就跑了,结果功耗上不去、时序受影响,又掉进另一个坑。所以我的习惯是:功能调试时开详细日志,性能测试时关掉日志,用硬件调试器来观察行为。

日志系统本身是有开销的,尤其在打印敏感型的代码路径上,日志可能会改变原有的时序特征,导致 bug 复现不了。排查偶发问题的时候,如果开日志就复现、关日志就不复现,那多半是日志时序影响了调度。这种情况的正确做法不是继续调日志级别,而是改用调试器的硬件断点和 trace 功能做分析。

6. 月刊的轻与重:该怎么用,才能值回时间的票价

月刊我建议当成“索引”来用,而不是当成“教材”来读。也就是说,细分到每篇文章,先花一分钟时间判断它跟你当前手头工作有没有关系。如果有,立刻收藏原链接,标记上"待细读";如果没有,知道有这么件事发生就够了。人的精力有限,信息消费也要讲性价比。

我的习惯是看完一遍月刊后,把里面提到的所有仓库、文档链接、社区讨论帖整理进自己的信息管理工具里,打上标签,按项目分类。到真正做方案选型、排查问题的时候,直接搜索标签就能调出这个月积累的素材。这个习惯坚持下来,你会发现自己对 Zephyr 生态的理解是滚雪球式的,而不是每次都到处搜、重复踩坑。

有不少人说“月刊没技术含量,都是信息汇总”。我不太同意。信息汇总这件事本身是有技术含量的,难在怎么从大量噪声里分辨什么是信号,难在怎么把零散的信息连成一张能指导实践的网。做月刊的过程中,我也逼着自己去读了很多平时不会主动碰的资料,拓宽了自己的技术视野,这是额外的收获。

7. 下一步该做什么

如果你读月刊的时候感觉到了“这个东西以后可能会用上”,那我的建议是马上去行动。别等着收集完所有资料再动手,赶紧拿一块开发板,找一个项目中曾经卡住过你的痛点,试着用月刊里看到的新驱动或新工具去解决。哪怕只是把官方示例跑通,感受一下从拉代码到看串口日志的完整流程也行。很多问题做着做着就变清楚了。

我也强烈建议你开始维护自己的“生态观察笔记本”,每期月刊看完后随手记下几个关键词:这个月 Zephyr 生态里什么趋势在变强、什么方向在收缩、哪些子系统的架构开始出现调整,都记录下来。三个月之后你再翻开,就会发现自己已经能从信息消费者变成信息生产者了。

最后再分享一个实际操作中的小技巧——订阅月份刊之后,不要只在月底翻一遍就完了。它最正确的用法是配合日历使用:每个月第一周把月刊里提到的新驱动、新工具、新板卡,挑两个你有兴趣的方向试一试,哪怕每次只花半天时间。积少成多,一年下来你就是同事朋友里对 Zephyr 生态最熟的那个人。

相关新闻

RuoYi-Vue-Plus 安装配置完整指南:多租户管理系统从零到本地跑通

RuoYi-Vue-Plus 安装配置完整指南:多租户管理系统从零到本地跑通

RuoYi-Vue-Plus 安装配置完整指南:多租户管理系统从零到本地跑通 【免费下载链接】RuoYi-Vue-Plus 多租户后台管理系统 重写RuoYi-Vue所有功能 集成 Sa-Token、Mybatis-Plus、WarmFlow、SpringDoc、Hutool、OSS 定期同步 项目地址: https://gitcode.com/GitHub_Tr…

2026/10/21 1:40:26 阅读更多 →
永磁同步电机MTPA弱磁前馈补偿双闭环控制全解析

永磁同步电机MTPA弱磁前馈补偿双闭环控制全解析

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

2026/10/21 1:40:26 阅读更多 →
汽车电子压电陶瓷选型指南:从材料参数到失效排查

汽车电子压电陶瓷选型指南:从材料参数到失效排查

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

2026/10/21 1:40:26 阅读更多 →

最新新闻

腾讯云ASR实时语音识别前端接入:WebSocket签名与音频处理实战

腾讯云ASR实时语音识别前端接入:WebSocket签名与音频处理实战

前阵子我在给一个内部工具加“实时转写”功能,要把对话语音实时转成文字用于内容分析。调研了一圈,最后选了腾讯云 ASR 实时语音识别。原本以为就是“拿麦克风录音,发到 WebSocket,收文本”三件事,实际做下来发现每个环…

2026/10/21 3:54:34 阅读更多 →
Linux V4L2视频采集四步流程:打开→查询→设置→启动

Linux V4L2视频采集四步流程:打开→查询→设置→启动

1. 项目概述:为什么V4L2是Linux视频设备的“底层语言”在Linux系统里,但凡你接触过USB摄像头、树莓派CSI模组、工业面阵相机,甚至某些PCIe采集卡,几乎绕不开一个词:V4L2。它不是某个具体软件,也不是命令行工…

2026/10/21 3:54:34 阅读更多 →
Flutter GestureDetector 手势系统深度解析:从原理到高性能实践

Flutter GestureDetector 手势系统深度解析:从原理到高性能实践

1. 为什么说 GestureDetector 是 Flutter 手势世界的“总开关”在 Flutter 开发中,你写过多少次onTap?又是否曾疑惑:明明只是点了一下屏幕,背后却触发了onTapDown、onTapUp、onTapCancel一整套回调?或者,你…

2026/10/21 3:54:34 阅读更多 →
Qwen2.5-VL跨硬件微调:LoRA与OFT在昇腾910B与4090上的实战

Qwen2.5-VL跨硬件微调:LoRA与OFT在昇腾910B与4090上的实战

这个项目的起因很现实:手上的多模态微调代码在单张4090上调得好好的,业务方突然要求国产算力平台也能跑,而基于Qwen2.5-VL的私域图像理解任务又必须保留原有效果。于是就有了标题里那条主线——从LoRA到OFT,从昇腾910B到4090&…

2026/10/21 3:54:34 阅读更多 →
深入Linux内存管理:伙伴系统与slab分配器核心原理

深入Linux内存管理:伙伴系统与slab分配器核心原理

前段时间在压测一个存储服务时,我发现一个奇怪的现象:明明内存总量还很充足,但每次接口申请一个8KB的连续块时,耗时总会偶发冲到几百微秒甚至毫秒级。查到最后,问题不在业务代码,而在内存管理这一层——更具…

2026/10/21 3:54:34 阅读更多 →
FFmpeg输入源处理:本地文件与网络流读取的底层逻辑与实战

FFmpeg输入源处理:本地文件与网络流读取的底层逻辑与实战

FFmpeg 这个工具,刚接触音视频开发的人往往会被它庞大的参数体系劝退,但真正用起来之后又会发现,很多看似复杂的需求,其实一条命令就能搞定。这次要聊的是 FFmpeg 读取本地文件和网络流这两种输入源的处理方式,属于系列…

2026/10/21 3:53:34 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →