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

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

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

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

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

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

我希望我没有提出过多的问题

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

本杰明

有帮助吗?

解决方案

垃圾收集器不依赖MMU,尽管如果有的话,它可能会更有效。

当前,我们利用它来生成无检查的null参考异常:在uclinux上,您需要启用显式检查(代码已经存在,只需要启用它)。其他人报告在Uclinux上使用Mono,尽管我们从未在该平台上进行测试,但在这里和那里可能需要进行一些调整(当然,我在谈论UClinux在CPU架构上,我们已经支持了,例如Arm,您,您未指定)。

至于其他评论,AOT和MKBundle在很大程度上与您的需求无关。您真正想要的是减少单声道足迹以适合您的设备允许的内容,请参阅 http://www.mono-project.com/small_footprint 有关更多信息。

如果是我做出决定,我总是会选择一个常规的ARM Linux,而不是Uclinux,用于运行复杂软件(例如Mono)或您需要在Mono上运行的任何程序。

其他提示

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

单声道可以像您想要的那样有限。如果您使用的是没有MMU的设备,我会研究 提前汇编.

mkbundle 也可能工作,但我不确定没有MMU可以做到。也就是说,如果您使用的是AOT,您将首先使用MKBundle来吸引所有依赖项。

如果您的公司想通过Mono瞄准嵌入式Linux板,而所需的只是传输一些已经在台式Windows计算机上运行的应用程序,那么您可能会有很少的问题。但是,如果您想与某些IO,I2C,SPI,1线和其他外围设备交谈,您将有一个问题可以通过Mono访问它们,您可能必须将一些翻译器(可能是用GCC编写),这将是实际硬件和您的单声道应用程序之间的网关。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top