IT用語集 › プログラミング › ハードウェア抽象化レイヤ (HAL)

ハードウェア抽象化レイヤ (HAL)

プログラミング Svenska → 更新: 2026-11-02

レジスタのアドレスやチップごとの違いを、uart_write()のような関数の裏に隠す薄いソフトウェア層。

HALがなければ、アプリケーションは周辺機器のレジスタを直接叩くことになり、マイコンを変えるたびに書き直しになる。HALがあれば、アプリケーションはインターフェースを呼ぶだけで、変わるのは下の層だけだ。1993年のWindows NTはこの設計で作られ、hal.dllがカーネルとマザーボード固有の部分を分離したことで、同じOSがx86、MIPS、Alphaで動いた。AndroidにもカメラやセンサーのためのHALモジュールがある。

組み込みの世界では、STのSTM32Cube HALのようなベンダー製か、Rustのembedded-halのようなコミュニティ製を使う。後者ではセンサーのドライバが特定のチップではなくトレイトに対して書かれる。定番の不満は、汎用性に代償があることだ。ピンを切り替えるHAL呼び出しが50サイクルかかる一方、レジスタへの書き込みなら1サイクルで済む。結局、多くのプロジェクトは、肝心な割り込み一か所だけを除いてHALだらけになる。

← 用語集に戻る