<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[TechIoT - 探索物联网与嵌入式系统]]></title><description><![CDATA[ 欢迎来到TechIoT的优快云博客！TechIoT专注于分享物联网技术及嵌入式系统计数]]></description><link>https://blog.youkuaiyun.com/sensorfeng</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sensorfeng]]></copyright><item><title><![CDATA[CAN多节点通信实战：基于系统RTC及系统时钟Tick的心跳风暴抑制方案]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/159891506</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/159891506</guid><author>sensorfeng</author><pubDate>Mon, 06 Apr 2026 17:59:14 +0800</pubDate><description><![CDATA[本文给出一套适用于多节点 CAN 系统的心跳风暴抑制方案。方案统一以系统 RTC 计算当前心跳周期起点 `periodStart`，以系统时钟 Tick 保证发送窗口精度。该方案同时支持主从通信和对等通信两种模式：主从通信下由 Master 提供系统 RTC，对等通信下由 1 号机周期发布系统 RTC。所有节点均根据本地同步后的 RTC 直接计算周期起点，再按节点号映射固定窗口发送心跳。]]></description><category></category></item><item><title><![CDATA[CAN 多节点通信设计方案]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/159561510</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/159561510</guid><author>sensorfeng</author><pubDate>Sat, 28 Mar 2026 06:04:36 +0800</pubDate><description><![CDATA[针对大规模设备节点接入场景，传统单总线 CAN 网络在节点数量增加后，容易面临总线负载升高、仲裁冲突加剧、心跳报文集中发送、低优先级节点饥饿以及主控侧分包数据交错接收等问题。为提升系统的扩展性、稳定性和工程可实施性，本文提出一种基于 CAN Hub 树状组网的多节点通信方案。]]></description><category></category></item><item><title><![CDATA[CAN 总线传输策略设计：基于 CAN ID 优先级竞争与本节点低优先级事件让步]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/159173625</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/159173625</guid><author>sensorfeng</author><pubDate>Tue, 17 Mar 2026 21:53:20 +0800</pubDate><description><![CDATA[本文提出了一种基于CAN总线优先级竞争与本地低优先级事件抑制的传输策略。方案采用两级队列结构（高优先级队列和低优先级队列），通过CAN ID原生仲裁机制确保高优先级事件的实时响应，同时引入T_yield参数对低优先级事件进行本地发送抑制。系统通过500ms观测窗口监测总线状态，采用三级状态机（Normal、Busy-Self和Storm-MultiNode）动态调整抑制强度。在32节点系统中，当检测到多节点低优先级事件风暴时，单节点发送速率可降至理论最大值的1/32。该策略优先保障高优先级事件的响应时间，同]]></description><category></category></item><item><title><![CDATA[Ubuntu 系统掉电导致分区损坏无法启动修复方案]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/153729629</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/153729629</guid><author>sensorfeng</author><pubDate>Wed, 22 Oct 2025 12:19:17 +0800</pubDate><description><![CDATA[摘要：本文介绍嵌入式Ubuntu系统因掉电导致ext4分区损坏无法启动的修复方案。通过修改/etc/fstab添加nofail参数防止启动阻塞，并创建自动fsck服务在开机时检测修复损坏分区。方案包含详细实施步骤：1）配置fstab容错参数；2）部署自动修复脚本和systemd服务；3）提供模拟损坏的测试方法（使用dd破坏超级块）。适用于RK3568、树莓派等嵌入式设备，确保数据分区损坏时系统仍可启动并自动修复，同时包含验证方法确认修复机制有效性。]]></description><category></category></item><item><title><![CDATA[如何使用 UML 设计嵌入式系统]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/153105480</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/153105480</guid><author>sensorfeng</author><pubDate>Sun, 12 Oct 2025 08:24:00 +0800</pubDate><description><![CDATA[在嵌入式系统设计中，UML（统一建模语言）不仅是软件架构建模工具，更是系统分析与设计的可视化语言。  
由于嵌入式系统受设计中，设计应遵循“**先外后内，先整体再局部**”原则：  先明确系统拓扑与模块部署，
再深入任务逻辑与通信细节。本文通过实际 UML 示例，分享嵌入式系统的建模思路。  
]]></description><category></category></item><item><title><![CDATA[基于表驱动的状态机设计与实现-state_machine]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/152232212</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/152232212</guid><author>sensorfeng</author><pubDate>Sun, 28 Sep 2025 23:03:40 +0800</pubDate><description><![CDATA[本文介绍了一个轻量级、可移植的 表驱动状态机框架 — embeded_state_machine。
通过迁移表集中描述状态转换规则，结合通用执行器实现状态跳转，避免了传统 switch-case 的冗余和难维护问题。]]></description><category></category></item><item><title><![CDATA[CAN 总线多设备组网通信，如何同步事件？]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/142996129</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/142996129</guid><author>sensorfeng</author><pubDate>Thu, 17 Oct 2024 08:04:49 +0800</pubDate><description><![CDATA[在 CAN 总线多设备组网通信中，需要将一个事件同步到所有设备时，通常有两种方式：广播和逐一发送。广播方式通过一次性消息传输，实现高效和快速同步，但缺乏接收确认，可能导致不可靠的传输；逐一发送方式通过逐个发送消息确保每个设备可靠接收，但效率较低且逻辑实现复杂。]]></description><category></category></item><item><title><![CDATA[CAN 总线通信，如何实现应用层的应答机制]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/142898922</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/142898922</guid><author>sensorfeng</author><pubDate>Sun, 13 Oct 2024 15:22:51 +0800</pubDate><description><![CDATA[在 CAN 总线多节点组网中，实现应用层的应答机制是确保数据可靠传输的关键环节。通过使用。]]></description><category></category></item><item><title><![CDATA[CAN总线通信是否需要增加应用层应答机制？]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/142867303</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/142867303</guid><author>sensorfeng</author><pubDate>Sat, 12 Oct 2024 06:00:29 +0800</pubDate><description><![CDATA[在某些情况下，虽然 CAN 总线在物理层面保证了数据的传输，但是并不能确保应用层已经成功处理了这些数据。例如，如果接收节点短暂的通信故障或系统繁忙，导致消息丢失。这时候，通过应用层应答机制，发送节点没有收到应答则重发消息，确保消息被接收且被正确处理。因此，通过应用层的应答机制，发送方可以确保每个帧都被正确接收并按顺序重组，避免消息丢失或帧错乱。对于一些对实时性要求极高的应用，应用层的应答与重发机制可能会导致响应时间的增加。应用层应答机制并不是所有场景下都必须实现，它更多的是取决于应用的具体需求。]]></description><category></category></item><item><title><![CDATA[UCOS-III 任务堆栈与中断堆栈切换过程]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/140834245</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/140834245</guid><author>sensorfeng</author><pubDate>Wed, 31 Jul 2024 22:51:25 +0800</pubDate><description><![CDATA[UCOS-III 堆栈切换过程]]></description><category></category></item><item><title><![CDATA[UCOS-III 主要全局变量及数据结构详解]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/140811945</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/140811945</guid><author>sensorfeng</author><pubDate>Wed, 31 Jul 2024 06:32:49 +0800</pubDate><description><![CDATA[UCOS-III 主要全局变量及数据接口详解]]></description><category></category></item><item><title><![CDATA[UCOS-III 互斥锁接口详解]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/140786001</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/140786001</guid><author>sensorfeng</author><pubDate>Tue, 30 Jul 2024 05:48:00 +0800</pubDate><description><![CDATA[互斥锁接口详解，递归锁定， 优先级继承]]></description><category></category></item><item><title><![CDATA[UCOS-III 系统TICK接口详解]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/140745630</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/140745630</guid><author>sensorfeng</author><pubDate>Sun, 28 Jul 2024 09:04:06 +0800</pubDate><description><![CDATA[COS-III的Tick管理和阻塞接口超时机制提供了一种高效且可靠的方法来管理实时系统中的任务调度和超时处理。通过合理配置和使用这些机制，可以提高系统的实时性和稳定性，从而更好地满足各种实时应用的需求]]></description><category></category></item><item><title><![CDATA[UCOS-III 任务调度锁定/解锁接口OSSchedLock/Unlock详解]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/140726514</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/140726514</guid><author>sensorfeng</author><pubDate>Fri, 26 Jul 2024 23:55:48 +0800</pubDate><description><![CDATA[在实时操作系统中，关闭和打开任务调度是确保系统执行关键代码时保持原子性和数据一致性的重要手段。通过正确使用 OSSchedLock 和 OSSchedUnlock 接口，我们可以有效地控制任务调度，实现高效、稳定的实时系统]]></description><category></category></item><item><title><![CDATA[UCOSIII 时间片轮调度接口OS_SchedRoundRobin详解]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/140678618</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/140678618</guid><author>sensorfeng</author><pubDate>Thu, 25 Jul 2024 08:02:28 +0800</pubDate><description><![CDATA[时间片轮调度配置使用
时间片轮调度是如何实现的？
]]></description><category></category></item><item><title><![CDATA[UCOS-III 系统启动接口OSStart详解]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/140651597</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/140651597</guid><author>sensorfeng</author><pubDate>Wed, 24 Jul 2024 21:31:02 +0800</pubDate><description><![CDATA[UCOS内核启动流程
第一个就绪任务是如何启动的?
为什么设置PendSV异常优先级为最低优先级？]]></description><category></category></item><item><title><![CDATA[UCOS-III 任务调度接口(OSSched)详解]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/140646525</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/140646525</guid><author>sensorfeng</author><pubDate>Tue, 23 Jul 2024 21:43:18 +0800</pubDate><description><![CDATA[OSSched函数用于检查并确定是否有更高优先级的任务需要运行。该函数通常在任务级别代码中调用，而不是在中断服务程序（ISR）中调用。中断服务程序的调度由OSIntExit()函数处理。OSSched函数主要完成以下任务：

检查操作系统运行状态。
检查中断嵌套计数器。
检查调度器是否被锁定。
获取最高优先级任务。
执行任务级别的上下文切换。]]></description><category></category></item><item><title><![CDATA[UCOSIII 系统初始化接口(OSInit)详解]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/140561507</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/140561507</guid><author>sensorfeng</author><pubDate>Tue, 23 Jul 2024 06:53:02 +0800</pubDate><description><![CDATA[初始化中断堆栈
清除和初始化系统计数器和指针
初始化优先级位图表
初始化各个管理模块
初始化任务管理器
初始化空闲任务
初始化时钟节拍管理器
初始化统计任务
初始化定时器管理器
调用用户自定义的初始化钩子函数]]></description><category></category></item><item><title><![CDATA[UCOS-III静态内存分配与FreeRTOS动态内存分配]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/140565662</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/140565662</guid><author>sensorfeng</author><pubDate>Sat, 20 Jul 2024 10:02:26 +0800</pubDate><description><![CDATA[UCOS-III和FreeRTOS在内存管理上的策略各有优缺点。UCOS-III采用静态内存分配，系统的稳定性和确定性高，适合对实时性要求高且内存需求固定的应用场景。而FreeRTOS采用动态内存分配，内存分配灵活性高及内存利用率高，适合内存需求动态变化的应用场景。应该要根据具体应用场景，选择合适不同的内存管理策略，可以优化系统性能和资源利用率]]></description><category></category></item><item><title><![CDATA[UCOSIII 中断管理接口详解]]></title><link>https://blog.youkuaiyun.com/sensorfeng/article/details/140534482</link><guid>https://blog.youkuaiyun.com/sensorfeng/article/details/140534482</guid><author>sensorfeng</author><pubDate>Fri, 19 Jul 2024 06:02:55 +0800</pubDate><description><![CDATA[在实时操作系统中，中断处理是一个非常重要的环节。理解和掌握中断处理流程对提高系统实时性和稳定性至关重要]]></description><category></category></item></channel></rss>