Программирование ARM Чем отличаются друг от друга CMSIS, STM32CubeMX и MBED Tue, April 23 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Чем отличаются друг от друга CMSIS, STM32CubeMX и MBED Печать
Добавил(а) microsin   

По сути это все библиотеки для платформы ARM Cortex (STM32). CMSIS содержит низкоуровневые, не зависящие от производителя методы для доступа к аппаратуре микроконтроллеров ARM Cortex. Некоторые производители, например STM, предоставляют библиотеки поверх CMSIS или в дополнение к CMSIS, такие как STM32CUBE. Библиотеки MDED предоставляют высокоуровневый, независимый от производителя интерфейс программирования (C++ API) для аппаратуры микроконтроллеров различных производителей. Библиотека MBED может использовать соглашения по программированию CMSIS, вызовы функций CMSIS, или может быть функций STM32CUBE. Детали реализации зависят от используемой части библиотеки и выбранной модели микроконтроллера.

В программе на основе MBED есть следующие уровни (если спускаться от высокого уровня к самому низкому):

6. Ваша программа на C++.
5. Библиотека MBED C++.
4. Слой HAL библиотеки MBED, нацеленный на определенную модель микроконтроллера.
3. Слой HAL библиотек, предоставленный производителем (такой как STM32CubeMX) - не обязательный слой.
2. Слой библиотек CMSIS, нацеленный на определенную модель микроконтроллера.
1. Микроконтроллер.

Слой CMSIS работает как легкая абстракция, находящаяся между остальным кодом и железом микроконтроллера. Изначально CMSIS представлял из себя только заголовочные файлы с описанием регистров, но потом были добавлены низкоуровневые функции. В основном CMSIS гарантирует, что доступ к регистрам CPU, прерываниям и т. п. будет (почти) одинаковым для всех поддерживаемых моделей микроконтроллеров. Тогда предоставленный производителем слой HAL (например STM32Cube) может использоваться для упрощения доступа к остальной периферийной части микроконтроллера. Слой MBED HAL предоставляет традиционный API на языке C для управления периферийными устройствами микроконтроллера, и он может использовать (а может и не использовать) для этого опциональный слой HAL от производителя микроконтроллера. Библиотека MBED C++ содержит обычные объекты C++ для различных периферийных устройств (например DigitalOut, SPI, Serial). Эти объекты используют традиционный API на языке C, предоставленный слоем HAL. И наконец, Ваша программа находится на самой вершине этого стека, и она использует объекты C++ для управления микроконтроллером на верхнем уровне, используя все эти промежуточные слои абстракции.

В сущности все эти слои позволяют программе быть независимой от выбранного микроконтроллера. То есть Вы не должны иметь дело с библиотекой STM32Cube, или с HAL API, используя вместо этого библиотеку MBED C++. В редких случаях понадобится использовать некоторые функции CMSIS, такие как __disable_irq() и NVIC_SystemReset().

[Ссылки]

1. STM32: аббревиатуры и термины.
2. Cortex Microcontroller Software Interface Standard.

 

Добавить комментарий


Защитный код
Обновить

Top of Page