FreeRTOS入门

1、裸机与FreeRTOS

裸机

裸机是没有装入操作系统的单片机,裸机又称为前后台操作系统,前台系统指的是中断服务函数,后台系统指的是大循环,即while循环中的应用程序。

裸机具有如下缺点

第一、实时性差:应用程序轮流执行,需要等待前一个应用程序执行完之后,后边的程序才可以执行,或者等待中断完全执行完成后,被打断的程序才能继续执行。

第二:delay:空等待,CPU不执行其他代码, FreeRTOS在任务delay的时候,可以执行其他任务。

第三:结构臃肿:实现的功能都放在while循环中,当代码量大的时候,很繁琐。

FreeRTOS

Free Real Time OS,直译:免费的实时操作系统,强调的是,实时性。

FreeRTOS的优点

第一、分而治之:将功能划分为多个任务,而不是放在一个大循环里,逻辑性好。

第二、延时函数:FreeRTOS的延时函数不同于裸机的延时函数,进入延时函数的时候任务会让出CPU的使用权,让其他处于就绪状态的任务执行,这样提高了CPU的利用率。

第三、抢占式:高优先级的任务可以抢占低优先级的任务,类似于裸机的高优先级中断可以抢占低优先级中断,但是注意,任务和中断在FreeRTOS里边不是一个概念,后边会有所涉及。

第四、任务堆栈:每个任务都有自己的栈空间,用于保存被打断时的信息,来保存被打断点的继承性,就是当打断我的任务执行完了之后,我按照我被打断的那时候的进度,接着处理的任务。

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

           2、任务可以同等优先级

           3、如果高优先级的任务一直在运行,那么低优先级的任务将无法运行(这也是需要避免的情况)

2、FreeRTOS简介

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

第一、免费开源:可免费在商业产品中使用,无潜在商业风险。

第二、可裁剪:FreeRTOS的核心代码9000+行,包含在3个.c文件中。通常,如果是在遵循其开源许可协议的规定下进行使用和修改,那么可能不需要上传裁剪部分。但是如果对FreeRTO进行了重大的修改并且打算将其以某种方式开源,那么可能需要根据许可协议的要求确认是否上传以及如何上传裁剪部分。

第三、简单:简单易用,可移植性非常好。

第四、优先级不限:任务优先级分配没有限制(前提是所使用的执行最高优先级的任务的算法使用的是软件的方法,如果使用硬件的方法,受限于MCU的架构),多个任务可以同一优先级。

插播一条,介绍一下执行最高优先级的任务算法。

某些运行FreeRTOS的硬件有两种方法选择喜爱一个要执行的任务:

通用方法和特定于硬件的方法(一下简称“特殊方法”)

通用方法:1.configUSE_PORT_OPTIMISED_TASK_SELECTION 为 0 或者硬件不支持这种特殊方法。

                  2.可以用于所有 FreeRTOS 支持的硬件。

                  3.完全用 C 实现,效率略低于特殊方法。

                  4.不强制要求限制最大可用优先级数目。
特殊方法:1.必须将 configUSE_PORT_OPTIMISED_TASK_SELECTION 设置为 1。

                  2.依赖一个或多个特定架构的汇编指令(一般是类似计算前导零[CLZ]指令)。
                  3.比通用方法更高效。

                  4.一般强制限定最大可用优先级数目为 32。

第五、任务不限:可以设置的实时任务数量没有软件限制。但是有硬件限制,为何?因为每个任务都需要MCU为其分配堆栈,任务太多,内存就吃不消啦。

第六、抢占/协程/时间片:支持抢占式、协程式、时间片流转任务调度,三个调度方式会在后边详解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值