0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式 Linux 设计:详细实时  

王英 来源:hdfsf 作者:hdfsf 2022-07-26 10:31 次阅读

实时系统必须尊重时间限制,以确保其执行具有功能意义。实时操作系统或 RTOS(有时称为实时执行内核)是一个函数库,用于实现计算机系统的时间关键管理和资源分配的规则和策略。RTOS 常用于嵌入式系统

RTOS 为微控制器处理器 (CPU) 提供了一个软件抽象层,具有一组管理 CPU 资源调度和访问的固有功能。简而言之,RTOS的功能可以总结如下:

它确定应用程序中的哪些执行实体应该控制 CPU、以什么顺序以及在放弃对处理器的控制之前允许多长时间。

它管理多个活动之间的内部存储共享。

它管理连接的硬件设备的输入和输出,例如控制器设备的串行端口和 I/O 总线。

它发送有关操作状态和已发生的任何错误的消息。

精心设计的 RTOS(图 1)提供了许多切实的好处,例如:

通过规则和政策为项目奠定坚实的基础,以确保一致性和可重复性。

简化开发过程并提高生产力:丰富的内核服务 (API) 集允许节省编写扩展代码的时间,而系统开销过多,无法完成相同的事情。

对处理器的抽象,而不关注许多硬件细节。

实施可靠的编程系统以成功管理共享同一处理器的多个操作:这使您可以管理对各种处理器或外围资源的访问,以便可以在不受干扰的情况下成功执行操作。

清理功能的高效管理:保存和恢复日志集以及管理内存缓冲区。

集成和管理来自通信和中间件堆栈(TCP/IP、USBCAN、FAT 和 Flash 文件系统等)的必要资源。

优化系统资源的使用,提高产品的可靠性、可维护性和质量。

RTOS 可以将所有这些元素整合到一个平台中。它实现了便利的开发过程,并允许更短的上市时间、更高的可靠性和更低的风险。

pYYBAGLeBIGAVJJHAABWWh3k9IU129.jpg

图 1:通用实时系统 (RTOS)

pYYBAGLeBI6ANbYoAACRUe2ffa8556.jpg

图 2:实时系统 (RTOS) – 调度程序

实时操作系统的组件

RTOS 的组件是调度程序、函数库、类和用户定义的数据对象。让我们分别详细地分析它们。调度程序(图 2)是 RTOS 的关键组件,它确定应用程序代码的哪些实体以何种顺序访问 CPU。在大多数商业 RTOS 中,存在三种编程模型:抢占式、协作式(也称为循环)和时间片模型。RTOS 函数库用作应用程序代码和 RTOS 之间的接口。这些功能也称为应用程序接口 (API),将 RTOS 的操作需求封装在其众多服务中。应用程序代码实体通过 API 向内核发出请求,然后确定应用程序所需的编程行为。类和用户定义的数据对象:RTOS 采用的数据结构通常根据操作类型排列成组或类。RTOS 将用来控制程序的每个类中的对象集由用户定义。名称可能不同,具体取决于适当设计的 RTOS 系统。

属性和功能

RTOS 的属性和功能可分为主要要求和次要要求。

主要要求:
· 管理处理器和其他系统资源以满足应用程序的需要。
· 同步事件。
· 在进程之间有效地移动数据。
· 管理与时间等独立变量相关的流程需求。
· 可预测地执行在可预测的时间段内发生的操作

次要要求:
· 高效的 RAM 管理。
· 独占访问系统资源。

资源管理系统

RTOS 的主要功能是管理某些系统资源,例如 CPU、内存和时间。每个资源必须在并发进程之间共享,以实现系统的一般功能,如下原则:

系统内存是有限资源,因此必须共享。

由于 CPU 的运行速度比执行控制或监视的物理进程快得多,因此可以共享 CPU 以避免处理延迟。这种延迟可能会违反基本的系统策略。

时间是 RTOS 管理的最困难的资源。

RTOS 服务的执行速度决定了系统对物理过程变化的响应。然而,对于每项服务而言,在时间方面尽可能地具有确定性(可预测性)同样重要。如果没有可预测的时序,系统设计人员无法保证满足物理过程的时间限制。

多任务处理

如果没有专用于每个代码实体的 CPU,就不可能同时执行操作。但是,可以共享 CPU 访问时间以实现同时操作方面。许多活动之间的切换顺序是多任务处理概念的基础。图 3 显示了如何实现多任务处理。左侧显示了处理器的典型模型,由 CPU、一些寄存器、处理器状态、程序计数器 (PC) 和堆栈组成。

pYYBAGLeBJuAPYerAABr7_9vmq8427.jpg

图 3:多任务处理

要共享物理处理器,每个任务必须具有与物理处理器相同的属性:一组寄存器、一个状态、一个指向任务中下一条可执行指令的 PC,以及一个用于局部变量的堆栈。当然,每个活动也会有自己的一组运行代码。另一方面,图 2 的右侧显示了几个虚拟处理器(任务)。每个任务都等待其在物理处理器中激活其属性的机会。调度程序不断地决定 CPU 在给定时刻应该控制哪些活动。当需要停止正在运行的任务并将 CPU 控制权交给新任务时,调度程序会将正在运行的任务的属性(操作上下文)与新任务的属性(操作上下文)进行交换。此过程称为“上下文切换”。

优先和抢占

为了实现效率和共享 CPU 利用率,实时多任务操作系统使用从一个任务到另一个任务的适当控制转移。为了实现这一点,调度程序必须监控系统资源和每个任务的执行状态,以确保每个实体及时接收 CPU 控制权。
这里的关键词是及时性。没有在正确的时间执行必要任务的实时系统是无效的。这个错误可能会产生从良性到灾难性的后果。这意味着内核服务请求的响应时间和这些服务的执行时间必须是快速且可预测的。RTOS 固有的可预测性允许设计应用程序代码以确保检测和处理所有需求。实时应用程序通常由多个进程(任务和线程)组成,由于外部或内部事件,这些进程需要在不同时间控制系统资源。

调度模型

有几种调度模型允许任务从处理器接收执行时间。这些中的每一个的有用性取决于
Round-Robin (Cooperative) 应用要求:所有活动同等重要,具有相同的优先级。一旦任务接收到处理器控制,它将一直运行,直到完成或到达重新调度点。然后它放弃对 CPU 的控制权,以允许调度确定下一个任务,从而获得对 CPU 的控制权。在其执行周期中,行循环任务(图 4)不能冻结、等待、暂停或执行任何可能允许另一个任务获得 CPU 控制权的操作,但它可以被中断(异常)抢占。Tick-Sliced Scheduling:是循环调度的一种变体。两种方法都是相似的,只是任务滴答只能由可以表示时间或某些其他特定单位的关联计数器执行预定义的次数(量子滴答)。任务保持对 CPU 的控制,直到时间量刻度到期或直到活动阻塞。如果量子滴答到期,如果有另一个具有相同优先级的任务等待执行,则调度会强制任务出售其业务。Preemptive Scheduling:是导致预防性计划概念的策略,其中物理处理器的控制权委托给具有最高优先级的任务。如图 5 所示,较低优先级的任务(任务 2)在发生激活或释放任务 1 的事件时被抢占。是导致预防性计划概念的策略,其中物理处理器的控制委托给具有最高优先级的任务。如图 5 所示,较低优先级的任务(任务 2)在发生激活或释放任务 1 的事件时被抢占。是导致预防性计划概念的策略,其中物理处理器的控制委托给具有最高优先级的任务。如图 5 所示,较低优先级的任务(任务 2)在发生激活或释放任务 1 的事件时被抢占。

poYBAGLeBKeAd0AEAACgYuBxRSE998.jpg

图 4:循环

poYBAGLeBLKANSjOAABsL-voIQs629.jpg

图 5:任务抢占

pYYBAGLeBL6AfLINAACGmQcIl_o812.jpg

图 6:内核服务

内核类

RTOS 在一组通常称为类的结构上运行。每个类都支持一组通常称为内核服务的运算符(图 6),这些运算符由应用程序进程调用以实现预期的行为。这些类如下:

任务:管理程序代码的执行;每个活动都独立于其他活动,但能够以多种形式与其他活动建立关系,包括数据结构、输入、输出或其他构造。

任务间通信:将信息从一项任务传递到另一项执行的任务。用于交互任务的常用类是信号量、队列和管道。红绿灯提供了一种使活动与各种事件同步的方法。

内核服务:执行某些系统行为的例程。当应用程序代码实体请求内核提供的功能时,会启动对该功能的内核服务请求。

ISR(中断服务程序):是一个软件程序,被激活以响应中断

编译具有实时支持的 Linux 内核

要编译具有实时支持的 linux 内核(图 7),您必须首先实时获取源代码和补丁。–

http://www.kernel.org/内核版本;

http://www.kernel.org/pub/linux/kernel/projects/rt/获取 RTOS 补丁

下载兼容版本很重要,否则编译不会产生积极的结果。解压文件夹后,复制旧配置文件:
cp /boot/config/kernel path/

下一步:
制作 oldconfig

完成上述命令后,运行以下命令:

bzcat/路径dellapatch/patch-2.6。Xx-rtyy。柏油。Bz2 | 补丁-p1

这会将实时补丁插入 Linux 内核。此时键入以下命令:

制作菜单配置

转到“处理器类型和功能”(图 8)并在“抢占模式”下选择“完全抢占(实时)”。

在“定时器频率”下选择值,例如 1000 Hz。除了修改内核的其他功能外,设置完成后必须立即执行以下命令:

制作 -j5 bzImage

制作 -j5 模块

制作modules_install

现在复制文件:/bootfolder中的arch / x86 / boot / bzImage。您有两个选项来运行测试:在启动时使用 grub shell 并手动加载文件,或者为 grub 创建一个新条目。这可以通过将默认内核版本的值复制到/boot/grub/menu并适当地修改路径和名称来完成。

pYYBAGLeBMqAPysdAACSIOYmzKg158.jpg

图 7:QNX 微内核示例

pYYBAGLeBNSAA6TGAADtchHpHXI073.jpg

图 8:使用 RTOS 编译内核

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5046

    文章

    18821

    浏览量

    298588
  • Linux
    +关注

    关注

    87

    文章

    11123

    浏览量

    207919
收藏 人收藏

    评论

    相关推荐

    嵌入式linux开发的基本步骤有哪些?

    嵌入式Linux开发是一个复杂的过程,涉及到硬件选择、操作系统移植、驱动开发、应用程序开发等多个方面。以下是嵌入式Linux开发的基本步骤,以及每个步骤的说明。 硬件选择 在开始
    的头像 发表于 09-02 09:11 185次阅读

    嵌入式linux开发板怎么操作

    开发板概述 嵌入式Linux开发板是一种专门为嵌入式系统开发而设计的硬件平台。它具有体积小、功耗低、性能高等特点,广泛应用于工业控制、智能家居、医疗设备、汽车电子等领域。与传统的PC机相比,
    的头像 发表于 09-02 09:09 203次阅读

    嵌入式linux开发板芯片的工作原理

    嵌入式Linux开发板是一种基于Linux操作系统的嵌入式系统开发平台,它广泛应用于工业控制、智能家居、智能交通、医疗设备等领域。 嵌入式
    的头像 发表于 09-02 09:07 172次阅读

    在研华科技的嵌入式IPC上设置实时Linux和EtherCAT主站

    欢迎的选择。对于需要快速处理器性能的高要求应用,x86CPU架构通常是最好的选择。基于这些原因,工业PC(IPC)——也被称为嵌入式PC,非常适合EtherCAT应用,但
    的头像 发表于 04-19 08:33 638次阅读
    在研华科技的<b class='flag-5'>嵌入式</b>IPC上设置<b class='flag-5'>实时</b><b class='flag-5'>Linux</b>和EtherCAT主站

    再谈嵌入式实时操作系统

    程序的可移植性得到了增强,系统开发的工作量减轻的同时也提高了开发效率。对实时性和可靠性日益增长的要求正在塑造某些现代领域的嵌入式实时操作系统的发展方向,例如航空航天、工业控制、汽车电子、能源电力和医疗
    的头像 发表于 04-09 17:27 571次阅读
    再谈<b class='flag-5'>嵌入式</b><b class='flag-5'>实时</b>操作系统

    基于嵌入式Linux的无线多媒体传输系统设计与实现

    电子发烧友网站提供《基于嵌入式Linux的无线多媒体传输系统设计与实现.pdf》资料免费下载
    发表于 10-26 14:37 0次下载
    基于<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>的无线多媒体传输系统设计与实现

    嵌入式linux-聊天程序设计

    电子发烧友网站提供《嵌入式linux-聊天程序设计.doc》资料免费下载
    发表于 10-26 11:42 8次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>-聊天程序设计

    基于嵌入式Linux智能家居监控系统设计

    电子发烧友网站提供《基于嵌入式Linux智能家居监控系统设计.pdf》资料免费下载
    发表于 10-25 10:02 1次下载
    基于<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>智能家居监控系统设计

    基于嵌入式Linux的数字相框设计

    电子发烧友网站提供《基于嵌入式Linux的数字相框设计.pdf》资料免费下载
    发表于 10-23 09:45 0次下载
    基于<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>的数字相框设计

    基于嵌入式Linux系统的MiniGUI的移植

    电子发烧友网站提供《基于嵌入式Linux系统的MiniGUI的移植.pdf》资料免费下载
    发表于 10-12 10:20 1次下载
    基于<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>系统的MiniGUI的移植

    什么是嵌入式Linux

    什么是嵌入式Linux? 对于很多电气、电信、通信专业的同学来说,对口专业就业方向主要有软、硬件两个方向。无论是对于学生还是就业而言,软硬件的开发学习,嵌入式物联网在近年来无疑是一个摆在面前
    发表于 10-11 13:47

    基于Linux嵌入式视觉系统设计原理

    电子发烧友网站提供《基于Linux嵌入式视觉系统设计原理.pdf》资料免费下载
    发表于 10-11 11:26 0次下载
    基于<b class='flag-5'>Linux</b>的<b class='flag-5'>嵌入式</b>视觉系统设计原理

    嵌入式Linux在磁场测量系统中的应用

    电子发烧友网站提供《嵌入式Linux在磁场测量系统中的应用.pdf》资料免费下载
    发表于 10-11 10:11 0次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>在磁场测量系统中的应用

    嵌入式Linux开发教程

    嵌入式Linux开发教程(下册)
    发表于 09-27 07:11

    嵌入式Linux应用开发的完全手册

    嵌入式Linux嵌入式领域发展迅速、需求旺盛,但是嵌入式Linux 的入门很难。初学者多是自己琢磨,效率不高。学习过程中碰到的问题千奇百怪
    发表于 09-25 07:12