关于嵌入式设备使用Android或者Linux 的一些讨论
曾几何时 “嵌入式 Linux” 这个词被以怀疑的眼光看待。这个小型、低功耗、基于 Linux 并且具备软件开源能力的设备,如今已经发展成了一个产业;现在不是问“为什么选择 Linux 而是“为什么不选择 Linux”?
随着嵌入式设备的性能和图形处理能力日益增强,以及支持图形化界面的触摸设备在众多领域扎根,从小型控制面板到大型娱乐设备,Android,曾经被当做纯粹的消费级 OS,现在正在吸引越来越多的注意。
在本博文中,Toradex 的长期合作伙伴以及为用户和 Toradex 模块的 Android 软件和产品研发服务提供商,将会阐述两个操作系统的异同。
这么多年来,我们已经开发过许多软件解决方案和完整的产品,无论是行业的还是消费类,运行 Linux 或者 Android,我们始终相信没有永远对的准则,哪一种操作系统更适合你的应用这取决于应用本身以及您设备的预计生命周期。
TAQ (Toradex, Antmicro, Qt) 自平衡机器人:异构架构,Antmicro 在 Toradex Colibri i.MX7 模块上用 Linux 开发
对于绝大多数嵌入式应用,Linux 是正确的选择。Linux 编译系统,例如 Buildroot 和 OpenEmbedded,能够创建定制化的 BSP,裁剪到任意的大小,并且提供丰富的应用和 SDK,从 gstreamer、Python 到 node.js 等。基于 OpenEmbedded/Yocto 的 Linux 是 Toradex 支持的默认发行版本,开发社区还提供多种开发语言环境和框架。现在的 GUI 可以使用 Qt、HTML5 来开发,以至于有点难于选择。当你在编译支持必要的软件组件、更新方式和 API 的基本操作系统镜像的时候,你可以有大量的选择,当然,这个任务你也可以借助服务提供商例如 Antmicro,并且在必要的时候,你也能够在中途改变你的想法。
Android 则是为了符合标准,放弃了部分操作系统级别的自由:为了获得这种操作系统带来的好处,需要采用一套 Android 的方法来行事。于是,你可以得到统一的 GUI、J**a 编程规范和熟悉的开发体验(Android 智能手机/消费设备所带来的结果)。这个在你的应用中将是至关重要的,特别是你的设备中带有触摸屏,并且设计为给许多人使用。
例如,你已经拥有一个现成的智能手机/平板应用,您的用户也习惯了这个应用 - 无论这是一个智能家居控制中心还是便携式行业测量设备 - 您计划开发一个专门的设备来替代或者完善它们,Android 将是一个很好的选择。无需重新从底层构建你的用户界面,您可以节省大量的工作和用户调查来优化 UI,用户主要关心他们所见到的和交互的。您需要一个行业级 Android 镜像(例如单应用锁定、定制的品牌以及外设接口的抽象)来实现,但是相对于在 Linux 重新构建用户体验,这或许是更小的开支。
即使你没有现成的应用,你也或许有自己的 Android 应用开发团队(或者十分了解 Android 应用开发)他们可以为您开发 UI。借助于更加广泛的应用开发社区、大量的案例应用、标准化应用封包和模拟器,在 Android 中开发终端应用是相对容易的。由于标准的 API 可以清晰的分离 OS 和应用层(在 Android 中你可以使用不同的的 API 级别来表示兼容性),这意味着你能够重复利用现有的移动端应用,或者组建独立的团队,一个负责针对目标用户测试和调整 UI,而嵌入式团队则确保您需要的功能在 Android 得到支持。
选择 Android,特别是包括大量、各种用户群体的应用场景,将是很好的案例。这不仅包括典型的消费设备如可穿戴设备或者智能家居 IoT,也有大量行业专业人员使用的企业设备 - 从助理设备到现场网络设施。即使不论了应用开发体验,熟悉的用户界面、手势和交互,Android 也更胜 Linux。
正如上面提到的,Android - 尽管是基于 Linux 内核 - 由于其独特的方式,包括相对复杂的编译系统(和其巨大的 codebase 有关),以及需要在 OS 层导出你内核的插件才能使其在应用中工作。在硬件方面也有更多的要求,由于 Android 需要图形加速和虚拟机使用的内存,你基本无法在内存小于 512 MB 或者没有 GPU 的设备上运行新的 Android 版
- Android开发技巧:软硬件的巧妙整合(01-16)
- 基于Android的VoIP系统的设计与实现(03-28)
- 基于Android系统的影音播放器开发(03-25)
- Android的阿喀琉斯之踵(07-08)
- Android开发之“hello World”的实现 (07-23)
- 基于Android平台的即时通信系统客户端设计(09-24)