1.裸机与FreeRTOS介绍及FreeRTOS系统简介

目录

一、裸机与FreeRTOS介绍

二、FreeRTOS简介

一、裸机与FreeRTOS介绍

他们二者的区别是什么呢?

        现在有这么一个事件,我正在打王者荣耀,突然女朋友给我发消息,这是两个事件

对于裸机系统它是这么处理的:

while(1)
{
    打游戏();
    回复消息();
}

        也就是打完游戏才回复女朋的消息,这样的话,女朋友该着急了。也就是打游戏,就不理女朋友,回复女朋友信息就得游戏挂机,处于这样的一个矛盾体中。

对于FreeRTOS系统它是这么处理的:

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

void 游戏(void)
{
    while(1)
    {
        打游戏();
    }
}

void 消息void()
{
    while(1)
    {
        回复消息();
    }

}

        也就是它会创建两个任务,分别是游戏任务和消息任务,在游戏任务里边专门是回复消息,在消息任务中专门是回复消息。

他是如何运行呢?

        它会执行打游戏1个时间片,1个时间片的大小是我们可以设置的,也就是滴答定时器的时钟节拍,我们在代码中设置1ms中断一次,1个时间片也就是1ms,也就是打游戏1ms,马上切换到回复信息,回复信息也执行1ms,紧接着又切换回打游戏1ms,这样来回切换,切换的速度特别快,从宏观上,就像分身,同时进行一样,他们的任务优先级是相同的,这样才能打一会游戏,回复一下信息,这样来回切换的。虽然同一时刻也是只能干一件事情,但是时间太短的,从人的宏观来上是相同的。

        同样的场景,假设小明肚子疼了,要去医院,此时裸机和RTOS又会怎么做呢?

/*对于裸机系统而言*/
while(1)
{
    打游戏();
    回复消息();
    if(FLAG==1)
    {
        去医院();
        FLAG=0;
    }

}

        也就是我打完游戏,回复完消息,才可以去医院,这样裸机的弊端就会暴露出来了。

/*FreeRTOS系统*/
void main(main)
{
    /*创建打游戏任务*/
    xTaskCrete(打游戏)
    /*创建回复消息任务*/
    xTaskCreate(回复消息)
    /*创建去医院任务*/
    xTaskCrete(去医院)//任务优先级
}

void 游戏(void)
{
    while(1)
    {
        打游戏();
    }
}

void 消息void()
{
    while(1)
    {
        回复消息();
    }

}

void 去医院(void)
{
    while(1)
    {
        去医院();
    }
}

        先高优先的任务执行以后,会把CPU的执行权让出来,也就是又可以回复消息,又可以打游戏了,充分利用CPU的资源。

裸机与RTOS特点

        裸机:裸机又称为前后台系统,前台系统指的是中断服务函数,后台系统指的是大循环,即应用程序。

        1.实时性差(应用程序)轮流执行

        2.delay 空等待,cpu不执行代码

        3.结构臃肿(实现功能都放在无限循环中)

        FreeRTOS特点:就是免费实时操作系统,强调的实时性

        1、分而治之、实现功能划分为多个任务。

        2、延时函数 任务调度,充分利用了CPU的资源。

        3、抢占式,高优先级任务抢占低优先级任务。

        4、任务堆栈,每个任务都有自己的占空间。

        注意1:中断可以打断任意任务

        注意2:任务可以同等优先级

二、FreeRTOS简介

        首先看一下 FreeRTOS 的名字,可以分为两部分:“Free”和“RTOS”,“Free”就是免费的、 自由的、不受约束的意思,“RTOS”全称是 Real Time Operating System,中文名就是实时操作 系统,要注意的是,RTOS 并不是值某一特定的操作系统,而是指一类操作系统,例如,µC/OS, FreeRTOS,RTX,RT-Thread 等这些都是 RTOS 类的操作系统。因此,从 FreeRTOS 的名字中就 能看出,FreeROTS 是一款免费的实时操作系统。可以说RTOS是工作中必不可少的技能。

        FreeRTOS是一个免费的嵌入式实时操作系统,他的特点如下:

        免费开源:商业产品中使用,无潜在商业风险,无需担心

        可裁剪:FreeRTOS的核心代码9000+行,包含3个.c文件中

        简单:简单易用,可移植性非常好

        优先级不限:任务优先级分配没有限制,多任务可同一优先级,如果是软件上,他的优先级分配没有限制,如果是硬件,会受限,加假如2单片有32位,他的优先级只可设置32,数字越大,优先级越高,和32单片机相反的。

        抢占/协程/时间片:支持抢占式,协程式、时间片流转任务调度

        可以查看官网学习:https://www.freertos.org/,全英文,嘿

猜你喜欢

转载自blog.csdn.net/zywcxz/article/details/131483532