記事検索

検索ワードを入力してください。
Sky Tech Blog
ドライバと​HALの​違いに​ついて

ドライバと​HALの​違いに​ついて

この記事では、組み込みソフトウェア開発における「ドライバ」と「HAL(ハードウェア抽象化レイヤー)」の違いについて説明しています。「ドライバ」は特定のハードウェアを直接制御するソフトウェアであり、「HAL」はハードウェアの違いを抽象化して共通的な制御を提供するソフトウェアです。

組み込みソフトウェアの開発において、下位レイヤーを意識した開発はまだまだ現役です。
ドライバとHAL、それぞれの違いについて簡単に知っておくことで、設計時の選択肢も増えると思いますので、 どのようなものなのか、違いについてご紹介いたします。

ドライバとは​何か?

ドライバは、特定のハードウェア(以下、HW)を制御するためのソフトウェア(以下、SW)です。 HWのレジスタ操作や割り込み制御などの処理を行い、特定のHWを直接制御します。
対象のHWに特化した制御を行うことを目的としており、そのHW固有の制御のみとなるので無駄がなく処理速度も高速です。

ただし、ドライバの処理内容はHWに依存するため、ドライバが上位SWに公開するインターフェースについてもHW依存となる傾向が強く、
HWが変更された場合、そのドライバを使用している上位SWにも修正が必要になることが多くなります。

HALとは​何か?

HALHardware Abstraction Layerの略で、「ハードウェア抽象化レイヤー」とも呼ばれ、 HWを抽象化することで、HWの違いを意識することなく動作できるようにするためのSWです。
HWにアクセスするためのAPIを提供し、上位のSWがこれを利用して操作することで、HWの違いを意識することなく制御することができます。 上位SWはHALとしかやり取りしていないのでHWに依存しておらず、ドライバ以下が入れ替わっても修正する必要がありません。 ただし、処理が増えるため処理速度の面ではドライバ単体よりも不利になります。

ドライバと​HALの​違い

ドライバは特定のHWに依存する処理を行って、直接的に制御する手段を提供し、 HALはHWに依存する処理を隠蔽して、共通的な制御を行う手段を提供します。

特長 ドライバ HAL
役割 ハードウェアの直接制御 ハードウェアの抽象化
抽象化レベル 低い 高い
移植性 低い(ハードウェアに依存する) 高い(ハードウェアに依存しない)
提供するもの ハードウェア固有の操作 機能単位の制御インターフェース(API)
メリット 処理速度が速い 上位SWの変更コストを低く抑えられる
デメリット ハードウェアに依存する 処理速度が低下する

上記は1例です。実際の開発においては、HWやアーキテクチャ、設計によってドライバとHALの関係が逆転していたり、 同一の扱いとなっている場合もありますが、開発対象の構成がどのようになっているかを意識する事で、効率やメンテナンス性の高いSWの設計・実装に繋がります。
まずは知るというところから意識してみてはいかがでしょうか。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム