手把手教你玩转RTOS操作系统
文章平均质量分 81
实时操作系统(RTOS)是嵌入式开发的基石,广泛应用于工业控制、物联网、智能硬件等领域。本专栏以 FreeRTOS 为核心主线,结合 RT-Thread 和 Zephyr 的对比分析,从零基础讲解RTOS的核心原理、开发技巧与实战项目。
通过 理论+代码+实验 的方式,你将掌握RTOS的任务管理、
小蘑菇二号
某大厂在职资深嵌入式软件工程师,商业合作&交流学习可私信联系
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于Linux的PCIe设备驱动开发入门到精通-- 第三部分:进阶篇 - 构建完整驱动 综合实战:开发一个完整的PCIe LED控制驱动 9.2 驱动架构设计 (结合前8章知识点)
在《9.3 编写驱动代码:从probe到ioctl》中,我们将基于这份详尽的架构设计,亲手实现驱动的每一行代码,并编写用户态测试工具,让我们的LED真正“亮”起来!现在,是时候将前八章所学的“零散工具”——从模块加载、PCI探测、资源申请到设备创建——下一节《9.3 编写驱动代码:从probe到ioctl》,我们将把设计图变为可运行的代码,见证LED的第一次“心跳”!它封装了设备的所有状态和资源,是连接PCI驱动和字符设备的“桥梁”。这是驱动最复杂的部分,集中了资源申请、硬件初始化和设备创建。原创 2025-11-24 09:59:12 · 29 阅读 · 0 评论 -
基于Linux的PCIe设备驱动开发入门到精通-- 第三部分:进阶篇 - 构建完整驱动 高级主题与未来方向 (持续更新) 10.3 SR-IOV (Single Root I/O Virtualiza
技术应运而生,它允许一个物理PCIe设备(如网卡)在硬件层面“分裂”成多个独立的虚拟功能(Virtual Functions, VFs),直接分配给不同的虚拟机(VM)或容器,实现近乎物理机的I/O性能。:在《10.4 调试技巧与工具》中,我们将系统化地学习各种内核和驱动调试方法,让您能从容应对各种“疑难杂症”。:在您的应用场景中,是更倾向于使用SR-IOV的极致性能,还是选择更灵活的软件定义网络(SDN)方案?,打破了传统虚拟化I/O的性能瓶颈,使得虚拟机和容器能够获得接近裸金属的网络性能。原创 2025-11-11 09:41:16 · 148 阅读 · 0 评论 -
Linux PCIe设备驱动开发:从入门到企业级实战 专栏-- 1.3 事务层、数据链路层、物理层简介
本文介绍了PCIe总线协议的三层架构:事务层、数据链路层和物理层。事务层负责生成和处理TLP数据包,实现流量控制和路由功能;数据链路层通过ACK/NAK机制确保数据传输可靠性;物理层则处理信号编解码和链路训练等底层传输任务。三层协议协同工作,从CPU指令到物理信号转换,构成了PCIe高速可靠传输的基础。这种分层设计使协议模块化、易扩展,为PCIe驱动开发和问题排查提供了理论支撑。原创 2025-11-09 14:33:43 · 39 阅读 · 0 评论 -
Flash 存储机制原理概述
摘要:Flash存储器以块为单位擦除,初始状态为全1,只能将1编程为0,而将0恢复为1必须擦除整个块。NORFlash的擦除单位通常为64KB~1MB,擦除后块内所有位重置为1,再重新编程需要的位。与NANDFlash不同,NORFlash支持随机读写但擦除粒度较大。操作时需注意数据备份和磨损均衡,以应对Flash的擦写次数限制。这一机制是Flash高可靠性和长寿命的基础。原创 2025-11-03 11:35:53 · 70 阅读 · 0 评论 -
在PCIe设备的BL0阶段(链路训练前的第一阶段引导) 配置空间的配置详解
PCIe设备的配置空间是一组位于设备内部的只读/可读写寄存器组(Type 0设备通常为1KB,地址0x000~0xFFF),主机通过PCIe配置事务(Configuration Read/Write TLP)访问这些寄存器。位15=1(使能MSI)2. Bar空间配置(0x20~0x3C):主机与设备的“通信窗口”Message Data中断向量(对应主机的中断引脚,如INTA#=0x01,INTB#=0x02)0x02(映射到INTB#)4. 设备特定区域(0x80~0xFFF):厂商自定义配置。原创 2025-10-31 10:42:32 · 48 阅读 · 0 评论 -
基于Linux的PCIe设备驱动开发入门到精通--5.1 PCIe中断类型:Legacy INTx, MSI, MSI-X
在上一讲的实战中,我们通过轮询寄存器的方式“控制”了设备。这种方式简单直接,但效率极低——CPU必须不停地检查设备状态,浪费了宝贵的计算资源。就是这个问题的答案。它允许设备在“有事发生”时(如数据到达、操作完成)主动“敲门”通知CPU,CPU则暂停手头工作,优先处理设备事件。下一节《5.2 实战:在PCI驱动中申请和处理中断》,我们将真正“聆听”设备的呼唤!理解它们的原理和差异,是选择合适中断策略、编写高效驱动的前提。MSI-X是MSI的增强版,提供了更高的灵活性和扩展性。,我们将进行一次完整的中断实战。原创 2025-10-06 00:14:50 · 226 阅读 · 0 评论 -
基于Linux的PCIe设备驱动开发入门到精通--5.2 MSI/MSI-X的优势与配置 (pci_enable_msi(), pci_enable_msix())
第二部分:实战篇 - 驱动开发核心技能 中断处理机制 5.2 MSI/MSI-X的优势与配置 (pci_enable_msi(), pci_enable_msix())它们用优雅的“消息”取代了古老的“物理引脚”,带来了革命性的性能提升。下一节《5.3 实战:在PCI驱动中申请和处理中断》,我们将真正“聆听”设备的呼唤!在上一讲中,我们从宏观上了解了PCIe的三种中断机制,并认识到。这两个核心函数,深入剖析MSI/MSI-X的。MSI-X的API更复杂,提供了更大的灵活性。这是启用MSI模式的入口函数。原创 2025-10-04 13:42:03 · 87 阅读 · 0 评论 -
基于Linux的PCIe设备驱动开发入门到精通--6.3 一致性DMA映射 (dma_alloc_coherent()) vs 流式DMA映射
第二部分:实战篇 - 驱动开发核心技能 DMA (直接内存访问) 传输 6.3 一致性DMA映射 (dma_alloc_coherent()) vs 流式DMA映射。DMA描述符环是PCIe设备驱动中最常见的使用一致性DMA映射的场景。下一节《6.4 实战:实现PCIe设备的DMA数据传输》,我们将迎来本章的终极实战,让DMA真正“跑”起来!:用一致性映射构建坚固的“指挥中心”(描述符环),用流式映射派遣高效的“运输队”(数据缓冲区)。在前两讲中,我们学习了DMA的原理和最常用的流式映射API。原创 2025-10-03 18:37:11 · 54 阅读 · 0 评论 -
基于Linux的PCIe设备驱动开发入门到精通--8.3 调试利器:lspci -vvv, setpci, devmem
通过这三个工具的组合,您可以在不修改一行驱动代码的情况下,对硬件状态进行深度诊断,精准定位问题是在驱动逻辑、资源分配还是硬件本身。下一节《9.1 中断基础:从轮询到request_irq》,我们将告别低效的轮询,拥抱事件驱动的优雅!它们不依赖于您的驱动代码,而是直接与系统的PCIe总线和物理内存交互,是验证硬件状态、诊断驱动问题的。此时,我们需要更强大的“听诊器”来直接“聆听”硬件的心跳。选项提供了最详尽的输出,是驱动开发者的“第一现场”。,在面对棘手的底层问题时,往往是找到突破口的关键。原创 2025-10-03 09:33:40 · 77 阅读 · 0 评论 -
基于Linux的PCIe设备驱动开发入门到精通-- 7.2 实现file_operations:open, release, read, write, mmap, ioctl
通过实现。原创 2025-10-02 22:16:44 · 49 阅读 · 0 评论 -
基于Linux的PCIe设备驱动开发入门到精通-- 7.5 实战:将PCIe驱动封装为字符设备,编写用户态测试程序
第三部分:进阶篇 - 构建完整驱动 字符设备接口与用户空间交互 7.5 实战:将PCIe驱动封装为字符设备,编写用户态测试程序。虽然我们模拟了一个简单的设备,但其架构和设计模式完全可以扩展到复杂的实际应用中。起来,打造一个功能完整、可实际运行的PCIe驱动,并编写配套的用户态测试程序来验证其功能。它不仅是一个教学示例,更是您未来开发复杂PCIe设备(如采集卡、加速卡、网卡)的。经过前几章的深入学习,我们已经掌握了PCIe驱动开发的。等,让您的驱动性能更强、功能更全、更符合工业标准。原创 2025-10-01 00:41:08 · 94 阅读 · 0 评论 -
手把说教你学FREERTOSA--FreeRTOS 软件定时器(Software Timer)详解
FreeRTOS软件定时器详解摘要: FreeRTOS软件定时器是基于系统节拍的延时机制,由定时器服务任务(xTimerDaemonTask)统一管理,支持毫秒级精度。提供两种模式:一次性(One-shot)和周期性(Auto-reload)。核心API包括创建(xTimerCreate)、启动(xTimerStart)、停止(xTimerStop)等。使用时需注意:回调函数中禁止调用阻塞API,需启用configUSE_TIMERS配置,建议使用pdMS_TO_TICKS()转换时间单位。典型应用场景包括原创 2025-09-23 11:47:09 · 814 阅读 · 0 评论 -
手把手教你学FREERTOS--队列:如何评估队列中应该设置多少个数据项
评估队列数据项数量的方法:看突发:队列长度 ≥ 最大可能的突发数据量看速度:生产 vs 消费速率决定是否会长期积压看内存:不能超过系统可用 RAM看实时性:高实时系统要短队列运行验证:用监控 API 确认是否合理。原创 2025-09-24 15:13:25 · 611 阅读 · 0 评论 -
手把手教你学Freertos--FreeRTOS 队列(Queue) 的全面详解
FreeRTOS队列详解:任务间通信的核心机制 本文全面解析FreeRTOS队列(Queue)的特性和使用方法。队列是线程安全的FIFO缓冲区,支持任务与中断间的数据传递(通过拷贝而非指针)。核心内容包括:队列创建(xQueueCreate)、数据发送/接收(xQueueSend/Receive)及其中断版本(FromISR)的API说明,重点演示了生产者-消费者模型的应用实例。特别强调了中断中使用队列的注意事项(必须使用FromISR版本),并给出最佳实践建议(如队列长度设置、错误处理等)。最后总结了队列原创 2025-09-24 14:24:52 · 108 阅读 · 0 评论 -
手把手教你学FREERTOS--监测堆使用情况
摘要:FreeRTOS提供堆监控API(xPortGetFreeHeapSize和xPortGetMinimumEverFreeHeapSize),但功能因内存管理方案而异。使用heap_4.c或heap_5.c可实现"堆高水位线监控",获取历史最低剩余内存值。开发时应定期检查堆状态,结合malloc失败钩子函数增强系统稳定性。虽然堆监控不如栈精确(无法逐字节检测),但仍是确保系统可靠性的关键手段。建议开发阶段使用heap_4.c+最小剩余监控,发布阶段实施持续监控策略。原创 2025-09-17 09:45:00 · 99 阅读 · 0 评论 -
手把手教你学FREERTOS--主动监控每个任务的“栈使用情况”
FreeRTOS提供了两种栈监控方法:uxTaskGetStackHighWaterMark()和uxTaskGetStackHighWaterMark2(),用于检测任务栈使用情况。这些API会返回任务运行过程中栈空间的最小剩余量,帮助开发者优化内存分配。通过扫描栈中未被修改的初始值(如0xa5)来计算剩余空间。建议在调试阶段定期检查栈水位,设置安全阈值,并结合栈溢出检测功能使用。通过计算返回值乘以StackType_t大小,可转换为实际剩余字节数。这些功能使开发者能主动监控栈使用,避免内存浪费或不足,是原创 2025-09-17 02:12:08 · 167 阅读 · 0 评论 -
裸机(Bare-metal)环境下的中断处理移植到 RTOS(如 FreeRTOS)环境
本文介绍了从裸机中断处理移植到RTOS(如FreeRTOS)的五个关键步骤。核心思想是将中断响应与数据处理分离:中断仅负责快速通知,实际处理交由任务完成。具体步骤包括:1)分离中断响应和数据处理;2)创建任务处理数据;3)初始化队列和任务;4)适配不同类型中断;5)注意关键事项(如使用FromISR版本API、调用portYIELD_FROM_ISR等)。相比裸机中断,RTOS方式具有职责分离、可扩展性强、实时性好等优势,推荐使用队列/信号量传递数据,确保中断简短高效。原创 2025-09-13 15:13:30 · 94 阅读 · 0 评论 -
手把手教你学PCIE--哈希(Hash)和 CRC 校验
摘要: 哈希(如SHA3-224)与CRC虽均用于数据验证,但设计目标不同:前者防恶意篡改(安全性),后者防物理错误(可靠性)。核心区别在于: 安全性:哈希抗攻击强,CRC易伪造; 效率:CRC计算快,适合快速筛查;哈希计算慢但更安全。 正确做法:分层验证——先CRC检测物理错误,再哈希验证数据完整性。例如,嵌入式系统启动时先CRC初筛,失败则报错;通过后执行哈希校验防篡改。两者协同,缺一不可,类似"封条+签名"的双重保障机制。原创 2025-09-12 16:14:07 · 271 阅读 · 0 评论 -
手把手教你玩转X86指令集--第5章:算术与逻辑的基石——算术逻辑指令(add/sub/imul/idiv)5.1 算术逻辑指令的核心地位
本章深入解析x86架构核心算术指令(add/sub/imul/idiv)的实现原理与应用。重点内容包括:加法(add)和减法(sub)的语法规则、操作数类型及溢出检测机制(CF指示无符号数溢出/借位,OF指示有符号数溢出);有符号乘法(imul)的扩展/截断形式及溢出处理;有符号除法(idiv)的异常场景(除数为0、商溢出)和结果存储规则。通过32位加减乘除的典型案例,演示了反汇编代码中标志位(CF/OF/SF/ZF)的变化规律,强调算术指令作为程序"计算引擎"的关键作用,并给出实践建议原创 2025-09-12 13:56:01 · 63 阅读 · 0 评论 -
手把手教你学FreeRTOS --任务可以是死循环(无限循环),也可以不是,具体取决于任务的职责和设计需求
摘要: FreeRTOS中任务可分为死循环(无限循环)和非死循环(有限循环)两种类型。死循环任务通过while(1)持续运行,适用于周期性或长期监控场景(如心跳任务、传感器采集),通过阻塞API避免CPU空转。非死循环任务执行完逻辑后主动退出,适用于初始化、批量处理等一次性操作。设计时应优先为长期任务使用死循环结构,为短期任务选择非死循环,以优化资源利用率。合理选择任务类型可提升系统实时性和效率。原创 2025-09-12 13:55:47 · 84 阅读 · 0 评论 -
手把手教你学Freertos--调度器(Scheduler)的触发时机
在 FreeRTOS 中,是系统决定“下一个执行哪个任务”的关键节点。调度器通过响应特定事件或状态变化,从就绪队列(Ready Queue)中选择最高优先级的任务执行。原创 2025-09-12 08:48:55 · 60 阅读 · 0 评论 -
手把手教你学Freertos--FreeRTOS 的 系统滴答(三): Xtensa 架构的 MCU(如 ESP32、ESP8266 等)的FreeRTOS 的系统滴答
Xtensa架构MCU移植FreeRTOS时,系统滴答依赖于硬件定时器模块(如ESP32的TIMERG0),通过配置定时器时钟源、预分频器和重装载值产生周期性中断。关键步骤包括:选择支持周期性中断的定时器模块,配置1ms中断周期(如80MHz主时钟+80分频+1000重装载值),绑定中断服务程序至FreeRTOS的vPortSysTickHandler。需注意定时器精度、中断优先级配置(需高于任务优先级)及低功耗优化(如睡眠时暂停滴答)。典型实现如ESP32通过TIMERG0定时器提供1ms滴答基准,配合F原创 2025-09-11 14:49:03 · 91 阅读 · 0 评论 -
手把手教你玩转X86指令集--第2章:x86架构核心概念铺垫——CPU的“大脑”:寄存器全家桶(通用寄存器、段寄存器、标志寄存器)
本章系统介绍了x86架构中的三类核心寄存器。通用寄存器作为CPU的"工作区",用于存放操作数和中间结果,其设计从8086的4个扩展到x86-64的16个,并遵循特定调用约定。段寄存器在实模式下通过"段基址+偏移量"扩展寻址能力,在保护模式下则简化为平坦内存模型。标志寄存器记录指令执行状态,为条件跳转提供决策依据。掌握这些寄存器的功能与用法,是理解x86指令集和优化代码性能的基础。建议通过GDB调试和汇编实践加深对寄存器的理解。原创 2025-09-11 14:03:55 · 154 阅读 · 0 评论 -
手把手教你学FreeRTOS --两种实现心跳任务的方式
问题回答心跳任务能用vTaskDelay吗?✅ 可以,但精度略低信号量方式更好吗?✅ 在高精度、多核同步场景下更好vTaskDelay会漂移吗?✅ 会,建议用哪种更适合看门狗心跳?✅ 信号量 + SysTick(更可靠)📌结论如果你是多核系统、高可靠性要求(如汽车、工业控制),推荐使用信号量 + SysTick Hook。如果是简单应用、快速原型也完全够用。两者都是合法方案,选择取决于系统复杂度、精度要求和架构设计。原创 2025-09-09 22:18:53 · 213 阅读 · 0 评论 -
手把手教你学Freertos--FreeRTOS 的 系统滴答(二)
本文对比了Xtensa与ARM Cortex-M架构在FreeRTOS系统滴答(SysTick)实现上的关键差异。Xtensa架构没有内置SysTick定时器,需通过配置内核定时器(如Timer1)模拟系统滴答。文章详细解析了Xtensa上的实现原理,包括中断注册、定时器配置流程(以ESP32为例)、关键函数处理,并与Cortex-M方案进行对比。最后指出,虽然实现方式不同(Xtensa使用外设定时器,Cortex-M使用内置SysTick),但都能为RTOS提供稳定的时间基准,体现了FreeRTOS跨架构原创 2025-09-09 09:15:00 · 61 阅读 · 0 评论 -
手把手教你学Freertos--任务堆栈大小设置
《FreeRTOS任务堆栈设置指南》 摘要:合理设置任务堆栈是FreeRTOS稳定运行的关键。堆栈需要包含:CPU寄存器、局部变量、函数调用链、中断上下文等。三种估算方法:1)静态分析代码计算变量和调用深度;2)使用uxTaskGetStackHighWaterMark()检测栈水位(推荐方法);3)启用栈溢出检测(开发阶段建议配置configCHECK_FOR_STACK_OVERFLOW=2)。实际建议保留50-100字安全裕量,复杂任务需512-1024字空间。调试时可结合IDE内存视图和静态分析工具原创 2025-09-08 16:39:20 · 375 阅读 · 0 评论 -
手把手教你学Freertos--高优先级任务创建后是否会立即打断当前运行的低优先级任务
摘要: FreeRTOS作为抢占式实时操作系统,高优先级任务创建后是否立即打断低优先级任务取决于三个关键因素:(1) 当前任务优先级:仅当新任务优先级更高时可能抢占;(2) 调度触发时机:需当前任务阻塞、时间片耗尽或中断返回时调度器才会触发切换;(3) 任务状态:新任务需进入就绪队列。若新任务在中断中创建或当前任务主动释放CPU,高优先级任务会立即抢占,否则需等待调度时机。FreeRTOS通过就绪队列和严格的调度规则平衡实时性与效率。原创 2025-09-08 14:43:09 · 105 阅读 · 0 评论 -
5W2H 分析法学习 FreeRTOS 所有功能模块
FreeRTOS功能模块全景图:5W2H系统解析 FreeRTOS包含10大核心模块,通过5W2H分析法可系统掌握: 任务管理:多任务执行基础,消耗中量RAM 调度器:决定任务运行方式,开销极小 队列:任务间FIFO通信,约60字节/队列 信号量/互斥量:同步与资源保护,20-40字节 事件组:多事件组合触发,仅12-20字节 任务通知:最高效通信方式(零内存开销) 软件定时器:基于SysTick的定时回调 内存管理:5种策略(heap_1~5)管理动态内存 协程(不推荐):轻量但功能受限 学习路径:先掌握原创 2025-09-08 10:04:14 · 85 阅读 · 0 评论 -
手把手教你适配FREERTOS--FreeRTOS项目的Makefile修改点:sim和board不同的构建目标(build target),用于指定代码的编译环境和目标平台
sim和board本质上是代码运行环境的抽象层级差异:前者聚焦逻辑验证,后者聚焦硬件适配。在实际开发中,通常遵循“先sim调试逻辑,再board适配硬件”的流程,两者结合可提高开发效率并降低调试成本。原创 2025-09-04 17:19:29 · 53 阅读 · 0 评论 -
FreeRTOS--任务优先级管理
**任务优先级设置**:在FreeRTOS中,任务的优先级可以通过`vTaskPrioritySet()`函数进行设置。- **优先级配置**:在`FreeRTOSConfig.h`头文件中,可以通过`configMAX_PRIORITIES`常量来设置系统中可用的最大优先级值。开发者可以根据任务的重要性和对实时性的要求来分配不同的优先级,以实现合理的资源分配和高效的任务执行。- **抢占机制**:如果一个高优先级的任务变为就绪状态,它将抢占当前正在执行的低优先级任务。原创 2024-03-15 23:57:06 · 874 阅读 · 0 评论 -
FreeRTOS使用实例
请注意,这只是一个简单的示例,用于说明如何在STM32上使用FreeRTOS创建和管理任务。在实际项目中,你可能还需要考虑其他因素,如中断处理、内存管理、任务间通信和同步等。因此,建议详细阅读FreeRTOS的官方文档和参考相关的STM32开发教程,以深入了解更多高级功能和用法。以下是一个简单的FreeRTOS使用实例,演示了如何在STM32平台上使用FreeRTOS创建和管理任务。是STM32硬件初始化的示例函数,你需要根据你的硬件平台和需求来实现它们。原创 2024-03-15 23:59:57 · 1113 阅读 · 0 评论 -
【FreeRTOS项目实例--构建一个简单的按键检测系统】
以下是一个基于FreeRTOS的小项目实例,构建一个简单的按键检测系统,它会在按下按键时通过串口发送一个确认消息,并且使用信号量进行任务间的通信和同步。原创 2024-03-18 23:24:39 · 1339 阅读 · 0 评论 -
汽车电子RTOS--AUTOSAR OS
AUTOSAR OS(AUTomotive Open System ARchitecture Operating System)是AUTOSAR(汽车开放系统架构)标准中的一个重要组件,它是一个专门为汽车电子控制单元(ECU)设计的实时操作系统(RTOS)。AUTOSAR OS旨在提供一个标准化的软件平台,以促进不同供应商和汽车制造商之间的组件复用和协同开发,提高软件质量和降低成本。原创 2024-03-18 14:22:12 · 1626 阅读 · 0 评论 -
Cadence Tensilica Xtensa处理器RTOS--Xtensa OS介绍
综上所述,Xtensa OS是一个功能强大、可配置且适用于各种嵌入式系统的实时操作系统。它提供了高效的任务调度和资源管理功能,支持实时性能要求高的应用场景,并提供了丰富的开发工具和支持,方便开发者进行快速开发和调试。Xtensa OS是Cadence Tensilica针对其Xtensa处理器系列提供的一个实时操作系统(RTOS)。这个RTOS是专门为嵌入式系统设计的,旨在提供高效、可靠且易于使用的操作系统环境。原创 2024-03-20 22:49:31 · 804 阅读 · 0 评论 -
实时操作系统RTOS--上下文切换
RTOS(实时操作系统)中的上下文主要指的是任务在处理器上运行时的状态,这包括处理器所有寄存器的数据,可以理解为处理器的“寄存器数据快照”。当任务切换发生时,RTOS会保存当前任务的上下文,包括其程序计数器、堆栈指针和其他寄存器值等信息,并将下一个任务的上下文恢复到CPU寄存器中,从而实现任务间的无缝切换。总的来说,RTOS中的上下文是任务执行状态的重要体现,通过保存和恢复上下文,RTOS实现了任务之间的高效切换和调度,从而支持实时系统的多任务处理需求。原创 2024-03-21 01:01:33 · 1185 阅读 · 0 评论 -
RTOS--TCB任务控制块
TCB是RTOS(实时操作系统)中的一个核心概念,它是一个数据结构,主要用于记录和管理任务的相关信息。每个已创建的任务在RTOS中都有一个与之对应的任务控制块,可以理解为任务的“身份证”。任务控制块中包含了很多成员变量,这些变量详细记录了任务的属性,如任务的堆栈栈顶指针、指向下一个任务控制块的指针、任务等待的延迟时间、任务的当前状态标志、任务的优先级别等。这些属性与任务管理密切相关,是系统调度任务和进行任务切换的重要依据。原创 2024-03-21 01:44:04 · 2727 阅读 · 0 评论 -
RTOS(实时操作系统)--调度机制
RTOS(实时操作系统)通过一系列机制来管理任务的状态并调度其他任务。这些机制确保了任务能够按照预定的规则在系统中运行,从而满足实时性的要求。原创 2024-03-21 01:45:36 · 2228 阅读 · 0 评论 -
FreeRTOS如何进行时间管理
这个示例中,我们创建了一个定时器,当定时器到期时,会调用`vTimerCallback`函数。在`vTaskExample`任务中,我们配置并启动了定时器。在FreeRTOS中,可以使用定时器进行时间管理。原创 2024-03-15 23:50:32 · 483 阅读 · 0 评论 -
手把手教你学cadence RTOS--XOS Core Functions
XOS 的核心功能是不可配置的,并且是必不可少的。这些功能始终存在,包括 XOS 启动、异常和中断处理、运行时错误处理以及其他一些功能。这些功能确保了系统的稳定性和可靠性,是 XOS 正常运行的基础。原创 2024-09-26 10:34:28 · 841 阅读 · 0 评论 -
操作系统/RTOS--内核向量模式/用户向量模式
在这种模式下,处理器使用用户定义的栈来处理异常。当发生异常时,控制流将转向用户异常向量表,并且使用用户栈来保存和恢复上下文信息。这种模式允许操作系统为用户提供更细粒度的异常处理机制,使得用户程序能够在不切换到内核模式的情况下处理某些类型的异常。:在这种模式下,处理器使用内核异常栈来处理异常。当发生异常时,控制流将转向内核异常向量表,并且使用内核栈来保存和恢复异常处理所需的上下文信息。用户向量模式(User Vector Mode)与内核向量模式是与处理器异常处理相关的两种模式。原创 2024-05-10 11:32:15 · 385 阅读 · 0 评论
分享