QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3179|回复: 1
打印 上一主题 下一主题

[转帖]嵌入式Linux应用看好 平台选择关系重大

[复制链接]
字体大小: 正常 放大

66

主题

1

听众

648

积分

VisaSky.com 加拿大移民留学网

  • TA的每日心情
    开心
    2012-6-9 03:29
  • 签到天数: 1 天

    [LV.1]初来乍到

    发帖功臣 元老勋章

    跳转到指定楼层
    1#
    发表于 2004-9-28 16:46 |只看该作者 |正序浏览
    |招呼Ta 关注Ta
    <>·只要有可替代的方案,尽量不要选择Linux尚不支持的硬件平台。
    2 k0 r8 M/ j. E) O' E( ~·要根据自己的嵌入式要求和实时性要求选择适用自己的嵌入式Linux。
    ; E& `! B: Q. g1 B, A. S·和选择硬件的原则一样,只要可能,永远选择使用普通的嵌入式Linux操作系统。
    & `0 t8 O6 J/ M: V! b- a2 g$ V·比较流行的高级语言对多数微处理器都有良好的支持,通用性较好,可移植性好。% q- b- {+ o, u6 k  n
    ·除非必要,集成开发环境尽量采用标准的glibc。1 A. H( [7 X4 M
    ·授权的软件组件大都经过严格的测试,从而可靠性高,调试时间短。</P>
    % Q! [/ j4 N3 A4 {6 ~<>按照嵌入式系统的工程设计方法,嵌入式系统的设计可以分成三个阶段,即分析、设计、实现。分析阶段的主要任务是确定要解决的问题及需要完成的目标,也常常被称为“需求阶段”,或“系统需求阶段”。设计阶段主要任务是解决如何在给定的约束条件下完成用户的要求,此阶段是在分析阶段的基础上研究“如何做”。实现阶段主要是解决如何在所选择的硬件和软件的基础上进行整个软、硬件系统的协调实现。因此在分析阶段结束后,通常开发者面临的一个棘手的问题就是硬件平台和软件平台的选择,因为它的好坏直接影响着实现阶段的任务完成。通常硬件和软件的选择包括:处理器、硬件部件、操作系统、编程语言、软件开发工具、硬件调试工具、软件组件等组件的选择。
    : ~  r9 `* b+ v( f在上述选择中,通常处理器的选择是最重要的,同时操作系统和编程语言也是非常关键的。处理器的选择往往同时会限制操作系统的选择,操作系统的选择又会限制开发工具的选择。</P>7 _* B( d: D% V' H
    <>硬件平台多样化</P>
    . c, ?2 c2 S& i8 V<>嵌入式系统的核心部件是各种类型的嵌入式处理器,目前据不完全统计,全世界嵌入式处理器的品种总量已经超过1000多种,流行体系结构有30几个系列。但与全球PC市场不同的是没有一种微处理器和微处理器公司可以主导嵌入式系统,仅以32位的CPU而言,就有100种以上嵌入式微处理器。由于嵌入式系统设计的差异性极大,因此选择是多样化的。
    . s7 A. `; C; z调查上市的CPU供应商。有些公司如Motorola、 Intel、AMD很有名气,而有一些小的公司如QED(Santa Clara .CA)虽然名气很小,但也生产很优秀的微处理器。另外,有一些公司,如ARM、MIPS等,只设计但并不生产CPU,他们把生产权授予世界各地的半导体制造商。ARM是另外一种近年来在嵌入式系统有影响力的微处理器制造商,ARM的设计非常适合于小的电源供电系统。Apple在Newton手持计算机中使用ARM,另外有几款数字无线电话也在使用ARM。</P>
    9 Y. L. ?4 s) M: n<>设计者在选择处理器时要考虑的主要因素有:</P>" f* V) D# W( B' V* [
    <>(1) 处理器的处理速度。一个处理器的性能取决于多个方面的因素:时钟频率、内部寄存器的大小、指令是否对等处理所有的寄存器等。对于许多需用处理器的嵌入式系统设计来说,目标不是在于挑选速度最快的处理器,而是在于选取能够完成作业的处理器和I/O子系统。如果设计者设计的是面向高性能的应用,那么建议考虑某些新的处理器,其价格极为低廉,如IBM和Motorola 的Power PC。以前Intel 的 i960是销售极好的RISC高性能芯片,但是最近几年却遇到强劲的对手,让位于MIPS、SH以及后起之星ARM。</P>
    $ @( z# g3 ^( V/ b! |5 ]5 v2 }<>(2) 技术指标。当前,许多嵌入式处理器都集成了外围设备的功能,从而减少了芯片的数量,进而降低了整个系统的开发费用。开发人员首先考虑的是,系统所要求的一些硬件能否无需过多的胶合逻辑(GL)就可以连接到处理器上。其次是考虑该处理器的一些支持芯片,如DMA控制器,内存管理器,中断控制器,串行设备、时钟等的配套。</P>
    + o( D, N0 |3 L2 B$ w- I- @9 d<>(3) 处理器的功耗。嵌入式微处理器最大并且增长最快的市场是手持设备、电子记事本、PDA、手机、GPS导航器、智能家电等消费类电子产品,这些产品中选购的微处理器典型的特点是要求高性能、低功耗。许多CPU生产厂家已经进入了这个领域。今天,用户可以买到一颗嵌入式的微处理器,其速度像笔记本中的 Pentium一样快,而它仅使用普通电池供电,并且价格很便宜。如果用于工业控制则对这方面的考虑较弱。</P>
    1 H0 |0 e2 p+ `+ c" n. \2 d<>(4) 处理器的软件支持工具。仅有一个处理器,没有较好的软件开发工具的支持,也是不行的,因此选择合适的软件开发工具对系统的实现会起到很好的作用。</P>' h1 Y$ ]: e$ V' v$ J
    <>(5) 处理器是否内置调试工具。处理器如果内置调试工具可以大大缩小调试周期,降低调试的难度。</P>
    # r" s/ I, Y' a<>(6) 处理器供应商是否提供评估板。许多处理器供应商可以提供评估板来验证用户的理论是否正确,验证其决策是否得当。</P>
    4 a) Z; P, g; Y6 ~$ f1 u<>除此之外,其他硬件部件选择时,还要考虑其他因素。例如要考虑生产规模,是打算做一套、多套,还是规模生产。对于规模比较大的企业用户,这时可以考虑自己设计和制备硬件,这样可以降低成本。如果规模很小,则最好从第三方购买主板和I/O板卡。另外,根据 开发的市场目标,企业级用户通常希望产品能够尽快发售,以获得竞争力,此时要尽可能买成熟的硬件,反之,对于其他用户可以自己设计硬件,降低成本。最后,还应该了解软件对硬件的依赖性,看软件是否可以在硬件没有到位的时候先行开发。不过,只要可能,用户最好尽量选择使用普通的硬件,在CPU及架构的选择上,一个原则是:只要有可替代的方案,尽量不要选择Linux尚不支持的硬件平台。</P>
    * f7 U+ }1 z6 }2 ~<>操作系统的选择取决于硬件' N9 r4 h' \/ y7 ^
        : _8 s/ Q3 ^* V7 G7 X; b* X: w. J4 N
    嵌入式软件的开发流程(如图1)主要涉及到代码编程、交叉编译、交叉连接、下载到目标板、调试等几个步骤,因此软件平台的选择也涉及到以下几个方面:操作系统的选择、编程语言的选择、集成开发环境的选择等。不过,除此之外还需要选择一些其他的软件组件,有些软件组件是免费的,有些软件组件是授权的。授权软件组件的费用一般都很高,但授权组件大都经过严格的测试,从而可靠性高,调试时间短。但现在也有一些免费的自由软件组件,它们的性能、可靠性也很好。因此开发成员在选择的时候要加以权衡,确定那种方案更好。# W% G& [) y) L1 G. m; u
    $ G4 z" E, o: e8 Q$ i( p
    操作系统的选择在硬件方案确定之后就相对轻松了。硬件的不同,会影响操作系统的选择,低端无MMU的CPU,就要使用 uClinux 操作系统,而相对高端的硬件,则可以用普通的嵌入式 Linux 操作系统。uClinux 和普通的 Linux有各自的优势和缺点。可用于嵌入式系统软件开发的操作系统很多,但关键是如何选择一个适合用户所开发项目的操作系统,经过多年的开发经验,笔者认为应该从以下几点进行考虑:首先是操作系统提供的开发工具,有些实时操作系统(RTOS)只支持该系统供应商的开发工具,也就是说,还必须向操作系统供应商获取编译器、调试器等。而有些操作系统使用广泛且有第三方工具可用,因此,选择的余地比较大;另外操作系统向硬件接口移植的难度也必须考虑,操作系统到硬件的移植是一个重要的问题,它关系到整个系统能否按期完工的一个关键因素。因此我们要选择那些可移植性程度高的操作系统,从而避免操作系统难以向硬件移植而带来的种种困难,加速系统的开发进度;接着要考虑的是操作系统的内存要求,均衡考虑是否需要额外花钱去购买RAM或EEPROM来迎合操作系统对内存的较大要求;另外还要看开发人员是否熟悉此操作系统及其提供的API、操作系统是否有提供硬件的驱动程序(如网卡驱动程序等)、 操作系统的可剪裁性(有些操作系统具有较强的可剪裁性,如嵌入式Linux、Tornado/VxWorks等)、操作系统的实时性等因素。</P>
    5 z" R+ e1 J; z, V9 w<>嵌入式Linux系统开发已经开辟了很大的市场,有一批新型的公司参加这方面的竞争,他们利用自己掌握的用Linux达到嵌入式的方法,吸引投资,开发出成型的产品,如Lineo、TimeSys、FsmLabs等;也有一些传统的Linux公司开辟了这方面的研究,如RedHat、VA Linux等;同时一些传统的大公司如IBM、SGI、Motorola、Intel等也进行了Linux的嵌入式方面的研究和开发; 另外还有一些开发专有嵌入式操作系统的公司,如Lynx公司从专有操作系统方向转型到嵌入式Linux系统,并且更名为LynuxWorks。 </P>
    + h, m9 F. o8 v9 n% K, w<>这些公司的产品主要分为三类:第一类是专门为Linux的嵌入式方向而做的,如何让Linux更小、更容易嵌入到体积要求和功能、性能要求更高的硬件中去是他们的产品开发方向,如MontaVista的Hard Hat Linux等;第二类是专门为Linux的实时特性设计的产品,将Linux开发成实时系统尤其是硬实时系统,应用于一些关键的控制场合(不仅仅是信息电器),如Fsmlabs公司,开发出来的RT-Linux产品已经用在工业控制的很多方面,如葡萄牙的Coimbra大学已经利用RT-Linux实现了化工生产控制厂里用来控制反应和程序控制的系统; 第三类的产品就是将实时性和嵌入式方案结合起来的方案,很多公司都这么做,并且提供集成化的开发方案,如Lineo、TimeSys等。7 I' W: V9 q( |3 X0 P
    因此选择操作系统时要根据自己的嵌入式要求和实时性要求选择适用自己的嵌入式Linux。同时和选择硬件的原则一样,只要可能,永远选择使用普通的嵌入式 Linux 系统。</P>6 B, Z9 l+ ?9 d/ z
    <>编程语言最好锁定高级语言</P>
    8 V! ^4 I2 G+ n! p) s9 p: V2 j<>编程语言的选择主要考虑以下因素:</P>$ R% ?' ~7 j& p( B6 r
    <>(1) 通用性。随着微处理器技术的不断发展,其功能越来越具体,种类越来越多,但不同种类的微处理器都有自己专用的汇编语言。这就为系统开发者设置了一个巨大的障碍,使得系统编程更加困难,软件重用无法实现,而高级语言一般和具体机器的硬件结构联系较少,比较流行的高级语言对多数微处理器都有良好的支持,通用性较好</P>- h) O+ E! u% a# {2 l
    <>(2) 可移植性程度。由于汇编语言和具体的微处理器密切相关,为某个微处理器设计的程序不能直接移植到另一个不同种类的微处理器上使用,因此,移植性差;而高级语言对所有微处理器都是通用的,因此,程序可以在不同的微处理器上运行,可移植性较好。这是实现软件重用的基础。</P>
    0 x" S2 y: e- Y% I3 q; D<>(3) 执行效率。一般来说,越是高级的语言,其编译器和开销就越大,应用程序也就越大、越慢。但单纯依靠低级语言,如汇编语言来进行应用程序的开发,带来的问题是编程复杂、开发周期长。因此存在一个开发时间和运行性能间的权衡。</P>
    ; L. Y8 Z4 ^: k; c<>(4)可维护性。低级语言如汇编语言,可维护性不高。高级语言程序往往是模块化设计,各个模块之间的接口是固定的。当系统出现问题时,可以很快地将问题定位到某个模块内,并尽快得到解决。另外,模块化设计也便于系统功能的扩充和升级。</P>
    8 d. L$ B6 U; u<>在嵌入式系统开发过程中使用的语言种类很多,比较广泛应用的高级语言有:Ada、C/C++、Modula-2和JAVA等。Ada语言定义严格,易读易懂,有较丰富的库程序支持,目前在国防、航空、航天等相关领域应用比较广泛,未来仍将在这些领域占有重要地位。C语言具有广泛的库程序支持,目前在嵌入式系统中是应用最广泛的编程语言,在将来很长一段时间内仍将在嵌入式系统应用领域占重要地位。C++是一种面向对象的编程语言,目前在嵌入式系统设计也得到了广泛的应用,如GNU C++。Visual C++,是一种集成开发环境,支持可视化编程,广泛应用于GUI程序开发。但C与C++相比,C++的目标代码往往比较庞大和复杂,在嵌入式系统应用中应充分考虑这一因素。Modula-2定义清晰,支持丰富,具有较好的模块化结构,在教学科研方面有较广泛的应用。虽然该语言的开发应用一直比较平缓,但近两年在欧洲有所复苏。Java语言相对年轻,但有很强的跨平台特性,目前发展势头较为强劲。它的"一次编程,到处可用"的特性使得它在很多领域倍受欢迎。随着网络技术和嵌入式技术的不断发展,Java及嵌入式Java的应用也将越来越广泛,但是Java消耗硬件资源较大。</P>% \/ w3 B, y0 y. C  n9 h: l
    <>调试工具应软硬结合
    # j* m' T. E0 t5 f: c4 P3 N/ S因为系统调试特别是远程调试是一个重要的功能,所以对系统调试器的评估主要从这两项功能入手。另外,许多开发系统都提供了大量使用的库函数和模板代码,比如大家比较熟悉的C++编译器就带有标准的模板库,它提供了一套用于定义各种有用的集装、存储、搜寻、排序对象。与选择硬件和操作系统原则相似,除非必要,尽量采用标准的glibc。除此之外, 编译器开发商是否持续升级编译器,以及连接程序是否支持所有的文件格式和符号格式等也都是选择集成开发环境时应该考虑的因素。
    0 S, M$ Y/ o* y, c5 e1 A' d好的软件调试程序可以有效的发现大多数的错误。但是如果再选择一个好的硬件调试就会达到事半功倍的效果。常用的硬件调试工具有以下几种。</P>$ M+ k- B" h; e/ y; P: ?  V; D( j
    <>一种是实时在线仿真器(ICE)。用户从仿真插头向ICE看,ICE应是一个可被控制的MCU。ICE是通过一根短电缆连接到目标系统上的,该电缆的一端有一个插件,插到处理器的插座上,而处理器则插到这个插件上。ICE支持常规的调试操作,如单步运行、断点、反汇编、内存检查、源程序级的调试等等。还有一种硬件调试工具叫逻辑分析仪。逻辑分析仪最常用于硬件调试,但也可用于软件调试。它是一种无源器件,主要用于监视系统总线的事件。而ROM仿真器则是用于插入目标上的ROM插座中的器件,用于仿真ROM芯片。可以将程序下载到ROM仿真器中,然后调试目标上的程序,就好像程序烧结在PROM中一样,从而避免了每次修改程序后直接烧结的麻烦。</P>3 g) b/ B: t4 q# e4 s& Q/ a
    <>另外,在线调试OCD (on-chip debugging)或在线仿真(on-chip emulator)工具也是不错的选择。特别的硅基材料以及定制和CPU管脚的串行连接,在这种特殊的CPU芯片上使用OCD,才能发挥出OCD的特点。用低端适配器就可以把OCD端口和主工作站以及前端调试软件连接起来。从OCD的基本形式看来,它的特点和单一的ROM监测器是一致的,但是不像后者需要专门的程序以及额外的通信端口。(本文作者的E-mail地址为:alanltnew130@163.com )$ w. {) ~$ {0 i# A. k) S3 w
    7 v/ F# u' \4 v* _
    链接</P>
    5 N7 f. H+ B4 L( z1 e3 S<>Linux在嵌入式领域极具潜力</P>; ^9 a4 I$ `' I8 K
    <>按照电气工程师协会(IEE)的一个定义:嵌入式系统是用来控制或监视机器、装置或工厂等的大规模系统的设备。具体说来,它是电脑软件和硬件的综合体,它是以应用为中心,以计算机技术为基础,软硬件可裁减,从而能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。嵌入式系统是“执行专用功能并被内部计算机控制的设备或者系统”。一般来说,嵌入式系统不能使用通用型计算机,而且运行的是固化的软件,用术语表示就是固件(firmware),终端用户很难或者不可能改变固件。”</P>
    & h& h& X# F% {# b/ D& X<>而Linux已经成为IT界家喻户晓的一个名字,将Linux应用于嵌入式系统的开发有如下一些优点: </P>* E# E) U$ Q- `  g
    <>1)Linux自身具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越在嵌入式系统开发中的仿真工具(ICE)的障碍。</P>) k: @7 x' i' i3 Z  N2 B
    <>2)内核的完全开放,使得可以自己设计和开发出真正的硬实时系统;对于软实时系统,在Linux中也容易得到实现。</P>
    0 _) ~& }  _0 L9 D<P>3)强大的网络支持使得可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。 </P>
    - p) M; N7 p+ g( Y5 x<P>值得一提的是,在Linux之前,第三代的嵌入式系统已经有相当长的一段开发历史。因为信息电器概念的产生,使得一部分厂家决定使用专有嵌入式系统或者一般操作系统来做嵌入式应用的开发,比如使用VxWorks、pSOS或者Microsoft Windows 98/NT/CE等系统。但是,根据一家专门进行嵌入式Linux系统信息发布的网站http://www.linuxdevices.com的调查显示,在Linux出现并且崭露头角之后,有52%的用户决定在未来24个月使用Linux作为嵌入式系统的开发原型,而只有21%的人仍然使用专有操作系统,19%的人仍然使用Windows系列操作系统做嵌入式系统开发。这充分说明了Linux在嵌入式系统开发中具有极大的生命力和潜力。</P>
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    conan005        

    0

    主题

    2

    听众

    52

    积分

    升级  49.47%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-7-24 21:56 , Processed in 0.470752 second(s), 58 queries .

    回顶部