- 博客(47)
- 收藏
- 关注
原创 Ubuntu 系统掉电导致分区损坏无法启动修复方案
摘要:本文介绍嵌入式Ubuntu系统因掉电导致ext4分区损坏无法启动的修复方案。通过修改/etc/fstab添加nofail参数防止启动阻塞,并创建自动fsck服务在开机时检测修复损坏分区。方案包含详细实施步骤:1)配置fstab容错参数;2)部署自动修复脚本和systemd服务;3)提供模拟损坏的测试方法(使用dd破坏超级块)。适用于RK3568、树莓派等嵌入式设备,确保数据分区损坏时系统仍可启动并自动修复,同时包含验证方法确认修复机制有效性。
2025-10-22 12:19:17
322
原创 如何使用 UML 设计嵌入式系统
在嵌入式系统设计中,UML(统一建模语言)不仅是软件架构建模工具,更是系统分析与设计的可视化语言。 由于嵌入式系统受设计中,设计应遵循“**先外后内,先整体再局部**”原则: 先明确系统拓扑与模块部署,再深入任务逻辑与通信细节。本文通过实际 UML 示例,分享嵌入式系统的建模思路。
2025-10-12 08:24:00
701
原创 基于表驱动的状态机设计与实现-state_machine
本文介绍了一个轻量级、可移植的 表驱动状态机框架 — embeded_state_machine。通过迁移表集中描述状态转换规则,结合通用执行器实现状态跳转,避免了传统 switch-case 的冗余和难维护问题。
2025-09-28 23:03:40
592
原创 CAN 总线多设备组网通信,如何同步事件?
在 CAN 总线多设备组网通信中,需要将一个事件同步到所有设备时,通常有两种方式:广播和逐一发送。广播方式通过一次性消息传输,实现高效和快速同步,但缺乏接收确认,可能导致不可靠的传输;逐一发送方式通过逐个发送消息确保每个设备可靠接收,但效率较低且逻辑实现复杂。
2024-10-17 08:04:49
1341
原创 CAN总线通信是否需要增加应用层应答机制?
在某些情况下,虽然 CAN 总线在物理层面保证了数据的传输,但是并不能确保应用层已经成功处理了这些数据。例如,如果接收节点短暂的通信故障或系统繁忙,导致消息丢失。这时候,通过应用层应答机制,发送节点没有收到应答则重发消息,确保消息被接收且被正确处理。因此,通过应用层的应答机制,发送方可以确保每个帧都被正确接收并按顺序重组,避免消息丢失或帧错乱。对于一些对实时性要求极高的应用,应用层的应答与重发机制可能会导致响应时间的增加。应用层应答机制并不是所有场景下都必须实现,它更多的是取决于应用的具体需求。
2024-10-12 06:00:29
1350
2
原创 Git 报错:fatal: update_ref failed for ref ‘ORIG_HEAD‘ 解决记录
Git 报错:fatal: update_ref failed for ref 'ORIG_HEAD' 解决记录
2025-10-10 21:31:05
247
原创 UCOS-III 系统TICK接口详解
COS-III的Tick管理和阻塞接口超时机制提供了一种高效且可靠的方法来管理实时系统中的任务调度和超时处理。通过合理配置和使用这些机制,可以提高系统的实时性和稳定性,从而更好地满足各种实时应用的需求
2024-07-28 09:04:06
1179
原创 PlantUML学习笔记-嵌入式系统设计常用图例
在嵌入式系统设计过程中,需要使用一些图例对系统框架及业务流程进行说明,以便于多人协同开发及后期的系统维护,提高团队开发效率.
2024-07-28 07:02:14
542
原创 UCOS-III 任务调度锁定/解锁接口OSSchedLock/Unlock详解
在实时操作系统中,关闭和打开任务调度是确保系统执行关键代码时保持原子性和数据一致性的重要手段。通过正确使用 OSSchedLock 和 OSSchedUnlock 接口,我们可以有效地控制任务调度,实现高效、稳定的实时系统
2024-07-26 23:55:48
945
原创 UCOS-III 系统启动接口OSStart详解
UCOS内核启动流程第一个就绪任务是如何启动的?为什么设置PendSV异常优先级为最低优先级?
2024-07-24 21:31:02
1246
原创 UCOS-III 任务调度接口(OSSched)详解
OSSched函数用于检查并确定是否有更高优先级的任务需要运行。该函数通常在任务级别代码中调用,而不是在中断服务程序(ISR)中调用。中断服务程序的调度由OSIntExit()函数处理。OSSched函数主要完成以下任务:检查操作系统运行状态。检查中断嵌套计数器。检查调度器是否被锁定。获取最高优先级任务。执行任务级别的上下文切换。
2024-07-23 21:43:18
853
原创 UCOSIII 系统初始化接口(OSInit)详解
初始化中断堆栈清除和初始化系统计数器和指针初始化优先级位图表初始化各个管理模块初始化任务管理器初始化空闲任务初始化时钟节拍管理器初始化统计任务初始化定时器管理器调用用户自定义的初始化钩子函数
2024-07-23 06:53:02
669
原创 UCOS-III静态内存分配与FreeRTOS动态内存分配
UCOS-III和FreeRTOS在内存管理上的策略各有优缺点。UCOS-III采用静态内存分配,系统的稳定性和确定性高,适合对实时性要求高且内存需求固定的应用场景。而FreeRTOS采用动态内存分配,内存分配灵活性高及内存利用率高,适合内存需求动态变化的应用场景。应该要根据具体应用场景,选择合适不同的内存管理策略,可以优化系统性能和资源利用率
2024-07-20 10:02:26
970
原创 UCOS-III 系统移植
UCOSIII系统移植到GD32F303详细过程工程代码:https://github.com/jslaobing/techIot_ucosiii_porting
2024-07-06 00:27:50
1829
原创 UCOS-III Licensing
Micrium组件现以Apache 2.0开源许可模式提供,开发者可以免费下载和使用这些软件。这一变化旨在扩大用户基础,并让嵌入式社区参与软件的未来发展。对于以前购买了商业许可证的开发者,其许可证仍然有效,但不再直接从Micrium或Silicon Labs获得技术支持或软件维护。若需开发新产品,可以选择获取Cesium RTOS商业版本的许可证或使用Github上的µC/OS开源版本。更多详细信息,请访问。
2024-07-01 20:42:14
742
原创 UCOS-III任务调度与等待队列管理
任务进入等待队列的时机举例如下:当任务等待一个信号发出时当任务等待一个互斥信号量释放时当任务等待一个事件标志组被发布时当任务等待一个消息队列被发布时当任务等待延时结束时在这些情况下,任务将从就绪队列中删除,并放置到所等待的内核对象的等待队列中。这样,系统可以在适当的时候唤醒任务,并将其重新放入就绪队列。
2024-06-28 21:05:58
398
原创 UCOS-III 任务调度与就绪列表管理
UCOS-III通过就绪优先级位图和就绪队列的结合,实现了高效的任务调度机制。在实际应用中,通过优化任务优先级和队列管理,可以进一步提升系统性能,满足各种复杂的实时需求。UCOS-III通过就绪优先级位图来快速查找最高优先级的就绪任务,从而实现高效调度。就绪优先级位图是一个按位表示的结构,每个位代表一个优先级,当某个优先级上有任务就绪时,相应位被置位。每个优先级对应一个就绪队列,所有具有相同优先级的任务链入该队列中。通过这些API,UCOS-III可以在O(1)时间复杂度内完成优先级任务的管理和调度。
2024-06-28 20:55:39
639
原创 UCOS-III 资源竞争处理
临界资源处理, 是为了避免多个运行空间同时访问共享资源时导致的数据冲突和系统不稳定。未加保护的临界区可能导致不可预测的行为,如数据损坏、中断丢失和系统崩溃,影响系统的实时性和可靠性。
2024-06-27 20:34:47
490
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅