RAL RAL ST
Modul Register Abstraction Layer: kombinuje pôvodné ovládače HAL/LL od STMicroelectronics s vlastnou vrstvou rozhrania Embedbits nezávislou od hardvéru (Port/). Používa sa ako git submodul repozitára Bsp-Ral, jedna vetva pre každú rodinu/vydanie STM32.
Prehľad
Upstream projekt (Stm32_Drv/) | STMicroelectronics/stm32<family>xx_hal_driver (napr. stm32g4xx_hal_driver) |
Obsah vlastnený Embedbits (Port/) | Jednotné pomenovanie funkcií/hlavičiek nezávislé od rodiny, nad API ST HAL/LL |
| Úloha v Bsp-Ral | Zdroj pre Ral_Lib (odporúčané, rozhranie len z Port/) aj HAL_LL_Lib (plný prístup k ST HAL/LL) |
| Licencia | Zdrojové kódy ovládačov odvodené od ST nájdete v Stm32_Drv/License.md; vrstva Port/ od Embedbits sa riadi licenciou nadradeného repozitára |
| Model údržby | Stm32_Drv/ je zrkadlený z upstreamu ST pre každú rodinu a nesmie sa lokálne upravovať; Port/ udržiava Embedbits |
⚠️
Stm32_Drv/nikdy neupravujte priamo — aktualizácie sa sledujú voči pôvodnému repozitáru ST. Zmeny nezávislé od hardvéru patria doPort/.
Štruktúra vetiev
| Vzor vetvy | Účel |
|---|---|
STM32<family> (napr. STM32G4, STM32U5, STM32H7) | Vetva rodiny, odvodená od master, obsahuje ovládače ST HAL/LL a rozhranie Port/ pre danú rodinu |
STM32<family>_<major>.x (napr. STM32G4_1.x) | Vetva hlavného vydania, odvodená od vetvy rodiny, sleduje hlavné vydanie ST HAL |
STM32<family>_<major>.<minor> (napr. STM32G4_1.2) | Vetva vedľajšieho vydania/opravy, odvodená od vetvy hlavného vydania |
Všetky vetvy rodín sú odvodené od master.
Štruktúra repozitára
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é rozhranie
Port/ sprístupňuje jednu hlavičku pre každú perifériu s pomenovaním funkcií/typov nezávislým od rodiny STM32, takže aplikačný kód môže prechádzať medzi rodinami STM32 bez zmeny vlastných zdrojových súborov:
#include "Stm32_tim.h" // Automatically selects the correct HAL headers based on the target MCU define
Použitie
Ral_Lib aj HAL_LL_Lib sú definované v koreňovom CMakeLists.txt repozitára Bsp-Ral a využívajú dva adresáre tohto modulu:
| Cieľ CMake | Verejná cesta pre include | Určené použitie |
|---|---|---|
Ral_Lib | RAL_ST/Port/ | Odporúčané. Stabilné API nezávislé od hardvéru pre aplikačný kód/middleware |
HAL_LL_Lib | RAL_ST/Stm32_Drv/Inc/ | Plný prístup k ST HAL/LL, iba pre internú integráciu a testovanie |
# 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álne podporované rozhranie pre externé projekty.HAL_LL_Libpoužívajte len vtedy, keď je výslovne potrebné priame API ST HAL/LL.
Licencia
Komponenty Stm32_Drv/ sú odvodené od ovládačov HAL/LL od STMicroelectronics a riadia sa ich príslušnou licenciou — pozrite Stm32_Drv/License.md. Rozhranie vrstvy Port/ je pôvodný kód Embedbits, distribuovaný pod licenciou nadradeného repozitára Bsp-Ral.