<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Where there is life, there is hope.]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/stallion5632</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; stallion5632]]></copyright><item><title><![CDATA[MCU SD 卡上电加载流程：从寄存器访问到文件系统挂载]]></title><link>https://blog.csdn.net/stallion5632/article/details/166140289</link><guid>https://blog.csdn.net/stallion5632/article/details/166140289</guid><author>stallion5632</author><pubDate>Sun, 20 Sep 2026 20:29:03 +0800</pubDate><description><![CDATA[上电时已经插着的卡不会触发卡检测中断。此时 CD 引脚电平稳定，没有跳变可供触发；驱动在创建 host 结束时主动读一次 `CDETECT` 寄存器，确认卡在位后直接向检测线程发送事件。中断 `SDIO_INT_CARD_DET` 处理的是使用过程中插拔产生的跳变。]]></description><category></category></item><item><title><![CDATA[RTOS MCU 相机 RTSP 服务架构分析]]></title><link>https://blog.csdn.net/stallion5632/article/details/166134526</link><guid>https://blog.csdn.net/stallion5632/article/details/166134526</guid><author>stallion5632</author><pubDate>Sun, 20 Sep 2026 15:50:11 +0800</pubDate><description><![CDATA[本文分析一台运行 RTOS 的单芯片相机如何对外提供 H.264 视频流。设备通过以太网或 WiFi 连接，播放端使用 VLC 一类软件。文中的做法不绑定某一种 RTOS，涉及具体内核时给出文件名和行号，便于核对。]]></description><category></category></item><item><title><![CDATA[嵌入式双路 USB 视频输出：一个设备、两个摄像头的同步原理]]></title><link>https://blog.csdn.net/stallion5632/article/details/166102735</link><guid>https://blog.csdn.net/stallion5632/article/details/166102735</guid><author>stallion5632</author><pubDate>Sun, 20 Sep 2026 09:44:54 +0800</pubDate><description><![CDATA[一台嵌入式设备通过 USB 同时输出两路视频流，并不是变成了两个 USB 设备。设备借助复合设备描述符与 IAD（Interface Association Descriptor，接口关联描述符），让 Windows 在摄像头列表里注册为两个条目。两路数据的同步靠两件事：固件为每帧打上的 PTS（Presentation Time Stamp，显示时间戳），以及硬件内部的 3 帧环形缓冲区。]]></description><category></category></item><item><title><![CDATA[从文件系统到 SD 卡：数据写入的四层路径]]></title><link>https://blog.csdn.net/stallion5632/article/details/165885628</link><guid>https://blog.csdn.net/stallion5632/article/details/165885628</guid><author>stallion5632</author><pubDate>Fri, 18 Sep 2026 16:55:50 +0800</pubDate><description><![CDATA[本文讨论的是**嵌入式 SoC 平台**上的写入路径：片上带 DMA 控制器与存储控制器，跑 RTOS，通过 SDIO 接口外接 SD 卡。工业相机、行车记录仪、数据采集设备这类需要本地存盘的场合，走的都是这条路径。

它与通用计算机的存储栈有两点差别，值得先说明。一是 RTOS 侧没有页缓存，应用的一次写入不会先累积进内核缓冲，而是直接落到文件系统，因此对齐与请求拆分的行为在应用层就能感受到。二是这些环节由板级驱动直接实现，没有内核块层负责请求合并与重排。]]></description><category></category></item><item><title><![CDATA[USB枚举、协商、传输：以USB相机为例看识别与格式协商]]></title><link>https://blog.csdn.net/stallion5632/article/details/165884013</link><guid>https://blog.csdn.net/stallion5632/article/details/165884013</guid><author>stallion5632</author><pubDate>Fri, 18 Sep 2026 16:17:00 +0800</pubDate><description><![CDATA[主机能够枚举一颗从未见过的芯片，并非因为主机预先识别了该芯片，而是因为设备按 USB 规范**用描述符描述自身**。描述符说明设备的身份与接口数量，Probe/Commit 协商确定输出格式。]]></description><category></category></item><item><title><![CDATA[Codex CLI 状态栏配置指南]]></title><link>https://blog.csdn.net/stallion5632/article/details/165617577</link><guid>https://blog.csdn.net/stallion5632/article/details/165617577</guid><author>stallion5632</author><pubDate>Wed, 16 Sep 2026 15:54:54 +0800</pubDate><description><![CDATA[Codex CLI 原生支持可配置状态栏，无需任何外部脚本。
Codex 把状态栏做成了内置功能，通过 config.toml 里的字段名数组配置即可，配置都在 [tui] 段下]]></description><category></category></item><item><title><![CDATA[WezTerm 配置说明与调优依据]]></title><link>https://blog.csdn.net/stallion5632/article/details/165613846</link><guid>https://blog.csdn.net/stallion5632/article/details/165613846</guid><author>stallion5632</author><pubDate>Wed, 16 Sep 2026 14:57:34 +0800</pubDate><description><![CDATA[1. 取舍标准：优先降低 codex 等 TUI 运行期的 wezterm-gui CPU，其次观感；两者冲突且收益落在噪声内时保观感。
2. 主成本与帧率上限无关：开销与“屏幕更新次数”近似成正比（每次约 0.8–1.4 ms CPU），`max_fps` 只省 GPU 与续航。
3. 确定有效的只有关滚动条与限帧；`use_fancy_tab_bar = false` 收益约 3% 却让标题字体/字号退化，已回退；`front_end`、`webgpu_power_preference` 的改法被证伪或]]></description><category></category></item><item><title><![CDATA[让 Linux 上的 Claude Code/codex 拿到 Windows 截图的小工具]]></title><link>https://blog.csdn.net/stallion5632/article/details/165458966</link><guid>https://blog.csdn.net/stallion5632/article/details/165458966</guid><author>stallion5632</author><pubDate>Tue, 15 Sep 2026 11:43:16 +0800</pubDate><description><![CDATA[让 Windows 上的截图，经由用户已有的 ssh 通道，送达 Linux 上等待读取。]]></description><category></category></item><item><title><![CDATA[MCU/SoC线程心跳为什么不可省：任务线程存活的三层判定与实现落点]]></title><link>https://blog.csdn.net/stallion5632/article/details/165290385</link><guid>https://blog.csdn.net/stallion5632/article/details/165290385</guid><author>stallion5632</author><pubDate>Mon, 14 Sep 2026 10:27:51 +0800</pubDate><description><![CDATA[关键任务线程必须有心跳与超时监控；需要判断的不是"要不要"，而是"由谁提供、放在哪一层"。线程心跳一般由应用层显式建立，并由板级把喂狗条件接到独立硬件看门狗上。]]></description><category></category></item><item><title><![CDATA[XCOM：一个 4 MB 的串口调试工具]]></title><link>https://blog.csdn.net/stallion5632/article/details/165245142</link><guid>https://blog.csdn.net/stallion5632/article/details/165245142</guid><author>stallion5632</author><pubDate>Mon, 14 Sep 2026 00:10:41 +0800</pubDate><description><![CDATA[XCOM 是 Windows 上的一个串口调试工具，压缩包 3.93 MB。]]></description><category></category></item><item><title><![CDATA[一根控制线如何让烧写“时好时坏“：DTR/RTS 的时序陷阱]]></title><link>https://blog.csdn.net/stallion5632/article/details/165009063</link><guid>https://blog.csdn.net/stallion5632/article/details/165009063</guid><author>stallion5632</author><pubDate>Sat, 12 Sep 2026 00:07:23 +0800</pubDate><description><![CDATA[串口的 `open()` 不是"无副作用的打开"，它会按驱动默认值把 DTR/RTS 两根控制线抬起来。板子若把其中一根接到 MCU 的复位脚，那么**你每打开一次串口，就按了一次复位键**——而且这个脉冲在 `open()` 返回之前就已发出，事后再拉低已经来不及。]]></description><category></category></item><item><title><![CDATA[Claude Code 状态栏脚本：一行显示模型、上下文占用、git 分支和当前目录]]></title><link>https://blog.csdn.net/stallion5632/article/details/164993390</link><guid>https://blog.csdn.net/stallion5632/article/details/164993390</guid><author>stallion5632</author><pubDate>Fri, 11 Sep 2026 14:43:30 +0800</pubDate><description><![CDATA[我的Claude Code 界面底部有一行状态栏，`claude-statusline.sh` 就是渲染它的脚本。它把当前会话的模型、上下文占用、git 分支和当前目录压成一行：]]></description><category></category></item><item><title><![CDATA[编译期 AOP：把横切不变式收进循环骨架]]></title><link>https://blog.csdn.net/stallion5632/article/details/164835803</link><guid>https://blog.csdn.net/stallion5632/article/details/164835803</guid><author>stallion5632</author><pubDate>Thu, 10 Sep 2026 13:28:35 +0800</pubDate><description><![CDATA[newosp 用 detail::BeatLoop(hb, pred, body) 这一个函数模板，把嵌入式线程循环里重复了 12 处的"每轮必须上报心跳"横切不变式收进固定骨架。打点（Beat）由骨架拥有，循环体无法跳过它，遗漏心跳从"运行期看门狗误报"变成"结构上不存在"。完整实现见 newosp 的 include/osp/platform.hpp。

]]></description><category></category></item><item><title><![CDATA[零堆零拷贝：事件只构造一次，全程只传指针不复制]]></title><link>https://blog.csdn.net/stallion5632/article/details/164818078</link><guid>https://blog.csdn.net/stallion5632/article/details/164818078</guid><author>stallion5632</author><pubDate>Thu, 10 Sep 2026 11:12:41 +0800</pubDate><description><![CDATA[coact 的零拷贝（zero-copy）不是 DMA 那种"外设直写用户缓冲区"，而是**事件对象在整条生产者到消费者的链路上只被构造一次，之后只传递 `Event*` 指针，既不复制事件结构，也不复制 payload，全程无堆分配**。]]></description><category></category></item><item><title><![CDATA[CRTP 原理：基类怎么“知道“它的子类]]></title><link>https://blog.csdn.net/stallion5632/article/details/164815930</link><guid>https://blog.csdn.net/stallion5632/article/details/164815930</guid><author>stallion5632</author><pubDate>Thu, 10 Sep 2026 10:51:19 +0800</pubDate><description><![CDATA[CRTP（Curiously Recurring Template Pattern，奇异递归模板模式）是 C++ 用模板实现编译期多态的经典手法。结论先行：**它让基类在编译期就知道子类是谁，从而直接调用子类方法、直接内联，不查虚表、不留 vptr。代价从运行期搬到了编译期。*]]></description><category></category></item><item><title><![CDATA[C++编译期多态：用模板替代虚函数]]></title><link>https://blog.csdn.net/stallion5632/article/details/164803749</link><guid>https://blog.csdn.net/stallion5632/article/details/164803749</guid><author>stallion5632</author><pubDate>Thu, 10 Sep 2026 09:04:54 +0800</pubDate><description><![CDATA[[coact](https://github.com/DeguiLiu/coact) 是面向 RT-Thread MCU 的 C++17 事件驱动框架，约束是 `-fno-exceptions -fno-rtti`、业务零堆、无锁。本文只谈框架层 `include/coact/` 的代码，梳理它用六种编译期手段替代运行期抽象的设计。结论先行：**这六种手段是一条主线，把"多形态行为"的差异从运行期搬到编译期；骨架 + 钩子（`Hsm<Context>`）处理流程差异，无状态策略（`EventPool<Pr]]></description><category></category></item><item><title><![CDATA[在 Nginx 里做 WebRTC 低延迟直播：从方案到落地]]></title><link>https://blog.csdn.net/stallion5632/article/details/164758605</link><guid>https://blog.csdn.net/stallion5632/article/details/164758605</guid><author>stallion5632</author><pubDate>Thu, 10 Sep 2026 00:34:59 +0800</pubDate><description><![CDATA[**不引入 SRS 这类独立 RTC 服务，在 nginx 框架内直接完成 RTMP→WebRTC 转换**，延迟从 RTMP/HLS 的 1~10 秒降到 0.5 秒以内；端到端实测首包约 560 ms，视频 H264 761 包 / 362 KB、音频 Opus 389 包 / 67 KB 全链路可达。]]></description><category></category></item><item><title><![CDATA[libev 事件循环：机制、移植与适用边界]]></title><link>https://blog.csdn.net/stallion5632/article/details/164593464</link><guid>https://blog.csdn.net/stallion5632/article/details/164593464</guid><author>stallion5632</author><pubDate>Tue, 08 Sep 2026 11:45:42 +0800</pubDate><description><![CDATA[> libev 是一个单线程的事件循环库（Reactor 模式）。使用时把要等待的事件——文件描述符可读、定时器到期、跨线程通知——注册进去，事件发生后由库调用回调函数处理。在嵌入式系统中，它可以作为一个 RT-Thread 线程运行，STM32F407 上已用 select 后端验证了 ev_io、ev_timer、ev_async 三种用法；它也可以承接中断处理中的耗时部分。是否引入 libev，取决于两点：数据来源能不能映射成文件描述符（fd），以及模块自身是否已经有一套完整的并发处理机制。]]></description><category></category></item><item><title><![CDATA[嵌入式系统中的硬件-软件缓存一致性设计]]></title><link>https://blog.csdn.net/stallion5632/article/details/164115833</link><guid>https://blog.csdn.net/stallion5632/article/details/164115833</guid><author>stallion5632</author><pubDate>Thu, 27 Aug 2026 13:00:56 +0800</pubDate><description><![CDATA[嵌入式系统里大量存在「同一事实存两份」的结构：软件参数缓存与硬件寄存器、DMA 布局与地址记录、显示几何与业务坐标。本文以三个典型故障场景为例，归纳这类一致性问题的共性根因，参照 Linux 内核 regmap/regcache 子系统的成熟设计，给出一套可落地的解决方案与分层防护体系；并借数据库事务的概念框架（脏标记即未提交事务、sync 即 commit），说明其 redo-only 补偿事务的本质。]]></description><category></category></item><item><title><![CDATA[DVP 图像输出原理]]></title><link>https://blog.csdn.net/stallion5632/article/details/164045426</link><guid>https://blog.csdn.net/stallion5632/article/details/164045426</guid><author>stallion5632</author><pubDate>Tue, 25 Aug 2026 09:47:21 +0800</pubDate><description><![CDATA[本文说明芯片如何通过 DVP 接口，将一帧图像逐像素发送到外接显示设备。读完可了解该过程的完整链路、涉及的硬件模块，以及当前实现状态。]]></description><category></category></item></channel></rss>