【问题标题】:Using mono in embedded linux for hardware在嵌入式 linux 中使用单声道作为硬件
【发布时间】:2017-04-21 22:52:45
【问题描述】:

我正在为一家公司做实习研究。我在使用 Mono(.Net 平台的跨平台实现)时遇到了一些问题。我的公司设计硬件和软件。

我使用嵌入式 linux 的知识非常有限。我正在实习的公司非常注重 .NET。但是 mono 的新发展,他们问自己是否可以将 linux 用于较小的项目,也避免了为他们设计软件和硬件的人的高昂许可成本。

我已经研究过 mono 可以做什么(现在还不能做什么)。现在我遇到了嵌入式问题。我有点迷失在如何构建嵌入式 linux 的故事中。

我看到一些故事,他们只是使用一些标准的 linux 库来在硬件上制作嵌入式 linux。我还看到存在特殊的 linux 发行版,例如 uClinux(又名 µClinux)。那么有什么区别,还是一样。当我想在目标设备上使用嵌入式 linux 时,流程通常是什么样的?

好吧,比单声道部分,所以基本上我希望能够在嵌入式 linux 中运行 C#。在这里他们主要使用 uclinux,我可以为此使用单声道吗?我查看了一些规范,它们没有内存管理单元 (MMU)。

所以基本上我担心没有 MMU。既然垃圾收集器会有什么反应呢?

我希望我没有给出过多的问题,

问候,我已经感谢你阅读它,

本杰明

【问题讨论】:

    标签: .net mono embedded-linux uclinux


    【解决方案1】:

    垃圾收集器不依赖于 MMU,但如果有 MMU 会更有效。

    我们目前利用它来生成不带检查的空引用异常:在 uclinux 上,您需要启用显式检查(代码已经存在,只需启用它)。 其他人报告说在 uclinux 上使用单声道,尽管可能需要对源代码进行一些调整,因为我们从未在该平台上测试过它(当然我说的是我们已经支持的 cpu 架构上的 uclinux,比如 ARM,你没有具体说明)。

    至于其他 cmets,AOT 和 mkbundle 在很大程度上与您的需求无关。您真正想要的是减少单声道占用空间以适应您的设备允许的范围,请参阅http://www.mono-project.com/Small_footprint 了解更多信息。

    如果是我做决定,我总是会选择常规的 ARM linux 而不是 uclinux 来运行复杂的软件,比如单声道或任何你需要在单声道上运行的程序。

    【讨论】:

    • 这是我遇到的实际问题,我没有找到任何实际尝试过的人,我试图在这里搜索,但我没有找到任何人,你知道你看到那个报告了吗?
    【解决方案2】:

    如果您的设备没有 MMU,也许您可​​能想使用 Microsoft 的开源 .NET Micro Framework。它比 .NET/Mono 更受限制,它是一个解释器,而不是 JIT,但它可以在更多更有限的硬件上运行。

    【讨论】:

    • 这将是一个解决方案,但它不是我的问题的解决方案,因为他们希望它在 linux 上
    【解决方案3】:

    单声道可以根据您的需要进行限制。如果您使用的是没有 MMU 的设备,我会查看 Ahead of Time compilation

    mkbundle 也可以工作,但我不确定它是否可以在没有 MMU 的情况下工作。也就是说,如果您使用 AOT,您将首先使用 mkbundle 来拉入所有依赖项。

    【讨论】:

    • 如果 Mono 不能正常运行,这些都不起作用。所有 AOT 消除的是对 JIT 的需要——你仍然需要 Mono 运行时来处理 GC、IO、元数据等。而 mkbundle 所做的只是将 Mono 和你的应用程序嵌入到一个可执行文件中。
    【解决方案4】:

    如果您的公司想通过 MONO 以嵌入式 Linux 板为目标,并且只需要传输一些已经在桌面 windows 计算机上运行的应用程序,那么您可能会遇到很少的问题。但是如果你想与一些 IO、I2C、SPI、1-Wire 和其他外设通信,你会遇到通过 MONO 访问它们的问题,你可能需要制作一些翻译器(可能是用 GCC 编写的),这将是一个真实硬件和您的 MONO 应用程序之间的网关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多