RTX实时操作系统(RTOS)简介学习笔记

2023-05-16

RTX实时操作系统(RTOS)简介学习笔记

RTOS:Real time Operation System
Keil RTX 是免版税的确定性实时操作系统,适用于 ARM 和 Cortex-M 设备。

【RTX概述】
RTOS 可以自由地调度系统资源,比如CPU和内存,并且提供一种任务间通信机制。
RTX程序使用标准的C结构编写,运用RealView编译器进行编译。RTX.H 头文件定义了RTX函数以及宏,可以让轻松地声明任务并达到RTOS所有特性。

RTX的基本功能就是开始和停止任务(进程),除此之外还支持进程通信,例如任务的同步、共享资源(外设或内存)的管理、任务之间消息的传递。

开发者可以使用基本函数去开启实时运行器,去开始和终结任务,以及去传递任务间的控制(轮转调度)。开发者可以赋予任务优先级。

【RTX进程通信】
>>           事件标志
事件标志是实现进程同步的主要方法,每个进程有16个事件标识可供使用,所以最多能等待16个不同的事件。也可以同时等待多个事件标志,这种情况下,如果这些事件标志是与的关系,那么这些事件标志必须都被置位后该进程才能继续运行;如果这些事件标志是或的关系,那么这些事件标志中的一个或几个被置位后该进程就可以继续运行。
事件标志也可被ARM中断功能置位。在这种机制下,通过使用ARM中断函数设置任务等待的标志,可以使异步的外部事件和RTX核的任务同步。

>>         信号量
在多任务实时操作系统中,需要特别的方法访问共享资源。否则,这些任务对共享资源的同时访问可能会导致数据的不一致或外设的错误操作。
解决访问临界资源问题的主要方法是信号量。信号量是包含了虚拟标志的软件对象。内核将标志给第一个请求的任务。在任务将其返回给信号量之前,没有其他的任务可以获取这个标志。只有拥有标志的任务才能访问公共资源,这就阻止了其他的任务访问和扰乱公共资源。
当信号量的标志不可用时,访问它的进程将被挂起,一旦标志被返回,这个进程就会被唤醒。为了解决错误的等待条件,必须引入超时机制。

>>         互斥量
互斥量是解决进程同步问题的另一种方法。它们用作对临界区的访问控制,只有拥有互斥量的进程才能访问临界区,其他试图访问临界区的进程将被阻塞。


>>         信箱
有时进程之间需要交换消息,这在网络中是很常见的,例如TCP-IP、UDP、ISDN等。
消息就是包含协议消息或帧的内存块的指针,这样的内存块可以动态的分配和提供给用户。为了防止内存泄漏,用户有责任正确地分配和回收内存块。
如果接收进程访问信箱中的消息不存在,它将被挂起,直到该消息被发送进程发送到信箱中,该被挂起的接收进程才会被唤醒。


【RTX技术规范】
支持的进程数:最多256
支持的信号量数:每个进程16个
RAM 要求:最少500字节
代码要求:小于5 K字节
硬件要求:一个或多个片上时钟可用
用户进程优先级: 1 - 255
进程切换的时间:小于5usec @60MHz, 0 ws.
中断停止时间:小于1.8usec @60MHz, 0 ws
 
RTX核的默认配置是:10个任务、10个用户定时器、禁止栈的检查。 

【RTX时序规格】(单位:us微秒)
初始化系统(os_sys_init), 启动进程: 36.3
创建定义的进程,没有进程切换: 12.9
创建定义的进程,切换进程: 14.6 
撤消进程(通过os_tsk_delete): 5.9 
进程切换(通过os_tsk_delete_self): 8.8 
进程切换(通过os_tsk_pass): 4.6 
进程切换(upon set event): 7.3 
进程切换(upon sent semaphore): 5.5 
进程切换(upon sent message): 6.1 
设置时间(没有进程切换): 2.5 
发送信号量 (没有进程切换): 1.9 
发送消息(没有进程切换): 2.8 
获得进程标识符 (os_tsk_self): 1.0 
IRQ中断服务子程序的中断响应时间: 0.4 
IRQ中断服务子程序的最大等待时间(lockout): 2.2 
IRQ中断服务子程序的最大中断延迟 (response + lockout): 2.6
 
RTX核的实时响应是基于多任务并发执行的思想,将系统必须响应的任务被分成几个更小的任务。

【RTX工作原理】
1.时间片中断
    使用一个标准的ARM定时器产生周期性的中断,这个中断即RTX核的时间片中断。RTX核是通过定时器0来产生系统时钟片。任何一个定时器都可以作为系统时钟片产生器,在系统配置文件RTX Config.c可进行设置。
    RTX核时间片中断每隔150000个机器周期产生一次,因此速度运行的标准ARM设备来说,其时钟片是0.01秒(10ms)或者说是100Hz(60MHz/4/150000)。
2.系统时钟任务
    节拍时钟任务是系统任务,在每个时钟节拍中断中执行,具有最高的优先级,而且不会被抢占,其主要是用于任务间的切换。
    最高优先级原理:os_clock_demon 是系统节拍时钟脉冲任务,是系统任务,也是由系统创建,管理其他的所有任务,处理任务延时超时和将等待任务休眠。当必需条件满足,又将休眠任务唤醒。
3.任务管理
    RTX的所有任务都处在一个确定的状态,主要状态类别有:
    运行态RUNNING、就绪态READY、阻塞等待态WAIT_*、不活跃态INACTIVE
4.空闲任务
    空闲任务os_idle_demon,是一个简单的死循环。
    ARM设备提供了空闲模式以减少能耗,它是通过停止执行程序来实现的,可以通过中断来唤醒。在这种模式下,所有的外设包括中断系统仍然在运行。
    RTX核是在os_idle_demon()空闲任务(当没有其他任务处于就绪态时)中初始化空闲模式的。当RTX核时间片中断(或其他中断)发生时,微控制器将重新开始执行程序。
    可在RTX核os_idle_demon()空闲任务中执行用户自己扩展的代码,在 RTX_Config.c系统配置文件中可以设置这些代码。
    注意:在使用JTAG接口调试时不能使用空闲模式。
5.系统资源
    TCB,RTX内核任务由任务控制块。相当于linux下的PCB。
6.多任务协作
    如果禁止了多任务轮转,必须设计和实现多任务的协作。那么在每一个任务的某些位置都必须调用系统等待函数如os_dly_wait() 和os_tsk_pass(),这些函数可通知RTX 核去执行另一个任务。
    注意:如果下一个就绪的任务拥有比当前运行任务低的优先级,则调用os_tsk_pass 不会产生任务切换。 
7.轮转多任务
    即并发,实际上,这些任务并非真正并发执行,而只是基于时间片的轮转,由于时间片很短,仅有几个毫秒,所以感觉到这些任务好像是在同时执行。
8.多任务抢占
    RTX核是一个实时的多任务抢占系统,如果有一个比当前运行任务优先级高且就绪的任务,那么当前的任务将会被挂起。
9.栈的管理
    RTX核系统需要一个当前运行的任务的栈空间:
    局部栈: 存储参数,动态变量和函数的返回地址,该栈可在ARM芯片中的任何地方,但基于性能的考虑,推荐使用片上RAM。
10.中断函数
    RTX允许中断函数并发操作,但还是推荐避免使用IRQ中的嵌套。
————————————————
版权声明:本文为CSDN博主「不才Jerry」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_36184075/article/details/70455189

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RTX实时操作系统(RTOS)简介学习笔记 的相关文章

随机推荐

  • ROS仿真环境配置Husky+32线激光雷达+深度相机+imu+gps

    0 参考 wiki HUSKY 官网 git HUSKY HUSKY gazebo Tutorials 代码资源 husky base xff1a 与板载MCU通信的硬件驱动程序 husky bringup xff1a 调出启动文件和脚本
  • ros中使用Docker(2)VNC

    使用paopao机器人的ros vnc 镜像 dockerhub xff1a paopaorobot ros vnc网址 按照官网操作即可 下载镜像 span class token function docker span pull pa
  • winform窗体应用程序

    在C 编程环境中 xff1a winform窗体应用程序是一种客户端程序 xff0c 可以用来获取和显示数据 首先新建一个窗体应用程序项目 xff0c 在建完一个项目后可以看到有两个 cs类库文件 xff1a Form1 cs 和Progr
  • 3D目标跟踪(2)点云聚类

    点云聚类流程
  • GCAN -212(R2) can转网 使用记录

    GCAN 212 R2 使用udp模式 在配置软件进行配置 选择udp模式 xff1b 选择Remote IP 为本机PC的IP地址 xff1b 编写ROS程序 未完成 参考程序1 参考程序2 节点数据驱动 xff1a 主线程udp接收数据
  • 分卷压缩与分卷解压

    span class token comment 1 分卷压缩 span span class token function tar span cvzpf myfile span class token operator span span
  • java 域的概念_java中的域,静态域,实例域

    1 java中的域 所谓的域 xff0c 翻译成英文就是field xff0c 也就是我们常说的字段 xff0c 或者说是属性 比如类的字段 属性 xff0c 局部的 xff0c 全局的 所谓域 xff0c 其实是 field 的翻译 然后
  • mysql 字段最右匹配_【MySQL】-索引优化

    优化口诀 xff1a 全值匹配我最爱 xff0c 最左前缀要遵守 xff1b 带头大哥不能死 xff0c 中间兄弟不能断 xff1b 索引列上少计算 xff0c 范围之后全失效 xff1b Like百分写最右 xff0c 覆盖索引不写星 x
  • Meta-learning:Learn to learn

    基于李宏毅教授的ML课程做的笔记 xff0c 主要供自己复习 xff0c 所以就留下了一些自己想多看的东西 xff0c b站有全面的课程视频 引言 xff1a 为什么few shot任务常常提及元学习meta learning xff1f
  • Hadoop----hdfs dfs常用命令

    span class token operator span mkdir 创建目录 hdfs dfs span class token operator span mkdir span class token punctuation spa
  • 如何处罚被客户投诉的项目经理?

    没有被客户投诉过的项目经理很难体会到客户满意度的重要性 项目经理被客户投诉 xff0c 一定要执行合适的处罚 xff0c 否则项目管理将失去基本游戏规则 自由是有限度的 xff0c 项目经理一定不能突破客户投诉的红线 如同不断的抛接球 xf
  • k8s kube-router+ipvs pod网络分析

    集群中的每个节点上都有一个kube bridge网桥 xff0c 是部署k8s时创建的网桥 xff0c 用于pod间通信k8s 利用veth pair和网桥实现容器通信 xff0c 一端与pod绑定 xff0c 一端绑定到kube brid
  • 面试官常问的Promise问题

    1 Promise 有几种状态 xff1f 3种 pending 初始化状态 resolved 当调用成功时的状态 reject 当调用失败时的状态 2 Promise得状态是否可变 不可变 3 Promise如何解决地狱回调 xff1f
  • vnc连接linux服务器,用 TigerVNC 实现 Linux 远程桌面

    tigervnc 配置 1 确认 SSH 在运行 2 安装 TigerVNC Server yum install tigervnc server 已经安装过的 yum info tigervnc server 可以查看已安装的情况 3 配
  • 51单片机的轮胎气压监测系统_基于单片机的胎压监测设计毕业设计论文.doc

    PAGE 4 存档日期 xff1a 存档编号 xff1a 本科生毕业设计 论文 论 文 题 目 xff1a 基于单片机的胎压监测系统设计 姓 名 xff1a 学 院 xff1a 电气工程及自动化 专 业 xff1a 电气工程及其自动化 班
  • ros2foxy中gazebo11中导入soildworks中模型

    由于ros2中不能像ros1中一样使用soildworks导出urdf文件直接打开 xff0c 所以之前使用的下面的方法没有用了 https blog csdn net weixin 42454034 article details 106
  • 网络编程_TCP/UDP编程

    网络编程 一 网络通信要素 1 1 IP地址 1 1 1 概述 IP指互联网协议地址 xff08 Internet Protocol Address xff09 xff0c 俗称IP IP地址用来给一个网络中的计算机设备做唯一的编号 1 1
  • darknet_ros加速--使用GPU和CUDA

    更改darknet ros文件里面的Makefile编译文件 参考教程 xff1a ubuntu下darknet的gpu配置 包含ros下的 当然这个是不完整的 xff0c 不然我也没有必要重新写一份了 还有这个教程 xff1a darkn
  • 易错点:linux中shell命令 = 左右两侧不能有空格

    1 61 两边不能加空格 2 if语句的方括号与判断条件之间一定要是两边都有空格 3 除了等号之外 xff0c 其他运算符左右两侧都要有空格
  • RTX实时操作系统(RTOS)简介学习笔记

    RTX实时操作系统 RTOS 简介学习笔记 RTOS Real time Operation System Keil RTX 是免版税的确定性实时操作系统 适用于 ARM 和 Cortex M 设备 RTX概述 RTOS 可以自由地调度系统