9

ボタン、LED、LCDディスプレイ(セグメント化とグラフィックの両方)で構成されるリアルな埋め込みフロントパネルの構築など、デスクトップWindowsで深く埋め込まれたCコードのプロトタイピング(仮想プロトタイピング)、シミュレーション、およびテストのためのツールと手法を探しています。

私は、MFC、.NET / C#、vxWidgets、またはQtではなく、純粋なCコードと生のWin32 APIを使用する、おそらく低レベルのアプローチに特に興味があります。また、リソースの編集には、PlatformSDKを使用したVisualC++ExpressやResEditなどの無料の開発ツールを使用したいと思います。

効率的なピクセルレベルのインターフェイス、マルチセグメントLCD、および「押された」イベントと「解放された」イベントの両方に応答する所有者描画ボタンを備えたグラフィックLCD(モノクロから24ビットカラー)をレンダリングするコード例を探しています。

4

4 に答える 4

8

私の最初の質問がこれほど多くの誤解や否定的なコメントを引き起こしたことに驚いています。1 つのマシン (PC など) で深く埋め込まれた C コードを開発し、別のマシン (組み込みマイクロコントローラー) で実行する戦略は、「デュアル ターゲット」と呼ばれ、非常に一般的です。たとえば、PC に深く組み込まれたコードの開発とテストは、James Grenning による最近の著書「Test-Driven Development for Embedded C」の基礎となっています。

デュアル ターゲティングによるターゲット ハードウェアのボトルネックの回避

デュアル ターゲティングは、組み込みデバイスが PC と関係があることを意味するものではないことに注意してください。また、シミュレーションが組み込みターゲット CPU でサイクル正確でなければならないという意味でもありません。

デュアル ターゲティングとは、組み込みコード (通常は C) が、最初から少なくとも 2 つのプラットフォーム (最終的なターゲット ハードウェアと PC) で実行されるように設計されていることを意味します。これに本当に必要なのは、PC 用と組み込みデバイス用の 2 つの C コンパイラだけです。

ただし、デュアル ターゲット戦略では、ボード サポート パッケージ (BSP) と呼ばれることが多い明確に定義されたインターフェイスを介してターゲット ハードウェアの依存関係が処理されるように、組み込みソフトウェアを設計する特定の方法が必要です。このインターフェイスには少なくとも 2 つの実装があります。1 つは実際のターゲット用で、もう 1 つは Windows を実行している PC 用です。このようなインターフェイスを配置すると、組み込みコードの大部分は、リンクされている BSP 実装を完全に認識しないままにすることができるため、PC 上で迅速に開発できますが、変更を加えずにターゲット ハードウェア上で実行することもできます

一部の組み込みプログラマーは、デュアル ターゲティングを自己負担と見なすことができますが、より経験豊富な開発者は、ソフトウェアとハ​​ードウェアの境界に注意を払うことが実際に有益であることに一般的に同意します。耐用年数がはるかに長くなります。デュアル ターゲティングへの投資は、大幅に高速化されたコンパイル - 実行 - デバッグ サイクルで即座に回収されます。これは、実行中のコードの可視性が制限された、非常に遅く、リソースに制約のある深く埋め込まれたターゲットと比較して、強力な PC ではるかに高速で生産的です。 .

フロント パネル Win32 GUI ツールキット

自明ではないユーザー インターフェイスを備えたデバイス用の組み込みコードを開発する場合、組み込みフロント パネルを PC 上の GUI 要素として表現するという問題に直面することがよくあります。この問題は非常に一般的であるため、LCD、ボタン、LED などの基本要素への単純な C のみのインターフェイスを提供する既存のライブラリまたはオープン ソース プロジェクトを推奨できる人がここにいないことに本当に驚いています。これはそれほど複雑ではありませんが、すべての組み込み開発者は、この車輪を何度も再発明する必要があるようです。

そこで、Windows での組み込みデバイスのプロトタイピングに関心のある組み込み開発者を支援するために、「フロント パネル Win32 GUI ツールキット」を作成し、GPL オープン ソース ライセンスの下でオンラインに投稿しました ( http://www.state-machine.com/を参照)。 win32 )。このツールキットは、C の生の Win32 API のみに依存しており、現在、次の要素を提供しています。

  1. 最大 24 ビット カラーのグラフィック LCD、OLED など、効率的なピクセル アドレス指定可能なディスプレイ用のドット マトリックス ディスプレイ

  2. セグメント LCD などのセグメント化されたディスプレイ用のセグメント ディスプレイ、およびセグメント用の一般的なカスタム ビットマップを備えたセグメント LED。

  3. カスタムの「押された」および「離された」ビットマップを備えた所有者が描画したボタンで、押されたときと離されたときに個別のイベントを生成できます。

ツールキットには、例とアプリケーション ノート ( http://www.state-machine.com/win32/AN_Win32-GUI.pdfを参照) が付属しており、所有者が描いたボタン、通常のボタン、キーボード、そしてマウス。http://www.state-machine.com/win32/front_panel.htmlでアニメーションのデモを見ることもできます。

「フロント パネル Win32 GUI ツールキット」のサイズと複雑さに関しては、前述の GUI 要素の実装には C で約 250 行しかかかりません。すべての入力ソースと多くのコメントを含む例は、C で約 300 行になります。このツールキットは、無料の Visual C++ Express 2010 (Express Edition Platform SDK を使用) および無料の ResEdit リソース エディターでテストされています。

楽しみ!

于 2012-08-28T19:54:43.483 に答える
1

質問に対するコメントの説明で言及したアプライアンスは、Windows PCを使用することはないため、その場合、低レベルのWindowsプログラミングは必須ではありません。実際、それは望ましくないと思います。プロトタイピングはスピードです。潜在的な投資家や経営陣、その他の意思決定者に見せるために、どれだけ早く何かをまとめることができるかということです。

プロジェクトの要件が完全に洗い流され、それが最終的なプロジェクトの成果物 (おそらくサーバー/PC 監視ツール? ) の絶対要件であることがわかるまで、低レベルの C および Win32 API で余分な時間を費やしたくないでしょう。それまでは、開発のスピードが必要です。幸運なことに、業界には、あなたが説明したようなハードウェアのラピッド プロトタイピングと開発のためのツールがあります。

組み込み開発によるプロトタイピングに対する私の好み

開発者としての私の意見としては、.net マイクロフレームワーク (.netmf) が好きなのは、単に私が Microsoft .Net 開発者であり、既存のスキルの多くを転用できるからです。そのため、Visual C# Express 2010 (必要に応じて無料) で C# を使用して、FEZ マイクロコントローラーでプロトタイプを作成します。すばやく簡単に、プロジェクトの核心部分に数分で取り組めます。

開発者としての経験が異なる場合は、BASIC、Java、またはその他の言語を使用してプログラムされたマイクロコントローラーを探して、コアスキルセットを再利用することで開発速度を向上させることができます.

質問への対処 報奨金のコメント

組み込みソフトウェアの驚くほど多くの部分は、深く組み込まれたターゲットではなく、デスクトップ コンピュータで開発できます。この「ターゲット システムのボトルネック」の回避は、正しく行われれば、生産性を桁違いに向上させる可能性があります。ただし、デスクトップで組み込みソフトウェアを開発するには、ディスプレイ (セグメント化され、ますますグラフィカル化されている)、LED、ノブ、ボタンなどの UI コンポーネントをシミュレートする必要があります。デスクトップ Windows で開発およびテストする組み込みコードと簡単に統合できるように、C のプレーンな Win32 API で記述された UI コンポーネントを探しています。

私はプロとして 4 年以上フルタイムで組み込み開発を行っており、その間もパートタイムで何年も働いてきました。あなたが上で言ったことはある程度真実ですが、時間やお金を節約することはできないため、この戦略の動機について誰もが混乱しています. 私たちは何年もかけて、理論的にはプロトタイピングの時間を節約できるこの会社のハードウェア デバイス用の Windows エミュレーターを作成しようとしました。それは常に苦痛であり、スケッチした UI 描画仕様から実際の開発に直接移行する場合よりも、エクスペリエンスをエミュレートするために多くの時間を費やしました。エミュレーターはハードウェア開発に遅れをとっており、ハードウェアがリリースされてから 6 か月以上経過するまで最新の機能をサポートしないことがよくありました。ほんのわずかな価値で多くの余分な作業が必要でした。

コア プロジェクト自体のコードを実際に記述するよりも、再利用できない win32 プラットフォーム コードとハードウェア エミュレーション コンポーネントの開発により多くの時間を費やすことになります。これは、潜在的なサードパーティ開発者に「付加価値」ツールとしてこのエミュレータを提供するハードウェア ベンダーにとってのみ意味がありますが、新しいハードウェア設計のプロトタイピングには意味がありません。

Visual C# Express 2010 のような FEZ マイクロコントローラーを備えた最新の開発環境では、コンパイルして、プロジェクトの出力をマイクロコントローラーにプッシュし、デバッグを開始することができます。これは、LCD や LED をエミュレートする C で低レベルの Windows アプリをコンパイルして実行するよりも高速です。スイッチなど...したがって、「生産性を1桁向上させる」というあなたのコメントは、最新のツールにはもはや当てはまりません。(過去10年ほど前のことかもしれません。)

組み込みハードウェアを PC で視覚的にシミュレートしたい場合は、Adobe Flash などを使用して UI をモックアップします。ただし、プロトタイピングしている最終的なデバイスが Windows を実行しない場合は、Windows 用にコーディングしてコードを複製しないでください (そうなる可能性はありますが、あなたはそうは言いませんでした)。低レベルの C や win32 APIではないことは明らかです。

電子機器用の StackExchange を使用しますか?

これは開発者向けのサイトであるため、特定の組み込みハードウェアのメリットに関する議論はあまり関係ありません。プロトタイピングにマイクロコントローラーのエレクトロニクス ( ArduinoFEZPropellerBasic StampPololuなど) を使用することに再び焦点を当てることにした場合は、 stackexchange forelectronics に関するエレクトロニクス ハードウェアのアドバイスを求めることができます。あなたが概説したように、これらのプラットフォームのほとんどは、LCD、LED、ボタン、およびインターフェイスのプロトタイピングを容易にするように設計されていると言えます。通常、ビルド済みのモジュールを数分で組み立てることができ、プロジェクトのコーディングを開始する準備が整います。ここで時間を大幅に節約できます。

于 2012-08-19T17:30:14.403 に答える
0

Mahmoud が言ったように、 proteus professionalでプロトタイピングの例を使用してコード ソリューションを見つけることができます。これは、プロトタイピング、シミュレーション、およびコーディング用の一般的なソフトウェアの 1 つであり、プロテウス プロフェッショナルを無料でダウンロードして、マニュアルを確認できます。

幸運を祈ります

于 2013-04-07T17:43:34.737 に答える
0

あなたはあまりにも多くのことを求めています。@ プロテウスを見る必要があります。 http://www.labcenter.com/products/vsm_overview.cfm

于 2012-08-25T08:22:16.110 に答える