私はしばらくの間、Arduinoをいじくり回しており、初心者から中級者に移行する過程にあります。パフォーマンスとハードウェアの可用性の観点から、.NET Micro Frameworkについて意見をお願いします。
私は.NETプログラマですが、Processing for Arduinoはほとんどゼロの摩擦であることがわかりました... C#に非常に近いため、やりたいことはすべて、ドキュメントにアクセスする必要さえありません。
とにかく、どちらが良いですか?
私はしばらくの間、Arduinoをいじくり回しており、初心者から中級者に移行する過程にあります。パフォーマンスとハードウェアの可用性の観点から、.NET Micro Frameworkについて意見をお願いします。
私は.NETプログラマですが、Processing for Arduinoはほとんどゼロの摩擦であることがわかりました... C#に非常に近いため、やりたいことはすべて、ドキュメントにアクセスする必要さえありません。
とにかく、どちらが良いですか?
回答:
初心者から中級者に移動したい場合、学ぶ必要のある言語はCです。Windowsのロックインの議論全体を脇に置いても、Cでのプログラミングに熟練している必要があります。 .NET MicroやC ++などの高水準言語のマイクロコントローラー。
組み込みシステムはピラミッド型の知識で構成されており、優れた設計者になるには、少なくとも各ステップのいくつかを知っている必要があります。
^ユーザーコード
^^オペレーティングシステム
^^^ C言語
^^^^アセンブリ言語
^^^ ^^マイクロコントローラのアーキテクチャ
^^^^^^デジタルデザイン
^^^^^^^半導体
^^^^^^^^基本的な電子機器(オームの法則)
Arduinoフレームワークは、C言語とオペレーティングシステムの間のどこかで、愛好家にピラミッドへの便利なフックを提供します。
.NET Micro Frameworkの質問に固有の、Aboutは次のように述べています。
典型的な.NET Micro Frameworkデバイスには、外部メモリ管理ユニット(MMU)のない32ビットプロセッサがあり、64Kのランダムアクセスメモリ(RAM)しか搭載できません。
また、このパンフレットでは、Windows Mobile、Windows Embedded、CE 6.0、および.NET Compact Frameworkと区別し、Linux、リアルタイム、Java、およびカスタムオペレーティングシステムと比較しています。これは、Arduino / Processingフレームワークからの大きなジャンプです。
Arduinoには、1kのRAMを搭載した8ビットプロセッサが搭載されています。8ビットと32ビットの電力損失に加えて、リストされているほとんどのプロセッサの半分以下の速度で動作します。32ビットプロセッサへの移行をお勧めしませんが、中級から上級への移行としてお勧めします。
C#またはC ++の数行で多くの時間とメモリを使い切るのは本当に簡単です。これは、ギガバイトのRAMを備えた数ギガヘルツで実行されているデュアルコアプロセッサでは重要ではありませんが、組み込みデバイスで大きな違いを生む可能性があります。 。アセンブリ言語やC、あるいはC#またはC ++の達人になるまでは、組み込みプログラミングに使用することはお勧めしません。
それで、WinAVRのダウンロードから始めて、Cで単純なLED点滅ルーチンをプログラムします。Cが完全に混乱している場合は、PCでネイティブコード(「Hello World」)を少し実行してから、マイクロコントローラ、しかしそれは必要ではないはずです。次に、UARTを介した通信に移り、割り込みの使用を開始し、CでArduinoプロジェクトの一部をやり直します。次に、異なるマイクロコントローラー(PICまたはARMなど)を備えた新しい開発ボードを見つけます(または作ります)。LCDスクリーン、イーサネット、SDカード、または何でも好きなものを使って、新しいシステムを学びましょう。そこに着くと、どこに行きたいかがよくわかります。
途中でお手伝いします!
私は「.NET Micro Framework」の経験はありませんが、低電力の組み込みプラットフォームで仮想マシンを実行することに関わるものは何でも非常に疑っています。それは私にとってもったいないようです。ネイティブマシンコードにコンパイルする専用のプラットフォームを実行するのと同じ効果を得るには、より多くのパワープロセッサ、より多くのメモリ、より多くの電力消費が必要です。おそらく、仮想マシン(JVMと同様)を実行している528MHz Androidフォンが、ネイティブマシンコード用にコンパイルされたアプリケーションを実行する、以前の数年前の312MHz Palm Treoよりも遅く感じることがよくあります。
簡単に見ると、.NET MFにはARMプロセッサが必要です。これは、Arduinoで使用されている8ビットATMegaチップからの電力と複雑さの上のステップです。
私の提案は、もしArduinoがあなたがやりたいことをするなら、それに固執することです。そうでない場合は、より強力なATMegaまたはATXmegaチップに目を向け、その上に追加の.NET変換層を追加することなく、C / C ++でARMを直接使用できます。
中間に移動したい場合は、Arduino環境外のプラットフォームを試してください。選択するものはたくさんあります。AtmelMCUを使用する場合でも、8ビットのままにすることも、別のベンダーからの1つに移動することもできます。IDEを使用し、コードC言語を記述し、MCUがどのように機能するかを理解し、独自のブートローダーコードを記述するか、インサーキットプログラマーを使用して動き続けます。
しかし、本当にマイクロコントローラー用のC#で書きたい場合は、これを試してください:http : //www.trygtech.com/products/sh7619_evb.php
それははるかに大きなMCUを使用し、典型的な.NETフットプリントは約512Kのフラッシュメモリと256kのRAMです。
私にとってProcessing / Arduinoの最大の問題は、まともなデバッガーがないことです。私はAVRドラゴンを持っていますが、(a)AVR Studioのデバッガーが遅くバグが多い、または(b)Eclipseでのデバッグが非常に遅く、バグが多いため、これはあまり役に立ちません。私はWinAVRでそれを試す機会がありませんでしたが、それはリストの次です。
もちろん、Arduino IDEにはデバッガはありません。
単純なアプリケーションの外に出て、有線および無線ネットワークレベルで関連するものを実行する必要があるアプリの構築を開始すると、それは非常にイライラします。これが主に私が.NET MFを真剣に検討している理由です-SDKで遊んでいて、いくつかのハードウェアが間もなく起動します。
Netduinoを調べてみてください。これは、arduinoのレイアウトとピンと互換性があるように構築されており、.NET Micro Frameworkを実行します。したがって、C#でコーディングし、Visual Studio内でデバッグすることもできます。
これまでのところ、非常に優れており、扱いやすいことがわかりました。チュートリアルはたくさんありませんが、Arduinoの多くのものを移植するだけで十分だと思います。私は初心者なので、Arduinoチュートリアルからフォトレジスタ/フォトセルのセットアップとコードを簡単に移植できました。
Atmelに適した使いやすいIDE であるhttp://www.hpinfotech.ro/html/cvavr.htmを見て、いくつかのCIがこれを専門的に使用していて、非常に優れていると言えます。 Visual StudioのようなIDEから取得します。私はEclipseをAndroid開発にとって少し不格好なものにしました。購入したものほど滑らかではありません。
私は楽しみのためにTricopter制御システムを実装したNetduinoを持っています。これは非常にリアルタイムで、確実に機能し、Visual Studio 2010でC#で記述されています。デバイスのデバッグは一般的に優れており、データを自動同期しますwifiと私は航空機に小さなHTTPサーバーを持っています。
.NET Micro Frameworkを生産アプリケーション(精密測定デバイス)で使用しています。正常に動作します。
今日のマイクロプロセッサーは、「create-see-profile-change-see ...」パラダイムを使用できる状態に達しています。現在、メモリ量は非常に大きく安価なので、メモリ不足の状態でスタックすることはおそらくないでしょう。
また、C#開発者は、コードを作成する際に他に何をすべきか、そしてコードを複雑にする(そしてそうでない場合もある)ことを推測するよりも、望ましい条件に到達するための適切なプロファイリングの方が良い方法であることを知っています。