用于专用系统的平板电脑开发

时间:2014-03-20 10:45:56

标签: android python linux tablet ubuntu-touch

我需要做出架构决策来开发(实际移植)我的嵌入式解决方案。 我将尽可能清楚地展示我的案例,我将不胜感激任何建议。

简介

我有一个嵌入式系统,目前是在ARM11架构和ArchLinux OS上开发的。它使用Linux下可用的各种技术实现,包括C,C ++,Bash和Python。

目前,我想将我的解决方案移植到平板电脑上,所以我试图根据系统的要求做出一些关于架构的决定。

要求

系统是模块化的,它运行多个进程和线程。它还与远程服务器通信并控制硬件外围设备。这些是基本要求,目前,我将随着讨论的发展而更新:

主要

  • 专用系统(运行的其他应用程序的最小数量,即使在bg中)
  • 多个流程,设置优先级的能力
  • 能够将进程分配给单个CPU核心(cpu affinity)
  • 进程间通信机制
  • 完整的硬件控制(WiFi,3G,GSM,麦克风,扬声器,显示器......)
  • 创建套接字等

其他:

  • 能够将麦克风直接连接到3.5毫米插头(TRRS连接器)
  • 确保可靠性的主流解决方案
  • 面向未来:最大限度地减少新平板电脑和硬件的移植工作量

我的问题

  • 哪种平板电脑和操作系统组合可以满足这些要求?
  • 如何处理"专用解决方案"要求?
  • 如何进行软件开发,使用哪种语言和工具?

到目前为止我的调查

到目前为止,我的调查主要集中在操作系统的选择上。主要选项似乎是Android和Ubuntu Touch。以下是我的想法:

的Android

Android显然在主流类别中获胜,但是......

我没有Android开发的经验,但据我所知,我可以开发一个运行在Dalvik之上的Java应用程序,或者我可以通过Android NDK本地化。也许我甚至可以绕过整个事情,并与Dalvik并排,并在Python中开发?我想那时我将无法访问用于HW访问的API。不知道我将如何访问硬件。但是,如果我使用Java开发,这是一个沙盒解决方案,我不确定我是否可以控制进程,硬件和CPU核心关联?

Ubuntu Touch

在Ubuntu Touch上开发更像是我习惯的Linux开发,因为它使用Qt。这里的问题是应用程序是使用SDK开发的,它限制我使用HTML5和QML,我不确定是否可以允许我对我需要的系统进行相同的控制。如果我使用Python并避免使用SDK,则会出现同样的问题 - 如何控制硬件?当然,有一种方法可以像普通的嵌入式系统那样进行,但我不想重新发明轮子,如果我不需要的话。

此外,似乎Ubuntu Touch还没有被移植到许多设备上,只支持其中的少数设备。

最后

我不确定我的陈述情况有多好,但我会根据需要更新问题,并提供进一步的解释和要求详情。感谢您的耐心,时间和任何帮助。

1 个答案:

答案 0 :(得分:1)

我和你在同一条船上,我们正在开发ARM CPU上的嵌入式系统。目前,该系统是用硬件供应商定制的Linux发行版上的Python编写的。

我们一直在关注Android和Ubuntu Touch几个月。到目前为止,我们还没有做出任何决定。但在这里我们从不完整的分析中发现了:

  1. Android是一个非常繁重的系统,它也带来了JVM。因此,您的硬件和内存要求将显着增加。

  2. Android喜欢接管整个系统,因此有时您可能会与Android抗争。

  3. Android具有非常好的IPC机制,在主流Linux内核上没有,比如Binder。当然,您可以将其移植到另一个系统。但这将是相当大的努力。

  4. Android拥有非常丰富的GUI界面,还有像NDK视图这样的东西你不会被限制在JDK框中。

  5. Android不使用标准的GNU C库,它使用的是BioniC,它是BSD的C库的一个端口。通常这对大多数软件来说都不是问题,但如果您使用某些特定于Linux的低级功能,例如使用串行端口,则需要调整代码。看看我必须做些什么来将Java RXTX库移植到android https://github.com/vladistan/gnu.io.android

  6. 你可以找到很多为你做基本GUI编程的Android开发人员,同时你专注于你的应用程序特定的东西。使用binder,GUI和低级别事物之间的接口非常容易。当然,你可以通过NDK带来你想要的任何机械。

  7. 我们考虑过Ubuntu Touch。但到目前为止,它似乎还不够成熟。