腾讯云搭建网站,门户网站推广方式,网站开发流程 原型设计,深圳短视频seo搜索排名如何做初识FreeRTOS一、实时操作系统概述1、概念2、RTOS的必要性3、RTOS与裸机的区别4、FreeRTOS的特点二、FreeRTOS的架构三、FreeRTOS的代码架构一、实时操作系统概述
1、概念
RTOS#xff1a;根据各个任务的要求#xff0c;进行资源#xff08;包括存储器、外设等#xff09…
初识FreeRTOS一、实时操作系统概述1、概念2、RTOS的必要性3、RTOS与裸机的区别4、FreeRTOS的特点二、FreeRTOS的架构三、FreeRTOS的代码架构一、实时操作系统概述
1、概念
RTOS根据各个任务的要求进行资源包括存储器、外设等管理、消息管理、任务调度、异常处理等工作。每个任务都有一个优先级RTOS根据各个任务的优先级动态地切换各个任务保证对实时性的要求。
2、RTOS的必要性
嵌入式实时操作系统提高了系统的可靠性提高了开发效率、缩短了开发周期嵌入式实时操作系统充分发挥了32位CPU的多任务潜力
但是实时操作系统还需要额外的ROM/RAM开销2~5%的CPU额外负荷以及内核的费用。
3、RTOS与裸机的区别
①裸机开发 类似于我们学校里玩的51单片机、STM32都是跑在main函数中里面会有一个超级大的while1循环这里面几乎包含整个项目的所有业务逻辑然后每个逻辑里面都会有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.c5种堆管理器各有优缺点需要根据应用进行选择。这一块我会在另一篇博客详细讲解。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.hFreeRTOS内核配置Tick时钟和irq中断配置。