【问题标题】:Can I put a large Ada program in an embedded system?我可以将大型 Ada 程序放在嵌入式系统中吗?
【发布时间】:2012-09-18 13:40:47
【问题描述】:

我想知道与我合作的大型 Ada 程序是否可以在微处理器或微控制器上运行,因为我正在探索在具有低功耗要求的专用封装中实现它的可能性。

该程序在 Ada 95 中包含 500 多个源文件,在 Win XP 中编译为 10MB 的可执行文件,并使用高达 200MB 的内存运行。它不需要多个线程,也不需要“实时”运行。

这对于这种规模的程序是否有意义?如果是这样,操作系统有哪些选择?是否会对代码进行大量修改以使其与操作系统兼容?

【问题讨论】:

  • 您的嵌入式系统能满足这些要求吗?我的意思是,您提供的细节为零,任何人都可以提供帮助;你没有说明你的操作系统,你的 Ada,系统规格,是否有一个可以从 Ada 调用的硬件接口库(如果你需要硬件),所以谁知道。
  • @ChipR - 如果你不能提供信息,那么问这样的问题是没有意义的。
  • @ChipR 那么当然,它会很好用。
  • @ChipR 完美;我不相信你真的问过问题。如果您没有操作系统或硬件限制,那么您可以按原样运行它,并将 Windows 放在嵌入式系统上。
  • 我应该使用“要求”而不是“限制”。我的问题实际上是关于低功耗嵌入式系统的选择。不过,我将不得不为低功耗找到一个参考框架。

标签: embedded microcontroller ada


【解决方案1】:

您目前看到的这么大尺寸很可能与程序在 XP 这样的大型操作系统上运行所需的东西有关。

当然,您的程序可能实际上依赖于一堆巨大的数组或其他东西,而且它不可能适合。我真的不能从这里说出来。

如果是我,我会就我正在考虑的平台联系我的 Ada 供应商,并寻求他们对可行性研究的帮助。一般来说,嵌入式目标上的 Ada 编译器的许可需要足够的资金,供应商会很乐意像这样为您提供一些单独的售前关注。

还有一件事我应该提到。 Ada 有一个非常广泛的运行时库。它包括一个完整的任务和任务同步内核。 Windows 或 Linux 等“大型操作系统”上的程序通常会引入这些东西,即使它们不需要它。大多数编译器都提供了一种方法来删除您不需要的杂物,而小型嵌入式目标上的编译器当然必须这样做。因此,如果您针对较小的平台进行构建,那么它可能会自行消失。如果你喜欢,你可以查看Gnat's instructions for minimizing its runtime overhead。即使那不是您的供应商,它也应该向您展示一些可能涉及的问题。

【讨论】:

  • 说的有道理,但是我该如何选择平台呢?
  • @ChipR - 我可能是错的,但我的猜测是您会受到可用作 Ada 编译器目标的平台的限制(当然还有您的“低功耗要求”等。 ) 同样,您可能需要与您的供应商交谈。
  • 是的.. 10MB 的代码对于具有合理大小的 GUI 的单线程应用程序来说是 很多。当然,里面还有其他东西——也许是一堆国际化资源文件。
【解决方案2】:

听起来很适合 Raspberry-Pi,它将 Gnat 作为其 Debian (Raspbian) 发行版的一部分。如果 200MB 的内存占用只是数据,您可能需要注意它的内存占用...

【讨论】:

    猜你喜欢
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    相关资源
    最近更新 更多