<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom">
  <title>li3p</title>
  <id>https://li3p.com</id>
  <updated></updated>
  <subtitle>The palest ink is better than the best memory.</subtitle>
  <link href="https://li3p.com"></link>
  <entry>
    <title>树莓派基于DTS的Thermal管理实现指南</title>
    <updated>2025-08-21T14:41:34+08:00</updated>
    <id>tag:li3p.com,2025-08-21:/articles/2025/08/21/1755758494765</id>
    <link href="https://li3p.com/articles/2025/08/21/1755758494765" rel="alternate"></link>
    <summary type="html">1.项目初衷与目标 1.1 背景本项目旨在为 RaspberryPiCM4/Seeed 路由器设备实现完全基于 DeviceTreeSource(DTS)的 PWM 风扇温控系统。相比于用户空间脚本方案，DTS 方案具有以下优势：内核级别的温度控制：响应速度快，延迟低系统集成度高：与 Linuxthermal 框架完美集成配置简洁：一次配置，系统自动管理硬件抽象：标准化的 hwmon 和 thermal 接口 1.2 技术目标 PW</summary>
    <author>
      <name>li3p</name>
    </author>
  </entry>
  <entry>
    <title>Go 语言net/http 包使用模式</title>
    <updated>2024-04-22T20:16:46+08:00</updated>
    <id>tag:li3p.com,2024-04-22:/articles/2024/04/22/1713788206062</id>
    <link href="https://li3p.com/articles/2024/04/22/1713788206062" rel="alternate"></link>
    <summary type="html">译注:这篇文章的内容非常基础，也非常容易理解。原文地址，感觉是最能清晰的讲述了 net/http 包的用法的一篇，故翻译一下共享之。一切的基础：ServeMux 和 HandlerGo 语言中处理 HTTP 请求主要跟两个东西相关：ServeMux 和 Handler。ServrMux 本质上是一个 HTTP 请求路由器（或者叫多路复用器，Multiplexor）。它把收到的请求与一组预先定义的 URL 路径列表做对比，然后在</summary>
    <author>
      <name>li3p</name>
    </author>
  </entry>
  <entry>
    <title>为树莓派 PICO 实现一个串行加载程序</title>
    <updated>2023-06-20T17:20:20+08:00</updated>
    <id>tag:li3p.com,2023-06-20:/articles/2023/06/20/1687252820809</id>
    <link href="https://li3p.com/articles/2023/06/20/1687252820809" rel="alternate"></link>
    <summary type="html">原文地址：https://blog.usedbytes.com/2021/12/pico-serial-bootloader 作者想实现通过 ESP32 的 WIFI，实现一个 Wifi-UART 给它的树莓派 PICO 来更新固件。什么是 bootloader？Bootloader，引导加载程序是一个程序，它的用处是加载（和运行）其他程序。它们作为引导时的第一段运行的代码，去加载要后续要运行的代码。引导加载程序通常</summary>
    <author>
      <name>li3p</name>
    </author>
  </entry>
  <entry>
    <title>2.2 UML状态机速成教程之二：基本概念</title>
    <updated>2021-06-28T23:12:13+08:00</updated>
    <id>tag:li3p.com,2021-06-28:/articles/2021/06/28/1624893133979</id>
    <link href="https://li3p.com/articles/2021/06/28/1624893133979" rel="alternate"></link>
    <summary type="html">2.2 状态机基本概念通过对事件-动作范式（Event-ActionParadigm）进行扩展，可以明确包含对执行上下文（ExecutionContext）的依赖。事实证明，大多数事件驱动系统的行为可以被划分为少量的大块，在每个单独的块内部，事件响应确实只依赖于当前的事件类型，而不依赖于过去的事件序列（也就是上下文）。换句话说，事件-行为范式仍然适用，只不过被局部应用在了每个单独的大块内部。基于这一思</summary>
    <author>
      <name>li3p</name>
    </author>
  </entry>
  <entry>
    <title>2.1 UML状态机速成教程之一</title>
    <updated>2021-05-07T23:23:00+08:00</updated>
    <id>tag:li3p.com,2021-05-07:/uml-crash-course-1</id>
    <link href="https://li3p.com/uml-crash-course-1" rel="alternate"></link>
    <summary type="html">UML 状态机速成教程真正对我们有帮助的地方是优化 IF-THEN-ELSE 结构。大多数程序一开始的结构都相当好。可随着错误的发现和特性的添加，IF 和 ELSE 也被不断地加进来，一直到没人真正了解数据是如何流经一个函数的。漂亮的打印能帮上些忙，但它无法减少一个嵌套 15 层的 IF 语句的复杂性。—JackGanssle,“BreakPoints,”ESPMagazine,January1991 传统的顺序式程序，</summary>
    <author>
      <name>li3p</name>
    </author>
  </entry>
  <entry>
    <title>C/C++状态机实用技术-介绍</title>
    <updated>2021-04-16T12:30:20+08:00</updated>
    <id>tag:li3p.com,2021-04-16:/piscc-0-introduction</id>
    <link href="https://li3p.com/piscc-0-introduction" rel="alternate"></link>
    <summary type="html">介绍几乎所有的计算机系统，特别是嵌入式系统，都是事件驱动（Event-Driven）的，这意味着它们持续在等待一些外部或内部事件的发生，像时钟节拍、数据包到达、按钮按下或者鼠标点击等等。在识别到事件后，这类系统会通过执行适当的计算来做出响应，这些计算可能包括操纵硬件或产生&#34;软&#34;事件来触发其他内部软件组件。(这就是为什么事件驱动系统（Event-DrivenSystem）又被称为反应式系统（React</summary>
    <author>
      <name>li3p</name>
    </author>
  </entry>
</feed>