デバイスドライバとは?でばいすどらいば
デバイスドライバとは、ハードウェアのレジスタ操作や割込み処理を隠蔽し、上位のソフトウェアへ統一的なインタフェースを提供するソフトウェア層。初期化、レジスタ操作、排他制御、上位向けAPIまでを含み、ハードウェアの差異を吸収して上位の移植性を高める役割を担う。
最終更新:2026-10-06
この語が出る過去問を解く →背景
レジスタの番地やビット配置は、同じ機能でもデバイスごとに違う。これをアプリケーション本体が直接触ると、マイコンを1つ変えただけで全体を書き直すことになり、量産中の部品変更や後継機種への展開が事実上できなくなる。差異を引き受ける層を1枚挟むことで、変更の影響範囲をその層の中に閉じ込めるのがこの構造の目的である。シラバスもデバイスドライバの設計を独立した項目として置いており、ドライバが無いハードウェアを実装する場合に自分で作れることまでを求めている。
具体例
STMicroelectronicsのSTM32では、ハードウェア依存部をHAL(Hardware Abstraction Layer)として切り出し、上位はオープン/リード/ライト/制御という形の呼び出しだけを使う。マイコンを同系列の別品種へ変更しても、置き換えるのはこの層で、アプリケーション側の修正は不要にできる。
試験での引っ掛け
移植性が上がるのは上位のアプリケーション側であって、ドライバ自身はハードウェア依存のまま残る——差異を吸収する側が依存を引き受ける、という向きを取り違えないこと。また割込みハンドラはドライバの一部だが、ドライバ=割込みハンドラではない。抽象化の層を厚くするほど呼び出しの遅延が増える点も、実時間性との取引になる。
関連用語
出た過去問
出典:平成28年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7(IPA)
リアルタイムシステムにおいて、アプリケーションタスクの要求によって入出力を行うデバイスドライバのタスク部が、要求された処理が完了したときに行う通知処理はどれか。
正解:イベントフラグを使って入出力要求元のタスクに入出力完了を通知する。
要点:完了通知はOSでなく要求元タスクへ同期機能で行う
デバイスドライバのタスク部は、割込みハンドラから処理完了を受け取ったあと、その事実を要求元のアプリケーションタスクへ知らせる必要がある。リアルタイムOSではイベントフラグやセマフォといった同期機能を使い、完了を待って待ち状態になっているタスクを実行可能状態へ戻す。通知の相手はOSやハードウェアではなく、あくまで待っているタスクである。
出典:平成31年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問22(IPA)
組込みソフトウェア開発を行うために、ターゲットシステム上で未完成の周辺ハードウェアが正しく動作しているようにエミュレーションするデバイスドライバを開発した。この…
正解:スタブ
要点:未完成の下位機能を代替する仮モジュールがスタブ
スタブとは、テスト対象から呼び出される下位のモジュールがまだ完成していないときに、その代わりを務める仮のモジュールである。ここでは未完成の周辺ハードウェアの振る舞いを模擬するデバイスドライバが、上位のソフトウェアから呼ばれる下位側の代役となっているのでスタブに当たる。逆に上位モジュールの代わりに下位を呼び出す役はドライバと呼ばれる。
出典・参考
公式シラバスの8 組込みシステムのソフトウェア設計・製造 > 8-2デバイスドライバの設計に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。