正点原子FreeRtos

一:裸机与FreeRtos的区别及其各自的特点

当裸机创建多个任务的时候,裸机在while(1)中按照顺序循环执行多个任务,而且任务之间没有优先级区别,只能按照顺序执行,比如下面这个图片中,当回复信息这个任务更重要时,裸机仍然会先打完游戏然后再回复信息,但是当打游戏这个任务必须花费20min才能执行完之后,回复信息这个任务显然很紧急,20min之后黄花菜都凉l,所以裸机这方面不好,实时性差。

但是此时如果换成FreeRtos,多个任务都是在一个大的时间片中的循环执行,任务优先级高的会打断任务优先级低的先执行。而且下图两个任务如果优先级相同,在固定时间片中,比如1ms,会执行1ms的打游戏,然后再执行1ms的回复信息,然后再1ms的打游戏,循环来回执行多个任务。

裸机下面三个特点

实时性差:程序必须轮流执行,然后有些任务比较重要但是执行过程中仍然得等待它前面的任务执行完才能执行。

delay:当一个任务前面有延时函数的时候,比如延时5s,在这5s时间中,裸机系统一直处于空闲状态,不执行任何任务,造成了资源的浪费。

延时函数:当高优先级任务被延时的时候,比如延时5s,这个时间段FreeRtos就会调用低优先级任务并执行,让系统一直处于工作状态,高效。这个就是任务调度。

如果高优先级任务一直执行,只有通过延时阻塞才能暂时让低优先级任务有时间执行。

任务堆栈:  就是一个任务被打断后,先存储在自己的堆栈中,然后等到自己重新执行时,从栈中再被调用出来,重新执行时,是从上次被中断打断的地方开始执行的。

二:FreeRtos的基础知识点

1.FreeRtos简介

2.FreeRtos四个运行状态

3.任务调度

4.源码各个模块的作用

下面两个才是需要自己移植使用的

源码中最重要的文件夹:

5.FreeRtos移植

5.1移植准备

5.2移植步骤

看陈工的详细步骤,下面移植过程不全。

不同单片机移植内核不同。

时钟差异。

在F1中下面那个宏是打开的,但是在F4,F7中是关闭的,这个是这F1芯片跟其它芯片唯一的区别

6.任务的创建和删除

6.1动态创建

6.2动态创建

6.3任务删除

动态删除:

删除静态

7.在创建任务中,怎么查看堆栈的剩余空间,调用freertos的一个API函数

8.临界保护

FreeRTOS(Real-Time Operating System)是一个用于嵌入式系统的开源实时操作系统。在多任务系统中,临界保护(Critical Section)是一种机制,用于保护共享资源免受并发访问的影响。在FreeRTOS中,提供了多种临界保护机制。

1. 临界区禁止中断:FreeRTOS提供了API函数用于禁用和启用中断,在访问共享资源之前,可以先禁用中断,在访问完成后再启用中断。这样可以保证在临界区内不被中断打断,从而保护共享资源的完整性。

2. 互斥量(Mutex):互斥量是一种同步机制,用于保护共享资源的访问。FreeRTOS提供了互斥量API函数,可以通过获取和释放互斥量来限制同一时间只有一个任务能够访问共享资源。当一个任务获取到互斥量时,其他任务将处于阻塞状态,直到该任务释放互斥量。

3. 信号量(Semaphore):信号量是一种用于同步和互斥的机制。FreeRTOS提供了二进制信号量和计数信号量两种类型。任务可以通过获取和释放信号量来进行同步操作,保证在指定条件满足时才能继续执行。

4. 任务通知(Task Notification):任务通知是一种轻量级的通信机制,用于在任务之间传递信息和同步操作。任务可以通过发送和接收任务通知来进行临界保护,确保共享资源的正确访问。

以上是FreeRTOS中常用的临界保护机制,根据具体场景和需求,可以选择适合的机制来确保共享资源的安全访问。


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值