Перейти до основного вмісту

Огляд RAL

Підтримувані родини STM32: G4 · H5 · H7 · L4 · U5

Цей репозиторій забезпечує структуровану основу для розробки вбудованих систем на мікроконтролерах STM32.
Він об'єднує кілька рівнів апаратної абстракції та конфігурацій, специфічних для пристроїв, у модульні компоненти.


📁 Структура репозиторію​

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

Огляд модулів​

CMSIS (від ARM)​

Містить офіційний стандарт ARM Cortex Microcontroller Software Interface Standard.
Надає:

  • Рівень доступу до периферії ядра (Cortex-M, -A)
  • Бібліотеки DSP та NN
  • Інтерфейси RTOS і драйверів
  • Визначення пристроїв для еталонних архітектур ARM

Структура гілок:

  • CMSIS – базова гілка, синхронізована з офіційним репозиторієм ARM CMSIS
  • CMSIS_<major>.<minor>.x – релізні гілки, що відображають офіційні релізи

CMSIS_ST (від STMicroelectronics)​

Містить специфічні для ST розширення CMSIS, які поширюються у складі пакетів прошивки STM32Cube. Включає визначення периферії, startup-код і системну конфігурацію для мікроконтролерів STM32.

Надає:

  • Заголовки пристроїв, визначення регістрів і startup-файли для родин STM32
  • Специфічні для ST розширення обробки системних подій і переривань

Структура гілок:

  • STM32U5, STM32H7 тощо – гілки родин
  • STM32U5_1.5.x – релізна гілка, похідна від гілки родини

RAL_ST (Register Abstraction Layer)​

Реалізує інтерфейс апаратної абстракції поверх драйверів ST HAL.
Підкаталог Port вводить уніфікований інтерфейс (Stm32_tim.h, Stm32_i2c.h, Stm32_spi.h ...), який дає змогу безшовно перемикатися між родинами MCU STM32 без зміни користувацького коду.

Структура:

  • Stm32_Drv/ – оригінальні драйвери HAL і LL від STMicroelectronics
  • Port/ – проміжний інтерфейсний рівень (Stm32_im.h тощо)
    • Надає уніфіковані назви функцій, незалежні від родини MCU
    • Забезпечує швидке перемикання між родинами STM32 без зміни користувацького коду

Приклад:

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

Структура гілок:

  • STM32U5, STM32H7 тощо – гілки родин
  • STM32U5_1.5.x, STM32H7_1.14.x, ... – релізні гілки, похідні від гілок родин
  • Усі гілки родин відгалужуються від гілки master.

Використання​

Цей репозиторій повністю інтегрований із CMake і надає дві цілі-бібліотеки, які можна підключити до вашого проєкту залежно від потрібного рівня абстракції.

Ral_Lib — рекомендований інтерфейс​

Ral_Lib є офіційним інтерфейсом Register Abstraction Layer.
Він відкриває лише публічні заголовки з каталогу Port/, забезпечуючи стабільний і незалежний від апаратури API для користувацьких застосунків.

Ключові властивості:

  • Публічний шлях для include: RAL_ST/Port/
  • Мінімальна поверхня залежностей
  • Зберігає повну переносимість між родинами STM32
  • Призначений для підключення в користувацьких модулях або middleware

Приклад для CMake:

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

Приклад використання:

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

⚠️ Ціль Ral_Lib є єдиним офіційно підтримуваним інтерфейсом для зовнішніх проєктів.


HAL_LL_Lib — розширений низькорівневий доступ​

HAL_LL_Lib надає доступ до всього набору заголовкових файлів модуля RAL_ST,
включно з усіма заголовками драйверів HAL і LL від STMicroelectronics.

Ключові властивості:

  • Публічний шлях для include: RAL_ST/Stm32_Drv/Inc/
  • Містить усі оригінальні заголовки ST HAL і LL
  • Призначений лише для внутрішньої інтеграції та тестування

Приклад для CMake:

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

⚠️ Використовуйте HAL_LL_Lib лише тоді, коли явно потрібні низькорівневі API ST HAL або LL.
Пряме використання може знизити модульність і переносимість вашого коду.


Інтеграція в збірку​

Обидві бібліотеки автоматично налаштовуються та експортуються системою збірки CMake. Щоб підключити їх, переконайтеся, що ваш CMakeLists.txt містить таке:

add_subdirectory(RAL)

Після цього кроку Ral_Lib і HAL_LL_Lib стають доступними як цілі CMake.


Філософія репозиторію​

Цей репозиторій слугує центральним вузлом абстракції, що забезпечує узгоджені назви, структуру та переносимість між родинами STM32.
Кожен підмодуль розвивається синхронно з оновленнями вендора, зберігаючи чітку межу інтерфейсу для користувацьких застосунків.


📚 Ліцензія​

Увесь вихідний код CMSIS і HAL підпорядковується відповідним ліцензіям вендорів (ARM і STMicroelectronics).
Власні розширення (наприклад, рівень Port/) поширюються за файлом LICENSE репозиторію.

Підтримка родин​

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