HAL
HAL
znamená Hardware Abstraction Layer.
Česky je to hardwarová abstrakční vrstva.
Jejím úkolem je schovat část detailů konkrétní periferie
a nabídnout programátorovi pohodlnější funkce.
Místo nastavování jednotlivých bitů často pracujete s funkcemi typu:
HAL_GPIO_WritePin(...);
HAL_UART_Transmit(...);
HAL_ADC_Start(...);
Takový kód se čte lépe než dlouhá sada zápisů do registrů. Zároveň ale musíte vědět, že pod těmito funkcemi se pořád děje práce s hardwarem. Jen ji zrovna neděláte ručně.
Výhody
- Rychlejší začátek projektu.
- Čitelnější kód pro běžné operace.
- Často dobré příklady od výrobce.
- Menší šance, že zapomenete nějaký základní krok inicializace.
Nevýhody
- Knihovna může být větší a pomalejší.
- Některé speciální režimy periferie nemusí být dobře podporované.
- Když něco nefunguje, chyba se může schovat hlouběji v knihovně.
HAL je výborný sluha pro běžné věci. Když ale potřebujete přesně vědět, který bit se kdy nastaví, je čas otevřít manuál a podívat se o vrstvu níž.
HAL není jen STM32
U STM32 se název HAL používá přímo v knihovnách
STM32Cube.
Podobnou vrstvu ale najdete i jinde,
jen se může jmenovat jinak.
Výrobce může mluvit o SDK, drivers, PLIB
nebo prostě o knihovnách pro periférie.
Například Microchip má své knihovny a konfiguraci v ekosystému
Harmony 3.
Myšlenka je pořád podobná:
program nepíše přímo do registrů,
ale volá funkce připravené výrobcem.
Konkrétní zdrojové soubory HALu jsou například v
STM32CubeH7 HAL/LL driverech.