news 2026/11/4 16:30:57

RTOS系统学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RTOS系统学习
引言

裸机系统
裸机系统通常分成轮询系统和前后台系统。相比轮询系统,前后台系统在它基础上加入了中断。

// 轮询系统伪代码intmain(void){HardWareInit();//硬件相关初始化//无限循环for(;;){DoSomething1();//处理事件1DoSomething2();//处理事件2DoSomething3();//处理事件3}}
//前后台系统伪代码intflag1=0;intflag2=0;intflag3=0;intmain(void){HardWareInit();//硬件相关初始化//无限循环for(;;){if(flag1)DoSomething1();//处理事件1if(flag2)DoSomething2();//处理事件2if(flag3)DoSomething3();//处理事件3}}voidISR1(void){flag1=1;//置位标志位}...

前后台系统确保了事件不会丢失,再加上中断具有可嵌套的功能,提高了程序的实时响应能力。
多任务系统
在多任务系统中,任务与中断一样,也具有优先级,优先级高的任务会被优先执行。

intflag1=0;intflag2=0;intflag3=0;intmain(void){HardwareInit();//硬件相关初始化RTOSInit();//RTOS初始化RTOSStart();//RTOS启动,开始多任务}voidISR1(void){flag1=1;//置位标志位}voidDoSomething1(void){//无限循环,不能返回for(;;){//任务实体1if(flag1){}}}...

①在多任务系统中,根据程序的功能,我们把程序主体分割成一个个独立的、无限循环且不能返回的小程序,这个小程序我们称之为任务。
②每个任务都是独立的、互不干扰的、且具备自身的优先级,它由操作系统调度管理。
③整个系统的额外开销就是操作系统占据的少量FLASH和RAM。现如今单片机的FLASH和RAM越来越大,完全足以抵消RTOS的开销。
不能说哪个孰优孰劣,合适的才是最好的。

模型事件响应事件处理特点
轮询系统主程序主程序轮询响应,轮询处理
前后台系统中断主程序实时响应,轮询处理
多任务系统中断任务实时响应,实时处理

数据结构–列表与列表项
在FreeRTOS中存在大量的基础数据结构列表和列表项的操作,要想读懂FreeRTOS的源码或者从0到1实现FreeRTOS,就必须弄懂列表和列表项的操作。列表和列表项对应C语言中的链表和节点。
链表分为单向链表和双向链表,单向链表很少使用,用得最多还是双向链表。
单向链表
单向链表示意图如图所示,该链表中共有n个节点,前一个节点都有一个箭头指向后一个节点(节点本身有一个节点指针,指向下一个),首尾相连,组成一个圈。

节点都是自定义类型的数据结构,在该结构中可以有单个数据、数组、指针数据和自定义的结构体数据类型等信息。

structnode{structnode*next;//指向链表的下一个节点chardata1;//单个的数据unsignedchararray[];//数组unsignedlong*prt;//指针数据structuserstructdata2;//自定义结构体类型数据}

概述
①RTOS全称:Real Time OS, 就是实时操作系统;实时操作系统又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作,硬实时系统不允许超时,在软实时里处理过程超时的后果就没那么严格。
②在实时操作系统中,我们可以把要实现的功能划分为多个任务,每个任务负责实现其中的一部分,每个任务都是一个很简单的程序,通常是一个死循环。
③RTOS操作系统:UCOS,FreeRTOS, RTX, RT-Thread等。
④RTOS操作系统的核心内容在于:实时内核。
可剥夺型内核
①RTOS的内核负责管理所有的任务,内核决定了运行哪个任务,何时停止当前任务切换到其他任务,这个是内核的多任务管理能力。多任务管理给人的感觉好像芯片有多个CPU,多任务管理实现了CPU资源的最大化利用,多任务管理有助于实现程序的模块化开发,能够实现复杂的实时应用。
②可剥夺内核就是可以剥夺其他任务的CPU使用权,它总是运行就绪任务中优先级最高的那个任务。

UCOS系统简介:
UCOS是Micrium公司出品的RTOS类实时操作系统,UCOS目前有两个版本:UCOSII和UCOSIII。
UCOSIII是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。
UCOSIII是用C和汇编来写的,其中绝大部分都是用C语言写的,只有极少数与处理器密切相关的部分代码才是用汇编写的。
UCOS相关资料查找:
①Micrium官网:www.micrium.com
②开源电子网:www.opened.com
③其他论坛

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/4 16:30:42

线性表的顺序表示和实现

1.顺序表示和实现sequence sq顺序(谁困死在 顺序的车道)flow (f漏 流动流淌)overflow(溢出 漫出)init → initialize → 初始化(1/0)merge(mer j)合并头文件…

作者头像 李华
网站建设 2026/11/4 16:18:41

三月七小助手:把星穹铁道每日日常交给定时任务的使用指南

三月七小助手:把星穹铁道每日日常交给定时任务的使用指南 【免费下载链接】March7thAssistant 日常交给三月七,开拓留给你。《崩坏:星穹铁道》开源自动化助手。 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 通勤前…

作者头像 李华
网站建设 2026/11/4 16:06:53

如何快速在本地跑通 GitHub Actions?actrun 新手完整教程

【免费下载链接】actrun GitHub Actions compatible local runner 项目地址: https://gitcode.com/gh_mirrors/ac/actrun 点击查看 免费下载 还在为 GitHub Actions 的排队和慢启动烦恼吗?本文带你用 actrun(一个用 MoonBit 编写的 GitHub A…

作者头像 李华
网站建设 2026/11/4 15:50:16

Hermes Agent容器编排监控工具:Prometheus与Grafana配置

Hermes Agent容器编排监控工具:Prometheus与Grafana配置 Hermes Agent是一款功能强大的容器编排监控工具,能够帮助开发者和运维人员轻松实现对容器环境的全面监控。本文将详细介绍如何配置Prometheus与Grafana,以实现对Hermes Agent容器编排…

作者头像 李华