Přeskočit na hlavní obsah

Přehled RAL

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

Tento repozitář poskytuje strukturovaný základ pro vývoj vestavěných systémů založených na mikrokontrolérech STM32.
Sdružuje několik vrstev hardwarové abstrakce a konfigurací specifických pro dané zařízení do modulárních komponent.


📁 Struktura repozitáře​

├── 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

Přehled modulů​

CMSIS (od ARM)​

Obsahuje oficiální standard ARM Cortex Microcontroller Software Interface Standard.
Poskytuje:

  • Vrstvu pro přístup k periferiím jádra (Cortex-M, -A)
  • Knihovny DSP a NN
  • Rozhraní pro RTOS a ovladače
  • Definice zařízení pro referenční architektury ARM

Struktura větví:

  • CMSIS – základní větev synchronizovaná s oficiálním repozitářem ARM CMSIS
  • CMSIS_<major>.<minor>.x – release větve odrážející oficiální vydání

CMSIS_ST (od STMicroelectronics)​

Obsahuje rozšíření CMSIS specifická pro ST, distribuovaná jako součást firmware balíčků STM32Cube. Zahrnuje definice periferií, startup kód a systémovou konfiguraci pro mikrokontroléry STM32.

Poskytuje:

  • Hlavičkové soubory zařízení, definice registrů a startup soubory pro rodiny STM32
  • Systémová rozšíření a rozšíření pro zpracování přerušení specifická pro ST

Struktura větví:

  • STM32U5, STM32H7 atd. – větve rodin
  • STM32U5_1.5.x – release větev odvozená od větve rodiny

RAL_ST (Register Abstraction Layer)​

Implementuje rozhraní hardwarové abstrakce postavené nad ovladači HAL od ST.
Podadresář Port zavádí jednotné rozhraní (Stm32_tim.h, Stm32_i2c.h, Stm32_spi.h ...), které umožňuje bezproblémové přepínání mezi rodinami MCU STM32 bez změny uživatelského kódu.

Struktura:

  • Stm32_Drv/ – původní ovladače HAL a LL od STMicroelectronics
  • Port/ – prostřední vrstva rozhraní (Stm32_im.h atd.)
    • Poskytuje jednotné pojmenování funkcí nezávislé na rodině MCU
    • Umožňuje rychlé přepínání mezi rodinami STM32 bez změny uživatelského kódu

Příklad:

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

Struktura větví:

  • STM32U5, STM32H7 atd. – větve rodin
  • STM32U5_1.5.x, STM32H7_1.14.x, ... – release větve odvozené od větví rodin
  • Všechny větve rodin jsou odvozeny od větve master.

Použití​

Tento repozitář je plně integrován s CMake a poskytuje dva knihovní targety, které lze podle potřebné úrovně abstrakce prolinkovat s vaším projektem.

Ral_Lib — doporučené rozhraní​

Ral_Lib představuje oficiální rozhraní Register Abstraction Layer.
Zpřístupňuje pouze veřejné hlavičkové soubory umístěné v adresáři Port/, což uživatelským aplikacím zaručuje stabilní API nezávislé na hardwaru.

Klíčové vlastnosti:

  • Veřejná include cesta: RAL_ST/Port/
  • Minimální povrch závislostí
  • Zachovává plnou přenositelnost mezi rodinami STM32
  • Určeno k zahrnutí do uživatelských modulů nebo middlewaru

Příklad pro CMake:

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

Příklad použití:

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

⚠️ Target Ral_Lib je jediné oficiálně podporované rozhraní pro externí projekty.


HAL_LL_Lib — rozšířený nízkoúrovňový přístup​

HAL_LL_Lib poskytuje přístup k celé sadě hlavičkových souborů dostupných v modulu RAL_ST,
včetně všech hlavičkových souborů ovladačů HAL a LL od STMicroelectronics.

Klíčové vlastnosti:

  • Veřejná include cesta: RAL_ST/Stm32_Drv/Inc/
  • Obsahuje všechny původní hlavičkové soubory HAL a LL od ST
  • Určeno pouze pro interní integraci a testování

Příklad pro CMake:

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

⚠️ HAL_LL_Lib používejte pouze tehdy, když jsou nízkoúrovňová API HAL nebo LL od ST výslovně vyžadována.
Přímé použití může snížit modularitu a přenositelnost vašeho kódu.


Integrace do sestavení​

Obě knihovny jsou automaticky konfigurovány a exportovány systémem sestavení CMake. Chcete-li je zahrnout, zajistěte, aby váš CMakeLists.txt obsahoval následující:

add_subdirectory(RAL)

Po tomto kroku jsou Ral_Lib i HAL_LL_Lib dostupné jako targety CMake.


Filozofie repozitáře​

Tento repozitář slouží jako centrální abstrakční uzel, který zajišťuje jednotné pojmenování, strukturu a přenositelnost napříč rodinami STM32.
Každý podmodul se vyvíjí v souladu s aktualizacemi výrobce a zároveň zachovává čistou hranici rozhraní pro uživatelské aplikace.


📚 Licence​

Veškerý zdrojový kód CMSIS a HAL se řídí příslušnými licencemi svých výrobců (ARM a STMicroelectronics).
Vlastní rozšíření (např. vrstva Port/) jsou distribuována pod souborem LICENSE tohoto repozitáře.

Podpora rodin​

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