RTOS开发

  • 1、裸机开发模式

  • 轮询方式

void main()
{ 
     while(1)
     {
         DHT11数据采集;
         读取WIFI数据;
         判断数据
     }
}

 中断方式(前后台)

void main()
{ 
 while(1)
 {
    if(DHT11==1)
    {
     DHT11数据处理;
     DHT11=0;
    }
    if(wifi==1)
    {
     处理WIFI数据;
     wifi=0;
     }
 }
}
void DHT11_irq()
{
 DHT11=1;
}
void WIFI_irq()
{
 wifi=1;
}
//中断处理的速度高了
//触发之后又成为了轮询操作
//假如DHT11优先级高,且处理时间过长 wifi的处理就不及时了

改进(常用中断(前后台))定时器

设置1S定时器中断(DHT11采集)

设置2s定时器中断(Wifi数据处理)

裸机程序的进一步优化

void wifi(void)
{
  static int key=0;
  switch(key)
  {
    case 0:
      发送AT指令();
      key=1
      return;
    case 1:
      接收数据();
       key=2
      return;
    case 2:
      判断数据();
      key=0
      return;
  } 
}
void DHT11(void)
{
  static int DHT11=0;
  switch(DHT11)
  {
    case 0:
      握手();
      DHT11=1
      return;
    case 1:
      接收数据();
       DHT11=2
      return;
    case 2:
      判断数据完整性();
      DHT11=3;
      return;
    case 3:
      数据处理();
      DHT11=0;
      return;
  } 
}
//问题解决了,但是程序的复杂度上来了
//基于裸机架构无法完美解决复杂耗时的多个函数

而且裸机还有问题

while(1)

  DHT11;
  if(key)
  {
    delay(100);//程序在这停止了,效率被影响了
    wifi();
  }
}

2、学习RTOS的3个步骤

学会使用API

了解API实现原理

可以优化改进API

  • RTOS的概念
  1. 什么是RTOS

实时操作系统(Real-time operating system, RTOS),又称即时操作系统,它会按照排序运行管理系统资源,并为开发应用程序提供一致的基础。

实时操作系统与一般的操作系统相比,最大的特色就是“实时性”,如果有一个任务需要执行,实时操作系统会马上(在较短时间内)执行该任务,不会有较长的延时。这种特性保证了各个任务的及时执行。

  1. 都有哪些RTOS

1)FreeRTOS  

 由于RTOS需占用一定的系统资源(尤其是RAM资源),只有C/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。

相对于C/OS-II、 embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为6.0版。

       作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。

        FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的、优先级最高的任务先运行。

FreeRT0S内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使用时间。

FreeRTOS的不足:

         相对于常见的μC/OS—II操作系统,FreeRTOS操作系统既有优点也存在不足。

         其不足之处, 一方面体现在系统的服务功能上,如FreeRTOS只提供了消息队列和信号量的实现,无法以后进先出的顺序向消息队列发送消息;另一方 面,FreeRTOS只是一个操作系统内核,需外扩第三方的GUI(图形用户界面)、TCP/IP协议栈、FS(文件系统)等才能实现一个较复杂的系统, 不像μC/OS-II可以和μC/GUI、μC/FS、μC/TCP-IP等无缝结合。

2)VxWorks

美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系(RTOS),具有硬实时、确定性与稳定性,也具备航空与国防、工业、医疗、汽车、消费电子产品、网络及其他行业要求的可伸缩性与安全性。

主要功能:

支持可预测的任务同步机制、支持多任务间的通信、存储器优化管理、操作系统的(中断延迟、任务切换、驱动程序延迟等)行为是可知的和可预测的。实时时钟服务+中断管理服务。

主要特点:

具有一个高性能的操作系统内核Wind(实时性好、可裁减)友好的开发调试环境、较好的兼容性、支持多种开发和运行环境

3) Alios Things

据著名媒体嵌入式操作系统RTOS介绍,AliOS Things 是 AliOS 家族旗下、面向 IoT 领域的、高可伸缩的物联网操作系统。AliOS Things将致力于搭建云端一体化IoT基础设施,具备极致性能、极简开发、云端一体、丰富组件、安全防护等关键能力,并支持终端设备连接到阿里云Link,可广泛应用在智能家居、智慧城市、新出行等领域

4)Huawei LiteOS

嵌入式操作系统RTOS介绍,Huawei LiteOS 是华为面向IoT领域,构建的轻量级物联网操作系统,以轻量级低功耗、快速启动、互联互通、安全等关键能力,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期。

5)RT-Thread

嵌入式操作系统RTOS介绍,RT-Thread是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。RT-Thread具备一个IoT OS平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功耗组件等等。经过11年的累积发展,RT-Thread已经拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过两千万台,成为国人自主开发、国内最成熟稳定和装机量最大的开源RTOS。

嵌入式操作系统RTOS推荐的学习资源:

书籍:《 嵌入式实时操作系统:RT-Thread设计与实现 》《 RT-Thread内核实现与应用开发实战指南 基于STM32 》

2、μC/OS-II

μC/OS-II是在μC/OS的基础上发展起来的,是用C语言编写的一个结构小巧、抢占式的多任务实时内核。μC/OS-II能管理64个任务,并提供任务调度与管理内存管理任务间同步与通信时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和扩展性强等特点。

在文件系统的支持方面,由于μC/OS-II是面向中小型嵌入式系统的,即使包含全部功能,编译后内核也不到10 KB,所以系统本身并没有提供对文件系统的支持。但是μC/OS-II具有良好的扩展性能,如果需要也可自行加入文件系统的内容。

在对硬件的支持上,μC/OS-II能够支持当前流行的大部分CPU,μC/OS-II由于本身内核就很小,经过裁剪后的代码最小可以为2KB,所需的最小数据RAM空间为4 KB,μC/OS-II的移植相对比较简单,只需要修改与处理器相关的代码就可以。

综上可知,μC/OS-II是一个结构简单、功能完备和实时性很强的嵌入式操作系统内核,针对于没有MMU功能的CPU,它是非常合适的。它需要很少的内核代码空间和数据存储空间,拥有良好的实时性,良好的可扩展性能,并且是开源的,网上拥有很多的资料和实例,所以很适合向stm32f103这款CPU上移植。

##

3.RTOS的应用场景

FreeRTOS协程的实际应用案例有很多,其中包括:

嵌入式系统:在嵌入式系统中,FreeRTOS协程可以用来管理多个任务和资源,比如控制器、传感器和网络通信。

智能家居:在智能家居中,FreeRTOS协程可以用来管理各种设备之间的通信和交互。

工业自动化:在工业自动化中,FreeRTOS协程可以用来管理设备和运动控制等任务。

无人机和机器人:在无人机和机器人中,FreeRTOS协程可以用来管理多个传感器、网络通信和控制等任务。

物联网:在物联网领域中,FreeRTOS协程可以用来管理多个设备之间的通信,接收和发送数据,以及处理数据。

  1. 4、RTOS的选择

 安全性:RTOS 是否有助于设备的安全性或损害设备的安全性?容易出现用户错误吗?

 性能:RTOS 能否促进应用程序代码的开发?代码是否在所需参数内执行?

 可靠性:RTOS 是否会影响设备的可靠性?

 功能:RTOS 是否具备完成这项工作所需的设施?

5、RTOS的工作原理

基本概念

RTOS是一种通用的任务管理框架,用于控制任务的运行和任务之间的交互,保证事件得到实时处理。

RTOS的三要素:实时性 + 操作系统 + 嵌入式

① RTOS相当于实现了后台的主循环,并能够处理ISR主循环的交互

② 使得用户可以只考虑任务的设计

③ RTOS还提供了各种组件用于实现任务间交互及其他控制管理功能(e.g. 存储管理)

工作原理

提供多个执行流,虽然实际只有一颗CPU,但通过"虚拟化",每个Task好像独占CPU

此处"虚拟"的CPU并非完全的虚拟,"独占"也并不是真正独占,而只是任务认为自己独占

任务认为自己独占的理解:task可以认为自己独占一颗CPU,所以可以实现为一个死循环。而CPU上实际的执行流,会由于操作系统的控制,在不同task之间进行切换。这样既简化了task的设计,也充分利用了CPU

这就引入了一个问题,即"操作系统的控制"本身在实现上也是一段代码,那么这段代码在什么时机运行呢 ? 其实就是在中断或者task主动交出CPU控制权的时候(e.g. task调用可能导致阻塞的函数)

提供资源管理和通信组件

提供一些组件用于简化任务对资源的访问,事件的处理,以及任务之间的通信,有效降低任务之间的代码耦合

FreeRTOS特点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

满山的猴子我的腚最红

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值