总结:嵌入式实时操作系统是一种特殊的程序,通常称为内核,可以创建、销毁和控制其所有任务。 显示处理函数运行过程中,定时器产生中断,系统进入定时器中断程序,标记传感器位置。 实时操作系统子系统将持续更新。
什么是嵌入式实时操作系统?嵌入式实时操作系统是一种支持多任务的特殊程序和执行环境。 嵌入式实时操作系统最大的特点就是“实时性能”。 当需要执行任务时,实时操作系统会立即执行该任务,而不会出现明显的延迟。 常见的实时操作系统包括uCOS、RT-Thread、FreeRTOS、VxWorks、WinCE等。 嵌入式实时操作系统是一种特殊的程序(通常称为内核),可以创建、销毁和控制所有任务。 。 嵌入式实时操作系统不仅包含内核,还提供其他服务,例如文件系统、协议栈和图形用户界面。 本文的重点是了解嵌入式真实操作系统的工作原理和结构。 -time 操作系统内核。 因此,本文所指的实时操作系统通常指的是操作系统内核。 实时操作系统的内核通常约占CPU执行时间的5%。 此外,由于内核是软件代码,因此需要额外的 ROM 和 RAM 空间。
实时实时可以定义为触发条件产生后系统响应的能力。 人们常说“天下武功唯快”。 您需要的“快”意味着实时。 您需要在各种情况下达到 US 和 NS 级别。 实时系统不仅要“快”;更重要的是,实时系统必须在有限的时间内响应触发事件。 这个有限的时间将根据您的实际需要来确定。 例如,自动驾驶控制系统规定的时间要求非常严格。 这意味着您需要在很短的时间内采取行动。 一些农业温度控制系统需要相对较长的规定时间,而另一些则需要平稳且稳定的温度控制。 当回应时实时性能越高,响应时间越快。 响应时间是指系统识别事件并开始响应所需的时间。 一个简单的例子就是工业控制设备中的急停按钮开关。 用户希望当按下急停开关时系统立即停止所有操作。 假设用户在1.001秒按下急停开关,在1.011秒执行软件系统的停止命令,工控设备做出相应响应。 机械部件在 1.211 秒后停止移动。 此时软件系统的响应时间为0.01秒,设备系统的响应时间为0.21秒。 设备系统的响应时间与软件系统的响应时间存在一定的差异。 一般情况下,设备系统响应时间>软件系统响应时间。 本文所说的响应时间是指软件系统的响应时间。 我们再举一个常见的例子。 你在玩王者荣耀,突然发现对方打野从草丛里跑出来,准备gank。 从你眼睛看到的,到你手指的点击和闪光,再到你的角色在塔下的闪光。 这是您的回复时间。 高端职业玩家可能只需要100ms就能完成整个动作,而新手玩家可能需要1000ms才能完成整个动作。
典型的嵌入式软件体系结构 典型的嵌入式软件系统通常被设计为前端和后端结构。 该结构包含一个无限循环和几个中断服务程序。 应用程序是代码块的无限循环。 调用相应的函数完成相应的操作(后台),中断程序用于处理系统中的异步事件(前台)。 前台称为中断级,后台称为任务级。 下面是一个典型的前后端结构代码。 上图中代码的执行流程如下: 1. 确定关键标志位。 如果标志位为1,则进行按键处理。 2. 确定通信标志位。 如果标志位为1,则执行通信处理操作。 3. 进行LCD显示操作。 4. 确定传感器标志。 如果标志为 1,则执行传感器处理操作。 该代码具有三个中断函数。 1.GPIO外部中断。 当按下按钮时会发生中断。 中断函数将按键标志设置为 1。 2. 串口空闲中断。 当串口总线空闲时产生中断,在中断函数中将通信标志置1。 3. 定时器中断。 每500ms周期性产生一个中断,并通过中断函数将传感器标志设置为1。
代码执行如图所示。分析执行图。 1. 程序确定按键标志位。 标志位为0,不执行任何按键处理函数。 2. 程序确定通信标志位。 如果标志位为0,则不执行通讯处理功能。 3、程序执行显示处理函数。 此时,用户按下按钮。 系统进入按钮中断程序,并将按钮标志位设置为1。 当中断完成后,返回显示处理函数继续执行。 4、显示处理功能运行时,串口收到一包数据后产生空闲中断。 系统进入串口空闲中断程序,并将通信标志置1。 当中断完成后,返回到显示处理函数并继续其操作。 5. 当显示处理功能运行时,定时器产生中断,系统进入定时器中断程序并将传感器标志位设置为 1。 6. 执行显示处理函数后,程序确定传感器标志。 在这种情况下,标志变为1并且执行通信处理功能。 7、程序判断按键标志位,标志位为1,执行按键处理函数。 8、程序判断通讯标志位,如果标志位为1,则执行通讯处理函数。 9.无限循环...
从上面的例子可以看出,即使按键标志和通讯标志准备就绪,程序仍然需要等待显示和传感器功能完成执行。 。 无论你的按键处理函数有多紧急,它都必须等到其他函数执行完毕。 因此,会出现响应延迟。 响应延迟时间是随机且不确定的。 它可能需要几毫秒,也可能需要数百毫秒或更长时间(例如获取传感器读数)。 因此,有必要提高系统的实时性能。 性别。
实时操作系统 实时操作系统可以随时放弃正在运行的任务的CPU 权限,并将CPU 权限交给就绪的最高优先级任务。 使用操作系统后的操作图如下所示。 分析运行图: 1. 一个低优先级的显示任务正在运行。 此时,用户按下按钮。 系统进入按钮中断程序并向按钮任务发送信号。 此时,按钮任务将处于就绪状态。 当中断返回时,切换到按钮处理任务。 运行中。 2. 关键处理任务正在运行。 此时串口收到一包数据,产生空闲中断。 系统进入串口空闲中断程序并向通信处理任务发送信号。 通信处理任务从中断返回后进入就绪状态并转换到通信。 处理任务。 3、通信处理任务执行完毕后,放弃CPU使用权,切换到关键处理任务。4. 完成关键处理任务后,放弃CPU使用权,切换到显示处理任务。
当触发器产生时,你会看到实时操作系统立即中断当前任务并执行相应的任务。 实时操作系统显着提高了软件系统的实时性能。
实时操作系统由三个子系统组成(以uCOS和FreeRTOS为参考对象): 1. 任务调度子系统 2. 任务通信子系统 3. 内存管理子系统 任务调度子系统主要维护: 两个链表:一个就绪链表和一个等待链表。 当在任务之间切换时,从就绪列表中选择最高优先级的任务。 如果任务需要延迟等待,内核会将任务从就绪列表移动到等待列表。 Clockbeat 任务定期更新等待列表并添加已完成等待时间的任务。 从等候名单移至就绪名单。
任务通信子系统主要维护链接列表或挂起列表。 当任务需要等待信号时,内核将其移至挂起列表。 当内核收到信号时,它将任务从挂起列表移动到就绪列表。
内核,即内存管理子系统,提供了几种动态申请内存的方法,以防止内存碎片。
实时操作系统子系统将持续更新。
创作并不容易。 希望各位朋友点赞、转发、评论、关注。 您的点赞、转发、评论和关注将激励我们继续更新。 作者:李伟 Github:liyinuoman2017
评论前必须登录!
注册