Přehled RAL
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 CMSISCMSIS_<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,STM32H7atd. – větve rodinSTM32U5_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 STMicroelectronicsPort/– prostřední vrstva rozhraní (Stm32_im.hatd.)- 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,STM32H7atd. – větve rodinSTM32U5_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_Libje 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_Libpouží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
| G4 | H5 | H7 | L4 | U5 | |
|---|---|---|---|---|---|
| CMSIS ST | ✅ | ✅ | ✅ | ✅ | ✅ |
| RAL ST | ✅ | ✅ | ✅ | ✅ | ✅ |