【FreeRTOS(一)】FreeRTOS新手入门——初识FreeRTOS

简介: 【FreeRTOS(一)】FreeRTOS新手入门——初识FreeRTOS

一、实时操作系统概述

1、概念

RTOS:根据各个任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度、异常处理等工作。每个任务都有一个优先级,RTOS根据各个任务的优先级,动态地切换各个任务,保证对实时性的要求。

2、RTOS的必要性

  • 嵌入式实时操作系统提高了系统的可靠性
  • 提高了开发效率、缩短了开发周期
  • 嵌入式实时操作系统充分发挥了32位CPU的多任务潜力

但是实时操作系统还需要额外的ROM/RAM开销,2~5%的CPU额外负荷,以及内核的费用。

3、RTOS与裸机的区别

①裸机开发

类似于我们学校里玩的51单片机、STM32都是跑在main函数中,里面会有一个超级大的while(1)循环,这里面几乎包含整个项目的所有业务逻辑,然后每个逻辑里面都会有delay这样的等待函数,这样就会导致所有的业务逻辑都是串行起来工作的。然后进行轮询一件件事,事情一件件按顺序来,同一时间只能做一件事情。类似于下图这种。


②如何改进呢?

把这每件事情,都对应一个任务,降低耦合度,一个任务对应一个硬件,这种通过抢占任务优先级,来高效的实现任务的切换。

4、FreeRTOS的特点

  • FreeRTOS的内核支持抢占式和时间片调度
  • 提供了一个用于低功耗的Tickless模式
  • 系统的组件在创建时可以选择动态或者静态的RAM,比如任务、消息队列、信号量、软件定时器等。
  • FreeRTOS-MPU支持Corex-M系列中的MPU单元,比如STM32F429.
  • FreeRTOS系统简单、小巧、易用,通常情况下内核占用4k-9k字节的空间
  • 高可移植性,代码主要C语言编写。
  • 高效的软件定时器
  • 强大的跟踪执行功能。
  • 堆栈溢出检测功能。
  • 任务数量不限。
  • 任务优先级(0~63)不限。


二、FreeRTOS的架构

  • 一个任务管理一个硬件
  • 任务与任务或任务与中断涉及到数据传输使用消息队列
  • 任务件共享资源访问使用互斥锁
  • 任务的同步使用信号量
  • 标志位的管理使用事件标志组
  • 编写一个专门初始化硬件的任务,该任务可以包含创建任务的功能。


三、FreeRTOS的代码架构

  • croutine.c/croutine.h:协程,在8位/16位平台下效率比较高,在32位平台建议使用任务Task。
  • event_group.c/event_group.h:这个是事件组的实现。
  • heap_x.c:内核堆实现,FreeRTOS提供了heap_1.c~heap_5.c,5种堆管理器,各有优缺点,需要根据应用进行选择。这一块我会在另一篇博客详细讲解。
  • list.c/list.h:链表实现,主要为调度器提供数据结构算法支持服务。比如任务链表。
  • port.c/portmacro.h:硬件相关层级可移植抽象,主要包括SysTick中断,上下文切换,中断管理,具体实现很大程度上取决于平台(单片机体系硬件内核和编译器工具集)。通常以汇编语言实现。
  • queue.c/queue.h/semphr.h:信号量、互斥体实现。
  • tasks.c/task.h:任务管理器实现。
  • timers.c/timers.h:软件定时器实现。
  • FreeRTOS.h:编译配置文件,用于汇总所有源文件的编译选择控制。
  • FreeRTOSConfig.h:FreeRTOS内核配置,Tick时钟和irq中断配置。


相关文章
|
8月前
|
API
FreeRTOS学习笔记—FreeRTOS移植
本文学习了如何移植FreeRTOS到自己的STM32工程。最后,根据正点原子提供的测试main函数,测试了移植效果。
181 0
FreeRTOS学习笔记—FreeRTOS移植
|
8月前
|
传感器 调度 开发者
【Freertos基础入门】freertos任务的优先级
【Freertos基础入门】freertos任务的优先级
224 0
|
IDE 调度 开发工具
如何在S32DS中使用SystemView分析FreeRTOS
如何在S32DS中使用SystemView分析FreeRTOS
如何在S32DS中使用SystemView分析FreeRTOS
|
数据可视化 中间件 API
FreeRTOS记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置)
熟悉 在 STM32 CubeMX 下面的 FreeRTOS 使用
1364 1
FreeRTOS记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置)
|
1月前
|
消息中间件 Web App开发 API
FreeRTOS介绍 和 将FreeRTOS移植到STM32F103C8T6
FreeRTOS介绍 和 将FreeRTOS移植到STM32F103C8T6
FreeRTOS介绍 和 将FreeRTOS移植到STM32F103C8T6
|
14天前
|
传感器 物联网 调度
从0入门FreeRTOS之第一节 什么是FreeRTOS?
FreeRTOS(Free Real-Time Operating System)是一款开源的实时操作系统(RTOS),专为嵌入式系统设计。由Real Time Engineers Ltd.开发和维护,FreeRTOS以其小巧、高效、易于使用的特点广受欢迎。FreeRTOS支持多种微控制器和微处理器平台,提供丰富的实时操作系统功能,使开发者能够轻松构建高效、实时响应的应用程序。
15 0
|
14天前
|
存储 安全 算法
从0入门FreeRTOS之第二节FreeRTOS的体系结构
FreeRTOS的体系结构设计精巧且高效,专为嵌入式系统量身打造。理解FreeRTOS的体系结构对开发高效、稳定的嵌入式应用至关重要。下面,我们详细介绍FreeRTOS的核心组件、内核机制、中断管理和内存管理等内容。
25 0
|
8月前
|
调度 开发者
【Freertos基础入门】2个Freertos的Delay函数
【Freertos基础入门】2个Freertos的Delay函数
264 1
|
1月前
|
数据采集 API 数据处理
FreeRTOS入门教程(软件定时器)
FreeRTOS入门教程(软件定时器)
69 0