ハードウェアの組み込みLinuxでmonoを使用する
-
01-10-2019 - |
質問
私はインターンシップとして企業の研究をしています。.Net プラットフォームのクロスプラットフォーム実装である Mono の使用に関していくつかの質問がありました。私の会社はハードウェアとソフトウェアを設計しています。
組み込み Linux の使用に関する私の知識は非常に限られています。私がインターンシップを行っている私の会社は、.NET を非常に重視しています。しかし、mono の新たな開発では、小規模プロジェクトでも Linux をターゲットにできるかどうかを自問しており、ソフトウェアとハードウェアを設計する人々の高額なライセンスコストを回避しています。
mono でできること (そしてまだできないこと) についてはすでに調べました。これで、埋め込まれた質問に到達しました。組み込み Linux がどのように構築されるかについての話に少し迷っています。
標準 Linux ライブラリをいくつか使用して、ハードウェア上に組み込み Linux を作成したという記事をいくつか見ました。また、uClinux (別名 µClinux) のような特殊な Linux ディストリビューションが存在することも確認しました。では、何が違うのでしょうか、それとも同じなのでしょうか。ターゲット デバイスで組み込み Linux を使用したい場合、通常、プロセスはどのようになりますか?
OK、モノラル部分よりも、基本的に組み込み Linux で C# を実行できるようにしたいと考えています。ここでは主にuclinuxを使用していますが、これにはmonoを使用できますか?いくつかの仕様を確認したところ、メモリ管理ユニット (MMU) がありませんでした。
基本的に、私は MMU がないことを心配しています。ガベージコレクターはどう反応するでしょうか?
質問が多すぎなければよかったのですが、
初めまして、もう読んでいただきありがとうございます。
ベンジャミン
解決
ガベージ コレクターは MMU に依存しませんが、MMU があればより効率的になる可能性があります。
現在、これを利用してチェックなしで null 参照例外を生成しています。uclinux では、明示的チェックを有効にする必要があります (コードはすでに存在するので、有効にするだけです)。他の人は uclinux で mono を使用していると報告しましたが、私たちはそのプラットフォームでそれをテストしたことがないため、あちこちのソースにいくつかの調整が必要になる可能性があります (もちろん、私は ARM など、すでにサポートしている CPU アーキテクチャ上の uclinux について話しています。指定しなかった)。
他のコメントに関しては、AOT と mkbundle は必要なものとはほとんど無関係です。あなたが本当に望んでいるのは、デバイスの許容範囲内に収まるようにモノラルのフットプリントを減らすことです。 を参照してください。 http://www.mono-project.com/Small_footprint 詳細については。
私が決定を下すのであれば、mono や mono で実行する必要があるプログラムのような複雑なソフトウェアを実行するには、uclinux ではなく通常の ARM linux を常に選択するでしょう。
他のヒント
デバイスに MMU がない場合は、Microsoft のオープンソースを使用するとよいでしょう。 .NETマイクロフレームワーク. 。.NET/Mono よりもはるかに制限があり、JIT ではなくインタープリターですが、.NET/Mono で実行できます。 多くの より制限されたハードウェア。
あなたの会社が MONO 経由で組み込み Linux ボードをターゲットにしたいと考えていて、必要なのはデスクトップ Windows コンピュータ上で既に実行されているアプリケーションを転送することだけであれば、おそらくほとんど問題はありません。しかし、IO、I2C、SPI、1-Wire、その他の周辺機器と通信したい場合は、MONO 経由でそれらにアクセスするのに問題があり、おそらく何らかのトランスレータ (おそらく GCC で書かれたもの) を作成する必要があります。実際のハードウェアと MONO アプリケーションの間のゲートウェイ。