RTOS

一、定义与特点

最近两年RTOS操作系统在嵌入式领域越来越流行和受欢迎了,身边也有很多人在RTOS上构建项目。所以很有必要,来了解一下RTOS操作系统到底什么,这个操作系统有哪些特点,以及我们如何使用它。

RTOS全称为:Real Time OS,就是实时操作系统,强调的是:实时性。实时操作系统又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作,硬实时系统不允许超时,在软实时里面处理过程超时的后果就没有那么严格。

在实时操作系统中,我们可以把要实现的功能划分为多个任务,每个任务负责实现其中的一部分,每个任务都是一个很简单的程序,通常是一个死循环。

android 支持rtsp 开源框架 android rtos_实时操作系统

但是我们应该注意的是RTOS本身并不是代表某一个操作系统,而是代表着某一类操作系统。常见的RTOS操作系统:FreeRTOS,UCOS,RTX,RT-Thread,DJYOS等。

RTOS操作系统的核心内容在于:实时内核

RTOS CPU的工作原理是:

android 支持rtsp 开源框架 android rtos_实时操作系统_02


下面以FreeRTOS为例来讲一下RTOS先关的特点。

二、FreeRTOS

FreeRTOS是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。FreeRTOS提供了实时操作系统所需的所有功能,包括资源管理同步任务通信等。

FreeRTOS特点

  • FreeROTS 开源
  • FreeRTOS 免费
  • FreeRTOS 是很多第三方组件钦定的系统!
  • FreeRTOS下载:http://www.freertos.org/

FreeRTOS特点

FreeRTOS 任务特点
  • 简单
  • 没有使用限制
  • 支持抢占
  • 支持优先级
  • 每个任务都拥有堆栈导致了RAM使用量增大
FreeRTOS 任务状态
  • 运行态
  • 就绪态
  • 阻塞态
  • 挂起态

android 支持rtsp 开源框架 android rtos_头文件_03

FreeRTOS 任务优先级

任务优先级决定了任务的执行优先级别,在FreeRTOS中任务优先级可选范围为:0 ~ configMAX_PRIORITIES-1,数字越大,优先级越高!

FreeRTOS 任务创建
头文件:task.h 
portBASE_TYPE xTaskCreate(pdTASK_CODE pvTaskCode, 
						const portCHAR* onstpcNane, 
						unsigned portSHORT usStackDepth, 
						void *pvParameters, 
						unsigned portBASE_TYPE uxPriority, 
						xTaskHandle* pvCreatedTask); 
// pdTASK_CODE pvTaskCode 指向任务的实现函数的指针,效果上仅仅是函数名 // const portCHAR* onstpcNane 具有描述性的任务名。FreeRTOS不会使用它 // unsigned portSHORT usStackDepth 指定任务堆栈的大小 
// void *pvParameters 指针用于作为一个参数传向创建的任务 
// unsigned portBASE_TYPE uxPriority 任务运行时的优先级 
// xTaskHandle* pvCreatedTask 用于传递任务的句柄,可以引用从而对任务进行其他操作
FreeRTOS 任务延时
头文件:task.h 
void vTaskDelay (portTickType xTicksToDelay); 
// portTickType xTicksToDelay 时间数量,调用任务应该锁住的时间片周期 
void vTaskDelayUntil (portTickType *pxPreviousWakeTime,
					portTickType xTimeIncrement); 
//portTickType *pxPreviousWakeTime, 指定一个变量来掌握任务最后开启的时间, 第一次使用时必须使用当前时间来初始化, 在 vTaskDelayUntil 中,这个变量是自动修改的 
//portTickType xTimeIncrement 循环周期时间
RreeRTOS 任务删除
头文件:task.h 
void vTaskDelete (xTaskHandlepxTask); 
//xTaskHandlepxTask 处理要删除的任务,传递NULL将删除自己