⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 嵌入式系统
💻
📖 第 1 页 / 共 3 页
字号:
      <P>在以往,一些工程项目依赖它--经常在开发周期中的各个阶段--作为主要的调试工具.不过,一旦当编制的软件 
      有能力支持一个串型口的时候,大量的调试可以不用ICE而使用别的方法来完成.同样,大部分新一代的嵌入式系统 
      采用蛮像食谱式的微处理器设计;通信工作的启动代码常常是具备的以使串型口尽快地工作,这意味着开发者能 
      在没有ICE的情况下也能很好地进展;去掉了ICE,从而降低了开发成本.一旦串型口可以工作起来,便能用于支持那 
      些日渐复杂的开发工具的相关(软件)层</P>
      <P>LINUX基于GNU C 编译器;后者作为GNU工具集的一组成部分,和源码级调试器gdb一起工作,提供了在开发一个嵌入式 
      LINUX系统中要用到的所有软件工具.下面是在为一个新的硬件开发一个新的嵌入式LINUX系统时要用到的典型调试 工具的序列和步骤:</P>
      <P>1:写出或移植一段启动代码(后面再详细讨论);</P>
      <P>2:写一段代码在串型口上输出一字符串,像"Hello,World!"(其实,我更喜欢人类发明电话后,通过电话说的第一句话"Watson, 
      come here I need you");</P>
      <P>3:移植gdb目标码使之能在串型口上工作.这将允许向另一台正运行着gdb程序的LINUX主机会话;你只不过要告诉 
      gdb是通过串型口调试该目标程序;gdb通过串型口与你的测试计算机上的gdb目标码会话并给出全部C源码级的 
      调试信息.你也可以利用这一(通信)能力把附加的代码下载到RAM或闪存中.</P>
      <P>4:借助gdb,执行余下的直到LINUX内核开始接管之前的所有硬件和软件的初始化代码.</P>
      <P>5: 
      一旦LINUX内核启动后,上述的串型口就成为LINUX的控制台端口并可以利用它的便利来进行后继开发过程.再使用gdb的内核调试版本kgdb.这一步常常不是必需的.如果你有一个网络连接,比如,10BaseT,你或许会想让它紧接着工作起来.</P>
      <P>6: 如果你的目标平台运行的Linux 
      kernel是全功能的(即:未经删减过功能),你可以利用gdb或其图形化替代品如xgdb去调试你的应用进程.</P>
      <H3>实时--真是这样吗?</H3>
      <P>轻率,大部分的系统并不是如此。嵌入式系统经常被错误地说做实时系统,但是它们中的大多数并不具备实时特性。实时性仅仅是相对的。实时严谨地定义应为硬实时:能在极短的时间(毫秒级)内响应,并以某种确定的方式处理事件。现在,许多硬实时功能正逐渐集中在DSP或ASIC的设计中,通过一些适当的硬件,如FIFO,DMA或其它专用硬件来实现。</P>
      <P>对大多数系统来说,有1到5毫秒的实时响应时间应足够了。当然,另一种宽松的要求也是可以接受的,例如:</P>
      <P>Windows 
      98的处理监视器崩溃画面的中断,要求必须在4微秒之内处理的,占所有情况的98%;而在20微秒之内处理的,占各情况的100%.</P>
      <P>这些宽松的实时要求可以很容易达到.实现它们过程中涉及到一些探讨,包括现场切换,中断延迟,任务选优和调度.</P>
      <P>现场切换曾一度成为操作系统界的一个热点话题,不过,由于大多数CPU在这点上处理得比较令人满意而且CPU速度现在已经变得足够的快,现场切换现已不再是主要关注点了.</P>
      <P>实时的严格性要求通常应由一个中断例程或内核中的现场驱动函数来处理以确保行为的一致性.当中断发生后,处理该中断所用的时间,即中断延迟,在很大程度上,由中断优先级与其它能临时屏蔽该中断的软件决定.</P>
      <P>(实时系统中的)中断必须应被高效地设计和安排以确保满足时间上的要求,就像在其它OS中那样.在Intel 
      X86处理器系列中,这项工作可以能被扩充了实时性的Linux很好地处理.(实时Linux,即:RTLinux,参看http://www.rtlinux.org/).从本质上说,它提供了一个把Linux作为其后台任务而运行的中断处理调度器.(This 
      essentially provides an interrupt processing scheduler that runs Linux as 
      its background 
      task)一些关键(临界)中断可以不为Linux其他部分所知地得到服务(处理),因而,你就有了对临界时间的控制权.这种做法提供了实时级别和时间限制性较为宽松的基本Linux级别之间的界面.并提供了一个与别的嵌入式操作系统类似的实时处理框架.从根本上讲,为满足实时性要求,采用了把实时性的关键(临界)代码段隔离开来并进行高效的安排,然后对该段代码的处理结果再以更一般的方式(或许在进程级别上)来做进一步处理.</P>
      <H3>嵌入式系统--定义</H3>
      <P>一种观点认为: 
      如果某种应用没有用户界面,从而,用户不能直接地和它交互,那么它就是嵌入式系统.这当然太过简单化了.电梯控制系统是嵌入式系统,但却有一个用户界面: 
      选择楼层的按钮和显示电梯正到达几层的指示器. 
      对于那些连入网络的嵌入式系统,如果该系统包含一个用于监视和控制的web服务器,界面上的区别就更显模糊了.一个较好的定义应强调在该系统的重要功能或主要用途上.</P>
      <P>由于Linux可以提供一个用以执行嵌入功能的基本内核以及各种你想要的用户界面元素,所以Linux有很强的通用特点.它能处理嵌入性任务和有关用户界面两方面的作业.可以把Linux看作如下的一个连续体:</P>
      <P>从一个只有内存管理,任务调度,定时器服务的缩简的微内核到一个支持各种文件系统和多种网络服务的完整服务器.</P>
      <P>一个最小的嵌入式系统仅需如下基本组成部分:</P>
      <P>1 : 一个用作引导的可用设施(工具);</P>
      <P>2 : 一个具备内存管理,进程管理,和定时器服务的Linux微内核;</P>
      <P>3 : 一个初始进程;</P>
      <P>为让上面的最小嵌入式系统变得有一定实用性,尚需加上一些东西:</P>
      <P>1 : 硬件的驱动程序;</P>
      <P>2 : 一个或几个应用进程以提供必要的应用功效.</P>
      <P>随着对系统要求的增加,也许还要用到下面这些组件:</P>
      <P>1 : 一个文件系统(或许放在ROM或RAM中);</P>
      <P>2 : TCP/IP 网络协议栈;</P>
      <P>3 : 一个磁盘用来存放半易失性数据和提供交换能力.</P>
      <H3>硬件平台</H3>
      <P>挑选最好的硬件是一项很复杂的工作,充满着各种顾忌和干扰:公司的政策,各种成(偏)见,其它工程的影响以及缺乏完整或准确的信息.</P>
      <P>成本经常是一个关键性因素.当你着眼成本时,一定要考虑产品的整体成本,而不要只看到CPU;有时一个快速而廉价的CPU可能成了这个产品的耗价的问题根源,一旦当你加上总线和延迟逻辑以便同你的各种外设协同工作的时候.如果你是一个仅管听命的软件员,那么你就只能对早已作好的决定撞运气了,如果你是系统的设计者,就需要尽力制订一个合理的预算并且所选用的硬件要能令你满意地处理实时任务.</P>
      <P>从实际中观察CPU到底需要多快方能把工作做好,然后把这个速度乘3(才是系统将所要的CPU速度);因为CPU在理论上所能达到的能力到了现实中总是难以置信地大打折扣!不要忘记缓存对你的系统的影响.</P>
      <P>也要计算出总线需要运行多快,如果有二级总线(像一条PCI总线那样),也要把它们包含进来;一条慢的或过多参与DMA传输的总线能够让一个快速的CPU变成在爬行.</P>
      <P>有集成外设的CPU很不错,因为很少有硬件需要调试.而且,为支持主流CPU,它们的驱动程序经常是可用的.不过在我以往的工程中,这些芯片对外设的组合好象总是不合理或者缺少我们期望的性能(功能);同样,正因为这些外设被集成在一起,所以不要设想这会是一个最低价的(硬件平台)方案.</P>
      <H3>把10磅的Linux塞进5磅的口袋</H3>
      <P>对Linux的一个通常观点是,它由于太大而不宜用作嵌入式系统.这种观点不一定是真实的.面向PC机的Linux典型发布版有很多你根本用不上的功能特征甚至也超过了一个真正PC用户的需求.</P>
      <P>首先,我们要把内核和各种任务分开来.标准的Linux内核总是长驻内存的.每一个要运行的应用程序需要从磁盘中装载到内存中,并在那里被执行.当该程序运行结束,它占用的内存被释放掉,也就是说,该程序被卸载掉.在一个嵌入式系统中,可能不存在一个磁盘.因系统的复杂程度和硬件的不同设计,有两种方法可用以摆脱对一个磁盘的依赖性.在一个简单的系统中,当系统启动后,内核和各种应用进程均驻留在内存中--这是大多数传统嵌入式系统的工作方式.Linux也支持这种方式.</P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -