首页 > 其他分享 >从0入门FreeRTOS之第二节FreeRTOS的体系结构

从0入门FreeRTOS之第二节FreeRTOS的体系结构

时间:2024-05-26 17:30:00浏览次数:30  
标签:优先级 函数 FreeRTOS 中断 任务 内存 第二节 体系结构

FreeRTOS的体系结构

FreeRTOS的体系结构设计精巧且高效,专为嵌入式系统量身打造。理解FreeRTOS的体系结构对开发高效、稳定的嵌入式应用至关重要。下面,我们详细介绍FreeRTOS的核心组件、内核机制、中断管理和内存管理等内容。

核心组件

FreeRTOS的核心组件主要包括任务管理、调度器、时间管理、同步机制和内存管理。这些组件协同工作,共同实现了FreeRTOS的实时操作系统功能。

任务管理

任务管理是FreeRTOS的核心功能之一。每个任务都是一个独立的程序流,拥有自己的堆栈和状态。任务管理模块提供了创建、删除、挂起、恢复任务以及设置任务优先级等功能。

  • 任务创建xTaskCreate()函数用于创建新任务,指定任务的函数、名称、堆栈大小、参数、优先级和任务句柄。
  • 任务删除vTaskDelete()函数用于删除任务,释放任务占用的资源。
  • 任务挂起与恢复vTaskSuspend()vTaskResume()函数用于挂起和恢复任务的执行。
  • 任务优先级:任务的优先级决定了任务的调度顺序,优先级高的任务优先得到执行。
调度器

调度器是FreeRTOS的核心,负责管理和调度任务的执行。调度器根据任务的优先级和状态,决定哪个任务可以占用CPU。FreeRTOS支持两种调度器:

  • 抢占式调度器:高优先级任务可以随时抢占低优先级任务的CPU时间,确保高优先级任务及时响应。
  • 协作式调度器:任务需要显式让出CPU时间,调度器在任务调用taskYIELD()或进入阻塞状态时切换任务。
时间管理

FreeRTOS提供了多种时间管理机制,允许任务以时间为基准进行操作。主要的时间管理函数包括:

  • 延时函数vTaskDelay()函数用于将任务挂起指定的时间段,以Tick为单位。
  • 周期性延时函数vTaskDelayUntil()函数用于实现周期性延时,确保任务以固定周期执行。
  • Tick Hook函数vApplicationTickHook()函数在每个系统Tick中断时调用,可以用于实现周期性任务。
同步机制

FreeRTOS提供了丰富的同步机制,包括信号量、互斥量、队列和事件组,帮助任务之间进行同步和通信。

  • 信号量:包括二值信号量和计数信号量,主要用于任务间的同步。
  • 互斥量:用于保护共享资源,防止多个任务同时访问导致的数据不一致问题。
  • 队列:用于任务间的消息传递,支持FIFO(先进先出)模式。
  • 事件组:用于多任务之间的事件同步,支持多事件的集合和等待。
内存管理

FreeRTOS提供了灵活的内存管理机制,支持动态和静态内存分配。动态内存分配使用标准的mallocfree函数,而静态内存分配允许开发者在编译时分配固定大小的内存块。

FreeRTOS内核

FreeRTOS内核是系统的核心部分,负责任务调度和上下文切换。内核主要由以下几个模块组成:

  • 任务控制块(TCB):每个任务都有一个对应的任务控制块,存储任务的状态、优先级、堆栈指针等信息。
  • 调度器:实现任务的优先级调度算法,根据任务的优先级和状态决定哪个任务可以占用CPU。
  • 上下文切换机制:负责在任务之间切换上下文,包括保存当前任务的寄存器状态和恢复下一个任务的寄存器状态。

中断管理

FreeRTOS具有强大的中断管理功能,允许任务和中断服务例程(ISR)进行交互。FreeRTOS的中断管理机制包括以下几个方面:

  • 中断优先级:支持配置中断的优先级,确保高优先级中断能够及时响应。
  • 中断安全的API:提供一组安全的API函数,允许ISR与任务之间进行通信和同步,如xQueueSendFromISR()xSemaphoreGiveFromISR()
  • 嵌套中断:支持嵌套中断,允许高优先级中断打断低优先级中断的执行。

内存管理

FreeRTOS提供了多种内存管理策略,以适应不同的应用需求:

  • 动态内存分配:使用标准的mallocfree函数进行内存分配和释放。FreeRTOS还提供了可替代的内存管理方案,如heap_1heap_2heap_3heap_4heap_5,每种方案有不同的特点和适用场景。
  • 静态内存分配:允许在编译时分配固定大小的内存块,避免动态分配带来的内存碎片和性能开销。

综上所述,FreeRTOS的体系结构设计精巧,功能丰富,能够满足各类嵌入式应用的需求。在理解了FreeRTOS的体系结构后,我们可以更好地使用FreeRTOS构建高效、稳定的实时嵌入式系统。

标签:优先级,函数,FreeRTOS,中断,任务,内存,第二节,体系结构
From: https://blog.csdn.net/gygkhd/article/details/139217564

相关文章

  • 从0入门FreeRTOS之第一节 什么是FreeRTOS?
    简介与基本概念什么是FreeRTOS?FreeRTOS(FreeReal-TimeOperatingSystem)是一款开源的实时操作系统(RTOS),专为嵌入式系统设计。由RealTimeEngineersLtd.开发和维护,FreeRTOS以其小巧、高效、易于使用的特点广受欢迎。FreeRTOS支持多种微控制器和微处理器平台,提供丰富的实时......
  • 《计算机网络微课堂》1-6 计算机体系结构
    常见的计算机网络体系结构从本节课开始,我们要用4次课的时间来介绍有关计算机网络体系结构的知识,具体包含以下内容:一,常见的计算机网络体系结构二,计算机网络体系结构分层的必要性三,计算机网络体系结构分层思想举例四,计算机网络体系结构中的专用术语‍计算机网络体系结构......
  • 冯诺依曼体系结构和总线概念
    Part1:计算机发展历程--冯诺依曼体系结构Pre:程序和存储是两种实现方式:程序属于ControlUnit,将程序用硬件实现,若更改程序,硬件需要重新设计Now:程序和存储都在内存中以二进制的方式保存。控制器在内存中取指,根据指令发送控制命令。             ......
  • 计算机体系结构-Booth乘法
    原理解释电路实现以Radix-4Booth编码为例,Booth乘法的核心是部分积的生成,需要生成\(N/2\)个部分积,每个部分积与\([X]_补\)有关,存在\(-X,-2X,+X,+2X,0\)这五种可能,其中减去\(X_{补}\)的操作可以认为是按位取反的\(X_{补}\)在末尾+1。为了硬件实现方便,可以将末位1操作提取出来,假......
  • 《Linux内核完全注释》学习笔记:2.1 Linux内核模式和体系结构
    2.1Linux内核模式和体系结构操作系统主要由4部分组成:硬件、操作系统内核、操作系统服务用户应用程序图2-1操作系统组成部分用户应用程序:指那些字处理程序、互联网浏览器程序或用户自行编制的各种应用程序;操作系统服务程序:指向用户提供的服务,被看作是操作系统部分功能......
  • FREERTOS:vTaskList函数
    函数原型:voidvTaskList(char*pcWriteBuffer);参数:pcWriteBuffer  一个缓冲区,上面提到的细节将以ASCII形式写入其中。假设此缓冲区的大小足以容纳产生的报告。大约为每个任务分配40字节的缓冲区就足够了。打印信息:任务任务状态优先级剩余......
  • 计算机网络体系结构
    一、计算机网络概念1、计算机网络定义将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享的系统。与多终端系统的区别:传统多终端系统是由中央处理器、多个联机终端及一个多用户操作系统组成。终端本身不具备独立的数据处理能力计算......
  • FreeRTOS任务通知
    FreeRTOS任务通知FreeRTOS新增了任务通知(TaskNotifictions)这个功能,可以使用任务通知来代替信号量、消息队列、事件标志组等这些东西。使用任务通知的话效率会更高,任务通知在FreeRTOS中是一个可选的功能,使用队列、信号量、事件标志组时都需另外创建一个结构体,通过中间的结......
  • FreeRTOS 事件标志组
    FreeRTOS事件标志组使用信号量来完成同步,但是使用信号量来同步的话任务只能与单个的事件或任务进行同步。有时候某个任务可能会需要与多个事件或任务进行同步,此时信号量就无能为力了。事件位用来表明某个事件是否发生,事件位通常用作事件标志,事件标志组是一组事件标志位的集合,......
  • 第二节 换元积分法
    第二节换元积分法一、第一类换元法技巧:把分母变为u就容易化简了。因为不定积分的性质1,加法可以拆开来做二、第二类换元法......