【问题标题】:Real time Android kernel or application development实时 Android 内核或应用程序开发
【发布时间】:2015-03-19 15:07:21
【问题描述】:

我想问你是否有一种方法可以在 Android 中创建实时应用程序。我知道 Android 不支持实时应用程序,所以我想知道是否有其他方法可以实现它。可以使用另一个(更实时的)内核来完成吗?

有没有办法在 Android 中对 Linux 内核进行编程?我不知道本机代码是否更有用。该应用程序应该能够尽可能快地控制相机的 LED,并且没有 Google 提供的 Native API。还有其他建议吗?

谢谢

【问题讨论】:

  • 根据您之前关于 LED 的问题,我认为您要么必须走定制 ROM 的路线,要么意识到您正在尝试让汽车飞起来。如果它是相机 LED/闪光灯——那么你就进入了硬件驱动程序的深层世界。一个建议是将频闪 LED 卸载到可通过 USB 附件 API 调用的自定义 USB 硬件。

标签: android linux-kernel android-ndk real-time


【解决方案1】:

Android 作为操作系统不能保证您的用户空间应用程序具有任何实时性能。 Android 用户空间与典型的 Linux 用户空间完全不同,这几乎无关紧要,因为它们都不适合硬实时要求。编写本机代码可能会有所帮助,但仍然无法保证响应或及时性。

您可以通过修改内核来实现伪实时性能。增加内核中的抢占量(例如 PREEMPT_RT 补丁所做的修改)并将您的实时代码实现为由高优先级中断调用的中断处理程序例程,可以让您实现 10 到 100 微秒的响应时间.不幸的是,这种方法存在几个问题:

  • 虽然 Android 中的 Linux 内核没有经过大量修改,但它的不同之处足以使现有的 Linux 实时补丁程序变得不兼容。您需要从头开始修补许多 Android 内核添加。
  • Android 应用程序不能简单地在 Android 设备上安装修改后的内核。内核必须单独分发并在未锁定的设备上刷新。这对于大多数应用程序来说是非常不切实际的;但是,这对于专门构建的系统可能是合理的。

最后,如果您可以选择开发和连接自定义硬件,您可以轻松地将实时 LED 控制卸载到一个简单的微控制器上。大多数设备都有可用的接口,可以连接到微控制器。当然,如果您正在构建自己的设备,那么您有很多选择来连接微控制器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多