引言

Linux支持PowerPC、MIPS、ARM、DSP等多种嵌入式处理器,逐渐被用于多种关键性场合。其中实时多媒体处理、工业控制、汽车电子等特定应用对Linux提出了强实时性需求。Linux提供了一些实时扩展,但需要进行实时性改造。本文针对嵌入式Linux实时化技术中的一些关键问题进行了讨论,如Linux内核时延,实时化主流技术方案及其评价等。

Linux内核时延

主流Linux虽然部分满足POSIX 1003.1b实时扩展标准,但还不完全是一个实时操作系统,主要表现为:

● 任务调度与内核抢占

2.6版本内核添加了许多抢占点,使进程执行在内核代码时也可被抢占。为支持内核代码可抢占,在2.6版内核中通过采用禁用中断的自旋锁来保护临界区。但此时如果有低优先级进程在临界区中执行,高优先级进程即使不访问低优先级所保护的临界区,也必须等待低优先级进程退出临界区。

● 中断延迟

在主流Linux内核设计中,中断可以抢占最高优先级的任务,使高优先级任务被阻塞的最长时间不确定。而且,由于内核为保护临界区需要关闭中断,更加增长了高优先级任务阻塞时间。

● 时钟精度

Linux通过硬件时钟编程来产生毫秒级周期性时钟中断进行内核时间管理,无法满足实时系统较高精度的调度要求。内核定时器精度同样也受限于时钟中断,无法满足实时系统的高精度定时需求。

● 其他延迟

此外,Linux内核其他子系统也存在多种延迟。比如为了增强内核性能和减少内存消耗,Linux仅在需要时装载程序地址空间相应的内存页。当被存取内容(如代码)不在RAM中则内存管理单元(MMU)将产生页表错误(Page-Fault)触发页面装载,造成实时进程响应时间不确定。

Linux实时化技术发展

主流Linux内核1.x、2.2.x和2.4.x版本的Linux内核无抢占支持,直到2.6版本的Linux内核才支持可抢占内核,支持临界区外的内核抢占和可抢占的大内核锁。在此基础上,Linux采用了下列两类实时化技术。

● 双内核方式

Linux内核实时化双内核方式以RTLinux、RTAI和Xenomai等为典型代表。其中RTLinux实现了一个微内核实时操作系统支持底层任务管理、中断服务例程、底层任务通信队列等。普通Linux作为实时操作系统的最低优先级任务,Linux下的任务通过FIFO命名管道和实时任务进行通信,如图1所示。

当Linux要关闭中断时,实时微内核会截取并记录这个请求,通过软件来模拟中断控制器,而没有真正关闭硬件中断,避免了由于关中断所造成的响应延迟。RT-Linux将系统实时时钟设置为单次触发模式,提供微秒级的时钟精度。RTAI类似RTLinux的实现方式,不同之处在于它修改了体系结构相关代码,形成一个实时硬件抽象层(RTHAL),使其实时任务能在任何时刻中断普通Linux任务,两者之间通过非阻塞队列进行通讯。RTAI将直接修改Linux内核的代码减至最少,具有更好的可移植性。Xenomai以RTAI为基础,也称RTAI /Fusion。采用了Adeos微内核替代RTAI的硬件抽象层。其特色还在于模仿了传统RTOS的API接口,推动传统RTOS应用在GNU/Linux下的移植。类似还有基于Fiasco微内核的L4Linux等开源项目。

● 内核补丁方式

双内核实时方案下,实时任务需要按照微内核实时操作系统提供的另外一套API进行设计。而内核补丁方式则不改变Linux的API,原有应用程序可在实时化后的操作系统上运行,典型的有早期研究性的Kurt-Linux和Red-Linux,商业版本的MontaVista、TimeSys 和Wind River Linux,以及现阶段Ingo Monlnar等人开发的实时抢占补丁内核等[3]。

Kurt-Linux是第一个基于普通Linux的实时操作系统。通过正常态、实时态和混合态进行实时和非实时任务的划分。RED-Linux通过任务多种属性和调度程序,可以实现多种调度算法。采用软件模拟中断管理,并在内核插入了许多抢占点,提高了系统调度精度。

MontaVista Linux在低延迟补丁以及可抢占内核补丁基础上[4],通过开发内核O(1)实时调度程序并对可抢占内核进行了改进和测试,Linux 2.4内核时代,MontaVista Linux 作为商业成熟产品在实时性上有较强的优势。TimeSys Linux通过内核模块的方式也提供了高精度时钟、优先级继承mutex等支持。

2.6版本的主流内核吸收了以上技术,支持CONFIG_PREEMPT_NONE,CONFIG_PREEMPT_VOLUNTARY和CONFIG_PREEMPT等多种配置选项。分别适合于计算型任务系统,桌面用户系统和毫秒级延迟嵌入式系统。2005年,针对2.6内核MontaVista推出了实时Linux计划,推进了Linux内核实时化进程。随后Ingo Molnar发布了新的实时抢占补丁,并逐渐成为Linux内核实时主流技术,也为包括MontaVista Linux,Wind River Linux采用和补充,本文后续内容要涉及实时抢占补丁。

嵌入式linux实时化技术,嵌入式Linux实时化技术相关推荐

  1. linux进程调度算法,关于嵌入式Linux系统实时进程调度算法系统详解

    1 嵌入式Linux系统分析 1.1 嵌入式系统 嵌入式系统(Embedded Systems)是以应用为中心,以计算机技术为基础,软件硬件可剪裁(可编程.可重构),适用于应用系统对功能.可靠性.成本 ...

  2. linux c内核开发,嵌入式uClinux的内核结构和开发环境

    1 引言 嵌入式操作系统是嵌入式系统的灵魂,而且在同一个硬件平台上可以嵌入不同的嵌入式操作系统.比如ARM7TDMI内核,可以嵌入Nucleus.VxWorks.uClinux等操作系统.在此主要对u ...

  3. linux根文件系统配置,嵌入式Linux的Cramfs根文件系统配置的解决方案

    1 引言 随着电子产业的不断发展,基于 ARM 技术的系统设计和开发平台越来越多地在控制 类.消费类.通信类等电子产品中广泛应用.从软件角度上看,构建基于ARM 技术的linux 系统要涉及到引导加载 ...

  4. 嵌入式linux 配置usb otg,嵌入式系统设计中的USB OTG方案

    速外设操作时最大为80mA.TD1120整个芯片支持功率节省模式,包括主机控制器以及外设控制器的延缓模式以使功率消耗最小化www.cechina.cn,延长系统电池寿命,对于移动设备来说,电池寿命是很 ...

  5. linux 农业分析,基于嵌入式Linux的农业信息采集系统设计与研究

    摘要: 精准农业是现代化农业发展的方向,将嵌入式数据采集技术应用到农业生产过程中,既可以节省人力物力成本,还可以提高农作物产量和质量,减少农药污染和提高生产效率.在精准农业生产过程中,需要采集和监测农 ...

  6. linux嵌入式面试题合集,嵌入式linux面试题解析(一)——ARM部分二

    嵌入式linux面试题解析(一)--ARM部分二1.描述一下嵌入式基于ROM的运行方式基于RAM的运行方式有什么区别.基于RAM的运行方式:需要把硬盘和其他介质的代码先加载到ram中,加载过程中一般有 ...

  7. 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一)(转)

    自 MiniGUI 从 1998 年底推出以来,越来越多的人开始选择 MiniGUI 在 Linux 上开发实时嵌入式系统.为了帮助嵌入式软件开发人员使用 MiniGUI编写出更好的应用程序,我们将撰 ...

  8. 嵌入式linux gif 缩放_嵌入式环境动力监控主机

    点击上方蓝字关注我们! 嵌入式环境动力监控主机 基于嵌入式LINUX平台,针对机房.变电站.博物馆等环动监控场合设计,主机集成通信端口.采集模块和WEB监控软件,具有联网功能,可独立完成区域监控任务, ...

  9. 嵌入式开发教程哪家好?linux嵌入式系统开发

    嵌入式入门你知多少?对于一些初入门的初学者而言,对嵌入式入门的一些知识有助于后期的学习,从嵌入式技术的应用前景以及到ARM认知到开发板等等.嵌入式企业用人需求在增长. 如今的嵌入式开发大热是ARM+L ...

最新文章

  1. 外媒评李开复的《AI·未来》:四大浪潮正在席卷全球
  2. unity3D打包发布Apk详细步骤
  3. Dubbo自定义日志拦截器
  4. linux内核的冒险md来源释义# 14raid5非条块读
  5. 作为一名Java程序员,你竟然不知道Instrumentation
  6. 【转载】如何知道自己适合做什么
  7. spring 事务隔离级别和传播行为_Spring 事务传播行为
  8. 查看sqlserver2008数据库服务器实例名称
  9. 深度学习算法-YOLO
  10. Python基础——isupper()方法和islower()方法
  11. 2013.12.26 M-Learning
  12. 美国生活——考取实习驾照(Permit)
  13. 重心模型选址代码_如何规划选址体系,让选址像流水线更简单?
  14. win10如何使用WinSAT测试体验指数
  15. VO,DTO,BO,POJO,PO的概念介绍
  16. ConcurrentLinkedQueue使用和方法介绍
  17. 水滴筹、轻松筹死磕健康保
  18. CFA1级 JC网课
  19. 华为鸿蒙周易,世纪工程背后的大局--港珠澳大桥的风水秘密!
  20. 【交叉编译】海思平台和安霸平台交叉编译

热门文章

  1. 计算机高级语言程序Access,[计算机软件及应用]Access的编程语言VBA.ppt
  2. php ajax实现编辑资料,怎么用jQuery、Ajax、php实现这样的无刷新编辑功能?
  3. mysql数据库前端缓存_MySQL数据库性能优化--缓存参数优化
  4. Angular CLI版本问题(Your global Angular CLI version (12.2.7) is greater than your local version (9.0.3))
  5. python os 文件操作 getcwd()方法
  6. JVM中垃圾回收相关算法 - 值得了解一下的,因为早晚得了解
  7. rocketmq基本安装与使用(一)
  8. 转换时间格式24小时_国内(上海)原油期货交易的具体时间段?是24小时交易吗?...
  9. resnet论文_ResNet还是DenseNet?即插即用的DS涨点神器来了!
  10. c语言 判断链表之中是否有环,判断单链表中是否存在环(网上说的笔试题)