在嵌入式Linux中使用mono用于硬件

时间:2010-09-08 13:22:18

标签: .net mono embedded-linux uclinux

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

我使用嵌入式Linux的知识非常有限。我在实习期间所在的公司非常注重.NET。但单声道的新发展,他们问自己是否可以针对较小的项目瞄准linux,也避免了他们设计软件和硬件的人的高许可成本。

我已经查看了单声道可以做什么(而且还不能做)。现在我到达嵌入式问题。我有点迷失在构建嵌入式Linux的故事中。

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

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

基本上我担心没有MMU。由于垃圾收集器将如何反应?

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

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

本杰明

4 个答案:

答案 0 :(得分:5)

垃圾收集器不依赖于MMU,但如果存在MMU则效率更高。

我们目前利用它来生成空引用异常而不进行检查:在uclinux上,您需要启用显式检查(代码已经存在,只需要启用它)。 其他人报道在uclinux上使用mono,虽然可能需要对这些和那里的源进行一些调整,因为我们从未在该平台上测试它(当然我在谈论我们已经支持的cpu架构上的uclinux,比如ARM,你没有指明)。

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

单声道可以像你想要的那样受限制。如果您使用的设备没有MMU,我会查看Ahead of Time compilation

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

答案 3 :(得分:1)

如果您的公司希望通过MONO定位嵌入式Linux主板,并且所需要的只是传输已在台式机Windows计算机上运行的某些应用程序,那么您可能会遇到很少的问题。但是,如果你想与一些IO,I2C,SPI,1-Wire和其他外设通信,你将有一个问题,通过MONO访问它们,你可能不得不做一些翻译(可能写在GCC),这将是一个真实硬件和MONO应用程序之间的网关。