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

📄

📁 嵌入式系统
💻
📖 第 1 页 / 共 4 页
字号:
  <P><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>渐渐地,更多嵌入式系统需要与各类网络联接,因此需要网络功能。即便是酒店的门把手也嵌入了微处理器与网络相联。</SPAN></P></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>对于仅仅是编码控制循环的嵌入式系统,增加网络功能将导致系统复杂程度提高以致要求操作系统。</SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>除了商品化操作系统,还有大量专用操作系统。其中大部分来自于草案,如CISCO的IOS;还有是从其他操作系统中派生出来的。例如,许多操作系统是从同一版本的Berkeley 
  </SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>Unix系统派生,因为它有完整的网络功能。其他是基于主要操作系统的如KA9Q来自Phil Karn。</SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt">
  <P><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>Linux作为嵌入式系统是一个带有很多优势的新成员。它对许多CPU和硬件平台都是可移植的、稳定、功能强大、易于开发。</SPAN></P></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN><B>工具——突破ICE的障碍</B></SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt">
  <P><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>开发嵌入式系统的关键的是可用的工具包。像任何工作一样,好的工具使得工作更快更好。开发的不同阶段需要不同的工具。</SPAN></P></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt">
  <P><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>传统上,首先用于开发嵌入式系统工具是内部电路仿真器(ICE),它是一个相对昂贵的部件,用于植入微处理器与总线之间的电路中,允许使用者监视和控制微处理器所有信号的进出。这有点难做,因为它是异体,可能会引起不稳定。但是它提供了总线工作的清晰状况,免了许多对硬件软件底层工作状况的猜测。</SPAN></P></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>过去,一些工作依赖ICE为主要调试工具,用于整个开发过程。但是,一旦初始化软件对串口支持良好的话,多数的调试可以不用ICE而用其他方法进行。较新的嵌入式系统利用非常清晰的微处理器设计。有时,相应工作初始码已经有了能够快速获得串口工作。这意味着没有ICE人们也能够方便地工作。省去ICE降低了开发的成本。一旦串口开始工作,它可以支持各种专业开发工具。</SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>Linux是基于GNU的C编译器,作为GNU工具链的一部分,与gdb源调试器一起工作。它提供了开发嵌入式Linux系统的所有软件工具。这有些典型的、用于在新硬件上开发嵌入式Linux系统的调试工具。</SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt">
  <P><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>1.<SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>写入或植入引导码</SPAN></P>
  <P><SPAN lang=EN-US>2.<SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>向串口打印字符串的编码,如“Hello World”(事实上我更喜欢“Watson,Come hre I need </SPAN><SPAN 
  lang=EN-US>you”,电话上常用的第一个词。)</SPAN></P></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>3.<SPAN 
  style="mso-spacerun: yes">&nbsp;</SPAN></SPAN><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>将gdb目标码植入工作串口,这可与另一台运行gdb程序的Linux主机系统对话。只要简单地告诉gdb通过串口调试程序。它通过串口与测试机的gdb目标码对话,你可以进行C源代码调试,也可以用这个功能将更多的码载入RAM或Flash 
  </SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt">
  <P><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>Memory中。</SPAN></P></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt">
  <P><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>4.<SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>利用gdb让硬件和软件初始化码在Linux内核启动时工作。</SPAN></P></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt">
  <P><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>5.<SPAN 
  style="mso-spacerun: yes">&nbsp;</SPAN></SPAN><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>一旦Linux内核启动,串口成为Linux控制口并可用于后续开发。利用kgdb,内核调试版的gdb,这步常常不作要求,如果你与网络联接,如10BaseT,下一步你可能要启动它。</SPAN></P></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt">
  <P><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>6.<SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>如果在你的目标硬件上运行了完整的Linux内核,你可以调试你的应用进程。利用其他的gdb或覆盖gdb的图形如xgdb。</SPAN></P></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN><B>实时——说谁?</B></SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>简单地放,实时系统的主要不是的。嵌入式系统常常被错误地分为实时系统,尽管多数系统一般并不要求实时功能。实时是一个相对的词,纯化论者常常严格地定义实时为对一事件以预定的方式在极短的时间如微秒作出响应渐渐地,在如此短暂时间间隔内的严格实时功能在专用DSP芯片或ASIC上实现了。只有在设计低层硬件FIFO、分散/聚集DMA引擎和定制硬件时才会有这样的要求。</SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>许多设计人员因为对真实的要求设有清晰的理解而对实时的要求焦虑不安。对于大多数的系统,在一至五微秒的近似实时响应已经足够。同样软需求也是可以接受的。如</SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Windows 98 
  已经崩溃的中断必须在4毫秒内(±98%)内、或20毫秒(±0)内进行处理。</SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt">
  <P><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>这种软要求是比较容易满足的,包括环境转换时间、中断等待时间、任务优先级和排序。环境转换时间曾是操作系统的一个热门话题。总之,多数CPU这些要求处理得很好,而且CPU的速度现在已经快了很多,这个问题也就不重要了。</SPAN></P></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt">
  <P><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>严格的实时要求通常由中断例程或其他内核环境驱动程序功能处理,以确保稳定的表现,等待时间,一旦请求出现要求服务的时间很大程度上取决于中断的优先及其他能暂时掩盖中断的软件。</SPAN></P></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>中断必须进行处理和管理以确保时间要求能符合,如同许多其他的操作系统。在Intel<SPAN 
  style="mso-spacerun: yes">&nbsp; </SPAN></SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt">
  <P><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>X86处理器中,这工作很容易由Linux实时扩展处理。这是提供了一个以后台任务方式运行Linux的中断处理调度。关键的中断响应不必通知Linux。因此可以得到许多对于关键时钟的控制。在实时控制级和时间限制宽松的基本Linux级之间提供接口,这提供了与其他嵌入式操作系统相似的实时框架。因此,实时关键代码是隔开的、并“设计”成满足要求的。代码处理的结果是以更一般的方法也许只在应用任务级。</SPAN></P></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN><B>嵌入式系统——定义</B></SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>一个观点是如果一个应用没有用户界面,它必须是嵌入式的,因为用户不能直接与之交互。当然这是简单化的。一个电梯控制的电脑被认为是嵌入式的:按键选择楼层指示灯显示电梯的停层。对于联网的嵌入式系统,如果系统包含监视和控制的网络浏览器,这种界限就更加模糊了。更好些的定义注重系统的集中的功能和主要的目的。</SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>因为Linux提供了完成嵌入功能的基本的内核和你所需要的所有用户界面,它是多面的。它能处理嵌入式任务和用户界面。将Linux看作是连续的统一体,从一个具有内存管理、任务切换和时间服务及其他的分拆的、微内核到完整的服务器,支持所有的文件系统和网络服务。</SPAN></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt">
  <P><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>一个小型的嵌入式Linux系统只需要下面三个基本元素:</SPAN></P></DIV></BLOCKQUOTE>
<UL>
  <LI>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>引导工具</SPAN></DIV>
  <LI>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>Linux微内核,由内存管理、进程管理和事务处理构成</SPAN></DIV>
  <LI>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt"><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>初始化进程</SPAN></DIV></LI></UL>
<BLOCKQUOTE>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt">
  <P>&nbsp;</P></DIV>
  <DIV class=Section1 style="LAYOUT-GRID-LINE: 15.6pt">
  <P><SPAN lang=EN-US><SPAN 
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  </SPAN>如果要让它能干点什么且继续保持小型化,还得加上:</SPAN></P></DIV></BLOCKQUOTE>

⌨️ 快捷键说明

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