您的位置 首页 嵌入式

Linux和Android体系5大比照 你挑选哪一个

Linux和Android系统5大对比 你选择哪一个-Linux和Android:哪个是你下一个设计的正确选择? 如果你的下一个应用会部署在一个32位或64位处理器和TCP/IP网络的设备上,那么现在正是好机会,因为你已经考虑选择Linux或者Android作为你的嵌入式操作系统。将原有实时操作系统和嵌入式内核相比较,无论是Android还是Linux都是成熟的企业/桌面级操作系统。

假如你的下一个运用会布置在一个32位或64位处理器和TCP/IP网络的设备上,那么现在正是好机会,由于你现已考虑挑选Linux或许Android作为你的嵌入式操作体系。将原有实时操作体系和嵌入式内核相比较,不管是Android仍是Linux都是老练的企业/桌面级操作体系。它们都能运转现成的中间件和打包运用程序,即便是在专门的嵌入式和移动运用环境中。但是,这两个开源的操作体系从软件仓库的底层到顶层的开发、集成和保管办法都不相同,而这些都影响着怎么以及在何处找到最好的布置计划。

本文将会收拾出在挑选小绿机器人或矮胖企鹅时要考虑的决定因素。特别地,本文重视的是为安在不同的运用场景下需求不同的开发办法,为何是运用这个操作体系而不是另一个,为何有些运用程序只需运用一个操作体系,而有时分却一同需求这两个操作体系。

接下来的内容部分代表了一个经典的“思维运动”,但实际上这个评论源于一系列环绕以能源办理,IVI(汽车信息文娱体系),网络和智能显现设备为条件的项目方针的对话和产品规划的争辩。

Linux和Android体系5大比照 你挑选哪一个

Linux和Android体系5大比照 你挑选哪一个

敞开盒子仍是关闭盒子?

绝大多数的原有嵌入式体系都是十分关闭的实体。即便选中的实时操作体系支撑规范的API(典型的如POSIX线程和/或BSDlite 网络的子集),为那些嵌入式渠道精心定制或保管在那些渠道上的运用程序也还都是高度定制的。它们也依然是仅有的在整个生命周期中运转在那些体系的软件。相比之下,那些布置在智能手机、平板电脑和其他越来越多的现代智能设备上的软件现已更像桌面**务器体系软件了。由于有了越来越多的现代设备,原始设备制造商、运营商和终端用户现已能够在设备的整个运用过程中装置新运用程序包了。固件和体系软件也已能在不依托特别的作业台软件或工厂式RMA(翻修)程序的状况下完结晋级。

在发明一个智能手机操作体系时,Google将Android定位为一个敞开的、现场可晋级的运用程序渠道,这个移动操作体系的中心思维是随时能够运转运用程序包。因而,为了创立,出售和布置打包运用程序,环绕着Android渠道生态环境的优化首先是经过Google Play运用商铺进行的。

嵌入式Linux体系也存在着和Android运用程序渠道相同的状况,但从实践的视点来看,它更适合一次性布置在关闭盒运用中。的确如此,Linux上的编程存在着更多被认可的编程办法,比方C,C++,Java,Ruby,Python,Lua等等,但却不存在一个为构建、发布和装置运用程序的单一模型,也不存在一个跟Android相同的支撑(假如不确定)互操作性的硬件笼统模型。相反,存在着多种特定的办法(如包办理,apt-get等办法)和作业在不同内核体系架构树(Kernel Tree)中的一般/最佳实践。

由于这些务实的原因,Linux有点更适合于关闭或半关闭的嵌入式运用程序。假如不需求广泛的互操作性,也不必考虑是否会损坏API和打包运用程序,原始设备制造商(OEM)就能够从束缚中摆脱;这还能让他们从为设备的硬件和软件需求专门做定制和适配Linux的作业中摆脱。若当一个生态体系环绕单一设备演化(就好像发生在Raspberry Pi和Python上),Linux的比如总能打破关闭盒子战略,就好像运用了Dalvik虚拟机和亲睐于Java的Android相同。

有一点需求留意,不要把敞开盒子和关闭盒子的问题与开源和不开源的问题混杂。Linux内核和GNU/Linux操作体系远比Android更开源。维护和晋级Linux的社区是实在的精英办理的社区,它对各种来历的资源都敞开。相比之下,Android是Google和它的尖端合作伙伴OHA能够指挥若定和掌控渠道开展路线图的私家沙龙,它只接受了外界安排的最小输入。

你是想预算仍是省点钱?

和敞开/闭合盒子有关的问题是资源丰厚与否的问题。有一个极点资源缺乏的比如是说只需一个网络接口的大块头的设备,而一个极点资源丰厚的规划则需求一个显现器、键盘、定点设备或触摸屏,一个强健的内存和存储器部件等。世界上最实在的规划则是介于这两者之间。

鉴于其智能手机的遗产,Android适用于具有丰厚接口的消费电子类运用程序。在盒子之外,Android协议栈支撑手持和平板类型的装备,而且它正越来越多地被布置在DTV,机顶盒,IVI体系和其他用户界面密集型体系上。因而,没有多少令人信服的理由去压服人们在无外设的体系上运用Android体系。

相反,Linux能够支撑的硬件装备和外围设备规模十分广泛而且丰厚,它还能够根据需求被裁减为一个只具有内存、存储器等的极度精简的体系。若没有几百MB乃至GB的DRAM或更多的Flash空间(关于操作体系和运用程序),是无法将Android布置在这样的体系之上的,但你或许只需求几十MB的存储空间就能布置一个简约型嵌入式Linux体系(天啊,我从未想到过我会以为Linux是那么的小!)。在为精简硬件装备挑选体系时,另一个不投票给Android的原因是Android是CPU/GPU密集型的体系。

所以,假如你的规划是想经过布置一个低端CPU,不运用GPU,而且最小化内存和存储器来到达降低成本的意图,那么Linux是一个更适宜的挑选。假如你有许多钱拿来“烧” — 这些年,硅的价格只需几美元了,但显现器和输入硬件则很或许是需求几万美元的,那么这时分Android会更适合你。

本地显现仍是自带设备(BYO)?

在上个月的RTC杂志上,我写了一篇为无外设体系挑选可用设备作为显现服务器的文章。在文中我强调了本地无外设体系规划是怎么运用在邻近或长途的根据浏览器显现设备的,包含智能手机、数字电视等。在Android和Linux中挑选其一的条件下,需求一个本地的仍是长途的显现器是另一个决定因素。若你的设备需求一个近距离的身体上触摸的显现,那么具有一个集成用户接口(UI)的Android是一个不错的挑选。但假如用户主要是想在远处经过浏览器或专用的智能手机和平板电脑运用程序来与设备交互,那么你能够经过支撑运用嵌入式Linux来保管Apache服务或几个小Web服务器**务器端的编程典范(PHP,Python,C等)到达省掉Android体系的开支的意图。

当然,你能够根据需求一同装备Android和Linux来支撑本地显现、网络接口或移动运用程序。两个操作体系都支撑丰厚的用户接口,而且都很简单被布置为Web服务器。但现成的Android运用程序只能运转和显现在一个Android原生显现设备上,而运用GTK+或Qt创立的Linux原生运用则要求一个本地显现器或一个可用的长途X服务器。

挑选Java或C/C++,仍是LAMP?

一个半技术性的观点是Android或Linux是了解的编程言语和结构。假如你的团队现已在一些其他环境中创立了Java运用程序,那么你很或许会期望能够运用这个专业知识去发明其他设备上的运用程序(乃至是无外设的设备)。但假如你的开发人员更了解C/C++,Lua,GTK+和QT相似的UI结构及很多的其他编程范式,那么强烈建议你挑选Linux和/或LAMP(Linux,Apache httpd,MySQL和PHP/Perl/Python)。

这个观点并非是很清晰的,还要和在座的其他人一同评论。你也能够运用Android/Linux本地编程接口来创立你的嵌入式运用程序,但你或许会打破Android运用程序的互操作性和封装,而且不再具有一个敞开盒子。还请记住,在挑选某种言语和结构的一同往往还要考虑是本地显现仍是长途显现。别的,或许更解放性的思维是当今开发人员知晓多种言语,这样不管在Android仍是在Linux上运用Java,C++或Web编程言语都会感到相同舒适。

考虑答应证

一套非技术但是杂乱的以答应体制为中心的挑选规范环绕着Linux和Android以及写给这两个操作体系的运用程序和扩展打开。许多原生设备制造商之所以选用Android是由于这个移动操作体系的自在答应条款:实际上Apache 2.0关于Android中间件及其运用程序的组件仅仅在底层Linux等级的通用公共答应证(GNU GPL)部分对原生设备制造商有发表材料的要求。Android中的尖端Apache答应证总是注明“OEM friendly”,是由于设备制造商修正了Android仓库的大部分,并运用了在Apache和任何其他OSS答应证(表1)下都不需求发表修正和分发他们自己的代码的硬件笼统层(HAL)来添加了外围设备接口。实际状况略微有些杂乱,这在Black Duck的文章“Android-Opportunity,Complexity and Abundance”中有论说。

Linux和Android体系5大比照 你挑选哪一个

表格1 各种Android和Linux仓库层的答应

这不是一个对立Linux的比如—它仅仅很或许完美地在一台运转着Linux的设备上阻隔和维护专有代码。但是,修正和添加到嵌入式Linux仓库上的每一种类型都需求考虑它自己的实际状况(见表1)。特别地,一些原生设备制造商不喜欢直接在任何GNU答应证(GPLv2/v3,LGPL等)下作业,这就导致他们挑选了Android,而非Linux。当然,他们依然需求布置Linux内核,但运转其上的Android库和中间件仅仅将它作为一个“缓冲器”。一般做到这样就能够感到很舒适了。

在这里,咱们的意图仅仅为各种类型的智能设备供给挑选Android或Linux的一般辅导办法。关于笔直运用程序(手机、医学设备、运输工具等)而言,这种分类自身并不想列出一切的办法,而是想供给开发典范依靠的挑选规范,或许供给考虑设备商场和布置生命周期的途径。

表2总结了本文表述的观点。它强调了挑选不是肯定的:由于Android包含了一个Linux内核实例,Android体系理论上能够保管和运转和Linux相同的软件。Linux相同由于能保管和运转Java,以及一系列的用户接口(UI)结构,它也能被布置在有本地显现器的设备中,即便在和Android有密切关系的手机、平板电脑和其他设备上。

Linux和Android体系5大比照 你挑选哪一个

表2 总结了Android和Linux特色的观点

所以,去运用Android或Linux或一同运用这两个操作体系吧。但需求先考虑以下问题:

在你的设备的整个寿射中,体系软件和运用程序是怎么布置的?

你想将你的预算中的大部分花在哪些地方上?

设备主要有哪些用户交互形式?

你的开发人员有哪些编程嗜好?

你挑选的渠道和答应证对你公司的知识产权(IP)组合有怎么样的影响?

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/102765.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部