位置:51电子网 » 技术资料 » 嵌入式系统

构建基于RTLinux的嵌入式系统研究与开发

发布时间:2008/5/27 0:00:00 访问次数:454

  摘 要:linux作为嵌入式操作系统在嵌入式系统中应用越来越普及。linux若是作为一个实时操作系统,它无法满足实时系统严格的实时性要求。rtlinux是在linux内核的下层实现所得的一个简单的硬实时内核,但是rtlinux也存在一个很大的缺陷,那就是实时任务无法使用linux提供的服务,特别是它无法使用linux中的tcp/ip的网络功能,在此介绍的iwip是一个可以运行在rtlinux并能被实时任务使用的嵌入式的轻量级tcp/ip协议栈。iwip还可以使实时任务与远程实时任务或linux用户进程通讯。根据这些特性,我们通过将linux,iwip和rtlinux3者合理的结合在一起,从而构成一个全新的实时系统框架。

关键词:嵌入式系统;rtlinux;iwip;设备驱动程序

引 言

  linux或经过简单改进的linux都是不能运行实时任务,这是因为linux的“公平”时间分配的调度算法要保证分配给每一个用户程序占用cpu时间,然而实时任务对执行时间要求很严格,如每隔200ns从传感器取样的实时任务。linux系统的虚拟内存的内存管理使得任何用户进程的页面在任何时刻都能被交换到硬盘或外存储器中,这样在linux中将需要的页面返回到ram中也需要花费一段不确定的时间。另外,对任务执行的时间和任务完成时间都是没有精确的可预知性的。linux操作系统的“天生”缺陷使得linux无法满足实时嵌入式系统的实时系统要求。在本文中我们主要讨论实时操作系统rtlinux和linux有机集成在一起,构成了一个全新的实时系统。

rtlinux的实现机理

  rtlinux是美国新墨西哥州大学计算机科学系victoryodaiken和micae brannanov开发的。它在linux内核的下层实现了一个简单的实时内核,而linux本身作为这个实时内核的优先级最低的任务,所有的实时任务的优先级都高于linux系统本身的以及linux系统下的一般任务。rtlinux的体系结构如图1所示。


  rtlinux的设计思想是:应用硬件的实时约束将实时程序分割成短小简单的部分,较大部分承担较复杂的任务。根据这一原则,将应用程序分为硬实时和程序2个部分。硬件实时部分被作为实时任务来执行,并从外部设备拷贝数据到一个叫做实时有名管道(rtfifo)的特殊i/o端口;程序主要部分作为标准linux进程来执行。它将从rtfifo中读取数据,然后显示并存储到文件中,实时部分将被写入内核。设计实时有名管道是为了使实时任务在读和写数据时不被阻塞。图2所示的是实时有名管道结构图。


  rtlinux通过对标准linux内核进行改造,将linux内核工作环境作了一些变化。如图2所示,在linux进程和硬件中断之间,本来由linux内核完全控制,现在在linux内核和硬件中断的地方加上了一个rtlinux内核的控制。linux的控制信号都要先交给rtlinux内核进行处理。在rtlinux内核中实现了一个虚拟中断机制,linux本身永远不能屏蔽中断,它发出的中断屏蔽信号和打开中断信号都修改成向rtlinux发送一个信号。如在linux里面使用“si”和“cli”宏指令,让rtlinux里面的某些标记做了修改。也就是说将所有的中断分成linux中断和实时中断两类。如果rtlinux内核接收到的中断信号是普通linux中断,那就设置一个标志位;如果是实时中断,就继续向硬件发出中断。在rtlinux中执行sti将中断打开之后,那些设置了标志位表示的linux中断就继续执行,因此,cli并不能禁止rtlinux内核的运行,却可以用来中断linux。linux不能中断自己,而rtlinux可以。

  这里体现了rtlinux设计过程中的原则:在实时模块中的工作量尽量少,如果能在linux中完成而不影响实时性能的话,就尽量在linux中完成,因此,rtlinux内核可以尽量做得简单。在rtlinux内核中,不应该等待资源,也不需要使用共享旋转锁。实时任务和linux进程之间的通信也是非阻塞的,从来不用等待进队列和出队列的数据。rtlinux将系统和设备的初始化交给了linux 完成,对动态资源的申请和分配也交给了linux。

  rtlinux使用静态分配的内存来完成硬件实时任务,因为在没有内存资源的时候,被阻塞的线程是不可能具有实时能力的。

轻量级tcp/ip协议栈iwip向rtlinux的移植

iwip概述
  lwip是瑞典计算机科学研究所(sics)的计算机与网络结构实验室(cna)的adamdunkel设计的一个小型的独立的tcp/ip协议栈。lwiptcp/ip协议栈设计的思想是:在保持完整的tcp/ip协议栈的前提下最大限度的降低其所需的资源,以适应只有十几kbytesram和40kbytes左右的rom的嵌入式系统。iwip协议栈包含了ip,ipv6,icmp,udp和tcp等协议。

  iwip协议栈不是像tcp/ip网络协议那样分不同层次,每一层分别负责不同的通讯功能。iwip设计的初衷是应用于嵌入式系统,嵌入式系统通常有较强的实时性和内存容量有限等特点,因此iwip在网络协议栈中不是完全遵守网络协议栈的分层体系结构进行设计的。例如应用层为了

  摘 要:linux作为嵌入式操作系统在嵌入式系统中应用越来越普及。linux若是作为一个实时操作系统,它无法满足实时系统严格的实时性要求。rtlinux是在linux内核的下层实现所得的一个简单的硬实时内核,但是rtlinux也存在一个很大的缺陷,那就是实时任务无法使用linux提供的服务,特别是它无法使用linux中的tcp/ip的网络功能,在此介绍的iwip是一个可以运行在rtlinux并能被实时任务使用的嵌入式的轻量级tcp/ip协议栈。iwip还可以使实时任务与远程实时任务或linux用户进程通讯。根据这些特性,我们通过将linux,iwip和rtlinux3者合理的结合在一起,从而构成一个全新的实时系统框架。

关键词:嵌入式系统;rtlinux;iwip;设备驱动程序

引 言

  linux或经过简单改进的linux都是不能运行实时任务,这是因为linux的“公平”时间分配的调度算法要保证分配给每一个用户程序占用cpu时间,然而实时任务对执行时间要求很严格,如每隔200ns从传感器取样的实时任务。linux系统的虚拟内存的内存管理使得任何用户进程的页面在任何时刻都能被交换到硬盘或外存储器中,这样在linux中将需要的页面返回到ram中也需要花费一段不确定的时间。另外,对任务执行的时间和任务完成时间都是没有精确的可预知性的。linux操作系统的“天生”缺陷使得linux无法满足实时嵌入式系统的实时系统要求。在本文中我们主要讨论实时操作系统rtlinux和linux有机集成在一起,构成了一个全新的实时系统。

rtlinux的实现机理

  rtlinux是美国新墨西哥州大学计算机科学系victoryodaiken和micae brannanov开发的。它在linux内核的下层实现了一个简单的实时内核,而linux本身作为这个实时内核的优先级最低的任务,所有的实时任务的优先级都高于linux系统本身的以及linux系统下的一般任务。rtlinux的体系结构如图1所示。


  rtlinux的设计思想是:应用硬件的实时约束将实时程序分割成短小简单的部分,较大部分承担较复杂的任务。根据这一原则,将应用程序分为硬实时和程序2个部分。硬件实时部分被作为实时任务来执行,并从外部设备拷贝数据到一个叫做实时有名管道(rtfifo)的特殊i/o端口;程序主要部分作为标准linux进程来执行。它将从rtfifo中读取数据,然后显示并存储到文件中,实时部分将被写入内核。设计实时有名管道是为了使实时任务在读和写数据时不被阻塞。图2所示的是实时有名管道结构图。


  rtlinux通过对标准linux内核进行改造,将linux内核工作环境作了一些变化。如图2所示,在linux进程和硬件中断之间,本来由linux内核完全控制,现在在linux内核和硬件中断的地方加上了一个rtlinux内核的控制。linux的控制信号都要先交给rtlinux内核进行处理。在rtlinux内核中实现了一个虚拟中断机制,linux本身永远不能屏蔽中断,它发出的中断屏蔽信号和打开中断信号都修改成向rtlinux发送一个信号。如在linux里面使用“si”和“cli”宏指令,让rtlinux里面的某些标记做了修改。也就是说将所有的中断分成linux中断和实时中断两类。如果rtlinux内核接收到的中断信号是普通linux中断,那就设置一个标志位;如果是实时中断,就继续向硬件发出中断。在rtlinux中执行sti将中断打开之后,那些设置了标志位表示的linux中断就继续执行,因此,cli并不能禁止rtlinux内核的运行,却可以用来中断linux。linux不能中断自己,而rtlinux可以。

  这里体现了rtlinux设计过程中的原则:在实时模块中的工作量尽量少,如果能在linux中完成而不影响实时性能的话,就尽量在linux中完成,因此,rtlinux内核可以尽量做得简单。在rtlinux内核中,不应该等待资源,也不需要使用共享旋转锁。实时任务和linux进程之间的通信也是非阻塞的,从来不用等待进队列和出队列的数据。rtlinux将系统和设备的初始化交给了linux 完成,对动态资源的申请和分配也交给了linux。

  rtlinux使用静态分配的内存来完成硬件实时任务,因为在没有内存资源的时候,被阻塞的线程是不可能具有实时能力的。

轻量级tcp/ip协议栈iwip向rtlinux的移植

iwip概述
  lwip是瑞典计算机科学研究所(sics)的计算机与网络结构实验室(cna)的adamdunkel设计的一个小型的独立的tcp/ip协议栈。lwiptcp/ip协议栈设计的思想是:在保持完整的tcp/ip协议栈的前提下最大限度的降低其所需的资源,以适应只有十几kbytesram和40kbytes左右的rom的嵌入式系统。iwip协议栈包含了ip,ipv6,icmp,udp和tcp等协议。

  iwip协议栈不是像tcp/ip网络协议那样分不同层次,每一层分别负责不同的通讯功能。iwip设计的初衷是应用于嵌入式系统,嵌入式系统通常有较强的实时性和内存容量有限等特点,因此iwip在网络协议栈中不是完全遵守网络协议栈的分层体系结构进行设计的。例如应用层为了
相关IC型号

热门点击

 

推荐技术资料

DFRobot—玩的就是
    如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!