访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
用嵌入式Linux开发服务器
内容导读:
Cyclades公司Marcio Saito
 

  本文是介绍嵌入式网络设备——TS2000终端服务器使用嵌入式Linux的开发过程。一年后,最终产品获得成功,而且应用到管理一些Internet上最大的服务器中心。
  我们同时使用传统软件和开放源码的软件设计了相似的产品,以便进行比较。


为什么是Linux
  在服务器市场上,使用Linux比使用一个传统的商业软件要便宜。Linux不需要版权费,对于源代码没有使用限制,这对于嵌入式生产商尤其重要。
  也有一些相对便宜的商业性实时操作系统。其中有一些是不要版权费的,也有很多可以获得的源代码。有什么理由不去用那些一直用得很好的东西呢?
  我们知道,开放源代码一个主要的好处是可以参考开放源代码组织中的软件。这些软件大多数是发布在GNU组织中,不需要什么费用,很容易快速在其中加入新的特性和功能。
  Linux能够提供很好的网络支持,具有所有现有协议而且能很快和将来的任何协议相融合,不需要什么附加工作。
开放源代码另一个重要的优点就是能够让别人在你的程序上做些改动,成为他们自己的程序。使人们在满足自己需求的同时也扩展了你的产品的应用范围。
  这种可调节性对于终端服务器来说尤其有用。在很多工业和商业自动控制应用中,需要通过局域网把多种串行设备联接在一起。用户有时不得不使用一个有连续多通道主板的服务器,来实现定制终端服务器的功能。现在他们能使用一个紧凑、可信赖的嵌入式系统,同时可以自由在上面加入自己的软件和创建客户化解决方案。


我们的项目
  我们要设计的是一种新的访问控制器或者叫终端服务器,提供在ISP环境下通过调制解调器拨号上网能力,或者使用于工业或商业应用中把串行设备连接到网络。
  硬件规格为:一个32端口的RS-232串口,一个10/100兆的以太网端口,PowerQUICC (Motorola PowerPC MPC860T 芯片),Flash/RAM存储器(没有硬盘存储器),硬件系统集成化(只占到一个U),低损耗。
  PowerQUICC是Motorola公司生产的一种嵌入式网络应用芯片。它有两个中央处理器(一个PowerPC芯片运行客户程序,另一个则是精简指令集的I/O处理器)和一些内建的外设(包括串口控制器,多通路HDLC控制器,以太网控制器,存储控制器等等)。
  我们的新产品TS2000将是一个在硬件上比现有产品PR3000优化的版本(更快、更小、更便宜、更可靠),同时在软件上也是创新和具有革命性的。它采用嵌入式Linux而且开放全部源代码。


移植软件
  采用嵌入式Linux系统节约了大量的工作。Hard Hat Linux 1.2是建立在Linux2.2.14内核之上而且提供对PowerQUICC的支持(同时还有很多别的平台),具有大多数集成外设的驱动。
  我们在两星期内完成从Flash上引导内核并能在主板上运行。第二个月,所有的接口都能够工作,驱动程序也调试好了。第四个月,完成了具有基本功能的终端服务器。第六个月完成了产品。


标准Linux还是嵌入式Linux
  在传统的软件世界,你可以关着门自己设计所有的东西,或者买一个商业的实时操作系统(如VxWorks,Nucleus,PSOS,Lynx,QNX等等)。但今天,几乎所有的开发者都选择使用商业产品和从专业的公司获得技术支持,以专心于应用产品开发。
  有很多专门从事系统开发、技术支持工作、为嵌入式开发者使用Linux提供专门服务的公司,比如Lineo, LynuxWorks, MontaVista 和Red Hat。
  如果你的核心业务不是开发内核,建议你使用Linux的发行版本,和这些专业公司中的一家合作,缩减产品面市时间和设计投资。
  我们选择了MontaVista 公司的Hard Hat Linux。他们提供对于MPC860T的支持(包括对于大多数流行主板的支持包)。Hard Hat Linux是百分百的开放源代码(有些公司对于工具软件和附加包是不开放源码的),它不但在适应新硬件时的需要的工作最少,而且还是标准的Linux内核。


开发环境
  我们没有在嵌入式Linux上的工作经验,但我们有Linux内核的开发者而且还有一些自己设计嵌入式程序的研究人员。我们从MontaVista购买了一个标准的技术支持包,凭借曾有的独立工作经验面对挑战。当然如果你需要额外的帮助,嵌入式Linux厂商也提供专门的培训和移植服务。
  我们的交互开发平台用的是Red Hat Linux操作系统和标准的X86 主机。开发环境用的是GNU编译环境。
  开发一个新的嵌入式硬件驱动是一个挑战,因为无法获得很多支持Linux 的专业调试工具(电路仿真,目标监控,硬件管理)。
  我们的策略是在使用Linux之前在我们现有的软件上验证硬件。当硬件被检验后,用一周的时间来理解如何从Flash上产生一个Linux引导区,使它在我们的硬件中运行起来。
  我们使用HMI和SDS硬件管理器协同PowerQUICC BDM调试端口工作,确定硬件是否能够工作。我们是在我们旧的开发环境(Windows开发主机,DiabData C 编译器)中做这些工作的,当我们转向Linux平台之后,我们没有对硬件和软件的逐步调试工具。调试内核完全基于分析和使用输出信息,以及一些自己编写的调试工具。


理解GPL和开放源代码
  如果开发者不熟悉GPL,那么从传统的程序设计转变到开放源代码的程序设计对他将是非常大的挑战。
在传统的嵌入式开发环境中,开始写驱动的第一步通常是读硬件的功能手册。但是在开放源代码的情况下,第一步却是寻找所有可获得的驱动程序。你会发现相同或者相似的驱动程序,能够用来参考。
  在对这个驱动程序作相应的改动以适应你的硬件之后,别忘了把它贡献出来。如果你的程序对于他人很有用,你会发现这个驱动很快会被改进而且也被提供出来,你可以获得大家的帮助,这样你就可以专注于应用程序。


开发和调试设备驱动
  我们的Hard Hat Linux已经包括PowerQUICC中外设的驱动程序。没有硬盘的情况下所必需的Ramdisk的驱动程序也提供了。
  为了支持RS-232串行端口,我们的产品使用了16654 方形UART芯片。做完基于标准Linux串行驱动后(支持16X5X系列的UART),我们可以在系统中用/dev/tty目录看到串口数据的发送和接收。
  我们专门写了一个Flash驱动,这样应用程序可以在Flash中打开文件或写入数据。


移植应用程序
  一旦硬件调试好了而且内核开始工作,就到了系统应用软件的编写和移植的时候。这里体现了传统的嵌入式系统和基于Linux的系统的另一个主要的不同之处。
  在传统的设计之中,应用程序的执行和内核紧密结合,管理资源会使用到低层的内核调用。
在Linux系统环境中开发应用程序更容易、更快。应用程序只运行在用户层,却完全获得了执行环境的便利,它可以只使用高层的Linux系统调用来打开文件和管理资源。
  这样,任何对于硬件和软件环境没有专门知识的人都可以在一个标准的Linux保护环境下设计、执行和调试一个新的功能或应用程序。一些新的功能甚至不需要用C语言编程,只要一些Shell描述就能实现。
  为了创建访问控制器和终端服务器所需要的功能,我们以块的形式获取一些可获得的用户空间,然后把他们修改、合并、优化。


Linux与传统实时系统的比较
  当我们的程序移植到一个使用高度统一标准的应用程序接口,同时提供应用程序执行保护环境的体系时,我们预计会使用更多的存储和Flash,但与获得的可适应性和功能相比,花费要小得多。
  除此之外,一个用户程序需要花费RAM空间,当它装载的时候需要另外的存储空间。
  我们的系统配置了必需的驱动和完全的TCP/IP协议栈。在用户空间中,我们有bash(也就是shell),vi(文本编辑器,用来配置),BusyBox(一个小的Linux/Unix交替窗口)和所有的基本工具。
  这个系统有完整的路由和网络工作能力,却运行在只有6MB的RAM上。内核占用了2MB;最小的ramdisk包含用户程序空间和完全Linux文件系统功能,占用3MB;另外还需要一些缓冲空间装载内核和运行用户程序。
  因为我们设计的是一个终端服务器,所以还需要运行pppd(ppp需求)和修改Portslave,Sredird,TinyLogin和OpenSSH的版本,以控制串行口和终端服务以及TCP socket功能。
  每个串口大约需要额外的300k空间,这样32个串口总共加起来就很多。只要做一些额外的工作就可以彻底削减这种空间需求,但是我们宁愿多花费一点RAM而使用已有的包,这样维护和将来升级都只要做最小的变动。
  在传统的设计中,大多数的源程序是以二进制文件存储在Flash文件系统中,会在用户空间中执行。但在Linux中,系统内核、基础的文件系统、配置文件、用户文件和初始化导入程序都使用数据压缩存储在Flash中(压缩比率大约为2.5:1)。我们的机器有4MB的Flash,但我们目前只使用了2到2.5MB。


嵌入式网络的未来
  将来的网络应用市场会有越来越多的设备生产厂商,这时要保持竞争力,软件和硬件技术的商品化将成为关键。每个公司都设计和维护自己的网络操作系统、TCP/IP栈、从每个小的硬件生产主板的模式不会存在多久了。厂商需要模块化和功能化,他们从提高销售量和扩大市场占有率来获得经济效益。技术人员应专注于每一个芯片,增加其技术价值,而不是去做什么已有东西的新版本。
  这正是开放源代码的核心思想。它对于广泛使用的应用的程序有帮助,对于嵌入式市场更有冲击力。这是一场变革的开端,Linux将成为未来标准嵌入式平台。

标签:
来源:今日电子 作者: 时间:2002/3/1 0:00:00
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐