嵌入式实时操作系统RTX5快速入门 (完结)

一、前言

在实际工作中使用过ucosIII与FreeRTOS,对它们的API比较熟悉,那么当有新的项目时,应该直接二选一。为什么非得去折腾另一款新的RTOS(RTX5)?RTX5的简单介绍可以查看安富莱的总结:第3章 RTX5操作系统介绍
非得折腾去RTX5的理由:

  1. 实时性强。以低的中断延迟执行高速实时操作(对于M3/M4/M7内核可以实现零中断延迟,跟裸机一样)
  2. 确定性。
  3. 通过MDK的RTE开发环境可以一键添加。
  4. MDK配套使用终极调试工具Event Recorder。(量化线程的运行时间,各个线程在时间戳上的关系等)
  5. 在Cortex-M系列内核有安全认证。

上一年年底时,有一个新项目使用RTOS。当时RTX5中文资料缺乏,而且写代码的时间只有三周,压根不敢用RTX5来做项目(当时还没有学过RTX5),无奈之下只能继续使用FreeRTOS了。
现在RTX5的中文教程还是很少,想要系统性学习RTX5,只能通过查看RTX的英文官方手册,这对大部分嵌入式的同学来说比较困难。为此,分享我的RTX5学习笔记,尽量分享RTOS实战经验。希望能帮助同学们更快了解如何使用RTX5,缩短学习周期,尽快将RTX5用在项目上。

想了解深入了解RTOS基础知识的同学,有两份资料推荐:

  1. 《安富莱UCOSIII教程》学习。
  2. 还有一本书(强烈推荐购买):
    在这里插入图片描述

从这两份资料,同学们可以了解:比如什么是抢占式调度,什么是时间片轮转调度,什么是合作式调度,什么是事件标志组,什么是信号量,它们的应用场景是什么等等知识。虽然主题是UCOSIII,但是RTOS的基础知识都是大同小异的。

二、RTX5

移植RTX5成功后,建议直接从线程管理开始学习RTX5。学习线程管理,消息队列,线程标志组,事件标志组后,对RTX5有一个较大的认识后,再倒回来学习配置文件的内容。

2.0、模板

做了一些模板供同学们使用。
RTX5 | STM32H743+CubeMX+RTX5+两路FDCAN模板
RTX5 | STM32H743+CubeMX+RTX5+两路FDCAN驱动+CANopen协议

2.1、移植

STM32F103+CubeMX-Keil上移植RTX5实时系统
STM32F407+CubeMX+Keil上移植RTX5实时系统
STM32H743+CubeMX+Keil上移植RTX5实时系统

2.2、基础知识

RTX5 | 时间延时
RTX5 | 配置文件RTX_Config.h(一)
RTX5 | 配置文件RTX_Config.h(二)
RTX5 | 配置文件RTX_Config.h(三)

2.3、线程管理(Thread Managment)

RTX5 | 线程管理01 - 创建线程(静态堆栈方式)
RTX5 | 线程管理02 - 创建线程(动态堆栈方式)
RTX5 | 线程管理03 - 线程退出osThreadExit
RTX5 | 线程管理04 - 线程加入osThreadJoin
RTX5 | 线程管理05 - 线程挂起osThreadSuspend与线程恢复osThreadResume

2.4、消息队列(Message Queue)

RTX5 | 消息队列01 - 创建消息队列
RTX5 | 消息队列02 - 放入与取出消息
RTX5 | 消息队列03 - 获取消息队列里消息的数量,并一次性提取出来
RTX5 | 消息队列04 - (实战技巧)串口中断回调函数ISR同步线程
RTX5 | 消息队列05 - 获取剩余空间,清空消息队列,删除消息队列
RTX5 | 消息队列06 - (实战技巧)FDCAN接收中断ISR同步线程

2.5、线程标志组(Thread Flags)

RTX5 | 线程标志组01 - 线程同步
RTX5 | 线程标志组02 - 获取线程标志与清除线程标志

2.6、事件标志组(Event Flags)

RTX5 | 事件标志组01 - 创建事件标志组
RTX5 | 事件标志组02 - 置位事件标志组,并获取事件标志组的值
RTX5 | 事件标志组03 - 线程同步(逻辑或)
RTX5 | 事件标志组04 - 线程同步(逻辑与)

2.7、时间定时器

RTX5 | 软件定时器01 - 创建一个软件定时器(单次运行)
RTX5 | 软件定时器02 - 创建一个软件定时器(连续运行)

2.8、信号量

RTX5 | 信号量01 - 信号量的使用

2.9、互斥量

RTX5 | 互斥量01 - 互斥量的使用

2.10、内存池

RTX5 | 内存池01 - 内存池的使用
RTX5 | 内存池02 - 剩下几个API
RTX5 | 内存池03 - 共享内存用于线程之间的通讯(轮询方式)
RTX5 | 内存池04 - 共享内存用于线程之间的通讯(阻塞方式)- 使用信号量

版权声明:本文为CSDN博主「Wallace Zhang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wallace89/article/details/117755452

生成海报
点赞 1

Wallace Zhang

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

freertos与rtthread内核实现的不同处

一直在使用rtos作为主要开发内容,却没有详细了解过rtos的内核实现机制。最近一个月,抽了点时间将freertos和rtthread的内核代码看了下,了解了实时系统的实现机制和设计思想。这里学习fre

嵌入式实时操作系统10——系统时钟节拍

1.系统节拍是什么 时间管理在操作系统内核中占有非常重要的地位,操作系统内核中有大量基于时间驱动的功能。有些任务是需要周期执行,比如一个软件定时器需要一秒钟周期性运行100次;有些功能任务需要延时一段