RTOS深入学习
文章平均质量分 91
charlie114514191
我是一个普通的嵌入式软件程序员,喜欢研究Linux(应用层跟内核从都有粗浅的涉略),单片机,操作系统和计算机体系架构等内容,目前是一枚普通的本科生。
笔者是一个朴素的开源主义者,我坚信代码和知识没有壁垒,也不应该有壁垒所在,任何人都应该平等的获取到所有的知识。笔者力所能及的将自己的代码项目开源到Github
笔者的github:https://github.com/Charliechen114514
笔者的私人博客(旧):https://charliechen114514.github.io/
笔者的私人博客(新):https://www.charliechen114514.tech/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
FreeRTOS:任务通知(Task Notifications)与事件组(Event Groups)
FreeRTOS提供了两种轻量级通信机制:任务通知和事件组。任务通知通过TCB内置的32位通知值实现极速单对单通信,适合简单唤醒、计数等场景,比队列更高效。事件组则用于多条件同步,通过bit位组合表达系统状态,特别适合多任务初始化同步等场景。选择标准是:单对单通知用任务通知,多条件组合用事件组,复杂数据传输仍需队列。这两种机制能显著提升实时系统性能,减少资源消耗。原创 2026-01-02 08:39:16 · 589 阅读 · 0 评论 -
FreeRTOS :内存管理与堆实现(heap_1~heap_5)
FreeRTOS 提供了5种内存管理方案(heap_1~heap_5),针对嵌入式系统特点优化: heap_1:最简单,仅分配不释放,零碎片,适合固定初始化场景 heap_2:支持释放但不合并碎片,会产生内存碎片 heap_3:包装标准库malloc/free,适合资源丰富平台 heap_4:合并相邻空闲块,减少碎片 heap_5:支持非连续内存区域,最灵活 选择依据: 确定性要求:heap_1最优 简单性:heap_1/2 防碎片:heap_4/5 复杂场景:heap_5 所有方案都提供线程安全接口,替代原创 2026-01-02 08:35:53 · 796 阅读 · 0 评论 -
FreeRTOS:中断(ISR)与 RTOS 安全 API
本文介绍了在FreeRTOS中使用中断服务程序(ISR)与RTOS安全API的关键要点。主要内容包括:1) FreeRTOS提供专门的FromISR API用于中断上下文,这些API不会阻塞且通过pxHigherPriorityTaskWoken参数管理任务切换;2) 在Cortex-M架构中,中断优先级数字越小优先级越高,FreeRTOS通过configMAX_SYSCALL_INTERRUPT_PRIORITY定义可管理的中断范围;3) 详细讲解了队列操作、信号量操作和任务通知等核心FromISR AP原创 2026-01-02 08:34:25 · 756 阅读 · 0 评论 -
FreeRTOS:软件定时器(Software Timers)与时间管理
摘要 FreeRTOS软件定时器是一种基于内核定时服务的回调机制,用于实现时间驱动的异步操作。本文介绍了软件定时器的适用场景、常用API(创建、启动、停止、重置等)以及回调执行的上下文特点。通过对比软件定时器与任务延时(vTaskDelay)的差异,分析了各自的适用场景:软件定时器适合短小异步回调,而任务延时适合复杂周期性工作。文章还提供了实验代码示例,展示如何使用软件定时器触发周期性处理,并通过任务通知机制将定时事件传递给工作任务的实现方式。最后强调回调中应避免长时间阻塞,建议将复杂处理放在任务中执行。原创 2026-01-01 23:30:29 · 778 阅读 · 0 评论 -
FreeRTOS: 信号量(Semaphores)、互斥量(Mutex)与优先级继承
摘要:本文探讨了RTOS中信号量、互斥量和优先级继承机制。信号量用于事件通知,互斥量保护共享资源并支持优先级继承,能有效解决优先级反转问题。文章对比了二值信号量、计数信号量和互斥量的适用场景,通过实验代码展示了优先级反转现象及互斥量的解决方案。还介绍了中断中使用信号量的正确方法,强调ISR应尽快通知并返回。这些同步机制对保证RTOS实时性和资源安全访问至关重要。原创 2026-01-01 23:29:24 · 1121 阅读 · 0 评论 -
FreeRTOS: 队列(Queues)与任务间通信 — API 深入与实战
本文深入讲解了FreeRTOS队列在嵌入式系统中的应用,重点介绍了队列的核心功能、API使用和实战技巧。队列作为任务间通信的安全消息缓冲区,常用于生产者/消费者模型、中断事件处理和命令传递。文章详细解析了创建队列、发送接收数据的基本API,对比了阻塞与非阻塞模式的适用场景,并提供了内存优化的建议。通过按钮去抖的完整示例,展示了中断与任务协作的典型模式。最后简要提及了大数据传递、内存池和队列集等高级话题,为开发者提供了从基础到进阶的实用指导。原创 2025-12-31 09:22:50 · 749 阅读 · 0 评论 -
FreeRTOS:任务(Tasks)与调度基础
把当前任务从 Ready → Blocked,至少阻塞这么多个 tick。⚠️ 实时系统中不建议频繁创建 / 删除任务(碎片 + 不确定性)。如果在 host 模拟环境里看到 main 返回,各位可以在自己的上位机环境中试一下 😃。这就是后面互斥锁必须存在的根本原因。这就是 RTOS 和裸机。在“就绪态”的任务中,选。原创 2025-12-31 09:21:58 · 898 阅读 · 0 评论 -
从FreeRTOS的Task API出发
本文从嵌入式开发的实际需求出发,对比了前后台程序和RTOS任务模型的差异。作者指出传统前后台程序虽然简单直接,但随着业务复杂度提升,其轮询模式难以处理多任务协调问题。而RTOS通过内核调度实现了任务优先级管理,使代码更清晰可维护。文章重点介绍了FreeRTOS的任务编程范式,包括任务函数的标准结构(无限循环+延时)和基本API使用示例,并提供了在上位机和STM32平台上实践FreeRTOS的参考链接。作者强调RTOS的核心价值在于将CPU调度权交给内核,使开发者能更专注于业务逻辑实现。原创 2025-12-17 09:29:23 · 926 阅读 · 0 评论 -
在上位机上熟悉FreeRTOS API
摘要 本文介绍了如何在上位机环境中配置FreeRTOS学习环境,通过POSIX模拟器快速熟悉RTOS API。主要内容包括: 获取FreeRTOS源码并建立项目结构 编写CMake构建文件,实现跨平台编译(支持Linux/WSL) 配置必要的FreeRTOSConfig.h文件 说明POSIX模拟器的特点(非实时但适合学习基本概念) 该方法避免了直接使用单片机时硬件与RTOS概念的混淆,适合初学者快速掌握任务、内存管理、信号量等核心概念。文章提供了完整的工程结构和配置示例,读者可立即着手实践FreeRTOS原创 2025-12-16 10:00:30 · 973 阅读 · 0 评论
分享