Prehľad RAL
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 CMSISCMSIS_<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,STM32H7atď. – vetvy rodínSTM32U5_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 STMicroelectronicsPort/– sprostredkujúca vrstva rozhrania (Stm32_im.hatď.)- 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,STM32H7atď. – vetvy rodínSTM32U5_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_Libje 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_Libpouží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
| G4 | H5 | H7 | L4 | U5 | |
|---|---|---|---|---|---|
| CMSIS ST | ✅ | ✅ | ✅ | ✅ | ✅ |
| RAL ST | ✅ | ✅ | ✅ | ✅ | ✅ |