FreeRTOS实时操作系统(一)RTOS的基本概念

系列文章

FreeRTOS实时操作系统(一)RTOS的基本概念

FreeRTOS实时操作系统(二)任务创建与任务删除(HAL库)

FreeRTOS实时操作系统(三)任务挂起与恢复

FreeRTOS实时操作系统(四)中断任务管理

FreeRTOS实时操作系统(五)进入临界区、任务调度器挂起与恢复

FreeRTOS实时操作系统(六)列表与列表项

FreeRTOS实时操作系统(七)时间片调度及RTOS的滴答定时器

FreeRTOS实时操作系统(八)任务状态查询及时间统计函数

FreeRTOS实时操作系统(九)时间延时函数及消息队列

FreeRTOS实时操作系统(十)信号量

FreeRTOS实时操作系统(十一)队列集

FreeRTOS实时操作系统(十二)事件标志组

FreeRTOS实时操作系统(十三)任务通知

FreeRTOS实时操作系统(十四)软件定时器

FreeRTOS实时操作系统(十五)Tickless低功耗模式

FreeRTOS实时操作系统(十六)内存管理


文章目录

  • 系列文章
  • 前言
  • 操作系统分类
  • 编程风格纠正
  • FreeRTOS介绍
    • 任务调度方式
    • 任务状态
  • 总结


前言

最近买了把75系列的机械键盘,没有数字区域,想起来稚辉君曾经做过一把客制化键盘,于是下载了资料准备学一学,网上很多开源的都是用的ATMEGA32U4制作的,稚辉君用stm32f103cbtx就做出来了,让我很佩服,打开资料后发现软件部分涉及到了操作系统,于是打算学一下FreeRTOS。

大部分还是参考正点原子的教程,本篇只是一些基本概念,无具体代码内容学习


操作系统分类

实时操作系统:能及时的响应外部事件请求,并能控制所有实时设备和实时任务协调运行,且能在一个规定的时间内完成对事件的处理。(按系统完成任务的时间的严格程序分为强实时与弱实时)

分时操作系统:按时间片轮转完成各个任务,任务没有优先级,这种系统就称为分时操作系统。(感觉像平时的while循环里面放一堆,裸机开发)

编程风格纠正

  1. 变量定义
    一般前面加上该变量的类型,如:char cTemp;
    char:c,short:s,long:l,无符号类型加u,指针加p,结构体或者任务句柄加x。

  2. 函数名
    函数名包含了函数返回值的类型、函数所在的文件名以及函数的功能,如果是私有的函数,还会加prv前缀。
    举例:
    xTaskCreate()函数的返回值为任务句柄,在Task.c中定义,作用是创建任务;
    vTaskPrioritySet()函数的返回值为void,在Task.c中定义,作用是设置优先级;


  3. 在FreeRTOS中,宏用大写字母表示,并配有小写字母前缀,指示该宏在哪个头文件定义。
    举例
    portMAXDELAY,位于portable.h;
    贯穿FreeRTOS的整个代码表示0与1的宏如下:
    pdTRUE 1
    pdFALSE 0
    pdPASS 1
    pdFAIL 0

FreeRTOS介绍

全称:免费的实时操作系统(Real-time operating system for microcontrollers)

内核4k-9k之间,大部分器件都放的下,可裁剪,轻量级,易移植

裸机开发需要精心设计程序流执行,多任务系统反而简单了,这种逻辑设计被简化了

内部任务也有各自的优先级,通过不停调度实现分时执行各个任务,中断可以打断任意任务。
任务的数值越大优先级越高,与中断相反,且实现优先级的方法有硬件和软件
任务数量没有限制,但是因为要分配器件的内存给任务堆栈保存数据用,所以还是有硬件限制

任务调度方式

1.抢占式调度:整个过程就是在高优先级任务抢占,阻塞挂起等操作,任务在就绪和运行之间切换
FreeRTOS实时操作系统(一)RTOS的基本概念_第1张图片
2.时间片轮换:设置同优先级的任务享有同等的CPU时间,即时间片,一个时间片即SysTick中断周期
FreeRTOS实时操作系统(一)RTOS的基本概念_第2张图片
没有用完的时间片不再使用了,如Task3遇到阻塞的话(系统延时或者等待信号),剩下的时间片就丢了,直接运行下一个任务。
每个任务都享有同等的时间片,不管任务运行了几次while循环,反正就运行一个时间片就切换到下一个任务了。

3.还有一种叫协程式调度(轮询,变回裸机开发了),不常用吧。

任务状态

FreeRTOS实时操作系统(一)RTOS的基本概念_第3张图片
不同状态之间的转换:
FreeRTOS实时操作系统(一)RTOS的基本概念_第4张图片
任务的列表:当某个位置为1时,代表所对应的优先级就绪列表有任务存在
FreeRTOS实时操作系统(一)RTOS的基本概念_第5张图片
系统运行会从上往下找,上面的优先级高,寻找就绪态的任务

总结

先简单了解一下RTOS的基本情况,后面关于移植有直接手动移植的,还有利用HAL库生成的,我偏向第二种,简单学习了一下发现内容还很多,之后详细总结一篇。

你可能感兴趣的:(FreeRTOS,stm32,FreeRTOS,嵌入式操作系统)