<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0"><channel><title>SouL87-学不完</title><link>https://blog.soul87.top/</link><atom:link href="https://blog.soul87.top/rss.xml" rel="self" type="application/rss+xml"/><description>SouL87-学不完</description><generator>Halo v2.24.2</generator><language>zh-cn</language><image><url>https://blog.soul87.top/upload/panda%20(Phone).jpg</url><title>SouL87-学不完</title><link>https://blog.soul87.top/</link></image><lastBuildDate>Fri, 5 Jun 2026 23:01:53 GMT</lastBuildDate><item><title><![CDATA[终极冷备份方案：飞牛OS 硬盘“离线”休眠实战]]></title><link>https://blog.soul87.top/archives/the-ultimate-cold-backup-solution-fnos-hard-disk-kernellevel-offline-hibernation-practice-z1pblcy</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=%E7%BB%88%E6%9E%81%E5%86%B7%E5%A4%87%E4%BB%BD%E6%96%B9%E6%A1%88%EF%BC%9A%E9%A3%9E%E7%89%9BOS%20%E7%A1%AC%E7%9B%98%E2%80%9C%E7%A6%BB%E7%BA%BF%E2%80%9D%E4%BC%91%E7%9C%A0%E5%AE%9E%E6%88%98&amp;url=/archives/the-ultimate-cold-backup-solution-fnos-hard-disk-kernellevel-offline-hibernation-practice-z1pblcy" width="1" height="1" alt="" style="opacity:0;">背景： FNos 目前对硬盘休眠的控制和逻辑不够完善。对于备份盘这种低频使用的硬件，系统后台进程（App/Web 服务等）即便在闲置状态下，也有极率触发意外唤醒，导致磁头频繁起旋。 我起初尝试通过定时卸载挂载点（Unmount）来规避，但测试结果显示，这种方式在 FNos 环境下会被系统机制强制唤醒]]></description><guid isPermaLink="false">/archives/the-ultimate-cold-backup-solution-fnos-hard-disk-kernellevel-offline-hibernation-practice-z1pblcy</guid><dc:creator>SouL87</dc:creator><category>NAS</category><pubDate>Mon, 27 Apr 2026 01:18:16 GMT</pubDate></item><item><title><![CDATA[飞牛OS虚拟机硬盘直通配置指南]]></title><link>https://blog.soul87.top/archives/feiniu-os-virtual-machine-single-hard-disk-passthrough-z10a1xo</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=%E9%A3%9E%E7%89%9BOS%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%A1%AC%E7%9B%98%E7%9B%B4%E9%80%9A%E9%85%8D%E7%BD%AE%E6%8C%87%E5%8D%97&amp;url=/archives/feiniu-os-virtual-machine-single-hard-disk-passthrough-z10a1xo" width="1" height="1" alt="" style="opacity:0;">飞牛OS虚拟机单硬盘直通 适用场景：需要在不关闭飞牛OS的情况下，对硬盘进行慢扫检测或其他维护操作。 📋 目录 前置条件 操作步骤 常见问题 注意事项 前置条件 项目]]></description><guid isPermaLink="false">/archives/feiniu-os-virtual-machine-single-hard-disk-passthrough-z10a1xo</guid><dc:creator>SouL87</dc:creator><category>NAS</category><pubDate>Tue, 7 Apr 2026 05:12:51 GMT</pubDate></item><item><title><![CDATA[飞牛OS中安全缩小Ubuntu虚拟机qcow2磁盘：GParted与virt-resize实战]]></title><link>https://blog.soul87.top/archives/feiniu-os-virtual-machine-reduces-hard-disk-space-4tpay</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=%E9%A3%9E%E7%89%9BOS%E4%B8%AD%E5%AE%89%E5%85%A8%E7%BC%A9%E5%B0%8FUbuntu%E8%99%9A%E6%8B%9F%E6%9C%BAqcow2%E7%A3%81%E7%9B%98%EF%BC%9AGParted%E4%B8%8Evirt-resize%E5%AE%9E%E6%88%98&amp;url=/archives/feiniu-os-virtual-machine-reduces-hard-disk-space-4tpay" width="1" height="1" alt="" style="opacity:0;">本文记录了在飞牛 OS（FNOS）中，将一台 Ubuntu 22 虚拟机的 qcow2 虚拟磁盘从 800G 安全缩小到 120G 的过程。由于 FNOS 只支持扩容、不支持直接缩容，直接用 qemu-img resize --shrink 虽然会显示成功，但很可能造成分区边界异常、引导失败，因此不推荐。]]></description><guid isPermaLink="false">/archives/feiniu-os-virtual-machine-reduces-hard-disk-space-4tpay</guid><dc:creator>SouL87</dc:creator><category>NAS</category><pubDate>Tue, 24 Mar 2026 15:38:00 GMT</pubDate></item><item><title><![CDATA[RTOS内存管理 N]]></title><link>https://blog.soul87.top/archives/rtos-memory-management-n-zkbl1l</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=RTOS%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%20N&amp;url=/archives/rtos-memory-management-n-zkbl1l" width="1" height="1" alt="" style="opacity:0;">FreeRTOS内存管理 一、FreeRTOS内存管理简介 1、FreeRTOS内存管理介绍 答：在使用 FreeRTOS 创建任务、队列、信号量等对象的时，一般都提供了两种方法： 动态方法创建：自动地从 FreeRTOS 管理的内存堆中申请创建对象所需的内存，并且在对象删除后，可将这块内存释放回F]]></description><guid isPermaLink="false">/archives/rtos-memory-management-n-zkbl1l</guid><dc:creator>SouL87</dc:creator><category>FreeRTOS</category><pubDate>Thu, 19 Mar 2026 15:35:53 GMT</pubDate></item><item><title><![CDATA[RTOS低功耗模式 N]]></title><link>https://blog.soul87.top/archives/rtos-low-power-mode-n-z12adxq</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=RTOS%E4%BD%8E%E5%8A%9F%E8%80%97%E6%A8%A1%E5%BC%8F%20N&amp;url=/archives/rtos-low-power-mode-n-z12adxq" width="1" height="1" alt="" style="opacity:0;">Tickless低功耗模式 一、低功耗模式简介 1、低功耗介绍 答：很多应用场合对于功耗的要求很严格，比如可穿戴低功耗产品、物联网低功耗产品等；一般MCU都有相应的低功耗模式，裸机开发时可以使用MCU的低功耗模式。FreeRTOS也提供了一个叫Tickless的低功耗模式，方便带FreeRTOS操作]]></description><guid isPermaLink="false">/archives/rtos-low-power-mode-n-z12adxq</guid><dc:creator>SouL87</dc:creator><category>FreeRTOS</category><pubDate>Thu, 19 Mar 2026 15:35:36 GMT</pubDate></item><item><title><![CDATA[RTOS软件定时器 N]]></title><link>https://blog.soul87.top/archives/rtos-software-timer-n-z8wjvm</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=RTOS%E8%BD%AF%E4%BB%B6%E5%AE%9A%E6%97%B6%E5%99%A8%20N&amp;url=/archives/rtos-software-timer-n-z8wjvm" width="1" height="1" alt="" style="opacity:0;">FreeRTOS软件定时器 一、软件定时器的简介 1、定时器介绍 答： 定时器：从指定的时刻开始，经过一个指定时间，然后触发一个超时事件，用户可以自定义定时器周期。 硬件定时器：芯片本身自带的定时器模块，硬件定时器的精度一般很高，每次在定时时间到达之后就会自动触发一个中断，用户在中断服务函数中处理信]]></description><guid isPermaLink="false">/archives/rtos-software-timer-n-z8wjvm</guid><dc:creator>SouL87</dc:creator><category>FreeRTOS</category><pubDate>Thu, 19 Mar 2026 15:35:22 GMT</pubDate></item><item><title><![CDATA[RTOS任务通知 N]]></title><link>https://blog.soul87.top/archives/rtos-task-notification-n-1rvf6z</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=RTOS%E4%BB%BB%E5%8A%A1%E9%80%9A%E7%9F%A5%20N&amp;url=/archives/rtos-task-notification-n-1rvf6z" width="1" height="1" alt="" style="opacity:0;">FreeRTOS任务通知 一、任务通知的简介 1、任务通知介绍 答：任务通知：用来通知任务的，任务控制块中的结构体成员变量ulNotifiedValue就是这个通知值。 使用队列、信号量、事件标志组时都需要另外创建一个结构体，通过中间的结构体进行间接通信。 使用任务通知时，任务结构体TCB中就包含了]]></description><guid isPermaLink="false">/archives/rtos-task-notification-n-1rvf6z</guid><dc:creator>SouL87</dc:creator><category>FreeRTOS</category><pubDate>Thu, 19 Mar 2026 15:35:11 GMT</pubDate></item><item><title><![CDATA[RTOS事件标志组 N]]></title><link>https://blog.soul87.top/archives/rtos-event-flag-group-n-zd9nko</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=RTOS%E4%BA%8B%E4%BB%B6%E6%A0%87%E5%BF%97%E7%BB%84%20N&amp;url=/archives/rtos-event-flag-group-n-zd9nko" width="1" height="1" alt="" style="opacity:0;">一、事件标志组 事件标志组 事件标志位：用一个位，来表示事件是否发生 事件标志组是一组事件标志位的集合， 可以简单的理解事件标志组，就是一个整数。 事件标志组的特点 事件标志组的特点： 它的每一个位表示一个事件（高8位不算） 每一位事件的含义，由用户自己决定，如：bit0表示按键是否按下，bit1表]]></description><guid isPermaLink="false">/archives/rtos-event-flag-group-n-zd9nko</guid><dc:creator>SouL87</dc:creator><category>FreeRTOS</category><pubDate>Thu, 19 Mar 2026 15:35:01 GMT</pubDate></item><item><title><![CDATA[Keil v5 无法自动reset]]></title><link>https://blog.soul87.top/archives/keil-v5-cannot-reset-automatically-xolzc</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=Keil%20v5%20%E6%97%A0%E6%B3%95%E8%87%AA%E5%8A%A8reset&amp;url=/archives/keil-v5-cannot-reset-automatically-xolzc" width="1" height="1" alt="" style="opacity:0;">stm32 烧录的程序,必须按下reset之后才能运行 解决方法： 魔法棒-debug-Setting-勾选reset and run 魔法棒-debug-Setting-Pack-取消Enable 大家都知道的一个选项是勾选reset and run 但是不知道Pack-取消Enable 这个困扰]]></description><guid isPermaLink="false">/archives/keil-v5-cannot-reset-automatically-xolzc</guid><dc:creator>SouL87</dc:creator><category>IDE</category><pubDate>Thu, 19 Mar 2026 06:45:29 GMT</pubDate></item><item><title><![CDATA[Hello Halo]]></title><link>https://blog.soul87.top/archives/hello-halo</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=Hello%20Halo&amp;url=/archives/hello-halo" width="1" height="1" alt="" style="opacity:0;">如果你看到了这一篇文章，那么证明你已经安装成功了，感谢使用 Halo 进行创作，希望能够使用愉快。]]></description><guid isPermaLink="false">/archives/hello-halo</guid><dc:creator>SouL87</dc:creator><category>默认分类</category><pubDate>Wed, 25 Feb 2026 12:34:59 GMT</pubDate></item><item><title><![CDATA[飞牛os部署wg-easy实现远程组网]]></title><link>https://blog.soul87.top/archives/feiniu-os-deploys-wgeasy-to-realize-remote-networking-7mtpp</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=%E9%A3%9E%E7%89%9Bos%E9%83%A8%E7%BD%B2wg-easy%E5%AE%9E%E7%8E%B0%E8%BF%9C%E7%A8%8B%E7%BB%84%E7%BD%91&amp;url=/archives/feiniu-os-deploys-wgeasy-to-realize-remote-networking-7mtpp" width="1" height="1" alt="" style="opacity:0;">本文介绍了在飞牛 OS 上通过 Docker Compose 部署 wg-easy，实现基于 WireGuard 的远程组网。首先需要使用官方镜像生成 WireGuard 管理界面的 `PASSWORD_HASH`，并注意在 compose 环境变量中将哈希里的 `$` 转义为 `$$`。随后编写 `docker-compose` 配置，设置域名、密码哈希、默认地址段、DNS、MTU、允许访问的网段、保活时间及流量统计等参数，并挂载 WireGuard 配置目录，开放 51820/UDP 和 51821/TCP 端口，赋予容器必要权限。部署完成后，还需在路由器中将 UDP 51820 端口转发到 NAS。最后登录 wg-easy 的 Web 界面创建客户端，下载配置文件并导入 PC 端 WireGuard 客户端，即可完成远程组网。]]></description><guid isPermaLink="false">/archives/feiniu-os-deploys-wgeasy-to-realize-remote-networking-7mtpp</guid><dc:creator>SouL87</dc:creator><category>NAS</category><pubDate>Fri, 6 Feb 2026 08:47:00 GMT</pubDate></item><item><title><![CDATA[C基础知识]]></title><link>https://blog.soul87.top/archives/-5gfvo</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=C%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86&amp;url=/archives/-5gfvo" width="1" height="1" alt="" style="opacity:0;">内存分区 内存栈区： 存放局部变量名，自动释放； 内存堆区： 存放new或者malloc出来的对象，手动释放或系统释放； 全局区(静态区)：data sagment 全局变量和静态变量的存储区域是在一起的，程序结束后由系统释放。 常量区：常量字符串就是放在这里的。 程序结束后由系统释放 代码区：二进]]></description><guid isPermaLink="false">/archives/-5gfvo</guid><dc:creator>SouL87</dc:creator><category>C</category><pubDate>Thu, 14 Mar 2024 13:49:35 GMT</pubDate></item><item><title><![CDATA[STM32基础知识]]></title><link>https://blog.soul87.top/archives/basic-knowledge-abx1e</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=STM32%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86&amp;url=/archives/basic-knowledge-abx1e" width="1" height="1" alt="" style="opacity:0;">本文概述了 STM32 的若干基础知识。首先说明计算机中负数以补码形式存储，补码等于反码加 1。随后介绍 GPIO 的 8 种工作模式，包括输入浮空、输入上拉、输入下拉、模拟、开漏输出、推挽输出、开漏复用和推挽复用，并简述其典型用途，如 IIC 常用开漏，SPI 常用推挽复用。 在通信部分，文章对串行与并行通信、同步与异步通信进行了对比，指出串行通信占用 IO 少、距离长、成本低，而并行通信速率高但抗干扰较弱。接着总结了 UART、1-Wire、IIC、SPI 的引脚组成、同步方式和传输方向，并重点比较了 SPI 与 IIC 在通信方式、接口、拓扑、从机选择、速率和数据格式上的差异。 文章还梳理了常见电平标准，包括 RS-232、CMOS、TTL 和 RS485，并比较了 TTL、RS232、RS485 在通信方式、信号线、电平标准、拓扑、距离、速率和抗干扰能力方面的特点。最后分别介绍 I2C、SPI、RS485 的基本原理与应用场景，强调 RS485 采用差分传输、抗干扰能力强，常用于工业控制，并引出 Modbus 协议及其基于串口和 EIA-485 物理层的应用背景。]]></description><guid isPermaLink="false">/archives/basic-knowledge-abx1e</guid><dc:creator>SouL87</dc:creator><category>STM32</category><category>嵌入式</category><pubDate>Tue, 12 Mar 2024 12:40:28 GMT</pubDate></item><item><title><![CDATA[RTOS信号量]]></title><link>https://blog.soul87.top/archives/rtos-semaphore-zn4mwa</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=RTOS%E4%BF%A1%E5%8F%B7%E9%87%8F&amp;url=/archives/rtos-semaphore-zn4mwa" width="1" height="1" alt="" style="opacity:0;">信号量 什么是信号量 信号量是一种解决同步问题的机制，可以实现对共享资源的有序访问 信号量简介 当计数值大于0，表示有信号量资源。 当释放信号量，信号量计数值(资源数)加一。 当获取信号量，信号量计数值(资源数)减一。 信号量的计数值都是有限的：限定最大值。 如果最大值被限定为1，那么它就是二值信号]]></description><guid isPermaLink="false">/archives/rtos-semaphore-zn4mwa</guid><dc:creator>SouL87</dc:creator><category>FreeRTOS</category><pubDate>Thu, 7 Mar 2024 06:30:26 GMT</pubDate></item><item><title><![CDATA[RTOS消息队列]]></title><link>https://blog.soul87.top/archives/rtos-message-queue-z1fvld2</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=RTOS%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97&amp;url=/archives/rtos-message-queue-z1fvld2" width="1" height="1" alt="" style="opacity:0;">队列 FreeRTOS中的消息队列是什么 答：消息队列是任务到任务、任务到中断、中断到任务数据交流的一种机制(消息传递)。 消息队列和全局变量的区别 类似全局变量？假设有一个全局变量a = 0，现有两个任务都在写这个变量a 全局变量的弊端：数据无保护，导致数据不安全，当多个任务同时对该变量操作时，数]]></description><guid isPermaLink="false">/archives/rtos-message-queue-z1fvld2</guid><dc:creator>SouL87</dc:creator><category>FreeRTOS</category><pubDate>Thu, 7 Mar 2024 06:30:16 GMT</pubDate></item><item><title><![CDATA[RTOS任务 状态&运行时间查询]]></title><link>https://blog.soul87.top/archives/rtos-task-status-z13jtwb</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=RTOS%E4%BB%BB%E5%8A%A1%20%E7%8A%B6%E6%80%81%26%E8%BF%90%E8%A1%8C%E6%97%B6%E9%97%B4%E6%9F%A5%E8%AF%A2&amp;url=/archives/rtos-task-status-z13jtwb" width="1" height="1" alt="" style="opacity:0;">FreeRTOS任务相关API函数 函数 描述 uxTaskPriorityGet() 获取任务优先级 vTaskPrioritySet() 设置任务优先级 uxTaskGetNumberOfTasks() 获取系统中任务的数量 uxTaskGetSystemState() 获取所有任务状态信息 v]]></description><guid isPermaLink="false">/archives/rtos-task-status-z13jtwb</guid><dc:creator>SouL87</dc:creator><category>FreeRTOS</category><pubDate>Tue, 5 Mar 2024 12:40:39 GMT</pubDate></item><item><title><![CDATA[RTOS任务 状态&运行时间查询]]></title><link>https://blog.soul87.top/archives/rtos-task-status-z13jtwb</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=RTOS%E4%BB%BB%E5%8A%A1%20%E7%8A%B6%E6%80%81%26%E8%BF%90%E8%A1%8C%E6%97%B6%E9%97%B4%E6%9F%A5%E8%AF%A2&amp;url=/archives/rtos-task-status-z13jtwb" width="1" height="1" alt="" style="opacity:0;">RTOS任务 状态&amp;运行时间查询 FreeRTOS任务相关API函数 函数 描述 uxTaskPriorityGet() 获取任务优先级 vTaskPrioritySet() 设置任务优先级 uxTaskGetNumberOfTasks() 获取系统中任务的数量 uxTaskGetSystemSta]]></description><guid isPermaLink="false">/archives/rtos-task-status-z13jtwb</guid><dc:creator>SouL87</dc:creator><category>FreeRTOS</category><pubDate>Tue, 5 Mar 2024 12:40:39 GMT</pubDate></item><item><title><![CDATA[RTOS时间管理-延时函数]]></title><link>https://blog.soul87.top/archives/rtos-time-managementdelay-function-1vxlkm</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=RTOS%E6%97%B6%E9%97%B4%E7%AE%A1%E7%90%86-%E5%BB%B6%E6%97%B6%E5%87%BD%E6%95%B0&amp;url=/archives/rtos-time-managementdelay-function-1vxlkm" width="1" height="1" alt="" style="opacity:0;">‍ 延时函数 FreeRTOS的延时函数 答：FreeRTOS有两种延时函数：相对延时函数 和 绝对延时函数。 函数 描述 vTaskDelay() 相对延时 xTaskDelayUntil() 绝对延时 相对延时：指每次延时都是从执行函数vTaskDelay()开始，直到延时指定的时间结束 绝对延]]></description><guid isPermaLink="false">/archives/rtos-time-managementdelay-function-1vxlkm</guid><dc:creator>SouL87</dc:creator><category>FreeRTOS</category><pubDate>Tue, 5 Mar 2024 12:40:00 GMT</pubDate></item><item><title><![CDATA[RTOS时间片调度]]></title><link>https://blog.soul87.top/archives/rtos-time-slice-scheduling-2ia4qa</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=RTOS%E6%97%B6%E9%97%B4%E7%89%87%E8%B0%83%E5%BA%A6&amp;url=/archives/rtos-time-slice-scheduling-2ia4qa" width="1" height="1" alt="" style="opacity:0;">时间片调度 同等优先级任务轮流地享有相同的 CPU 时间(可设置)， 叫 时间片 ，在FreeRTOS中，一个时间片就等于SysTick 中断周期 运行条件： 创建三个任务：Task1、Task2、Task3 Task1、Task2、Task3的优先级均为1；即3个任务同等优先级 运行过程如下：]]></description><guid isPermaLink="false">/archives/rtos-time-slice-scheduling-2ia4qa</guid><dc:creator>SouL87</dc:creator><category>FreeRTOS</category><pubDate>Tue, 5 Mar 2024 12:39:55 GMT</pubDate></item><item><title><![CDATA[RTOS时间片调度]]></title><link>https://blog.soul87.top/archives/rtos-time-slice-scheduling-2ia4qa</link><description><![CDATA[<img src="https://blog.soul87.top/plugins/feed/assets/telemetry.gif?title=RTOS%E6%97%B6%E9%97%B4%E7%89%87%E8%B0%83%E5%BA%A6&amp;url=/archives/rtos-time-slice-scheduling-2ia4qa" width="1" height="1" alt="" style="opacity:0;">RTOS时间片调度 时间片调度 同等优先级任务轮流地享有相同的 CPU 时间(可设置)， 叫 时间片 ，在FreeRTOS中，一个时间片就等于SysTick 中断周期 运行条件： 创建三个任务：Task1、Task2、Task3 Task1、Task2、Task3的优先级均为1；即3个任务同等优先级]]></description><guid isPermaLink="false">/archives/rtos-time-slice-scheduling-2ia4qa</guid><dc:creator>SouL87</dc:creator><category>FreeRTOS</category><pubDate>Tue, 5 Mar 2024 12:39:55 GMT</pubDate></item></channel></rss>