Chinaunix首页 | 论坛 | 博客
  • 博客访问: 56591
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 123
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-30 17:10
个人简介

半路出家者.学习蜗牛,向着嵌入式软件开发的金字塔顶一步步迈进!

文章分类

全部博文(11)

文章存档

2017年(1)

2016年(3)

2015年(1)

2014年(6)

我的朋友

分类: Android平台

2017-06-15 14:17:57

本文尝试从全局的角度来分析Android和嵌入式linux,重点在安全性和稳定性这个角度。行文思路如下:首先对原生的Android系统和GNU/linux系统架构做简要分析,其次对比移动终端应用方案对原生Android或GNU/LINUX进行定制裁剪,再次通过大数据分析两者的应用领域,最后得出结论。

一.原生android系统的架构图和简要分析

上图为Android系统架构图,接下来从底层向上逐层分析

1.    linux kernel

这部分直接用的linux kernel,在某些方面做一定的修改,Linux内核的安全性和稳定性是有保障的。

2.    HAL

这层在Android的经典架构图(附注1)上是没有的,是Google为了逃避GPL协议,同时为了迎合硬件厂商而做的。本质上是对linux kernel的重要组成——设备驱动的一个封装。这样既利用了linux kernel现成的驱动框架,又隐藏了一些实现的细节,这部分一般是不会公开源码的。这一层对一些大的sensor厂商来说,安全性和稳定性也是有保障的。

3.    Libraries & Runtime

该层的作用:对应用程序框架的支撑,为Android系统中各个组件提供服务。主要包括两部分:

3.1系统类库(C/C++编写),对GNU一些系统库的继承和封装,在嵌入式开发中,这部分要用到

3.2 Runtime 这部分是整个android最核心最特色的部分。又可以分成2部分:

3.2.1核心库:提供系统级API

3.2.2 Dalvik/ART虚拟机:Dalvik虚拟机主要是Google自己开发的,一直以来被职责为拖慢Android系统运行速度的根源,2014年已经被Google删除,代替他的是ART.

总的来说,这一层的两大部分都是Google工程师开发的,安全性和稳定性相对来说也是值得相信的,在android4.4之前,卡顿的毛病比较严重,和这一层脱不了干系。这一层也是android版本更新时重点优化的对象。

4.    API Framework

这部分提供开发Android APP程序所需的一系列类库,使开发人员可以进行快速的应用程序开发。这部分是Google工程师开发的,也是原生android系统版本迭代时重点优化的对象

5.    APP

广大Android开发人员开发的APP程序。

小结:以上是原生Android系统的架构分析。虽然在LibrariesRuntime 层,API Framework 层依然存在稳定性和安全性的问题,但Google一直也在优化,到最新发布的Android 8.0系统,宣称又解决了一系列问题。另一个不安全的因素是Android系统的使用者随意进入root权限,操作不当引起的。

二.      GNU/LINUX(标准linux发行版)的系统架构图和简要分析

GNU/LINUX的架构可分为两层:

1.    kernel

该层就是标准的linux kernel

2.    user space

这一层其实可以再分成2层:

2.1         file system(包含图中的 C library) .该层在功能上对应于Android系统架构中第三层,不过机制上要更简单(没有AndroidDalvik/ART虚拟机)

2.2         user applications .相当于Android的第5

小结:GNU/LINUX的架构更简单,更清晰。在安全性和稳定性上要更好,但因为缺少像Android那样API Framework的支持,应用程序开发者相对要做更多的事情。

三.      移动终端方案厂商对原生android的深度定制

因为手机厂商可以可以利用原生Android做各种修改,所以实际上发生问题最大的可能性在这一环节,这个也是考验手机厂商能力的一个环节。所以一些小的手机方案厂商不让人放心

 

四.      嵌入式linuxGNU/LINUX的裁剪

这个过程主要就是bootloader 的移植,linux kernel的裁剪和移植工作,根文件系统的制作。linux kernel的裁剪和移植是有难度的,不过因为裁剪不是对源码的裁剪,而是对整个内核模块的选择性编译,普通开发者也是可以做的。当然要做到“恰到好处”也是非常难的。

 

五.      大数据下android和嵌入式linux的应用领域

Android应用领域:

智能家庭终端设备、智能家居监控系统、网关设计和家用安防系统[7-10];有做工业方面的应用,如煤矿安全系统、桥梁监测终端、电动汽车车载信息显示终端、转载娱乐系统、汽车电子和烟尘浓度监测软件等等[11-17];有做理财应用的,主要涉及内容有手机理财软件、POS支付终端、商品比价系统等等[18-20];有做视频类服务的,如视频会议、无线视频监控、巡视终端等等[21-28];有做医疗领域的系统的,有医院的查房管理系统、移动健康医疗、中医方药系统等等[29-31];有做旅游行业的应用,如城市导游系统,校园地图服务,智能导游等等[32-34];有做教育行业的软件系统的,如选课系统、移动学习软件、移动图书馆等等[35-40];有做移动电子办公系统,如移动电子警务、移动电子政务等等[41, 42];有做信息管理系统的,如学生公寓管理系统、实验室管理系统、小型库存管理系统、校园一卡通系统、小型店铺管理软件等等[43-47];有提供基于地理位置定位的服务的,如室内LBS和移动平台GPS等等[48, 49]有和嵌入式电子支付刷卡系统相结合的应用,如NFC技术和Android的结合应用[50];各种商用小软件,如电子词典、数独游戏、日程管理、股票、阅读器、天气查询、火车时刻查询等等[51-64];有农业方面的应用,如小麦生产风险信息采集系统和农业新品种推广信息采集系统等等[65, 66];有影音娱乐方面的应用,如影音播放器、多媒体应用开发、家庭体感娱乐平台[67-69]等等

 

 

Linux主要应用领域:

有工业控制领域的应用,如数控机床、铣床数字控制、电火花加工控制、轨道交通系统、数字运动控制系统等等[70-84];有工业现场数据实时采集应用[85-89];有机器人制造和控制[90-93];有工业级别的嵌入式设备制造[94-96];有工业现场系统设计[97-100]等等。

备注:主要引自万方数据库

六.      结论

通过前面的分析,可以看出虽然Android是基于linux kernel,但是两者的区别还是蛮大的,应用场合的区别很鲜明。如果要做工业级别的系统,毫无疑问选择linuxLinux经过近30年的发展,经过全球顶级开发者的优化和维护,在安全性和稳定性方面还是有保障的,也因此,linux在企业级服务器市场占据统治地位,缺点是开发难度相对要大。

 

附注1

 Android官方架构图:

 





阅读(1716) | 评论(0) | 转发(0) |
0

上一篇:linux 驱动的一般学习方法

下一篇:没有了

给主人留下些什么吧!~~