本文提到的Qualcomm产品由QualcommTechnologies,Inc.和/或其子公司提供。

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

假若您浏览过和Qualcomm开发者网路,可能会注意到,我们的好多解决方案都支持Android或Linux,甚至两个都支持。因为这两种操作系统在昨天的嵌入式设备开发中非常普遍,因而,有必要了解一下各自的优势及最佳使用场景。下边我们来详尽讨论一下。

linux游戏开发_Android嵌入式操作系统_Linux嵌入式操作系统

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

Linux最早于1991年发布,是从Unix变迁而至的开源操作系统。最初是为个人笔记本开发的,后来逐步步入了许多不同的平台。其底层构架基本上是模块化和可订制的,开发者可以依照自己的需求定做操作系统。例如,假若在无显示器设备上运行操作系统linux教程,降低显存和处理需求,则可以移除GUI子系统。为此,Linux很早就在各类嵌入式设备上可靠运行——从游戏机和电视到联通路由器和工业手动化。

右图是Linux堆栈简化图:

Linux嵌入式操作系统_Android嵌入式操作系统_linux游戏开发

简化的Linux堆栈

Linux嵌入式操作系统_Android嵌入式操作系统_linux游戏开发

内核空间是操作系统的核心,而用户空间则托管开发者建立的应用程序。显存有限的低帧率设备(比如大型专有物联网设备)运行Linux也能实现较高的性能(经过适当订制后)。这促使Linux很适宜用于资源受限的嵌入式设备,可以借助有限的处理能力及外围设备。

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

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

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

Android–伴随联通设备成长上去的Linux版本

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

明天,Android正在涉足新的垂直领域,包括车辆、医疗设备和家用家电。为此,您会发觉,我们的几种面向联通和多媒体的硬件解决方案(比如linux游戏开发,高通8Gen1联通硬件开发工具包和TurboXSDW4100开发工具包)是专门针对Android的,还有我们的一些专门面向媒体的物联网产品,如QualcommQCS8250和QualcommAPQ80168016E应用程序处理器。

Android开发者一般使用基于Java、Kotlin和Python等语言的中级开发栈,但也可以选择使用C/C++等低级语言建立应用程序。这种选项也彰显在我们的SDK中。比如,我们的HexagonDSPSDK提供了一个低级CAPI,可用于在裸机层面与DSP进行配合。同时,我们的Qualcomm人工智能神经处理SDK包括C++和Java运行时,以及基于Python的管线操作工具(比如,将ML模型转换为高通的专有格式)。

右图总结了Android的软件栈:

Linux嵌入式操作系统_Android嵌入式操作系统_linux游戏开发

Android软件栈

Android嵌入式操作系统_Linux嵌入式操作系统_linux游戏开发

Android早已为低帧率和联通网路通讯进行了优化,这种能力通过我们的SoC设计(如异构构架、5G/Wi-Fi功能等)和我们丰富的SDK又得到了加强。据悉,还包括许多中级功能(比如,手势辨识)linux游戏开发,开发者可以通过Android的中级API访问那些功能。

尽管Android的底层内核是基于Linux的,但更高的层是面向联通设备功能的(比如蓝牙、OpenGLES等)。从Linux的角度来看,Android的软件层(从硬件具象层(HAL)开始)是在用户空间中运行的。

Android拥有集成联接管理器,可无缝支持多个无线联接合同。它还外置电话栈,支持GSM、LTE和VoIP等技术。

Android的外置功能须要大量显存和强悍的处理器。其应用程序一般会占用较多的显存,但是此操作系统通常不太容易订制(或则在实践中不像Linux那样便捷)。这促使Android更适宜用于丰富的多媒体设备,例如高通设备,而不是资源有限的嵌入式设备。其实,也有例外,例如TurboXSDW4100开发工具包,它是为建立基于Android的大型可穿戴设备而设计的。

Linux和Android概述

Linux和Android由于最初的设计意图和目标平台,而各有优势。我们提供支持其中一种或两种操作系统的硬件和软件解决方案(比如linux服务器维护,我们的QualcommQCS610和QualcommQCS410应用处理器,可以同时运行在Linux和Android上)。

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

Linux和Android关键特点和功能概述。

Linux

Android

目标设备

linux游戏开发_Android嵌入式操作系统_Linux嵌入式操作系统

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

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

主要信道

以太网和Wi-Fi

联通网路

便于使用

须要OS订制方面的知识

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

中级编程水平

linux游戏开发_Linux嵌入式操作系统_Android嵌入式操作系统

通常是低级语言(C/C++),也可选择中级语言(如Java和Python)。

通常是中级语言(比如Java),也有低语言(C/C++)选项

引导加载程序

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

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

硬件驱动

大部分开源

Linux嵌入式操作系统_linux游戏开发_Android嵌入式操作系统

大部份私有–可能须要订制开发

许可

开源,GPLV2.0

开源,Apache

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

关于Linux或Android嵌入式设备开发的事例,请查看我们的QDN项目页面链接,该页面早已设置过滤,仅显示基于Linux和Android的项目。

高通、QualcommRB3和RB5机器人开发套件、QualcommHexagon、Qualcomm神经处理SDK、QualcommAPQ80168016E、QualcommQCS8250、QualcommQCS610和QualcommQCS410是QualcommTechnologies,Inc.和/或其子公司的产品。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复