FreeRTOS实时操作系统学习(一)

FreeRTOS简介

嵌入式操作系统是为了区别于通用的计算机操作系统,人们把嵌入到对象体系中,为实现对象体系智能化控制的计算机操作系统,称作嵌入式计算机操作系统,简称嵌入式操作系统。

嵌入式操作系统分类:
1、按对外部事件的响应能力来分类,嵌入式操作系统分实时操作系统和分时操作系统。
如果操作系统能及时的响应外部事件请求,并能控制所有实时设备和实时任务协调运行,且能再一个规定的时间内完成对事件的处理,那么这种操作系统就称为实时操作系统。(FreeRTOS)
如果操作系统按时间片轮转完各个任务,任务没有优先级,这种系统就称为分时操作系统(Linux操作系统)
2、按时间的严格程度来分,实时操作系统又分为强实时操作系统和弱实时操作系统。系统必须再极其严格的时间内完成的任务叫做硬实时操作系统,比如飞机系统;如果不是很严格的话就是弱实时操作系统,比如信息采集系统

FreeRTOS实时操作系统
FreeRTOS是一款开源免费的实时操作系统,商业使用的话不需要用户公开源代码,也不存在任何版权问题,是当前小型嵌入式操作系统市场使用率最高的。

FreeRTOS的移植比较简单,只需要用户添加需要的源码代码,不需要做任何的底层工作,再添加几个宏定义即可。

裸机系统和多任务系统
1、裸机编程时,先初始化相关的硬件,然后让主程序再一个死循环里面不断的循环,顺序地处理各种事件。对于紧急事件来说采用中断进行快速响应。
伪代码如下

#include<头文件>
#变量定义
int main()
{
	//硬件初始化
	Hard_ware_Init();

	//主循环
	while(1)
	{
		//功能函数1
		Func_1();
		Func_2();
		Func_n();
	}
}
void ISR_1()//中断函数
{
	//中断任务
}

2、多任务系统
相对于裸机系统,多任务系统的事件处理是在任务中完成的,对于紧急事件,同样采用中断功能进行快速响应。

多任务系统通常包含多个任务,彼此独立,方便编程。同时,任务具有优先级,高优先级任务可以打断低优先级任务,系统的实时性进一步得到提高
伪代码如下

#include<头文件>
#变量定义
int main()
{
	//硬件初始化
	Hardware_Init();

	//FreeRTOS初始化
	FreeRTOS_Init();
	
	//FreeRTOS启动,开始任务调度,不再返回
	FreeRTOS_Start();
}

//任务函数1
void Task_1()
{
	for(;;)
	{	
		//任务1处理
	}
}

说明:
引入操作系统后,在编程时不需要精心设计程序执行流,任务间不存在干扰,编程反而变得简单了。
当然,系统需要占用一定的RAM和FLASH资源,如今的单片机,RAM和FLASH越来越大,为采用操作系统提供了便利。
两者对比:

程序结构事件处理紧急任务特点
逻辑系统主函数中断实时响应系统,轮询处理事件
多任务系统任务中断实时响应系统,实时处理事件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值