自動車や家電品などを制御するシステムを開発する業界のことを「組み込み業界」と言います。
IT業界の中の1つではありますが、システムの性質上ハードウェアの関連する用語も多く、他のIT業界ではあまり聞き慣れない用語も頻繁に使われます。
本記事では組み込み業界初心者の人に向けて、「これだけは知っておいたほうが良い」基礎用語を説明します。
- ASIC
- A/Dコンバータ
- CAN
- C言語
- D/Aコンバータ
- DMA
- EEPROM
- FPGA
- I/Oポート
- MISRA-C
- RS-232C
- アセンブリ言語
- インターバルタイマ
- ウォッチドグタイマ
- スタックポインタ
- チャタリング
- デューティ比
- ハードウェア割り込み
- ファームウェア
- ブート
- フリップフロップ
- メモリ空間
- リアルタイムOS
- レジスタ
- 論理回路
- 割り込み
ASIC
集積回路(IC)の一種です。一般に売られている汎用的なICとは違い、特定用途向けに設計・開発されたICのことをASIC(Application Specific Integrated Circuit)と呼びます。
A/Dコンバータ
アナログ信号をデジタル信号に変換するための部品です。温度検知や光検知など、センサー系などで使われます。
CAN
車載システムにおいて、ECU(電子制御装置)とブレーキやエンジン間で情報を伝達するためのネットワーク規格です。
C言語
プログラミング言語の一種です。50年近く前に作られた古い言語ですが、組み込み業界ではいまでもバリバリ現役の言語です。
「高級アセンブリ」と呼ばれることもありますが、ハードウェアを制御するための低レベルプログラミングに向いています。
D/Aコンバータ
デジタル信号をアナログ信号に変換するための部品です。映像情報出力(ディスプレイ)、音声情報出力(スピーカー)などの用途で主に使用されます。
DMA
特定の電気信号パターンなどをトリガとして、CPUを介さずにデータを転送する方式のことを言います。一般的にはDMAを制御するために専用IC(DMAコントローラ)が用いられます。
EEPROM
組み込み系システムにおいて、各種設定情報などを記憶するのによく用いられる、書き換え可能なメモリです。 不揮発性メモリなので電源を切っても情報を保持します。
FPGA
論理回路の構成を書き換え可能なプログラマブルICのことです。機能が固定化されているASICよりも柔軟な使い方ができますが、その分コストが高いです。
開発初期の頃はFPGAで作り、仕様が固まったらASICに置き換える、という使い方をすることもあります。
I/Oポート
コンピュータ内部で各デバイスが通信を行う際の窓口です。
MISRA-C
組み込み系システム開発向けに、コーディング規約を標準化したものです。安全性確保のために高品質のソフトウェア開発が求められる車載システムでよく使われています。
RS-232C
シリアル伝送方式のインターフェイスの1つ。パソコンの世界ではもはやレガシーなインターフェイスですが、組み込み系開発の世界ではまだまだ現役。パソコン環境でコーディング&コンパイルしたプログラムを組み込みデバイスに転送する際に使われたりします。
アセンブリ言語
2進数や16進数で表現されるマシン語を視覚的にわかりやすい命令語(ニーモック)に置き換えた低水準言語です。
組み込み系システムを開発する際にはアセンブラでしか記述できない箇所なんてのもありますので、まだまだ必須のスキルです。
またプログラムをデバッグする際、アセンブリ・コードにしかブレイクポイントを設定できない開発環境なんてのもあったりしますので、その場合はC言語をアセンブラしたコードを読み解いて自分のデバッグしたい場所を探す必要があります。
インターバルタイマ
一定周期で(CPUに対して)割り込みを発生させるためのタイマ。 定期的に実行したい処理がある場合などに使用されます。
ウォッチドグタイマ
コンピュータが正常に動作しているかどうかを監視するためのタイマです。一定時間内にタイマがクリアされない場合は異常動作をしていると判断し、ハードウェアリセットをかけることにより、システムの暴走を防ぎます。
スタックポインタ
一時的にデータを退避しておく(例:関数呼び出し時の引数や演算途中のデータなど)ための領域をスタック領域と言いますが、 スタックポインタとはその領域のアドレスを管理するためのレジスタです。
チャタリング
電気信号の接点部分が外部要因によってON/OFFを繰り返す現象のことです。
デューティ比
信号全体周期において、Hi状態が継続される時間の比率のことを言います。HI状態の時間1に対し、Low状態の時間が4の場合、デューティ比は0.2となります。
ハードウェア割り込み
CPU(MPU) 以外のデバイスから発信される割り込み要求のことです。この割り込み要求に対し、あらかじめソフトウェア側で割り込みハンドラを用意し、任意の処理をさせます。
ファームウェア
家電品や自動車、工作機械などを制御するプログラムのことです。
ブート
システムを起動することです。ブートを行うためにROMなどに書き込んでおくプログラムのことをブートローダと言います。
フリップフロップ
対象となる1ビットの状態が0か1かを保持する記憶回路のことです。
メモリ空間
データの格納位置を表すためにメモリには1バイト単位で0番地~最大番地まで連続でアドレスが割り振られて、その番地を元にメモリにアクセスすることになります。これをメモリ空間と言います。
リアルタイムOS
OS(オペレーティングシステム。WindowsやMacなど)の一種で、時間的制約が厳しい処理を実行するために必要な機能を備えています。リアルタイム性が求められる組み込み系システムで主に用いられます。
レジスタ
CPU(MPU)やFPGA内部に用意されている記憶領域で、ハードウェアを制御したり状態を読み込むのに使用します。通常、組み込みシステムにおいてソフトウェアがハードウェアにアクセスする際は、このレジスタを介して行います。
論理回路
論理演算を行うための電子回路(または、電気回路)のことです。AND回路(論理積)、OR回路(論理和)、XOR回路(排他的論理和)、NOT回路(否定)などがあります。
割り込み
CPU(MPU)が処理を実行しているときにその処理を中断させて別の処理を実行する仕組みのことを割り込みと言います。ハードウェア割り込み(外部割り込み)とソフトウェア割り込み(内部割り込み)があります。