您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

Linux嵌入式体系开辟平台选型探究

发布日期:2011-04-15

 择要:利用Linux举行嵌入式产品开辟有一个很大的上风,便是开辟资源丰富,且资源低廉;但是,技能蹊径巨大多样,专业人才相对匮乏是Linux嵌入式体系开辟面对的一个困难。本文从实际应用的角度,探究和研究Linux嵌入式体系开辟中的平台选型标题,以渴望对各位Linux开辟研究者有些许裨益。

关键词:嵌入式体系 Linux开辟平台 选型

1 嵌入式体系与Linux

根据电气工程师协会的一个定义:嵌入式体系是用来控制或监督呆板、装置或工厂等的大范畴体系的配置。细致说来,它是谋略机软件和硬件的综合体;因此应用为中间,以谋略机技能为底子,软硬件可淘汰,从而可以大概适应实际应用中对结果、可靠性、资源、体积、功耗等严格恳求的专用谋略机体系。一样通常来说,嵌入式体系不克不及利用通用型谋略机,并且运行的是固化的软件,终端用户很难大概不大概变革固件。而Linux也早已成为IT界家喻户晓的一个名字。概括说来,将Linux应用于嵌入式体系的开辟有如下一些长处:

① Linux自身具备一整套东西链,容易自行创建嵌入式体系的开辟环境和交错运行环境,并且可以高出在嵌入式体系开辟中仿真东西(ICE)的停滞。

② 内核的完全开放,使得可以本身筹划和开辟出真正的硬及时体系;敷衍软及时体系,在Linux中也容易得到实现。

③ 强大的网络支持,使得可以利用Linux的网络协议栈将其开辟成为嵌入式的TCP/IP网络协议栈。

2 嵌入式体系筹划的进程

根据嵌入式体系的工程筹划要领,嵌入式体系的筹划可以分成三个阶段:阐发、筹划和实现。阐发阶段是确定要办理的标题及须要完成的目标,也通常被称为“需求阶段”;筹划阶段紧张是办理如安在给定的束缚条件下完成用户的恳求;实现阶段紧张是办理如安在所选择的硬件和软件的底子上举行整个软、硬件体系的调和实现。在阐发阶段结束后,通常开辟者面对的一个棘手的标题便是硬件平台和软件平台的选择,由于它的优劣直接影响着实现阶段的任务完成。

通常硬件和软件的选择包括:处理惩罚处罚器、硬件部件、利用体系、编程语言、软件开辟东西、硬件调试东西、软件组件等。

在上述选择中,通常,处理惩罚处罚器是最告急的,同时利用体系和编程语言也好坏常关键的。处理惩罚处罚器的选择通常同时会限定利用体系的选择,利用体系的选择又会限定开辟东西的选择。

3 硬件平台的选择

3.1 处理惩罚处罚器的选择

嵌入式体系的内核部件是种种典范的嵌入式处理惩罚处罚器。据不完全统计,如今全天下嵌入式处理惩罚处罚器的品种总量已经超过跨过1000多种,盛行体系布局有30几个系列。但与环球PC市场差别的是,没有一种微处理惩罚处罚器和微处理惩罚处罚器公司可以主导嵌入式体系,仅以32位的CPU而言,就有100种以上嵌入衰落处理惩罚处罚器。由于嵌入式体系筹划的差别性极大,因此选择是多样化的。

观察上市的CPU提供商,有些公司如Motorola、Intel、AMD很着名气,而有一些小的公司,如QED(Santa Clara.CA)固然名气很小,但也生产很精良的微处理惩罚处罚器。别的,有一些公司,如ARM、MIPS等,只筹划但并不生产CPU,他们把生产权付与天下各地的半导体制造商。ARM是比年来在嵌入式体系有影响力的微处理惩罚处罚器制造商,ARM的筹划非常实用于小的电源供电体系。Apple在Newton手持谋略机中利用ARM,别的有几款数字无线德律风也在利用ARM。

筹划者在选择处理惩罚处罚器时要思量的紧张因素有:

① 处理惩罚处罚性能。一个处理惩罚处罚器的性能取决于多个方面的因素,如时钟频率,内部寄存器的大小,指令是否对等处理惩罚处罚全部的寄存器等。敷衍很多需用处理惩罚处罚器的嵌入式体系筹划来说,目标不是在于挑选速率最快的处理惩罚处罚器,而是在于选取可以大概完成作业的处理惩罚处罚器和I/O子体系。要是是面向高性能的应用筹划,那么提倡思量某些新的处理惩罚处罚器,其价格相对低廉,如IBM和Motorola Power PC。

② 技能指标。当前,很多嵌入式处理惩罚处罚器都集成了外围配置的结果,淘汰了芯片的数量,低沉了整个别系的开辟用度。开辟职员起首思量的是,体系所恳求的一些硬件可否无需过多的胶合逻辑(GL,Glue Logic)就可以连接到处理惩罚处罚器上。其次是思量该处理惩罚处罚器的一些支持芯片,如DMA控制器,内存办理器,克制控制器,串行配置、时钟等的配套。

③ 功耗。嵌入衰落处理惩罚处罚器最大并且增长最快的市场是手持配置、电子记事本、PDA、手机、GPS导航器、智能家电等斲丧类电子产品。这些产品中选购的微处理惩罚处罚器,典范的特点是恳求高性能、低功耗。很多CPU生产厂家已经进入了这个范畴。即日,用户可以买到一颗嵌入式的微处理惩罚处罚器,其速率像条记本中的Pentium一样快;而它仅利用平常电池供电即可,并且价格很自制。要是用于财产控制,则对这方面的思量较弱。

④ 软件支持东西。仅有一个处理惩罚处罚器,没有较好的软件开辟东西的支持也是不可的,因此选择切合的软件开辟东西对体系的实现会起到很好的作用。

⑤ 是否内置调试东西。处理惩罚处罚器要是内置调试东西可以大大缩小调试周期,低沉调试的难度。

⑥ 提供商是否提供评估板。很多处理惩罚处罚器提供商可以提供评估板来验证理论是否正确,决定筹划是否得当。

3.2 硬件部件选择的别的因素

① 生产范畴。操持做1套?多套?还是范畴生产?要是生产范畴比较大,可以本身筹划和制备硬件,如许可以低沉资源。反之,最好从第三方购买主板和I/O板卡。

② 开辟的市场目标。要是想使产品尽快发售,以得到竞争力,此时要尽大概买成熟的硬件;反之,可以本身筹划硬件,低沉资源。

③ 软件对硬件的依赖性。软件是否可以在硬件没有到位的时间并行筹划或先行开辟。

④ 只要大概,只管即便选择利用平常的硬件。在 CPU 及架构的选择上,一个原则是:只要有可调换的方案,只管即便不要选择 Linux 尚不支持的硬件平台。

4 软件平台的选择

图1所示的嵌入式软件的开辟流程,紧张涉及到代码编程、交错编译、交错连接、下载到目标板和调试等几个步调,因此软件平台的选择也涉及到以下几个方面。

4.1 利用体系的选择

(1)利用体系选择应思量的因素

硬件方案确定之后,利用体系的选择就相对轻松了。硬件的差别,会影响利用体系的选择。低端无MMU(Memory Management Unit,存储器办理单位)的CPU,要利用uClinux 利用体系;而相对高真个硬件,则可以用平常的嵌入式 Linux 利用体系。uClinux 寂静凡的 Linux 有各自的上风和缺点。可用于嵌入式体系软件开辟的利用体系很多,但关键是怎样选择一个得当开辟项目标利用体系。颠末多年的开辟实践,笔者以为应该从以下几点举行思量:

① 利用体系提供的开辟东西。有些及时利用体系(RTOS)只支持该体系提供商的开辟东西,因此,还必须向利用体系提供商获取编译器、调试器等;而有些利用体系利用广泛,且有第三方东西可用,因此,选择的余地比较大。

② 利用体系向硬件接口移植的难度。利用体系到硬件的移植是一个告急的标题,是干系到整个别系可否定期竣工的一个关键因素。因此,要选择那些可移植性程度高的利用体系,克制利用体系难以向硬件移植而带来的种种困难,加快体系的开辟进度。

③ 利用体系的内存恳求。均衡思量是否须要分外费钱去购买RAM或EEPROM来迎合利用体系对内存的较大概求。

④ 开辟职员是否熟习此利用体系及其提供的API。

⑤ 利用体系是否提供硬件的驱动步调,如网卡等。

⑥ 利用体系的可剪裁性。有些利用体系具有较强的可剪裁性,如嵌入式Linux、Tornado/VxWorks等等。

⑦ 利用体系的及时性能。

(2)几类嵌入式Linux体系的比较

嵌入式Linux体系方面的产品紧张分为三类:

第一类是专门为Linux的嵌入式应用而做的。怎样让Linux更小、更容易嵌入到体积恳求和结果、性能恳求更高的硬件中去,是他们的产品开辟方向,如MontaVista的MontaVista Linux等。第二类是专门为Linux的及时特性筹划的产品。将Linux开辟成及时体系尤其是硬及时体系,应用于一些关键的控制场合(不但仅是信息电器)。如,Fsmlabs公司开辟出来的RT-Linux产品已经用在财产控制的很多方面;葡萄牙的Coimbra大学已经利用RT-Linux实现了化工生产控制厂里用来控制应声和步调控制的体系。第三类的产品是将及时性和嵌入式方案连合起来的方案。很多公司都这么做,并且提供集成化的开辟方案,如Lineo、TimeSys等等。

因此选择利用体系时,要根据本身的嵌入式恳求和及时性恳求,选择得当本身的嵌入式Linux;同时,和选择硬件的原则一样,要是大概,只管即便选择利用平常的嵌入式 Linux 体系。

4.2 编程语言的选择

编程语言的选择紧张思量以下因素:

① 通用性。差别种类的微处理惩罚处罚器都有本身专用的汇编语言。这就为体系开辟者设置了一个巨大的停滞,使得体系编程越发困难,软件重用无法实现。而高级语言一样通常和细致呆板的硬件布局讨论较少,多数微处理惩罚处罚器都有精良的支持,通用性较好。

② 可移植性程度。汇编语言和细致的微处理惩罚处罚器密切干系,为某个微处理惩罚处罚器筹划的步调不克不及直接移植到另一个差别种类的微处理惩罚处罚器上利用,移植性差;而高级语言对全部微处理惩罚处罚器都是通用的,步调可以在差别的微处理惩罚处罚器上运行,可移植性较好。

③ 实行屈从。一样通常来说,越是高级的语言,其编译器和开销就越大,应用步调也就越大、越慢;但单纯拜托低级语言,如汇编语言来举行应用步调的开辟,带来的标题是编程巨大、开辟周期长。因此,存在一个开辟时间和运行性能间的衡量标题。

④ 可维护性。低级语言如汇编语言,可维护性不高。高级语言步调通常是模块化筹划,各个模块之间的接口是牢固的。当体系出现标题时,可以很快地将标题定位到某个模块内,并尽快得到办理。别的,模块化筹划也便于体系结果的扩充和升级。

几种开辟语言的比较:

在嵌入式体系开辟进程中利用的语言种类很多,比较广泛应用的高级语言有:Ada、C/C++、Modula-2和Java等。Ada语言定义严格,易读易懂,有较丰富的库步调支持,如今在国防、航空、航天等干系范畴应用比较广泛,将来仍将在这些范畴占据告急职位地方。C语言具有广泛的库步调支持,如今在嵌入式体系中是应用最广泛的编程语言,在将来很长一段时间内仍将在嵌入式体系应用范畴占告急职位地方。C++是一种面向东西的编程语言,如今在嵌入式体系筹划中也得到了广泛的应用,如GNU C++。Visual C++,是一种集成开辟环境,支持可视化编程,广泛应用于GUI步调开辟。但C与C++相比,C++的目标代码通常比较巨大和巨大,在嵌入式体系应用中应充分思量这一因素。Modula-2定义明白,支持丰富,具有较好的模块化布局,在讲授科研方面有较广泛的应用。固然该语言的开辟应用不绝比较平缓,但近两年在欧洲有所复苏。Java语言相对年轻,但有很强的跨平台特性,云云生长势头较为强劲。Java语言的“一次编程,到处可用”的特性,使得它在很多范畴备受欢迎。随着网络技能和嵌入式技能的不绝生长,Java及嵌入式Java的应用也将越来越广泛,但是Java斲丧硬件资源较大。

4.3 集成开辟环境思量的因素

集成开辟环境IDE(Integrated Development Environment)应思量以下因素:

① 体系调试器的结果。体系调试分外是长途调试是一个告急的结果。

② 支持库函数。很多开辟体系提供大量利用的库函数和模板代码,如大家比较熟习的C++编译器就带有标准的模板库。它提供了一应用于定义种种有效的集装、存储、征采、排序东西。与选择硬件和利用体系的原则一样:除非须要,只管即便采取标准的 glibc。

③ 编译器开辟商是否连续升级编译器。

④ 连接步调是否支持全部的文件格局和标记格局。

4.4 硬件调试东西的选择

好的软件调试步调可以有效地发明大多数的错误,但是要是再选择一个好的硬件调试就会到达事半功倍的结果。常用的硬件调试东西有以下几种:

① 及时在线仿真器(ICE,In-Circuit Emulator)。用户从仿真插头向ICE看,ICE应是一个可被控制的MCU。ICE是通过一根短电缆连接到目标体系上的。该电缆的一端有一个插件,插到处理惩罚处罚器的插座上,而处理惩罚处罚器则插到这个插件上。ICE支持惯例的调试利用,如单步运行、断点、反汇编、内存查抄、源步调级的调试等等。

② 逻辑阐发仪。逻辑阐发仪最常用于硬件调试,但也可用于软件调试。它是一种无源器件,紧张用于监督体系总线的变乱.

③ ROM仿真器。ROM仿真器用于插入目标上的ROM插座中的器件,用于仿真ROM芯片。可以将步调下载到ROM仿真器中,然后调试目标上的步调,就宛如步调烧结在PROM中一样,从而克制了每次修改步调后直接烧结的贫苦。

④ 在线调试OCD或在线仿真(on-chip emulator)

分外的硅基质料以及定制和CPU引脚的串行连接,在这种分外的CPU芯片上利用OCD (On-Chip Debugging),才华发挥出OCD的特点。用低端适配器就可以把OCD端口和主变乱站以及前端调试软件连接起来。从OCD的底子情势看来,它的特点和单一的ROM监测器是划一的,但是不像后者那样,须要专门的步调以及分外的通讯端口。

4.5 软件组件的选择

有些软件组件是免费的,有些软件组件是授权的。授权软件组件的用度一样通常都很高,但多数颠末严格的测试,可靠性高,调试时间短。如今也有一些免费的自由软件组件,它们的性能、可靠性也很好。因此开辟职员在选择的时间要加以衡量,确定哪种方案更好。

5 展 望

外洋的开辟已经汹涌澎拜,海内的开辟也不甘示弱。Linux在嵌入式体系中具有强大的生命力和利用价格,很多公司和大学都差别程度地表现出对这个方面的兴趣。有来由信托,嵌入式Linux的生长将领导我们进入嵌入式体系的新时期!