Preskočiť na hlavný obsah

Prehľad RAL

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

Tento repozitár poskytuje štruktúrovaný základ pre vývoj vstavaných systémov na mikrokontroléroch STM32.
Zlučuje niekoľko hardvérových abstrakčných vrstiev a konfigurácií špecifických pre zariadenia do modulárnych komponentov.


📁 Štruktúra repozitára​

├── CMSIS # Core CMSIS components provided by ARM
│ ├── CMSIS
│ │ ├── Core
│ │ | └── Include # ARM Cortex-M core headers
│ │ ├── Core_A
│ │ ├── CoreValidation
│ │ ├── DAP
│ │ ├── DoxyGen
│ │ ├── Driver
│ │ ├── DSP
│ │ ├── NN
│ │ ├── Pack
│ │ ├── RTOS
│ │ ├── RTOS2
│ │ └── Utilities
│ └── Device
│ └── ARM
|
├── CMSIS_ST # CMSIS Device files from STMicroelectronics
│ ├── Include # STM32 device header files (e.g., STM32U5xx.h)
│ └── Source # System initialization files (system_stm32u5xx.c, etc.)
|
├── RAL_ST # Register Abstraction Layer (formerly HAL drivers)
| ├── Port # Interface layer for user access to HAL without MCU-family dependency
| └── Stm32_Drv # Low-Layer drivers provided by ST
| ├── Inc # STM32 device header files (e.g., stm32u5xx_ll_tim.h)
| └── Src # System initialization files (stm32u5xx_ll_tim.c, etc.)
│
└── LICENSE

Prehľad modulov​

CMSIS (od ARM)​

Obsahuje oficiálny štandard ARM Cortex Microcontroller Software Interface Standard.
Poskytuje:

  • Vrstvu prístupu k periférii jadra (Cortex-M, -A)
  • Knižnice DSP a NN
  • Rozhrania pre RTOS a ovládače
  • Definície zariadení pre referenčné architektúry ARM

Štruktúra vetiev:

  • CMSIS – základná vetva synchronizovaná s oficiálnym repozitárom ARM CMSIS
  • CMSIS_<major>.<minor>.x – vetvy vydaní zrkadliace oficiálne vydania

CMSIS_ST (od STMicroelectronics)​

Obsahuje rozšírenia CMSIS špecifické pre ST, distribuované ako súčasť firmvérových balíkov STM32Cube. Zahŕňa definície periférií, štartovací kód a systémovú konfiguráciu pre mikrokontroléry STM32.

Poskytuje:

  • Hlavičkové súbory zariadení, definície registrov a štartovacie súbory pre rodiny STM32
  • Rozšírenia špecifické pre ST pre spracovanie systému a prerušení

Štruktúra vetiev:

  • STM32U5, STM32H7 atď. – vetvy rodín
  • STM32U5_1.5.x – vetva vydania odvodená od vetvy rodiny

RAL_ST (Register Abstraction Layer)​

Implementuje rozhranie hardvérovej abstrakcie postavené nad ovládačmi HAL od ST.
Podadresár Port zavádza jednotné rozhranie (Stm32_tim.h, Stm32_i2c.h, Stm32_spi.h ...), ktoré umožňuje bezproblémové prepínanie medzi rodinami MCU STM32 bez zmeny kódu na používateľskej úrovni.

Štruktúra:

  • Stm32_Drv/ – pôvodné ovládače HAL a LL od STMicroelectronics
  • Port/ – sprostredkujúca vrstva rozhrania (Stm32_im.h atď.)
    • Poskytuje jednotné pomenovanie funkcií nezávislé od rodiny MCU
    • Umožňuje rýchle prepínanie medzi rodinami STM32 bez zmeny používateľského kódu

Príklad:

#include "Stm32_tim.h" // Automatically selects correct HAL headers based on MCU definition

Štruktúra vetiev:

  • STM32U5, STM32H7 atď. – vetvy rodín
  • STM32U5_1.5.x, STM32H7_1.14.x, ... – vetvy vydaní odvodené od vetiev rodín
  • Všetky vetvy rodín sú odvodené od vetvy master.

Použitie​

Tento repozitár je plne integrovaný s CMake a poskytuje dva knižničné ciele, ktoré môžete podľa svojich nárokov na abstrakciu prilinkovať k svojmu projektu.

Ral_Lib — odporúčané rozhranie​

Ral_Lib predstavuje oficiálne rozhranie Register Abstraction Layer.
Sprístupňuje iba verejné hlavičky umiestnené v adresári Port/, čím zaisťuje stabilné a od hardvéru nezávislé API pre používateľské aplikácie.

Kľúčové vlastnosti:

  • Verejná cesta pre include: RAL_ST/Port/
  • Minimálna plocha závislostí
  • Zachováva plnú prenosnosť medzi rodinami STM32
  • Určené na zahrnutie do používateľských modulov alebo middleware

Príklad pre CMake:

# Add RAL interface to your project
target_link_libraries(MyApp PRIVATE Ral_Lib)

Príklad použitia:

#include "Stm32_tim.h" // Unified abstraction header

⚠️ Cieľ Ral_Lib je jediným oficiálne podporovaným rozhraním pre externé projekty.


HAL_LL_Lib — rozšírený nízkoúrovňový prístup​

HAL_LL_Lib poskytuje prístup k celej množine hlavičkových súborov dostupných v module RAL_ST,
vrátane všetkých hlavičiek ovládačov HAL a LL od STMicroelectronics.

Kľúčové vlastnosti:

  • Verejná cesta pre include: RAL_ST/Stm32_Drv/Inc/
  • Obsahuje všetky pôvodné hlavičky ST HAL a LL
  • Určené len na internú integráciu a testovanie

Príklad pre CMake:

# Add full HAL layer (not recommended for modular projects)
target_link_libraries(MyApp PRIVATE HAL_LL_Lib)

⚠️ HAL_LL_Lib používajte iba vtedy, keď sú nízkoúrovňové API ST HAL alebo LL výslovne potrebné.
Priame použitie môže znížiť modularitu a prenosnosť vášho kódu.


Integrácia do zostavenia​

Obe knižnice sú automaticky konfigurované a exportované systémom zostavenia CMake. Ak ich chcete zahrnúť, uistite sa, že váš CMakeLists.txt obsahuje nasledujúci riadok:

add_subdirectory(RAL)

Po tomto kroku sú Ral_Lib aj HAL_LL_Lib dostupné ako ciele CMake.


Filozofia repozitára​

Tento repozitár slúži ako centrálny abstrakčný uzol, ktorý zaisťuje jednotné pomenovanie, štruktúru a prenosnosť naprieč rodinami STM32.
Každý submodul sa vyvíja v súlade s aktualizáciami od výrobcu a pritom zachováva čistú hranicu rozhrania pre používateľské aplikácie.


📚 Licencia​

Všetok zdrojový kód CMSIS a HAL sa riadi príslušnými licenciami výrobcov (ARM a STMicroelectronics).
Vlastné rozšírenia (napr. vrstva Port/) sú distribuované pod súborom LICENSE repozitára.

Podpora rodín​

G4H5H7L4U5
CMSIS ST✅✅✅✅✅
RAL ST✅✅✅✅✅