FreeRtos实时系统:入门及简介

FreeRtos实时系统:入门及简介

  • 一.RTOS入门知识
    • 1.裸机与RTOS介绍
    • 2.裸机和RTOS特点
  • 二.FreeRtos简介
    • 1.FreeRtos特点:

一.RTOS入门知识

1.裸机与RTOS介绍

有一个人叫小明
小明在打游戏同时有人给小明发信息
裸机: 小明不能及时回复信息

while(1)
{    
  //需要进行玩打游戏后才能进行回复信息
  打游戏(); 
  回复消息();    
}

RTOS: 小明能及时回复信息
打游戏一个时间片 回信息一个时间片来回切换
宏观上看不出切换效果如同时进行
前提: 任务优先级相同

void 游戏(void)
{
  while(1)
  {
    打游戏();
  }
}
void 信息(void)
{  while(1)  
   {  
     回复信息();
   }
}
void main(void)
{
  /*创建打游戏任务*/
  xTaskCreate(打游戏)
  /*创建回复信息任务*/
  xTaskCreate(回复消息)
}

同样,假设此时小明肚子疼,要去医院。

裸机:
设置一个中断,一肚子疼就触发中断。
中断是一瞬间的事,不能做太多事情,不能delay。
所以设置一个标志位裸机上一肚子疼就触发中断函数里的标志位。

while(1)
{
  //需要打完游戏回信息后才判断flag实时性差
  打游戏();
  回复();
  if(flag=1)
  {
    去医院();
    flag=0;
  }
}

RTOS:
在高优先级任务delay时可把cpu使用权让给低优先级任务执行,不是死等。
在去医院的途中又能打游戏又能回复信息了。

//高优先级任务
void 去医院(void)
{
  while(1)
  {
  	去医院();
  }
}
//低优先级任务
void 游戏(void)
{
  while(1)
  {
    打游戏();
  }
}
void 信息(void)
{  while(1)  
   {  
     回复信息();
   }
}
void main(void)
{
  /*创建打游戏任务*/
  xTaskCreate(打游戏)
  /*创建回复信息任务*/
  xTaskCreate(回复消息)
  /*创建回复信息任务*/
  xTaskCreate(去医院)
}

总结:RTOS能充分利用cpu资源

2.裸机和RTOS特点

裸机: 又称前后台系统,前台系统指中断函数,后台指大循环,即任务程序。
1.实时性差
应用程序轮流执行
2.delay空等待
cpu不执行其他代码
3.结构臃肿
实现功能都放在无限循环
裸机
RTOS: 全称为:Real Time OS,强调实时性。
1.分而治之
实现功能划分多个任务。
2.延时函数
任务调度,delay让出cpu使用权给低优先级执行。
3.抢占式
高优先级任务抢占低优先级任务。
4.任务堆栈
每个任务都有自己的栈空间,保存局部变量的值。
注意1:中断可打断任意任务。
任务优先级由软件意义上实现的,中断由内核实现与软件无关。
注意2:任务可同等优先级
在这里插入图片描述
问题:如果高优先级任务一直在运行,会怎么样?
答:一直进行高优先级任务,直到阻塞态(delay)或者等待信号量或互斥量也会进入阻塞态让出cpu使用权,只要低优先级任务就绪就可以马上执行。

二.FreeRtos简介

FreeRtos是一个免费的嵌入式实时操作系统

1.FreeRtos特点:

1.免费开源
商业产品中使用,无潜在商用风险,无需担心。
2.可裁剪
FreeRtos的核心代码9000行,包含在3个.c文件中
3.简单
简单易用,可移植性好。
4.优先级不限
任务优先级分配没有限制,多任务可同一优先级。
软件方法无限制,硬件方法如stm32限制在0-31这个范围。
5.任务不限
可创建的实时任务数量没有软件限制。
6.抢占/协程/时间片
支持抢占式,协程式,时间片流转任务调度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值