Сегодня будем знакомиться с CMSIS.
CMSIS — Cortex Microcontroller Software Interface Standard
представляет из себя набор проектов которые помогают ускорить разработку программного обеспечения на процессорах ARM Cortex, это повышает эффективность сотрудничества в индустрии между компаниями и ускоряет выход на рынок новых технологий. Создание программного обеспечения является одним из основных факторов стоимости в индустрии встраиваемых систем.
Стандартизация интерфейсов программного обеспечения во всей линейке микросхем на ядре Cortex-M у производителей, особенно при создании новых проектов или миграции существующего программного обеспечения на новое устройство, означает значительное сокращение расходов.
CMSIS содержит следующие компоненты:
- CMSIS-CORE: API для ядра Cortex-M и периферии. Обеспечивает стандартный интерфейс для Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23, Cortex-M33, SC000,и SC300. Включает так же встроенные SIMD функции для Cortex-M4, Cortex-M7, и Cortex M33 SIMD инструкции.
- СMSIS-Core (Cortex-A): API и базовую систему времени выполнения для ядра процессора и периферийных устройств Cortex-A5 / A7 / A9.
- CMSIS-Driver: Определяет общие интерфейсы периферийных драйверов для промежуточного программного обеспечения, повышает переносимость. API является RTOS независимым и соединяет периферию микроконтроллера с промежуточным программным обеспечением, которые могут создавать например стеки связи, файловая система или графический интерфейс пользователя (GUI).
- CMSIS-DSP: DSP библиотека содержит более 60 функций для различных типов данных: фиксированная точка (дробность q7, q15, q31) и число одинарной точности (32-bit). Библиотека доступна для Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23 and Cortex-M33. Cortex-M4, Cortex-M7, и Cortex-M33 оптимизирована с набором инструкций SIMD.
- CMSIS-NN: CMSIS-NN представляет собой набор эффективных ядер нейронных сетей, разработанных для максимальной производительности и минимизации объема памяти нейронных сетей на процессорных ядрах Cortex-M.
- CMSIS-RTOS v1: Общий API для операционных систем реального времени, а также эталонная реализация на основе RTX. Он обеспечивает стандартизованный программный интерфейс, который переносимый между другими RTOS и позволяет программным компонентам работать в нескольких системах RTOS.
- CMSIS-RTOS v2: расширение CMSIS-RTOS v1 с поддержкой Armv8-M архитектуры, создание динамических обьектов, поддержка для многоядерных систем, и бинарный совместимый интерфейс с ABI компиляторами.
- CMSIS-Pack: Описывает механизм поставки программных компонентов, параметры устройств и поддержку оценочной платы. Описание пакета на основе XML содержит пакет файлов: исходные файла, заголовочные файлы, программные библиотеки, шаблоны кода, документацию, параметры устройства, код запуска (startup), алгоритмы программирования, примеры проектов.
- CMSIS-SVD: Описание периферии. Содержит детальное описание сравнимое со справочным руководством (reference manual).
- CMSIS-DAP: Отладочный порт. Стандартное программное обеспечение для модуля отладки. Который соединяет порт отладки через USB. Отладчики которые запущены на компьютере соединяются через USB к модулю отладки, а модуль отладки к устройству на котором запущенно ПО. Модуль отладки соединяется с устройством через JTAG или SW интерфейс. Процессоры ARM Cortex обеспечивают CoreSight отладку и трассировку. DAP поддерживает устройства содержащие один или несколько процессоров ARM Cortex.
- CMSIS-Zone: определение и разделение системных ресурсов. Определяет методы описания системных ресурсов и разделение этих ресурсов на несколько проектов и областей выполнения.
Мотивация
CMSIS был создан, чтобы помочь отрасли в стандартизации. Он обеспечивает согласованные слои программного обеспечения и поддержку устройств в широком диапазоне инструментов разработки и микроконтроллеров. CMSIS — это не огромный программный уровень, который вводит служебные данные и не определяет стандартные периферийные устройства. Таким образом, кремниевая промышленность может поддерживать широкие вариации устройств на базе процессоров Cortex-M с этим общим стандартом.
В частности, преимуществами CMSIS являются:
- В целом CMSIS снижает кривую обучения, затраты на разработку и время выхода на рынок. Разработчики могут быстрее писать программное обеспечение через множество простых в использовании стандартизированных программных интерфейсов.
- Согласованные программные интерфейсы улучшают переносимость программного обеспечения и повторное использование. Универсальные программные библиотеки и интерфейсы обеспечивают согласованную программную среду.
- Обеспечивает интерфейсы для отладочной связи, отладку периферийных представлений, доставки программного обеспечения и поддержки устройств, чтобы сократить время выхода на рынок для нового развертывания микроконтроллеров.
- Предоставляет независимый от компилятора слой, который позволяет использовать разные компиляторы. CMSIS поддерживается основными компиляторами.
- Улучшает отладку программ с периферийной информацией для отладчиков и каналов ITM для вывода в формате printf и узнавания ядра RTOS.
- CMSIS поставляется в формате CMSIS-Pack, который обеспечивает быструю доставку программного обеспечения, упрощает обновления и обеспечивает последовательную интеграцию в инструменты разработки.
- CMSIS-Zone упростит системный ресурс и разделение, поскольку он управляет конфигурацией нескольких процессоров, областей памяти и периферийных устройств.
Правила кодирования
CMSIS использует следующие основные правила кодирования и соглашения:
- Соответствует ANSI C (C99) и C++ (C++ 03).
- Использует стандартные типы данных ANSI C, определенные в
. - Переменные и параметры имеют полный тип данных.
- Выражения для констант #define заключены в круглые скобки.
- Соответствует MISRA 2012 (но не требует соблюдения MISRA). Нарушение правил MISRA документировано.
Кроме того, CMSIS рекомендует следующие соглашения для идентификаторов:
- CAPITAL имена для определения основных регистров, периферийных регистров и инструкций CPU.
- CamelCase имена для идентификации имен функций и функций прерывания.
- Namespace_ префиксы избегают конфликтов с идентификаторами пользователей и предоставляют функциональные группы (например, для периферийных устройств, RTOS или библиотеки DSP).
CMSIS документируется в исходных файлах с помощью:
- Комментарии, которые используют стиль C или C++.
-
Doxygen совместимые комментарии к функции, которые обеспечивают:
- краткий обзор функций.
- подробное описание функции.
- подробное описание параметров.
- подробная информация о возвращаемых значениях.
Doxygen комментарий, пример:
/** * @brief Enable Interrupt in NVIC Interrupt Controller * @param IRQn interrupt number that specifies the interrupt * @return none. * Enable the specified interrupt in the NVIC Interrupt Controller. * Other settings of the interrupt such as priority are not affected. */
Проверка
Различные компоненты CMSIS Версии 5 проверяются с использованием основных компиляторов. Чтобы получить разнообразный охват, Arm использует компилятор Arm Compiler v5 (на основе EDG фронтенд), Arm Compiler v6 (на основе LLVM-интерфейса) и компилятор GCC в различных тестах. Для каждого компонента раздел «Проверка» описывает область действия различных проверок.
Компоненты CMSIS совместимы с различными языковыми стандартами на C и C ++. Компоненты CMSIS соответствуют бинарному интерфейсу приложений (ABI) для архитектуры Arm (исключение CMSIS-RTOS v1). Это обеспечивает интерфейсы API C, которые поддерживают взаимодействие между различными пакетами инструментов (тулчейны).
Поскольку CMSIS определяет интерфейсы и функции API, которые масштабируются для широкого спектра процессоров и устройств, объем охвата тестирования во время выполнения ограничен. Однако несколько компонентов проверяются с использованием специализированных наборов тестов.
Исходный код CMSIS проверяется на соответствие MISRA C: 2012 с использованием PC-Lint. Отклонения MISRA документированы с разумными усилиями, однако Arm не претендует на соответствие MISRA, поскольку сегодня, например, нет плана обеспечения соблюдения правил. Исходный код CMSIS не проверяется на соответствие MISRA C++: 2008, так как существует риск того, что он несовместим со стандартами языка C, в частности предупреждениями, которые могут быть сгенерированы различными компиляторами C.
Лицензия
CMSIS предоставляется бесплатно компанией Arm под лицензией Apache 2.0.
ARM::CMSIS пакет
Пакет ARM :: CMSIS содержит следующее:
Файл/Папка | Содержимое |
---|---|
ARM.CMSIS.pdsc | Файл описания пакета в формате CMSIS-Pack. |
LICENSE.txt | Лицензионное соглашение CMSIS (Apache 2.0) |
CMSIS | Компоненты CMSIS (см. Ниже) |
Device | Референсные реализации CMSIS устройств на базе процессора Cortex-M |
CMSIS папка
Папка | Содержимое |
---|---|
Documentation | Документация |
Core | Шаблоны пользовательских кодов для связанных файлов CMSIS-Core (Cortex-M), упомянутых в ARM.CMSIS.pdsc |
Core_A | Шаблоны пользовательских кодов для связанных файлов CMSIS-Core (Cortex-A), упомянутых в ARM.CMSIS.pdsc |
DAP | Исходный код порта CMSIS-DAP для отладки и эталонные реализации |
Driver | Файлы заголовков для API интерфейса периферийного интерфейса CMSIS-драйвера |
DSP_Lib | Исходный код библиотеки программного обеспечения CMSIS-DSP |
NN | Исходный код библиотеки программного обеспечения CMSIS-NN |
Include | Подключаемые файлы для CMSIS-Core (Cortex-M) и CMSIS-DSP |
Lib | готовые библиотеки CMSIS-DSP для ARMCC и GCC |
Pack | Пример CMSIS-Pack |
RTOS | Версия CMSIS-RTOS версии 1 вместе с эталонной реализацией RTX |
RTOS2 | Версия CMSIS-RTOS версии 2 вместе с эталонной реализацией RTX |
SVD | Пример CMSIS-SVD |
Utilities | PACK.xsd (файл схемы CMSIS-Pack), PackChk.exe (средство проверки пакетов программного обеспечения), CMSIS-SVD.xsd (файл схемы CMSIS-SVD), SVDConv.exe (инструмент преобразования для SVD-файлов) |
Оставить ответ
Вы должны быть авторизованы чтобы размещать комментарии.