嵌入式设备开发:Linux vs Android
发表于 2022-05-25 09:40:09

本文提及的 Qualcomm 产品由 Qualcomm Technologies, Inc./或其子公司提供。

作为一名嵌入式开发者,生活里从来就没有过无聊的时刻。他们往往要使用架构迥异的操作系统,为具有各种软件栈的不同类型平台进行开发。

如果您浏览过Qualcomm.comQualcomm开发者网络,可能会注意到,我们的很多解决方案都支持 Android Linux,甚至两个都支持。由于这两种操作系统在今天的嵌入式设备开发中十分普遍,因此,有必要了解一下各自的优势及最佳使用场景。下面我们来详细讨论一下。

Linux 一种跨越多代设备,具有较长历史的操作系统

Linux最早于1991年发布,是从 Unix 演变而来的开源操作系统。最初是为个人电脑开发的,后来逐渐进入了许多不同的平台。其底层架构基本上是模块化和可定制的,开发者可以根据自己的需求定制操作系统。比如,如果在无显示器设备上运行操作系统,减少内存和处理需求,则可以移除 GUI 子系统。因此,Linux很早就在各种嵌入式设备上可靠运行——从游戏机和电视到移动路由器和工业自动化。

下图是Linux堆栈简化图

简化的Linux堆栈

内核空间是操作系统的核心,而用户空间则托管开发者构建的应用程序。内存有限的低功耗设备(例如小型专有物联网设备)运行 Linux 也能实现较高的性能(经过适当定制后)。这使得 Linux 很适合用于资源受限的嵌入式设备,可以利用有限的处理能力及外围设备

经过多年的发展,出现了各种不同版本的 Linux 和发行版,包括一些为嵌入式系统量身定制的版本,以及配备定制软件栈的其他版本。例如,LAMPLinuxApacheMySQLPHP/Perl/Python)栈包含用于带有数据库后端的Web服务器组件。一个网站:DistroWatch.com提供有关公开发行版的新闻和资料。

Linux 开发者可供选择的语言很多——从低级语言(如C/C++)到高级语言(如Java Python)。过去,C语言因为用于实现操作系统,因此一直较为流行。得益于开源,开发者不会受发布版本路线图(如Android)的束缚,更容易地将操作系统的更改、修复和定制推送到更广泛的开发者社区,同时自己也受益于其他开发者的贡献。

我们有几款SoC支持Linux,包括Qualcomm机器人RB3开发工具包Qualcomm机器人RB5开发工具包骁龙660入门工具包。在软件方面,我们推出的部分SDK提供 Linux 运行时支持,如Qualcomm神经处理SDK和开源Gstreamer 插件(请参阅CodeAurora上的存储库)。其他工具,如我们的Qualcomm Hexagon DSP SDK骁龙 Profiler,包括可以在Linux开发机器上运行的工具。

Android 伴随移动设备成长起来的 Linux 版本

Android是基于 Linux 的定制版本,主要针对带有触摸屏的移动设备而设计,于2007年推出。目前由开放式手机联盟开发,并由Google提供商业赞助

今天,Android 正在进军新的垂直领域,包括汽车、医疗设备和家用电器。因此,您会发现,我们的几种面向移动和多媒体的硬件解决方案(例如,骁龙 8 Gen 1移动硬件开发工具包TurboX SDW4100 开发工具包)是专门针对Android的,还有我们的一些专门面向媒体的物联网产品,如Qualcomm QCS8250Qualcomm APQ8016E应用程序处理器。

Android开发者通常使用基于JavaKotlinPython等语言的高级开发栈,但也可以选择使用C/C++等低级语言构建应用程序。这些选项也体现在我们的SDK中。例如,我们的Hexagon DSP SDK提供了一个低级 C API,可用于在裸机层面与DSP进行配合。同时,我们的Qualcomm人工智能神经处理SDK包括C++Java运行时,以及基于Python的管道操作工具(例如,将ML模型转换为骁龙的专有格式)。

下图总结了Android的软件栈

Android 软件栈

Android 已经为低功耗和移动网络通信进行了优化,这些能力通过我们的SoC设计(如异构架构、5G/Wi-Fi功能等)和我们丰富的SDK又得到了强化。此外,还包括许多高级功能(例如,手势识别),开发者可以通过 Android 的高级 API 访问这些功能。

虽然 Android 的底层内核是基于Linux的,但更高的层是面向移动设备功能的(例如蓝牙、OpenGL ES等)。从Linux的角度来看,Android的软件层(从硬件抽象层(HAL)开始)是在用户空间中运行的。

Android 拥有集成连接管理器,可无缝支持多个无线连接协议。它还内置电话栈,支持GSMLTEVoIP等技术。

Android的内置功能需要大量内存和强大的处理器。其应用程序通常会占用较多的内存,而且此操作系统一般不太容易定制(或者在实践中不像Linux那样方便)。这使得Android更适合用于丰富的多媒体设备,比如骁龙设备,而不是资源有限的嵌入式设备。当然,也有例外,比如TurboX SDW4100 开发工具包,它是为构建基于Android的小型可穿戴设备而设计的。

LinuxAndroid概述

Linux Android 因为最初的设计意图和目标平台,而各有优势。我们提供支持其中一种或两种操作系统的硬件和软件解决方案(例如,我们的Qualcomm QCS610和Qualcomm QCS410应用处理器,可以同时运行在LinuxAndroid上)。

如果您希望为您接下来的嵌入式开发项目选择操作系统,可以参考以下表格:

LinuxAndroid关键特性和功能概述。

Linux

Android

目标设备

从PC到资源受限的嵌入式设备

面向拥有更多内存和处理能力的多媒体设备

主要信道

以太网和Wi-Fi

移动网络

易于使用

需要OS定制方面的知识

开发通常较容易;堆栈包括大多数Android设备开发所需的一切工具

初级编程水平

一般是低级语言(C/C++),也可选择高级语言(如Java和Python)。

一般是高级语言(例如Java),也有低语言(C/C++)选项

引导加载程序

可自定义的标准引导加载程序

简单引导加载程序,在内核控制之前仅执行必要任务

硬件驱动

大部分开源

大部分私有–可能需要定制开发

许可

开源,GPL V2.0

开源,Apache

有关这两个操作系统的特性和功能方面更全面的总结,请查看Embedded Inventor的这篇文章

关于LinuxAndroid嵌入式设备开发的例子,请查看我们的QDN项目页面链接,该页面已经设置过滤,仅显示基于LinuxAndroid的项目。


 

骁龙、Qualcomm RB3RB5机器人开发套件、Qualcomm HexagonQualcomm神经处理SDKQualcomm APQ8016EQualcomm QCS8250Qualcomm QCS610Qualcomm QCS410Qualcomm Technologies, Inc./或其子公司的产品。

CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
微博关注
【免责声明:CSDN本栏目发布信息,目的在于传播更多信息,丰富网络文化,稿件仅代表作者个人观点,与CSDN无关。其原创性以及文中陈述文字和文字内容未经本网证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本网不做任何保证或者承诺,请读者仅作参考,并请自行核实相关内容。您若对该稿件有任何怀疑或质疑,请立即与CSDN联系,我们将迅速给您回应并做处理。】