ARM и специфичный для компиляторов код

Любой разработчик компиляторов расширяет язык программирования и расширяет по своему.

Лучше стараться не отклоняться от спецификации языка. Но если специфичный для компилятора код неизбежен, то его нужно обернуть проверкой компилятора, и, если компилятор не совпадает, выдать ошибку.

Ниже приведен пример кода для некоторых ARM-компиляторов.


#if defined (__CC_ARM)
    /* Код для компилятора Keil */
#elif defined (__ICCARM__)
    /* Код для компилятора IAR */
#elif defined ( __GNUC__ )
    /* Код для компилятора GNU */
#elif defined (__TASKING__)
    /* Код для компилятора TASKING */
#else
    /* Неизвестный компилятор */
    #error Unknown compiler
#endif

Реклама

Развертывание среды разработки для STM32

Большая часть статьи — это текстовое описание видео: 

В статье показано, как с помощью бесплатных кроссплатформенных инструментов развернуть среду разработки для микроконтроллеров STM32.

Программы и библиотеки, о которых будет идти речь, уже объединены в готовые бесплатные среды разработки, например CooCox CoIDE или SW4STM32. Первая только для Windows, а вторая для множества операционных систем, но ссылки для скачивания появляются только после регистрации.

Мы соберем свою среду, чтобы лучше ее понимать и контролировать.

Читать далее Развертывание среды разработки для STM32

Приоритеты прерываний в Cortex-M и их настройка в STM32Cube

STM32Cube — это набор библиотек фирмы STM для своих микроконтроллеров (STM32). Эти библиотеки пришли на смену библиотекам SPL.

Микроконтроллеры STM32 сделаны на базе ядра ARM Cortex-M. Это ядро служит основой микроконтроллеров и у других производителей.

Ядро поддерживает прерывания, которые могут прерывать не только основную программу, но и друг друга, либо не прерывать, что определяется их приоритетом.

Приоритет прерывания зависит от 3 факторов:

Читать далее Приоритеты прерываний в Cortex-M и их настройка в STM32Cube

Скринкаст: Eclipse и GNU Tools для разработки под ARM

Инструменты для разработки под ARM-микроконтроллеры

Список бесплатных кроссплатформенных инструментов для разработки под ARM-микроконтроллеры:

  1. Eclipse IDE for C/C++ Developers
    интегрированная среда разработки (чтобы русифицировать, следует установить Babel (Вавилон)),
  2. GNU Tools for ARM Embedded Processors
    инструменты для сборки из исходного кода: компилятор C/C++, сборщик и т. д.,
  3. GNU ARM Eclipse Plug-ins
    плагин для Eclipse, объединяющий предыдущие два инструмента,
  4. CMSIS
    низкоуровневая библиотека для процессоров ARM Cortex-M, скачивание доступно после регистрации.
  5. Библиотеки для конкретных микроконтроллеров, которых тысячи, например:

GNU toolchain from ARM порождает огромное количество машинного кода при использовании чистых виртуальных функций, как-будто это тянет за собой всю стандартную библиотеку. Если же использовать не чистые виртуальные функции, то производится незначительное количество машинного кода.