1 RTOS入门知识


  正点原子手把手教你学FreeRTOS实时系统,P1-P3。

  2024.5.16 19:01
  共29个半小时,现在等毕业论文的盲审结果,预计9天左右看完。
  有必要的点再记,不要抄PPT。

1 裸机与RTOS介绍(了解)

  RTOS中,每个任务都是一个死循环。执行时,极短的时间内切换任务执行。宏观上,任务同时执行。
  RTOS实时性更高。
  突发事件(紧急事件)时,裸机和RTOS怎么处理?
  裸机,有时不易使用中断,可定义标志位,在while中判断运行。但while中程序过多时,不易检测标志位,所以实时性不好。(处在系统延时时,完全死等)

while中,也可看作是一个“任务”一个“任务”的罗列。

  RTOS,为“紧急事件”创建优先级更高的任务,出现“紧急事件”时,优先执行优先级高的任务,低优先级任务暂停执行。但是,高优先级任务处在系统延时时,可执行低优先级的任务(不是死等)。(充分利用了CPU的资源)

中断中,若处理时间太长,容易引发程序错误。

1.1 裸机与RTOS的特点

  裸机,又称前后台系统,前台系统指的是中断服务函数,后台系统指的是大循环,即应用程序。
  缺点:
  1 实时性差,程序轮流执行。
  2 delay时 空等待,CPU不执行其他代码。
  3 代码结构臃肿 实现的功能都放在while中,没有进行分类。
  RTOS,实时操作系统,强调的是实时性。
  优点:
  1 按功能划分任务
  2 延时函数 有任务调度,不会空等待,充分利用CPU资源。
  3 抢占式 高优先级任务抢占低优先级任务,中断抢占任务执行。
  4 任务堆栈 每个任务都有自己的栈空间,使任务从断点开始运行。

堆栈:存放断点的数据,以便继续执行。
堆栈和中断有区别,不完全一样。
中断是最高优先级打断任意任务
中断优先级和任务优先级不一样。
任务优先级是软件层面实现,中断优先级从内核层面实现。

  问题:如果高优先级任务一直在运行,会怎么样?
  答:低优先级任务会五无法运行。高优先级任务进入“系统延时”时,低优先级任务可以执行。高优先级任务进入“阻塞态”时,低优先级任务可以执行。(进入“系统延时”和“阻塞态”时,会释放CPU使用权)

任务间可以同等优先级的。

2 FreeRTOS简介(了解)

  FreeRTOS是RTOS的一种。免费的嵌入式实时操作系统。
  做产品考虑的问题:成本低,免费,稳定性好,安全性好,市场主流。
  FreeRTOS都包含以上。
  FreeRTOS是工作上必不可少的技能。

2020年往后,ucos也开始商用免费,开始内圈起来了。

  特点:
  1 免费开源 商业产品中使用,没有商业风险
  2 可裁剪 核心代码9000+行 包含在3个.c文件中
  3 简单 易用 可移植性非常好
  4 优先级不限 任务优先级分配没有限制,多任务可同一优先级

所使用的执行最高优先级的算法,如果使用的是通用的软件方法,优先级设置没有任何限制。
如果是使用硬件的方法,优先级设置会受限于MCU的架构。比如是STM32,是32位的,任务优先级限制在32(0-31),数字越大,任务优先级越高。
注:有32个优先级设置,但每个优先级下,存在的任务数量没有限制。
中断是,数字越小,优先级越高。

  5 任务不限 可创建的实时任务数量没有软件限制

每个任务都需要被分配任务堆栈,任务堆栈需要MCU提供内存。
任务堆栈太多,MCU也无法提供。
实际上,任务不能无限,受硬件限制,取决于任务堆栈大小。

  5 抢占/协程/时间片 支持抢占式,协程式,时间片流转,共三个任务调度

2.1 FreeRTOS学习资料

1 FreeRTOS官网
  全英文 文档较少

UCOS中文文档资料较全

2 正点原子学习资料
  视频资料
  教程文档 共430页详细教程文档,从基础移植、API函数介绍,到任务创建、队列、信号
  例程源码 共25个例程源码,将FreeRTOS主要功能逐一验证。

学习OS之前,要了解下芯片的架构。
后面学习涉及的ARM Cortex-M架构的知识均参考
《Cortex M3权威指南(中文)》
《Cortex M3与M4权威指南(英文)》
架构与任务切换有关
M3 M4 M7架构类似
M3 M4区别较大:M4支持FPU(浮点运算单元),所以寄存器有区别。

2.2 关于FreeRTOS学习资料

1 FreeRTOS基础知识 了解任务调度器,以及RTOS的特性,打好基础
2 FreeRTOS内核 任务启动流程、中断管理、任务切换…

了解任务切换之前,看看《Cortex M3权威指南(中文)》,了解内核

3 FreeRTOS各个功能 列表、队列、信号量、内存管理…

3 课堂总结(掌握)

  以思维导图的方式总结,内容和上面的1和2重复,本节只记录突出点。
  FreeRTOS切换任务的时间间隔,称为时间片(时钟节拍),如1ms。
  1ms是固定的吗?一个时间片等于SysTick中断周期,可设置。
  每个任务都有自己的栈空间,用于保存局部变量,以及任务的上下文信息。

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值