組み込みシステム

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

プロセッサ、メモリ、電源、および外部インターフェイスを備えたプラグインカード上組み込みシステム

組み込みシステムは、コンピュータプロセッサコンピュータメモリ、および入出力周辺機器の組み合わせであるコンピュータシステムであり、より大規模な機械的または電子的システム内で専用の機能を備えています。[1] [2]多くの場合、電気または電子ハードウェアおよび機械部品を含む完全なデバイスの一部として組み込まれています組み込みシステムは通常、組み込みシステムが組み込まれているマシンの物理的な動作を制御するため、リアルタイムコンピューティングの制約があることがよくあります。組み込みシステムは、今日一般的に使用されている多くのデバイスを制御します。[3] 2009年製造されたすべてのマイクロプロセッサの98%が組み込みシステムで使用されたと推定されました。[4]

最新の組み込みシステムは、多くの場合、マイクロコントローラ(つまり、メモリと周辺機器のインターフェイスが統合されたマイクロプロセッサ)に基づいていますが、特により複雑なシステムでは、通常のマイクロプロセッサ(メモリと周辺機器のインターフェイス回路に外部チップを使用)も一般的です。いずれの場合も、使用されるプロセッサは、汎用から特定のクラスの計算に特化したものまで、または手元のアプリケーション用にカスタム設計されたものまでさまざまなタイプである可能性があります。専用プロセッサの一般的な標準クラスは、デジタルシグナルプロセッサ(DSP)です。

組み込みシステムは特定のタスク専用であるため、設計エンジニアはそれを最適化して製品のサイズとコストを削減し、信頼性とパフォーマンスを向上させることができます。一部の組み込みシステムは大量生産されており、規模の経済の恩恵を受けています。

組み込みシステムのサイズは、デジタル時計MP3プレーヤーなどのポータブルパーソナルデバイスから、家電製品、産業用組立ライン、ロボット、輸送車両、信号機コントローラー医療画像システムなどの大型機械まで多岐にわたります。多くの場合、それらは航空機のアビオニクスのような他のマシンのサブシステムを構成します。工場パイプライン電力網などの大規模な設備は、ネットワーク化された複数の組み込みシステムに依存しています。ソフトウェアのカスタマイズを通じて一般化された、プログラマブルロジックコントローラーなどの組み込みシステム多くの場合、それらの機能ユニットを構成します。

組み込みシステムは、単一のマイクロコントローラーチップを備えた複雑さの低いものから、機器ラック内または長距離通信回線を介して接続された広い地理的領域にまたがる 複数のユニット、周辺機器、およびネットワークを備えた非常に高いものまでさまざまです。

歴史

背景

マイクロプロセッサとマイクロコントローラの起源は、 MOSFET(金属酸化物半導体電界効果トランジスタ)から製造された集積回路チップであり、1960年代初頭に開発されたMOS集積回路にまでさかのぼることができます。1964年までに、MOSチップはバイポーラチップよりも高いトランジスタ密度と低い製造コストに達していました。MOSチップは、ムーアの法則によって予測される速度でさらに複雑さを増し、数百のトランジスタとの大規模集積回路(LSI)につながりました。1960年代後半までに単一のMOSチップ上で。エンジニアが完全なコンピュータプロセッサシステムが複数のMOSLSIチップに含まれる可能性があることを認識し始めたため、コンピューティングへのMOSLSIチップの適用が最初のマイクロプロセッサの基礎となりました。[5]

最初のマルチチップマイクロプロセッサである1969年のFour- PhaseSystemsAL1と1970年のGarrettAiResearch MP944は、複数のMOSLSIチップを使用して開発されました 最初のシングルチップマイクロプロセッサは、1971年にリリースされたIntel 4004でした。これは、 Federico Fagginが、 IntelのエンジニアであるMarcianHoffStanMazor、およびBusicomのエンジニアである島正敏とともにシリコンゲートMOSテクノロジを使用して開発しました[6]

開発

最初の認識可能な最新の組み込みシステムの1つは、アポロガイダンスコンピュータでし1965年MITInstrumentationLaboratoryのCharlesStarkDraperによるプロジェクトの開始時に、アポロ誘導コンピューターは、コンピューターのサイズと重量を減らすために 当時新しく開発されたモノリシック集積回路を採用したため、アポロプロジェクトで最も危険なアイテムと見なされていました。

初期の大量生産された組み込みシステムは、 1961年にリリースされたミニットマンミサイル用のオートネティクスD-17ガイダンスコンピュータでした。ミニットマンIIが1966年に生産されたとき、D-17は最初の高さを表す新しいコンピュータに置き換えられました。集積回路の大量使用。

1960年代のこれらの初期のアプリケーション以来、組み込みシステムの価格は下がり、処理能力と機能が劇的に向上しました。初期のマイクロプロセッサであるIntel4004(1971年にリリース)は、電卓やその他の小さなシステム用に設計されましたが、それでも外部メモリとサポートチップが必要でした。1980年代初頭までに、メモリ、入力および出力システムコンポーネントは、マイクロコントローラを形成するプロセッサと同じチップに統合されていました。マイクロコントローラーは、汎用コンピューターのコストが高すぎるアプリケーションを見つけます。マイクロプロセッサとマイクロコントローラのコストが下がるにつれて、組み込みシステムの普及率が高まりました。

今日、比較的低コストのマイクロコントローラは、多数の個別のコンポーネントと同じ役割を果たすようにプログラムすることができます。マイクロコントローラを使用すると、消費者向け製品でも、ポテンショメータ可変コンデンサなどの高価なノブベースのアナログコンポーネントを、マイクロプロセッサによって読み取られる上下ボタンまたはノブに置き換えることが可能になりました。このコンテキストでは、組み込みシステムは通常、従来のソリューションよりも複雑ですが、複雑さのほとんどはマイクロコントローラー自体に含まれています。追加のコンポーネントはほとんど必要ない場合があり、設計作業のほとんどはソフトウェアにあります。ソフトウェアのプロトタイプとテストは、組み込みプロセッサを使用しない新しい回路の設計と構築に比べて迅速に行うことができます。

アプリケーション

Accupoll電子投票機用の組み込みコンピュータサブアセンブリ[7]

組み込みシステムは、一般に、民生用、産業用、自動車用家電製品、医療用、電気通信用、商業用、および軍事用のアプリケーションに見られます。

テレコミュニケーションシステムは、ネットワーク用の電話スイッチからエンドユーザーの携帯電話まで、多数の組み込みシステムを採用していますコンピュータネットワークは、専用ルーターネットワークブリッジを使用してデータをルーティングします。

家庭用電化製品には、MP3プレーヤーテレビ携帯電話ビデオゲーム機デジタルカメラGPS受信機、プリンターなどがあります。電子レンジ洗濯機食器洗い機などの家電製品には、柔軟性、効率、機能を提供する組み込みシステムが含まれています。高度なHVACシステムは、ネットワーク化されたサーモスタットを使用して、時間帯や季節によって変化する可能性のある温度をより正確かつ効率的に制御します。ホームオートメーション有線および無線ネットワークを使用して、照明、気候、セキュリティ、オーディオ/ビジュアル、監視などを制御できます。これらはすべて、センシングと制御に組み込みデバイスを使用します。

飛行機から自動車までの輸送システムは、ますます組み込みシステムを使用しています。新しい飛行機には、慣性誘導システムやGPS受信機などの高度なアビオニクスが搭載されており、これらにもかなりの安全要件があります。ブラシレスDCモーター誘導モーターDCモーターなどのさまざまな電気モーターは、電子モーターコントローラーを使用します。自動車電気自動車、およびハイブリッド車は、効率を最大化し、汚染を減らすために、ますます組み込みシステムを使用しています。組み込みシステムを使用する他の自動車安全システムには、アンチロックブレーキシステム(ABS)、横滑り防止装置(ESC / ESP)、トラクションコントロール(TCS)、自動四輪駆動

医療機器は、監視に組み込みシステムを使用し、非侵襲的内部検査にさまざまな医療画像PET単一光子放射型コンピューター断層撮影(SPECT)、CT、およびMRI )を使用します。医療機器内の組み込みシステムは、多くの場合、産業用コンピューターから電力を供給されます。[8]

組み込みシステムは、セーフティクリティカルシステムに使用されます。オンチップの3GセルラーまたはIoTの監視と制御の目的で他の方法を介して有線または無線ネットワークに接続されていない限り、これらのシステムはハッキングから隔離できるため、より安全になります。[要出典]火災安全のために、システムは、より高い温度を処理し、動作し続けるためのより優れた能力を持つように設計することができます。セキュリティを扱う際に、組み込みシステムは自給自足であり、切断された電気および通信システムを扱うことができます。

モートと呼ばれるミニチュアワイヤレスデバイスは、ネットワーク化されたワイヤレスセンサーです。ワイヤレスセンサーネットワーキングは、高度なIC設計によって可能になった小型化を利用して、完全なワイヤレスサブシステムを高度なセンサーに結合し、人々や企業が物理世界の無数の物を測定し、監視および制御システムを通じてこの情報に基づいて行動できるようにします。これらのモートは完全に自己完結型であり、通常、バッテリーを交換または充電する必要が生じる前に、何年もの間バッテリーソースを使い果たします。

特徴

組み込みシステムは、複数のタスクを実行するための汎用コンピューターではなく、特定のタスクを実行するように設計されています。安全性や使いやすさなどの理由から、満たす必要のあるリアルタイムのパフォーマンス制約があるものもあります。その他の要件はパフォーマンス要件が低いかまったくないため、システムハードウェアを簡素化してコストを削減できます。

組み込みシステムは、必ずしもスタンドアロンデバイスではありません。多くの組み込みシステムは、より一般的な目的に役立つ、より大きなデバイス内の小さな部品で構成されています。たとえば、ギブソンロボットギターは弦をチューニングするための組み込みシステムを備えていますが、ロボットギターの全体的な目的はもちろん音楽を演奏することです。[9]同様に、自動車に組み込またシステムは、自動車自体のサブシステムとして特定の機能を提供します。

e-con Systems eSOM270&eSOM300 Computer on Modules

組み込みシステム用に作成されたプログラム命令はファームウェアと呼ばれ、読み取り専用メモリまたはフラッシュメモリチップに格納されます。それらは限られたコンピュータハードウェアリソースで実行されます:メモリが少ない、キーボードまたは画面が小さいか存在しない。

ユーザーインターフェイス

MicroVGAを使用した組み込みシステムのテキストユーザーインターフェイス[ nb1 ]

組み込みシステムは、1つのタスク専用のシステムでのユーザーインターフェイスがまったくないものから、最新のコンピューターデスクトップオペレーティングシステムに似た複雑なグラフィカルユーザーインターフェイスまでさまざまです。シンプルな組み込みデバイスは、ボタンLED、グラフィックまたはキャラクターLCDHD44780 LCDなど)とシンプルなメニューシステムを使用します。タッチセンシングまたは画面エッジのソフトキーを備えたグラフィック画面を使用するより洗練されたデバイスは、使用するスペースを最小限に抑えながら柔軟性を提供します。ボタンの意味は画面によって変わる可能性があり、選択には目的の場所を指す自然な動作が含まれます。

一部のシステムは、シリアル( RS-232など)またはネットワーク(イーサネットなど)接続を使用して、リモートでユーザーインターフェイスを提供します。このアプローチは、組み込みシステムの機能を拡張し、ディスプレイのコストを回避し、BSPを簡素化し、設計者がPC上にリッチなユーザーインターフェイスを構築できるようにします。この良い例は、組み込みデバイス(IPカメラネットワークルーターなど)で実行されている組み込みHTTPサーバーの組み合わせです。ユーザーインターフェイスは、デバイスに接続されたPC のWebブラウザに表示されます。

組み込みシステムのプロセッサ

一般的な組み込みコンピュータの特性の例は、汎用コンピュータと比較した場合、低消費電力、小型、頑丈な動作範囲、およびユニットあたりの低コストです。これには、限られた処理リソースが犠牲になります。

組み込みシステムで使用するために、多数のマイクロコントローラーが開発されています。汎用マイクロプロセッサは組み込みシステムでも使用されますが、一般に、マイクロコントローラよりも多くのサポート回路が必要です。

既製のコンピュータボード

PC / 104およびPC / 104 +は、小型で少量の組み込みおよび高耐久性システムを対象とした既製のコンピュータボードの標準の例です。これらはほとんどがx86ベースであり、多くの場合、標準のPCと比較すると物理的に小さいですが、ほとんどの単純な(8/16ビット)組み込みシステムと比較するとかなり大きいです。DOSLinuxNetBSD 、またはMicroC / OS-IIQNXVxWorksなどの組み込みリアルタイムオペレーティングシステム(RTOS)を使用できます

小さなサイズや電力効率が主な関心事ではない特定のアプリケーションでは、使用されるコンポーネントは、汎用x86パーソナルコンピューターで使用されるコンポーネントと互換性がある場合があります。VIA EPIAシリーズなどのボードは、PC互換でありながら高度に統合されているか、物理的に小さいか、組み込みエンジニアにとって魅力的な他の属性を備えているため、ギャップを埋めるのに役立ちます。このアプローチの利点は、一般的なソフトウェア開発に使用されるのと同じソフトウェア開発ツールとともに、低コストの商品コンポーネントを使用できることです。このように構築されたシステムは、より大きなデバイスに統合され、単一の役割を果たすため、依然として組み込みと見なされます。このアプローチを採用する可能性のあるデバイスの例は、ATMアーケードマシンです。、アプリケーションに固有のコードが含まれています。

ただし、ほとんどの既製の組み込みシステムボードはPC中心ではなく、ISAまたはPCIバスを使用しません。システムオンチッププロセッサが関係している場合、ディスクリートコンポーネントを接続する標準化されたバスを使用するメリットはほとんどなく、ハードウェアツールとソフトウェアツールの両方の環境が大きく異なる可能性があります。

一般的な設計スタイルの1つは、 ARMベースのシステムオンチッププロセッサや周辺機器、ストレージ用の外部フラッシュメモリ、ランタイム用のDRAMなどの高密度BGAチップを保持する、おそらくビジネスカードのサイズの小さなシステムモジュールを使用します。メモリー。モジュールベンダーは通常、ブートソフトウェアを提供し、通常はLinuxやいくつかのリアルタイムの選択肢を含むオペレーティングシステムの選択肢があることを確認します。これらのモジュールは、専門的なテストの問題に精通している組織によって大量に製造され、アプリケーション固有の外部周辺機器を備えたはるかに少量のカスタムメインボードと組み合わせることができます。このアプローチの顕著な例には、次のものがあります。ArduinoRaspberryPi

ASICおよびFPGASoCソリューション

システムオンチップ(SoC)には、複数のプロセッサ、マルチプライヤ、キャッシュ、さらにはさまざまなタイプのメモリ、および一般に単一チップ上の有線または無線通信用のインターフェイスなどのさまざまな周辺機器で構成される完全なシステムが含まれます多くの場合、グラフィックスプロセッシングユニット(GPU)とDSPがそのようなチップに含まれています。SoCは、特定用途向け集積回路(ASIC)として、または通常は再構成可能 なフィールドプログラマブルゲートアレイ(FPGA)を使用して実装できます。

ASICの実装は、携帯電話スマートフォンなどの非常に大量の組み込みシステムで一般的ですASICまたはFPGAの実装は、アビオニクスのように、信号処理のパフォーマンス、インターフェイス、および信頼性の種類に特別なニーズがある、それほど大量ではない組み込みシステムに使用できます。

周辺機器

組み込みイーサネットチップであるSMSCLAN91C110(SMSC 91x)チップのクローズアップ

組み込みシステムは、次のような 周辺機器を介して外界と通信します。

ツール

他のソフトウェアと同様に、組み込みシステムの設計者は、コンパイラアセンブラ、およびデバッガを使用して、組み込みシステムソフトウェアを開発します。ただし、より具体的なツールを使用する場合もあります。

  • 回路デバッガーまたはエミュレーター(次のセクションを参照)。
  • チェックサムまたはCRCをプログラムに追加して、組み込みシステムがプログラムが有効かどうかをチェックできるようにするユーティリティ。
  • デジタル信号処理を使用するシステムの場合、開発者は計算ノートブックを使用して数学をシミュレートできます。
  • システムレベルのモデリングおよびシミュレーションツールは、プロセッサメモリDMAインターフェイス、バスなどのハードウェアコンポーネントを備えたシステムのシミュレーションモデルを構築し、構成可能なライブラリブロックを使用して状態図またはフロー図としてソフトウェア動作フローを構築するのに役立ちます。シミュレーションは、電力とパフォーマンスのトレードオフ、信頼性分析、およびボトルネック分析を実行することにより、適切なコンポーネントを選択するために実行されます。設計者がアーキテクチャを決定するのに役立つ一般的なレポートには、アプリケーションの遅延、デバイススループット、デバイス使用率、システム全体の消費電力、およびデバイスレベルの消費電力が含まれます。
  • モデルベースの開発ツールは、デジタルフィルター、モーターコントローラー、通信プロトコルのデコード、マルチレートタスクなどのコンポーネントのグラフィカルなデータフローとUML状態チャート図を作成してシミュレートします。
  • カスタムコンパイラとリンカを使用して、特殊なハードウェアを最適化できます。
  • 組み込みシステムには、独自の特別な言語または設計ツールがある場合や、ForthBasicなどの既存の言語に拡張機能が追加されている場合があります。
  • もう1つの方法は、RTOSまたは組み込みオペレーティングシステムを追加することです。
  • 多くの場合、ステートマシンに基づくモデリングおよびコード生成ツール

ソフトウェアツールは、いくつかのソースから入手できます。

  • 組み込み市場を専門とするソフトウェア会社
  • GNUソフトウェア開発ツールから移植
  • 組み込みプロセッサが一般的なPCプロセッサに近い場合は、パーソナルコンピュータの開発ツールを使用できる場合があります。

組み込みシステムの複雑さが増すにつれて、より高レベルのツールとオペレーティングシステムが、それが理にかなっている機械に移行しています。たとえば、携帯電話、携帯情報端末、およびその他の消費者向けコンピュータには、電子機器の製造元以外の人が購入または提供する重要なソフトウェアが必要になることがよくあります。これらのシステムでは、サードパーティのソフトウェアプロバイダーが大規模な市場に販売できるように、 LinuxNetBSDOSGiEmbeddedJavaなどのオープンプログラミング環境が必要です。

デバッグ

組み込みデバッグは、使用可能な機能に応じて、さまざまなレベルで実行される場合があります。考慮事項は次のとおりです。メインアプリケーションの速度が低下するか、デバッグされるシステムまたはアプリケーションが実際のシステムまたはアプリケーションにどれだけ近いか、デバッグ用に設定できるトリガーがどの程度表現力があるか(たとえば、特定のプログラムカウンター値が到達)、およびデバッグプロセスで検査できるもの(メモリのみ、またはメモリとレジスタなど)。

最も単純なものから最も洗練されたものまで、デバッグ手法とシステムは大まかに次の領域にグループ化されます。

  • 組み込みオペレーティングシステム(ForthやBasicなど)が提供するシンプルなシェルを使用した、インタラクティブな常駐デバッグ
  • ロギングまたはシリアルポート出力を使用した外部デバッグ。フラッシュ内のモニターを使用するか、異種マルチコアシステムでも機能するRemedyDebuggerなどのデバッグサーバーを使用して操作をトレースします。
  • インサーキットデバッガ(ICD)、JTAGまたはNexusインターフェイスを介してマイクロプロセッサに接続するハードウェアデバイス。[10]これにより、マイクロプロセッサの動作を外部で制御できますが、通常、プロセッサの特定のデバッグ機能に制限されます。
  • インサーキットエミュレータ(ICE)は、マイクロプロセッサをシミュレートされた同等のものに置き換え、マイクロプロセッサのすべての側面を完全に制御します。
  • 完全なエミュレーターは、ハードウェアのすべての側面のシミュレーションを提供し、すべてのハードウェアを制御および変更できるようにし、通常のPCでデバッグできるようにします。欠点は、費用と操作の遅さであり、場合によっては、最終的なシステムよりも最大100倍遅くなります。
  • SoCデザインの場合、一般的なアプローチは、FPGAプロトタイプボードでデザインを検証およびデバッグすることです。Certus [11]などのツールを使用して、信号を観測できるようにするプローブをFPGARTLに挿入します。これは、ロジックアナライザと同様の機能を備えた複数のFPGAにわたるハードウェア、ファームウェア、およびソフトウェアの相互作用をデバッグするために使用されます。
  • ソフトウェアのみのデバッガーには、ハードウェアを変更する必要がないという利点がありますが、時間とストレージスペースを節約するために、記録する内容を注意深く制御する必要があります。[12]

外部デバッグに制限されていない限り、プログラマーは通常、ツールを介してソフトウェアをロードおよび実行し、プロセッサーで実行されているコードを表示し、その操作を開始または停止できます。コードのビューは、HLL ソースコードアセンブリコード、または両方の組み合わせの場合があります。

組み込みシステムはさまざまな要素で構成されることが多いため、デバッグ戦略は異なる場合があります。たとえば、ソフトウェア(およびマイクロプロセッサ)中心の組み込みシステムのデバッグは、ほとんどの処理が周辺機器(DSP、FPGA、およびコプロセッサ)によって実行される組み込みシステムのデバッグとは異なります。今日、ますます多くの組み込みシステムが複数のシングルプロセッサコアを使用しています。マルチコア開発の一般的な問題は、ソフトウェア実行の適切な同期です。この場合、組み込みシステムの設計では、プロセッサコア間のバス上のデータトラフィックをチェックする必要があります。これには、たとえば ロジックアナライザを使用して、信号/バスレベルで非常に低レベルのデバッグが必要です。

トレース

リアルタイムオペレーティングシステムは、多くの場合、オペレーティングシステムイベントのトレースをサポートしています。グラフィカルビューは、システムの動作の記録に基づいて、ホストPCツールによって表示されます。トレースの記録は、ソフトウェア、RTOS、または特別なトレースハードウェアで実行できます。RTOSトレースを使用すると、開発者はソフトウェアシステムのタイミングとパフォーマンスの問題を理解し、高レベルのシステム動作を十分に理解できます。

信頼性

組み込みシステムは、多くの場合、エラーなしで何年も継続して実行されることが期待されるマシンに常駐し、場合によっては、エラーが発生した場合に自動的に回復します。したがって、ソフトウェアは通常、パーソナルコンピュータよりも慎重に開発およびテストされ、ディスクドライブ、スイッチ、ボタンなどの信頼性の低い機械的な可動部品は避けられます。

特定の信頼性の問題には、次のものが含まれます。

  • システムを安全にシャットダウンして修復できないか、アクセスできないため修復できません。例としては、宇宙システム、海底ケーブル、ナビゲーションビーコン、ボアホールシステム、自動車などがあります。
  • 安全上の理由から、システムは稼働し続ける必要があります。「リンプモード」は許容範囲が狭くなります。多くの場合、バックアップはオペレーターによって選択されます。例としては、航空機のナビゲーション、原子炉制御システム、セーフティクリティカルな化学工場の制御、列車の信号などがあります。
  • システムはシャットダウンすると多額のお金を失います:電話スイッチ、工場制御、橋とエレベーターの制御、資金移動とマーケットメイク、自動販売とサービス。

エラーから回復するために、さまざまな手法が、場合によっては組み合わせて使用​​されます。メモリリークなどのソフトウェアのバグと、ハードウェアの ソフトエラーの両方があります。

  • 部分的な機能を提供するソフトウェアの「リンプモード」に切り替えることができる冗長スペアをソフトウェアがウォッチドッグサブシステムに定期的に通知しない限り、コンピューターをリセットするウォッチドッグタイマー
  • トラステッドコンピューティングベース(TCB)アーキテクチャを使用した設計[13]により、安全性と信頼性の高いシステム環境が保証されます。
  • 組み込みシステム用に設計されたハイパーバイザーは、任意のサブシステムコンポーネントに安全なカプセル化を提供できるため、侵害されたソフトウェアコンポーネントが他のサブシステムや特権レベルのシステムソフトウェアに干渉することはありません。[14]このカプセル化は、障害が1つのサブシステムから別のサブシステムに伝播するのを防ぎ、それによって信頼性を向上させます。これにより、障害検出時にサブシステムを自動的にシャットダウンして再起動することもできます。
  • 免疫を意識したプログラミングは、より信頼性の高い組み込みシステムコードの作成に役立ち、開発者を支援するために、 MISRA C / C ++などのさまざまなガイドラインや業界標準を利用できます。[15] [16]これらのガイドラインとコーディングルールは、開発者がさまざまな方法で信頼性の高いポータブルファームウェアを作成できるようにすることを目的としています。通常、実行時エラー(メモリリーク、無効なポインタの使用)、実行時の使用につながる可能性のあるコーディング慣行に対してアドバイスまたは義務付けを行います。時間チェックと例外処理(範囲/健全性チェック、ゼロ除算とバッファーインデックスの妥当性チェック、ロジックチェックのデフォルトの場合)、ループバウンディング、人間が読み取り可能で、コメントが多く、構造化されたコードの生成、および言語のあいまいさの回避コンパイラーによって引き起こされる不整合または副作用(式の評価の順序付け、再帰、特定のタイプのマクロ)につながる可能性があります。これらのルールは、多くの場合、コード静的チェッカーや有界モデル検査と組み合わせて使用​​できます。機能検証の目的で、またコードタイミングプロパティの決定を支援します。[15]

大音量と小音量

携帯音楽プレーヤー携帯電話などの大容量システムの場合、通常、コストを最小限に抑えることが設計上の主要な考慮事項です。エンジニアは通常、必要な機能を実装するのに「十分」なハードウェアを選択します。

少量またはプロトタイプの組み込みシステムの場合、プログラムを制限するか、オペレーティングシステムをRTOSに置き換えることにより、汎用コンピュータを適合させることができます。

組み込みソフトウェアアーキテクチャ

1978年に、米国電機工業会は、シングルボードコンピューター、数値、およびイベントベースのコントローラーなど、ほぼすべてのコンピューターベースのコントローラーを含む、プログラム可能なマイクロコントローラーの標準をリリースしました。

今日一般的に使用されているソフトウェアアーキテクチャには、いくつかの異なるタイプがあります。

シンプルな制御ループ

この設計では、ソフトウェアにはループがあります。ループはサブルーチンを呼び出し、各サブルーチンはハードウェアまたはソフトウェアの一部を管理します。したがって、それは単純な制御ループまたは制御ループと呼ばれます。

割り込み制御システム

一部の組み込みシステムは、主に割り込みによって制御されます。これは、システムによって実行されるタスクがさまざまな種類のイベントによってトリガーされることを意味します。割り込みは、たとえば、事前定義された周波数のタイマーによって、またはバイトを受信するシリアルポートコントローラによって生成される可能性があります。

これらの種類のシステムは、イベントハンドラーが低レイテンシーを必要とし、イベントハンドラーが短くて単純な場合に使用されます。通常、これらの種類のシステムはメインループでも単純なタスクを実行しますが、このタスクは予期しない遅延にあまり敏感ではありません。

割り込みハンドラは、キュー構造に長いタスクを追加する場合があります。その後、割り込みハンドラが終了した後、これらのタスクはメインループによって実行されます。この方法により、システムは個別のプロセスを持つマルチタスクカーネルに近づきます。

協調マルチタスク

非プリエンプティブマルチタスクシステムは、ループがAPIに隠されていることを除いて、単純な制御ループスキームと非常によく似ています[3] [1]プログラマーは一連のタスクを定義し、各タスクは独自の環境を取得して「実行」します。タスクがアイドル状態になると、通常は「一時停止」、「待機」、「待機」と呼ばれるアイドルルーチンを呼び出します。 「yield」、「nop」(操作なしを表す)など。

長所と短所は、制御ループの場合と似ていますが、新しいソフトウェアを追加する方が、新しいタスクを作成するか、キューに追加するだけで簡単になる点が異なります。

プリエンプティブマルチタスクまたはマルチスレッド

このタイプのシステムでは、低レベルのコードがタイマー(割り込みに接続されている)に基づいてタスクまたはスレッドを切り替えます。これは、システムに「オペレーティングシステム」カーネルがあると一般に見なされるレベルです。必要な機能の量に応じて、概念的に並行して実行される複数のタスクを管理する複雑さが多少なりとも発生します。

コードは別のタスクのデータに損傷を与える可能性があるため(MMUを使用する大規模なシステムを除く)、プログラムは慎重に設計およびテストする必要があり、共有データへのアクセスは、メッセージキューセマフォまたは-同期スキームのブロック。

これらの複雑さのために、組織はRTOSを使用するのが一般的であり、アプリケーションプログラマーは、少なくとも大規模なシステムでは、オペレーティングシステムサービスではなくデバイス機能に集中できます。小規模なシステムでは、メモリサイズ、パフォーマンス、またはバッテリ寿命に関する制限のために、一般的なリアルタイムシステムに関連するオーバーヘッドを許容できないことがよくあります。ただし、アプリケーション開発プロセスを開始する前に選択を行う必要があるため、RTOSが必要であるという選択には独自の問題があります。このタイミングにより、開発者は現在の要件に基づいてデバイスに組み込みオペレーティングシステムを選択する必要があり、将来のオプションが大幅に制限されます。[17]製品の寿命が短くなるにつれて、将来のオプションの制限がより問題になります。さらに、デバイスがシリアル、USB、TCP / IP、 Bluetooth無線LAN、トランクラジオ、複数のチャネル、データと音声、拡張グラフィックス、複数の状態、複数のスレッドなどの変数を管理する必要があるため、複雑さのレベルは継続的に高まっています。多数の待機状態など。これらの傾向は、RTOSに加えて 組み込みミドルウェアの採用につながっています。

マイクロカーネルとエクソカーネル

マイクロカーネルは、リアルタイムOSからの論理的なステップアップです。通常の配置では、オペレーティングシステムのカーネルがメモリを割り当て、CPUを別の実行スレッドに切り替えます。ユーザーモードプロセスは、ファイルシステム、ネットワークインターフェイスなどの主要な機能を実装します。

一般に、マイクロカーネルは、タスクの切り替えとタスク間の通信が速い場合は成功し、遅い場合は失敗します。

エクソカーネルは、通常のサブルーチン呼び出しによって効率的に通信します。システム内のハードウェアとすべてのソフトウェアは、アプリケーションプログラマーが利用でき、拡張可能です。

モノリシックカーネル

この場合、高度な機能を備えた比較的大きなカーネルが、組み込み環境に適合するように適合されます。これにより、プログラマーはLinuxMicrosoft Windowsなどのデスクトップオペレーティングシステムに似た環境を利用できるため、開発において非常に生産的です。欠点としては、かなり多くのハードウェアリソースが必要であり、多くの場合、より高価であり、これらのカーネルは複雑であるため、予測と信頼性が低くなる可能性があります。

組み込みモノリシックカーネルの一般的な例は、組み込みLinuxVXWorks、およびWindowsCEです。

ハードウェアのコストが増加しているにもかかわらず、このタイプの組み込みシステムは、特にワイヤレスルーターGPSナビゲーションシステムなどのより強力な組み込みデバイスで人気が高まっています理由のいくつかを次に示します。

  • 一般的な組み込みチップセットへのポートが利用可能です。
  • これらは、デバイスドライバーWebサーバーファイアウォール、およびその他のコードで公開されているコードの再利用を許可します。
  • 開発システムは幅広い機能セットから始めることができ、次に、不要な機能を除外するようにディストリビューションを構成して、消費するメモリの費用を節約できます。
  • 多くのエンジニアは、アプリケーションコードをユーザーモードで実行する方が信頼性が高く、デバッグが容易であるため、開発プロセスが容易になり、コードの移植性が向上すると考えています。[要出典]
  • 保証できるよりも速い応答を必要とする機能は、多くの場合、ハードウェアに配置できます。

追加のソフトウェアコンポーネント

コアオペレーティングシステムに加えて、多くの組み込みシステムには追加の上位層ソフトウェアコンポーネントがあります。これらのコンポーネントは、 CANTCP / IPFTPHTTPHTTPSなどのネットワークプロトコルスタックで構成されており、 FATやフラッシュメモリ管理システムなどのストレージ機能も含まれています。組み込みデバイスにオーディオおよびビデオ機能がある場合、適切なドライバーとコーデックがシステムに存在します。モノリシックカーネルの場合、これらのソフトウェアレイヤーの多くが含まれています。RTOSカテゴリでは、追加のソフトウェアコンポーネントの可用性は、商用製品によって異なります。

ドメイン固有のアーキテクチャ

自動車分野では、AUTOSARは組み込みソフトウェアの標準アーキテクチャです。

も参照してください

メモ

  1. ^ MicroVGAの詳細については、このPDFを参照してください。

参考文献

  1. ^ a b マイケル・バー「組み込みシステム用語集」ニュートリノテクニカルライブラリ2007年4月21日取得
  2. ^ ヒース、スティーブ(2003)。組み込みシステムの設計設計エンジニア向けEDNシリーズ(2版)。ニューンズ。p。 2ISBN 978-0-7506-5546-0組み込みシステムは、機能または機能の範囲を制御するために構築されたマイクロプロセッサベースのシステムです。
  3. ^ a b マイケル・バー; アンソニーJ.マッサ(2006)。「はじめに」組み込みシステムのプログラミング:CおよびGNU開発ツールを使用オライリー。pp。1–2。ISBN 978-0-596-00983-0
  4. ^ バー、マイケル(2009年8月1日)。「Cでの本物の男性プログラム」組み込みシステム設計TechInsights(ユナイテッドビジネスメディア)。p。2 2009年12月23日取得
  5. ^ シリフ、ケン(2016年8月30日)。「最初のマイクロプロセッサの驚くべき話」IEEEスペクトラム電気電子学会53(9):48–54。土井10.1109 /MSPEC.2016.7551353S2CID32003640 _ 2019年10月13日取得 
  6. ^ 「1971:マイクロプロセッサはCPU機能を単一のチップに統合します」シリコンエンジンコンピュータ歴史博物館2019年7月22日取得
  7. ^ 「電子フロンティア財団」電子フロンティア財団
  8. ^ 組み込みシステムDellOEMソリューション| デルContent.dell.com(2011-01-04)。2013-02-06に取得。
  9. ^ デビッドキャリー(2008-04-22)。「内部:ロボットギターは自動調整を組み込んでいます」組み込みシステム設計2008年7月8日にオリジナルからアーカイブされました
  10. ^ タンクレティ、マシュー; Hossain、Mohammad Sajjad; Bagchi、Saurabh; Raghunathan、Vijay(2011)。「Aveksha:ワイヤレス組み込みシステムの非侵入型トレースおよびプロファイリングのためのハードウェア-ソフトウェアアプローチ」。組み込みネットワークセンサーシステムに関する第9回ACM会議の議事録SenSys'11。米国ニューヨーク州ニューヨーク:ACM:288–301。土井10.1145 /2070942.2070972ISBN 9781450307185S2CID14769602 _
  11. ^ 「Tektronixはプロトタイピングを揺るがし、組み込み機器はボードをエミュレーターステータスにブーストします」電子工学ジャーナル。2012-10-30 2012年10月30日取得
  12. ^ タンクレティ、マシュー; Sundaram、Vinaitheerthan; Bagchi、Saurabh; オイグスター、パトリック(2015)。「TARDIS:ワイヤレスセンサーネットワークにおけるソフトウェアのみのシステムレベルの記録と再生」。センサーネットワークにおける情報処理に関する第14回国際会議の議事録IPSN'15。米国ニューヨーク州ニューヨーク:ACM:286–297。土井10.1145 /2737095.2737096ISBN 9781450334754S2CID10120929 _
  13. ^ ハイザー、ゲルノート(2007年12月)。「あなたのシステムは安全ですか?それを証明してください!」(PDF);ログイン:2(6):35–8。
  14. ^ Moratelli、C; ヨハン、S; ネベス、M; ヘッセル、F(2016)。「安全なIoTアプリケーションの設計のための組み込み仮想化」ラピッドシステムプロトタイピング(RSP)に関する2016年国際シンポジウム:2–6。土井10.1145 /2990299.2990301ISBN 9781450345354S2CID17466572  _ 2018年2月2日取得
  15. ^ a b 短い、マイケル(2008年3月)。「信頼できるリアルタイム組み込みシステムの開発ガイドライン」コンピュータシステムとアプリケーションに関する2008IEEE / ACS国際会議:1032-1039。土井10.1109 /AICCSA.2008.4493674ISBN 978-1-4244-1967-8S2CID14163138 _
  16. ^ モーター産業ソフトウェア信頼性協会。「MISRAC:2012第3版、第1版」2022-02-03を取得しました。
  17. ^ 「複数の組み込みプラットフォーム間での作業」(PDF)clarinox 2010年8月17日取得

さらに読む

  • ジョン・カツォリス(2005年5月)。組み込みハードウェアの設計、第2版オライリー。ISBN 0-596-00755-8
  • ジェームズM.コンラッド; アレクサンダーG.ディーン(2011年9月)。組み込みシステム、ルネサスRX62Nマイクロコントローラを使用した紹介ミクリウム。ISBN 978-1935-7729-96
  • クラウスエルク(2016年8月)。モノのインターネット、基本、テクノロジー、ベストプラクティスのための組み込みソフトウェア開発ISBN 978-1534602533

外部リンク