6

私はインターンシップとして企業の研究をしています。.Net プラットフォームのクロスプラットフォーム実装である Mono の使用について、いくつか疑問がありました。私の会社はハードウェアとソフトウェアを設計しています。

組み込み Linux の使用に関する私の知識は非常に限られています。私がインターンシップを行っている私の会社は、本当に .NET 志向です。しかし、mono の新しい開発では、小規模なプロジェクトで Linux をターゲットにすることができるかどうかを自問し、ソフトウェアとハ​​ードウェアを設計する人々の高額なライセンス コストを回避することもできます。

mono でできること (そしてまだできないこと) については、既に調べました。これで、埋め込まれた質問に到達しました。組み込み Linux がどのように構築されるかという話に、私はちょっと戸惑っています。

ハードウェアに組み込み Linux を作成するために、いくつかの標準的な Linux ライブラリを使用したという話をいくつか見ました。また、uClinux (別名 µClinux) のような特別な Linux ディストリビューションが存在することも確認しました。では、何が違うのか、それとも同じなのか。ターゲット デバイスで組み込み Linux を使用したい場合、通常はどのようなプロセスになりますか?

そうですね、mono の部分よりも、基本的には組み込み Linux で C# を実行できるようにしたいと考えています。ここでは主に uclinux を使用していますが、これに mono を使用できますか? 一部の仕様を調べたところ、メモリ管理ユニット (MMU) がありません。

だから基本的に私はMMUがないことを心配しています。ガベージコレクターはどのように反応するのでしょうか?

質問が多すぎないことを願っています。

はじめまして、お読みいただきありがとうございます。

ベンジャミン

4

4 に答える 4

5

ガベージ コレクタは MMU に依存しませんが、MMU があればより効率的です。

現在、これを利用して、チェックなしで null 参照例外を生成しています。uclinux では、明示的なチェックを有効にする必要があります (コードは既に存在するため、有効にする必要があるだけです)。他の人は、uclinux で mono を使用していると報告しましたが、そのプラットフォームでテストしたことがないため、あちこちでソースに微調整が必​​要になる可能性があります (もちろん、ARM など、既にサポートされている cpu アーキテクチャでの uclinux について話しているのです。指定していません)。

他のコメントについては、AOT と mkbundle は必要なものとはほとんど関係ありません。あなたが本当に望むのは、あなたのデバイスが許す範囲に収まるように mono フットプリントを減らすことです。詳細については、 http://www.mono-project.com/Small_footprintを参照してください。

決定を下すのが私だったら、mono のような複雑なソフトウェアや mono で実行する必要のあるプログラムを実行するために、uclinux ではなく通常の ARM Linux を常に選択します。

于 2010-09-09T07:48:31.397 に答える
2

モノは好きなだけ制限できます。MMU のないデバイスを使用している場合は、事前コンパイルを検討します。

mkbundleも同様に機能する可能性がありますが、MMU なしで機能するかどうかはわかりません。つまり、AOT を使用している場合は、最初に mkbundle を使用してすべての依存関係を取得します。

于 2010-09-08T20:23:38.993 に答える
2

デバイスに MMU がない場合は、Microsoft のオープン ソース.NET Micro Frameworkを使用することをお勧めします。.NET/Mono よりもはるかに制限があり、JIT ではなくインタープリターですが、はるかに制限されたハードウェアで実行できます。

于 2010-09-08T18:23:00.550 に答える
1

あなたの会社が MONO を介して組み込み Linux ボードをターゲットにしたいと考えており、デスクトップ Windows コンピューターで既に実行されているアプリケーションを転送するだけでよい場合、問題はほとんどないでしょう。しかし、IO、I2C、SPI、1-Wire、およびその他の周辺機器と通信したい場合、MONO 経由でそれらにアクセスするには問題が発生し、おそらくトランスレータ (おそらく GCC で作成) を作成する必要があります。実際のハードウェアと MONO アプリケーションの間のゲートウェイ。

于 2010-09-09T12:07:37.597 に答える