Přeskočit na hlavní obsah

RAL RAL ST

Podporované rodiny STM32: G4 · H5 · H7 · L4 · U5

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-RalZdroj pro Ral_Lib (doporučené rozhraní pouze s Port/) i HAL_LL_Lib (plný přístup k HAL/LL od ST)
LicenceZdrojové 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žbyStm32_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ří do Port/.


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 CMakeVeřejná include cestaZamýšlené použití
Ral_LibRAL_ST/Port/Doporučeno. Stabilní API nezávislé na hardwaru pro aplikační/middlewarový kód
HAL_LL_LibRAL_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_Lib je jediné oficiálně podporované rozhraní pro externí projekty. HAL_LL_Lib použí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.