RAL RAL ST
Modul Register Abstraction Layer: kombinuje původní ovladače HAL/LL od STMicroelectronics s vlastní vrstvou rozhraní nezávislou na hardwaru od Embedbits (Port/). Používá se jako git submodul repozitáře Bsp-Ral, jedna větev pro každou rodinu/vydání STM32.
Přehled
Upstream projekt (Stm32_Drv/) | STMicroelectronics/stm32<family>xx_hal_driver (např. stm32g4xx_hal_driver) |
Obsah spravovaný Embedbits (Port/) | Jednotné, na rodině nezávislé pojmenování funkcí a hlavičkových souborů nad API HAL/LL od ST |
| Role v Bsp-Ral | Zdroj pro Ral_Lib (doporučené rozhraní pouze s Port/) i HAL_LL_Lib (plný přístup k HAL/LL od ST) |
| Licence | Zdrojové kódy ovladačů odvozené od ST viz Stm32_Drv/License.md; vrstva Port/ od Embedbits se řídí licencí nadřazeného repozitáře |
| Model údržby | Stm32_Drv/ je zrcadlen z upstreamu ST pro každou rodinu a nesmí se lokálně upravovat; Port/ udržuje Embedbits |
⚠️ Adresář
Stm32_Drv/přímo neupravujte — aktualizace se sledují vůči původnímu repozitáři ST. Změny nezávislé na hardwaru patří doPort/.
Struktura větví
| Vzor větve | Účel |
|---|---|
STM32<family> (např. STM32G4, STM32U5, STM32H7) | Větev rodiny, odvozená od master, obsahující ovladače HAL/LL od ST a rozhraní Port/ pro danou rodinu |
STM32<family>_<major>.x (např. STM32G4_1.x) | Větev hlavního vydání, odvozená od větve rodiny, sledující hlavní vydání HAL od ST |
STM32<family>_<major>.<minor> (např. STM32G4_1.2) | Větev vedlejšího vydání/patche, odvozená od větve hlavního vydání |
Všechny větve rodin jsou odvozeny od master.
Struktura repozitáře
RAL_ST
├── Port # Embedbits' hardware-independent interface layer
│ ├── Stm32.h # Umbrella include
│ ├── Stm32_tim.h # Unified timer interface
│ ├── Stm32_i2c.h # Unified I2C interface
│ ├── Stm32_spi.h # Unified SPI interface
│ ├── Stm32_gpio.h
│ ├── Stm32_usart.h
│ └── ... # One header per peripheral, family-independent naming
└── Stm32_Drv # Original HAL/LL drivers, unmodified from STMicroelectronics
├── Inc # HAL/LL headers (e.g. stm32g4xx_ll_tim.h)
├── Src # HAL/LL sources (e.g. stm32g4xx_ll_tim.c)
└── License.md
Port/ — jednotné rozhraní
Port/ zpřístupňuje jeden hlavičkový soubor pro každou periferii s pojmenováním funkcí a typů nezávislým na rodině STM32, takže aplikační kód může přepínat mezi rodinami STM32 bez změny vlastních zdrojových souborů:
#include "Stm32_tim.h" // Automatically selects the correct HAL headers based on the target MCU define
Použití
Ral_Lib i HAL_LL_Lib jsou definovány v nejvyšším souboru CMakeLists.txt repozitáře Bsp-Ral a využívají dva adresáře tohoto modulu:
| Target CMake | Veřejná include cesta | Zamýšlené použití |
|---|---|---|
Ral_Lib | RAL_ST/Port/ | Doporučeno. Stabilní API nezávislé na hardwaru pro aplikační/middlewarový kód |
HAL_LL_Lib | RAL_ST/Stm32_Drv/Inc/ | Plný přístup k HAL/LL od ST, pouze pro interní integraci a testování |
# Recommended interface
target_link_libraries(MyApp PRIVATE Ral_Lib)
# Extended low-level access (not recommended for modular projects)
target_link_libraries(MyApp PRIVATE HAL_LL_Lib)
#include "Stm32_tim.h" // Unified abstraction header, via Ral_Lib
⚠️
Ral_Libje jediné oficiálně podporované rozhraní pro externí projekty.HAL_LL_Libpoužívejte pouze tehdy, když je přímé API HAL/LL od ST výslovně vyžadováno.
Licence
Komponenty v Stm32_Drv/ jsou odvozeny od ovladačů HAL/LL společnosti STMicroelectronics a řídí se jejich příslušnou licencí — viz Stm32_Drv/License.md. Vrstva rozhraní Port/ je původní kód Embedbits, distribuovaný pod licencí nadřazeného repozitáře Bsp-Ral.