我需要为开发(实际上是移植)我的嵌入式解决方案做出架构决策。我会尽量清楚地陈述我的情况,我能得到的任何建议都将不胜感激。
介绍
我有一个嵌入式系统,目前是在 ARM11 架构和 ArchLinux 操作系统上开发的。它是使用 Linux 下可用的各种技术实现的,包括 C、C++、Bash 和 Python。
此时,我想将我的解决方案移植到平板电脑上,因此我正在尝试根据我的系统要求对架构做出一些决定。
要求
该系统是模块化的,它运行多个进程和线程。它还与远程服务器通信并控制硬件外围设备。这些是基本要求,目前,我将随着讨论的发展进行更新:
基本的:
- 专用系统(最小数量的其他应用程序运行,即使在 bg 中)
- 多个流程,设置优先级的能力
- 能够将进程分配给单个 CPU 核心(cpu 亲和性)
- 进程间通信机制
- 完整的硬件控制(WiFi、3G、GSM、麦克风、扬声器、显示器……)
- 创建套接字等
其他:
- 能够将麦克风直接连接到 3.5 毫米插头(TRRS 连接器)
- 确保可靠性的主流解决方案
- 面向未来:最大限度地减少新平板电脑和硬件的移植工作
我的问题
- 哪种平板电脑和操作系统组合可以满足这些要求?
- 如何接近“专用解决方案”的要求?
- 如何进行软件开发,使用什么语言和工具?
到目前为止我的调查
到目前为止,我的调查主要集中在操作系统的选择上。主要选项似乎是 Android 和 Ubuntu Touch。以下是我的想法:
安卓
Android 显然在主流类别中获胜,但是……
我没有 Android 开发经验,但据我所知,我可以开发一个运行在 Dalvik 之上的 Java 应用程序,或者我可以通过 Android NDK 原生化。也许我什至可以绕过整个事情,与 Dalvik 并排原生,用 Python 开发?我想那时我将失去对硬件访问 API 的访问权限。不知道我将如何访问硬件。但是如果我使用 Java 开发,这是一个沙盒解决方案,我不确定我是否可以对进程、硬件和 CPU 核心亲和力进行这样的控制?
Ubuntu 触控
在 Ubuntu Touch 上开发更像是我习惯的 Linux 开发,因为它使用 Qt。这里的问题是应用程序是使用限制我使用 HTML5 和 QML 的 SDK 开发的,我不确定这是否可以让我对所需的系统进行相同的控制。如果我使用 Python 并避免使用 SDK,则会出现同样的问题 - 我如何控制硬件?当然,我猜有一种方法可以像在常规嵌入式系统上那样做,但如果没有必要,我不想重新发明轮子。
此外,Ubuntu Touch 似乎还没有被移植到很多设备上,只支持其中的一小部分。
最后
我不确定我的案例展示得有多好,但我会根据需要更新问题,提供进一步的解释和要求细节。感谢您的耐心、您的时间和您可能提供的任何帮助。