• 陕西守艺人丨被《舌尖上的中国》忽略的洛南空心挂面 2019-07-05
  • 湖州德清重点项目“磁吸”效应初显 2019-06-26
  • 《热血狂篮》邢菲接手涂冰成新领队 佟梦实“被贬”成普通朋友 2019-06-12
  • 海淀区西三旗地区2000余人共享首届冰雪欢乐节 2019-06-11
  • 央行:有效防控互联网金融领域风险 2019-06-09
  • 【读史忆人·典故】邓小平为周谷城题写校名 2019-06-08
  • 李军的专栏作者中国国家地理网 2019-06-08
  • 保护英烈权益要用好公益诉讼 2019-06-07
  • 比利时并不轻松地击败巴拿马 2019-06-07
  • 【学习时刻】北大马院副院长宇文利:大学生要在思想政治教育课中努力形成正确认识 2019-06-06
  • 真的很美!越冬候鸟迎来迁徙高峰 2019-06-05
  • 这些咖啡馆里,能喝到好奇心和想象力 2019-06-04
  • 博通裁员1100人以削减成本 涉及公司所有业务部门 2019-06-03
  • 唱作人丁于发新歌《派爱》 打造新春求爱完美情歌丁于《派爱》 2019-06-02
  • 从海员到工人运动的杰出领袖——苏兆征 2019-06-02
  • 民间高手一尾中特平:uClinux操作系统的实时化分析与研究

    时间:2019-06-18 03:00来源:网络整理 作者:Linux先生 举报 点击:
    摘要:增强Clinux的实时性能是工业控制等实时性要求高的领域的必然要求,也是Clinux操作系统研究的关键技术...

    免费一尾中特 www.nifws.tw

    uClinux操作系统的实时化分析与研究

    1.引言

    嵌入式Linux作为一个开放源代码的操作系统,以价格低廉、功能强大又易于移植的特性正在被广泛应用,Clinux是专门针对没有 MMU(Memory Manage Unit)的处理器而设计的嵌入式Linux,非常适合中低端嵌入式系统的需求。Clinux虽然符合POSIX1003.1B关于实时扩展部分的标准,但其最初的设计目标为通用分时操作系统,如果把Clinux用在工业控制、进程控制等微控制领域内,必须要增强Clinux的实时性能。

    目前,对嵌入式Linux的实时化改造方案主要有3种:一种是直接修改内核插入抢占点[3],另外一种是资源内核方法[4],最后一种是双内核架构的解决方案。但3种方法中前两种都只能用于软实时应用,只有双内核[2]架构的方案可以保障硬实时应用需求。目前,Linux平台下开发的具有硬实时功能的系统主要有:RTLinux和RTAI[1](Real Time Application Interface)?;赗TAI增强Linux的实时性方面研究得比较多,但是,基于RTAI增强Clinux实时性方面还未见到成型的产品。因此,本文借鉴RTAI对Linux的实时改进机理,对Clinux的实时性改造进行了分析与研究。

    2. Clinux的内存管理

    标准Linux使用虚拟存储器技术,应用在带有MMU的处理器上,虚拟地址被送到MMU,把虚拟地址映射为物理地址。而Clinux同标准Linux的最大区别就在于内存管理,只有了解它们内存管理的差异后,才能更好地利用RTAI对Clinux进行实时化改造。

    Clinux虽然为嵌入式系统做了许多小型化的工作[5],但Clinux与标准Linux的架构完全一致。Clinux虽然无法使用处理器的虚拟内存管理技术,但Clinux仍然采用存储器的分页管理,系统在启动时把实际存储器进行分页,在加载应用程序时分页加载。一个进程在执行前,系统必须为进程分配足够的连续地址空间,然后全部载入主存储器的连续空间中。Clinux采用实存储器管理策略,通过地址总线对物理内存进行直接访问。所有程序中访问的地址都是实际的物理地址,操作系统对内存空间没有?;?,所有的进程都在一个运行空间中运行(包括内核进程)。

    在Clinux系统中,缺少了MMU的内存映射,Clinux必须在可执行文件加载阶段对可执行文件reloc处理,使得程序执行时能够直接使用物理内存;其次,Clinux没有自动生长的堆栈,也没有brk()函数,用户空间的程序必须使用mmap()命令来分配内存;同时,在实现多个进程时需要实现数据?;?,Clinux虽然支持fork()函数,但实质是所有的多进程管理都通过vfork()函数来实现。vfork() 是Clinux与标准Linux应用程序的开发中最重要的不同之处,只有对vfork()与fork()两个函数的差异和程序处理机制有详细的了解后,才能顺利地完成从Linux到Clinux的程序移植。

    3. 基于RTAI的Linux硬实时支持方案

    3.1 RTAI简介

    RTAI for Linux[6]是双内核架构的Linux实时化方案的典型代表,它由意大利的Milan大学主持,是近年来非?;钤镜目聪钅?。系统的实现基础是在Linux上定义了一组实时硬件抽象层RTHAL(Real Time Hardware Abstraction Layer),通过RTHAL进行硬件管理,把基本内核和实时内核结合在一起,其中一个内核的改变,不会影响另一个内核的执行,RTHAL将RTAI需要在Linux中修改的部分定义成一组程序界面,RTAI只使用这组界面和Linux沟通,其系统结构如图1所示。

    3.2 RTAI的RTHAL

    RTAI从内核中提取一个RTHAL,RTAI首先是一个中断分发器,当RTAI??楸患釉睾?,CPU中断仍由Linux管理,RTAI只接管外部设备的中断并分发(有可能仍分发给Linux)。这种接管是通过RTHAL来实现的,RTHAL包含一些重要的函数和数据结构,RTAI??榭赡苄薷牡哪谌荻际占诖私峁固逯?。

    uClinux操作系统的实时化分析与研究

    图1双内核实时Clinux架构

     

    当RTAI装载时,只需要重新设置RTHAL中的各项内容。内核需要修改执行RTHAL以代替原来的内容,如

    do_IRQ(irq,dummy);

    被修改为:

    rthal.c_do_IRQ(irq,dummy);

    Linux初始化RTHAL为指向原始的函数和数据结构,RTHAL仅仅进行重定向。当RTAI被激活,RTHAL保存并且改变这些函数的值为 RTAI自己的内容。以上段代码为例,当RTAI还没有加载时,rthal.c_do_IRQ的值就是Linux的do_IRQ,当RTAI被加载时,RTAI执行以下代码,将rthal.c_do_IRQ替换成RTAI自己的分发器:

    rthal.c_do_IRQ=dispatch_irq;

    上一页 1

    推荐内容
  • 免费一尾中特
  • 陕西守艺人丨被《舌尖上的中国》忽略的洛南空心挂面 2019-07-05
  • 湖州德清重点项目“磁吸”效应初显 2019-06-26
  • 《热血狂篮》邢菲接手涂冰成新领队 佟梦实“被贬”成普通朋友 2019-06-12
  • 海淀区西三旗地区2000余人共享首届冰雪欢乐节 2019-06-11
  • 央行:有效防控互联网金融领域风险 2019-06-09
  • 【读史忆人·典故】邓小平为周谷城题写校名 2019-06-08
  • 李军的专栏作者中国国家地理网 2019-06-08
  • 保护英烈权益要用好公益诉讼 2019-06-07
  • 比利时并不轻松地击败巴拿马 2019-06-07
  • 【学习时刻】北大马院副院长宇文利:大学生要在思想政治教育课中努力形成正确认识 2019-06-06
  • 真的很美!越冬候鸟迎来迁徙高峰 2019-06-05
  • 这些咖啡馆里,能喝到好奇心和想象力 2019-06-04
  • 博通裁员1100人以削减成本 涉及公司所有业务部门 2019-06-03
  • 唱作人丁于发新歌《派爱》 打造新春求爱完美情歌丁于《派爱》 2019-06-02
  • 从海员到工人运动的杰出领袖——苏兆征 2019-06-02
  • 安徽25选5走势图连线 南国彩票论坛 大圣捕鱼安装 萨索洛v拉齐奥 时时彩走势图历史记录 啤酒嘉年华试玩 河北20选5 ag电子竞技俱乐部官博 0140李逵劈鱼外挂 fm2011勒沃库森