RT_Thread RTOS 设计与实践

学习目标:

了解嵌入式实时操作系统的原理及分类


学习内容:

1、 操作系统分类

        操作系统(operating system,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入/输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

        操作系统分类:桌面操作系统、服务器操作系统、移动操作系统、嵌入式操作系统。

        桌面操作系统:Windows操作系统,Linux,Mac OS

        服务器操作系统:Linux服务器操作系统,微软Windows服务器操作系统

        移动操作系统:谷歌的Android,苹果的iOS,Harmony OS

        嵌入式操作系统:除上述的计算机系统软件(军用,消费电子,工业控制,网络应用)

2、 嵌入式硬件组成

        主控芯片、电源管理、开发调试接口、数据采集模块、通信模块、音频/视频模块

3、 实时操作系统特点

        3.1  等级系统抢占性:对于实时的任务需要在第一时间内做出反应。

        3.2 时间的正确性和功能的正确性:系统的正确性不仅取决于计算的逻辑结果,还依赖于产生结果的时间。

        3.3 可确定性:系统可以在给定的时间内对一个给定的时间做出相应。

        3.4 实时系统:分为软实时系统(可以微微超出给定的时间)和硬实时系统(严格限定)

        3.5 嵌入式操作系统和裸机循环:

        3.6 嵌入式操作系统是应用于嵌入式系统的软件,用来对嵌入式底层硬件与上层应用软件,操作系统将底层驱动封装起来为开发者提供功能接口。

        3.7 实时操作系统:uC/OS、FreeRTOS、RT-Thread

        3.8 RT-Thread支持的编译工具:IAR、GCC、Keil

        3.9 RT-Thread支持硬件架构:ARM Cortex-M0、ARM Cortex-M3/M4/7、 ARM Cortex-R4、ARM Cortex-A8/A9、ARM920T/ARM926 etc、MIPS32、x86、Andes、C-Sky、RISC-V、PowerPC

        3.10 进入物联网之后,可靠性、长待机、低成本、通信方式和传输协议、手机兼容性、二次开发、云端对接等成为必须考虑与解决的问题。

4、了解与快速上手RT-Thread

        随着深入接触,你会逐渐发现RT-Thread的魅力和它相比较其他同类型RTOS的优越之处。

4.1 RT-Thread概述

        RT-Thread,全称是Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统, 基本属性之一是支持多任务,允许多个任务同时运行并不意味着处理器在同一时刻真地执行了多个任务。 

        RT-Thread 主要采用 C 语言编写,浅显易懂,方便移植。它把面向对象的设计方法应用到实时系统设计中, 使得代码风格优雅、架构清晰、系统模块化并且可裁剪性非常好。

        相较于 Linux 操作系统,RT-Thread 体积小,成本低,功耗低、启动快速,除此以外 RT-Thread 还具有实时性高、占用资源小等特点,非常适用于各种资源受限(如成本、功耗限制等)的场合。

4.2 RT-Thread的架构

         近年来,物联网(Internet Of Things,IoT)概念广为普及,物联网市场发展迅猛, 嵌入式设备的联网已是大势所趋。终端联网使得软件复杂性大幅增加,传统的 RTOS 内核已经越来越难满足市场的需求,在这种情况下,物联网操作系统(IoT OS)的概念应运而生。 物联网操作系统是指以操作系统内核(可以是 RTOS、Linux 等)为基础, 包括如文件系统、图形库等较为完整的中间件组件,具备低功耗、安全、 通信协议支持和云端连接能力的软件平台,RT-Thread 就是一个 IoT OS。

RT-Thread 与其他很多 RTOS 如 FreeRTOS、uC/OS 的主要区别之一是, 它不仅仅是一个实时内核,还具备丰富的中间层组件,如下图所示。

         它具体包括以下部分:

内核层:RT-Thread 内核,是 RT-Thread 的核心部分,包括了内核系统中对象的实现, 例如多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等; libcpu/BSP(芯片移植相关文件 / 板级支持包)与硬件密切相关,由外设驱动和 CPU 移植构成。

组件与服务层:组件是基于 RT-Thread 内核之上的上层软件,例如虚拟文件系统、FinSH 命令行界面、 网络框架、设备框架等。采用模块化设计,做到组件内部高内聚,组件之间低耦合。

RT-Thread 软件包:运行于 RT-Thread 物联网操作系统平台上,面向不同应用领域的通用软件组件, 由描述信息、源代码或库文件组成。RT-Thread 提供了开放的软件包平台, 这里存放了官方提供或开发者提供的软件包,该平台为开发者提供了众多可重用软件包的选择, 这也是 RT-Thread 生态的重要组成部分。软件包生态对于一个操作系统的选择至关重要, 因为这些软件包具有很强的可重用性,模块化程度很高,极大的方便应用开发者在最短时间内, 打造出自己想要的系统。RT-Thread 已经支持的软件包数量已经达到 60+,如下举例:

物联网相关的软件包:Paho MQTT、WebClient、mongoose、WebTerminal 等等。

脚本语言相关的软件包:目前支持 JerryScript、MicroPython。

多媒体相关的软件包:Openmv、mupdf。

工具类软件包:CmBacktrace、EasyFlash、EasyLogger、SystemView。

系统相关的软件包:RTGUI、Persimmon UI、lwext4、partition、SQLite 等等。

外设库与驱动类软件包:RealTek RTL8710BN SDK。


学习时间:

提示:这里可以添加计划学习的时间
例如:
1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点


学习产出:

提示:这里统计学习计划的总量
例如:
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Rt_thread是一个实时操作系统(RTOS)中的线程管理模块,常用于嵌入式系统开发。下面是一些常用的Rt_thread函数解析: 1. rt_thread_t rt_thread_create(rt_thread_entry_t entry, void *parameter, const char *name, rt_uint8_t stack_size, rt_uint8_t priority, rt_uint32_t tick): 该函数用于创建一个新的线程。参数包括线程入口函数(entry)、传递给线程的参数(parameter)、线程名称(name)、线程堆栈大小(stack_size)、线程优先级(priority)和时间片轮转周期(tick)。 2. void rt_thread_startup(rt_thread_t thread): 该函数用于启动一个已创建的线程。调用该函数后,线程将开始执行。 3. rt_err_t rt_thread_delete(rt_thread_t thread): 该函数用于删除一个指定的线程。可以在其他线程中调用该函数,也可以在线程自身中调用。 4. rt_err_t rt_thread_suspend(rt_thread_t thread): 该函数用于暂停一个指定的线程,使其进入挂起状态。 5. rt_err_t rt_thread_resume(rt_thread_t thread): 该函数用于恢复一个已暂停的线程,使其从挂起状态恢复执行。 6. void rt_thread_yield(void): 该函数用于主动放弃当前线程的执行权,将CPU时间片让给其他优先级更高的就绪线程。 7. rt_err_t rt_thread_delay(rt_tick_t tick): 该函数用于将当前线程延时指定的时间,单位为时钟节拍。 8. rt_thread_t rt_thread_self(void): 该函数用于获取当前线程的句柄。 这些是Rt_thread中常用的函数,通过它们可以实现线程的创建、启动、挂起、恢复、延时等操作。需要根据具体的应用场景和需求选择合适的函数进行使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值