第12章. ソフトウェアとコーディング
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
このの章では、組込みシステムの文脈の中で、ソフトウェアとコードに関連する問題を調査している。トピックは以下の通りである:
どのようなプログラミング言語が使われているか
オペレーティングシステム(OS)が必要な場合
リアルタイムオペレーティングシステムと汎用オペレーティングシステムの違いを理解する。
どのリアルタイムオペレーティングシステムを使うのが適切か
マイクロコントローラー(MCU)のポートを設定する
デバイスドライバコードの作成
悪条件付きで機能するシステムのための防御的コーディング
これらのトピックをカバーすることで、コーディングスキルを持つ設計者は、組込みシステムのコンフィギュレーションとプログラミングに必要な知識を得ることができる。
本書は、組込みシステムのコーディングではなく、組込みシステムのエレクトロニクスに焦点を当て ていることを忘れないでほしい。組込みシステムのコーディングに関する本は世の中にたくさんあり、良いコーディングの参考書や勉強のための教科書は、「さらなる読み取り」にいくつか提案されている。
そのため、組み込みシステム用の "Hello World!"プログラムを書くためのチュートリアルはここには含まれていない。
コーディング言語
組み込みシステムのプログラミングへのアプローチは、通常3つのパスのいずれかを取る:
- ステートマシンを定義する
FPGA(フィールドプログラマブルゲートアレイ)やCPLD(コンプレックスプログラマブルロジックデバイス)のプログラミングでは、論理構造は通常ステートマシンを定義する。ステートマシンは条件付きで状態変化を定義する。このプログラミングには、ハードウェア記述言語(HDL)、通常はVerilogまたはVHDLが使用される。
- アセンブリ言語を使用する
単純なMCU(ペリフェラル・インタフェース・コントローラなど)や初期世代のプロセッサ(8051、6502、およびそれらの亜種)では、アセンブラ・コードを使用する必要があるかもしれない。これらのデバイスの中には、コンパイラが存在しないものや、メモリが限られていてコンパイルされたプログラミングが入らないものがある。また、非常に高速な処理や、タイミングやクロック数の正確な制御が必要な場合も、アセンブラ・コードが必要になることがある。
- コンパイルされたコードを使用する
コントローラコードに使われる言語は、Cまたはその変種(C++、C#、Embedded C)が主流である。Pythonのいくつかの亜種は、組み込みシステムの限られたメモリ機能に合わせて開発されている。
MCUの場合、組み込みコード開発の大半はCまたはその変種で行われる。(2023年現在、MCUでのPythonの使用は増加しているが、依然としてCが主流である)CPLDやFPGAデバイスの場合、プログラミングはVerilogまたはVHDLを使用して行われる。
オペレーティングシステム
一般化OSは、タスク管理、ファイルストレージ管理、メモリー管理、周辺機器(キーボード、マウス、ビデオ、オーディオ、イーサネット、USBなど)とのインタフェースなど、コンピューターの機能を制御する。リアルタイム・オペレーティング・システム(RTOS)は、タイムリーに応答する機能を追加する。ハード "RTOSは、例外なく最大時間で応答するように設計されている。ソフト」RTOSは、最大応答時間が「ほぼ」満たされるように構成される。詳細は各RTOSに固有であり、タイミングが重要な場合は、適合性を判断するために調べる必要がある。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access