web-dev-qa-db-ja.com

組み込みシステムのプログラミングでよく見られる設計パターン

コーディングに関して質問はありません。私の懸念は、特定のプログラミング言語に依存しない組み込みシステムプログラミングに関するものです。

私は組み込みプログラミングの領域に新しいので、経験豊富な組み込みシステムプログラマーであると考えている人からの応答にかなり感謝します。

基本的に2つの質問があります。

  1. 下記の設計パターンのうち、組み込みシステムのプログラミングで頻繁に見られるものはありますか?

    • 抽象化-発生パターン
    • 一般的な階層パターン
    • プレーヤーロールパターン
    • シングルトンパターン
    • オブザーバーパターン
    • 委任パターン
    • アダプターパターン
    • ファサードパターン
    • 不変パターン
    • 読み取り専用インターフェースパターン
    • プロキシパターン
  2. 経験豊富な組み込み開発者として、個人としてどのようなデザインパターンに遭遇しましたか?詳細を記載する必要はありません。パターン名のみで十分です。あなた自身の経験を共有してください。

上記の質問に対する答えは、組み込み世界の初心者プログラマーにとって良い出発点として機能すると思います。

4
softwarelover

組み込みシステムの成長、幅広いパターンのサポートが期待される

組み込みシステムで利用可能なメモリとプロセッサが増え始め、ベアメタルからリアルタイムカーネル、LinuxやWindowsの組み込みバージョン、さらにはAndroidへと移行するにつれて、これらすべてのパターンなどを利用できるようになると思います。

パターン制限要因

テーブルの作成方法はわかりませんが、リストは、ベアメタル、RTK、またはOSで実装するのに適しているかどうかを評価できます。アセンブラーまたは組み込みC++は制限的である可能性があり、Cは一部のパターンを容易にするオブジェクト指向を欠いており、C++(またはその機能)は [ 〜#〜]ミスラ[〜#〜]

コーディング標準およびパターンとのリアルタイムの相互作用

一部の組み込みシステムプロジェクトでは、動的メモリの使用が禁止されています。これは、いくつかのパターンに本物のダンパーを配置します。他の人は、必要なメモリの量を傷つけるか、助けることがあります。マネージコードテクニックを使用すると、ガベージコレクション中に不要な待ち時間が発生する可能性があります。

開始点としてのパターン?

上記の質問への回答は、組み込み世界の初心者プログラマーにとって良い出発点として機能すると思います。

この発言はちょっとしたジャンプだと思います。パターンはメタ概念のようなものであり、メモリマップ、タイマー、UART、SPI、I2C、ATOD/DTOA、PWMなどの周辺デバイスのプログラミング、または割り込みサービスルーチンの作成などの詳細な情報に代わるものではありません。 OSを使用している場合は、何らかのボードサポートパッケージが必要になります。 COTSを使用している場合は、どの製品を評価する必要があります。

カスタムハードウェアを使用している場合は、電気技術者とのやり取りや、回路図の読み取り、データシートの読み取り(または場合によっては書き込み)、操作ドキュメントの理論に対処するためのトレーニングが行われます。オシロスコープ、ロジックアナライザー、JTAGまたはインサーキットエミュレーターなどのテスト機器と、Windows、Linux、またはMacのIDEベースのクロス開発ツールを使用します。

スタック交換上の組み込みシステム?

エリア51のコミットメントステージにあるStack Exchangeの組み込みシステムサイトがありました。2年の時間制限のために閉鎖されました。 Raspberry Piのベータ版、2人のフォロワーがいるBeagleBoard、および同じくクローズされているArduinoの提案など、いくつかの関連する組み込みの提案があります。

http://area51.stackexchange.com/proposals/15961/embedded-system-design-and-development

サイトを再開または再提案する手順があります。誰かがそれに気をつけているなら、それを試してみましょう。

4
DeveloperDon