Eclipse для микроконтроллеров (STM32) + FreeRTOS Task Aware Debugger

  • Tutorial
image


В данной статье будет описано как установить eclipse для микроконтроллеров + FreeRTOS Task Aware Debugger.

На примере OS Windows, CubeMX и платы STM32L4Discovery.

Установка


Устанавливаем:

Eclipse IDE for C/C++ Developers
Скачиваем eclipse, распаковываем, копируем в C:/eclipse
chocolatey
Chocolatey — пакетный менеджер для Windows, аналог apt-get, позволяет через консоль устанавливать программы.
Открываем PowerShell.exe от имени администратора и выполнеяем:
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
JDK
Без JDK не запустится eclipse и CubeMX.
Открываем PowerShell.exe от имени администратора и выполнеяем:

cinst -y jdk8
Node.js
Node.js содержит пакетный менеджер npm, необходимый для установки xpm.
Открываем PowerShell.exe от имени администратора и выполнеяем:

cinst -y nodejs
xpm
Xpm — менеджер пакетов xPack, позволит быстро установить необходимые утилиты для eclipse тремя строчками в командной строке.
Перезапускаем PowerShell.exe от имени администратора и выполнеяем:

npm install --global xpm
Arm-компилятор, систему сборки и отладчик
Перезапускаем PowerShell.exe от имени администратора и выполняем:

xpm install --global @gnu-mcu-eclipse/arm-none-eabi-gcc
xpm install --global @gnu-mcu-eclipse/windows-build-tools
xpm install --global @gnu-mcu-eclipse/openocd
GNU MCU Plugin:
Запускаем eclipse, Help -> Eclipse marketplace…

Вводим «GNU MCU» в окно поиска.

Нажимаем Install.

Оставляем всё как есть, нажимаем далее, далее, далее. Eclipse перезапустится.image
MCU Pack
Заходим в Packs, нажимаем Refresh. image
Выбираем установку Pack’а в зависимости от вашего микроконтроллера:image
После этого идём на кухню ставить чайник, процесс обновления не быстрый.
image
Когда вылезет ошибка, нажимаем Ignore All:image
CubeMX
Переходим по ссылке, скачиваем и устанавливаем
ST-Link
Переходим по ссылке, скачиваем и устанавливаем
J-Link software
Переходим по ссылке, скачиваем и устанавливаем


Перепрошиваем ST-Link на J-Link
Переходим по ссылке, скачиваем и устанавливаем.
Запускаем STLinkReflash.exe, принимаем соглашения, выбираем [1] – Upgrade to J-Link.
В любой момент можно обратно вернуть ST-Link, выбрав пункт [3] – Restore ST-Link.image
Стираем память на микроконтроллере
Открываем в пуске J-flash lite, нажимаем ОКimage
Выбираем свой микроконтроллер и нажимаем Erase.image

Создание проекта


В папке с проектами создадим 2 проекта:
C:\projects\armtest_cube
C:\projects\armtest

Создадим проект в CubeMX
Заходим в CubeMX, создаём новый проект.
Включаем FreeRTOS в проект, переключаем USE_TRACE_FACILITY -> ENABLED
image
RECORD_STACK_HIGH_ADDRESS -> Enable
image
SYS -> Timebase Source выбираем любой ненужный таймер, например TIM7
image
Включаем дополнительные функции по необходимости.
Нажимаем Generate Code.
image
Создадим проект в Eclipse
Заходим в Eclipse -> New -> Project…
Выбираем C Project
image
Задаём имя проекта и его расположение, выбираем тип проекта.
image
Самое главное – указать верно ядро, в зависимости от вашего типа микроконтроллера (см. datasheet). Остальные настройки не важны.
image
Нажимаем next, next.
Если toolchain не определился автоматически, то указываем его расположение.
Нажимаем Finish.
image
Удаляем всё из дерева проекта:
image
Заходим в папку проекта armtest_cube и копируем всё, кроме .project и .cproject в папку проекта armtest.
image
Обновляем дерево проекта:
image
Заходим в настройки проекта Project -> Properties, выбираем необходимый микроконтроллер.image
Заходим в настройки линкера, удаляем все имеющиеся Script files и добавляем ld файл из дерева проекта.
image
Подключаем библиотеку с поддержкой Floating Point:
image
Выбираем формат выходного файла Motorola S-record
image
Добавляем includ’ы:
image
Добавляем defin’ы для препроцессора:
image
Переименовываем startup файл «startup_stm32l476xx.s» в «startup_stm32l476xx.S». Иначе в debug’e появляются ошибки.image
Run -> Debug configurations image
Установим FreeRTOS debugger plugin
Help -> Install new Software…
http://freescale.com/lgfiles/updates/Eclipse/KDS
image

Итог


Включаем Debug, в новом меню FreeRTOS выбираем Task List + Heap Usage.

image

Получаем наглядное отображение загруженности Heap & Stack и прочие плюшки:

image
Поделиться публикацией

Комментарии 13

    +1
    А почему просто не использовать Atollic TrueSTUDIO for STM32?

    Тот же самый Eclipse, только уже настроен для работы. Открывает проекты CubeMX без танцев с бубном.
      0
      Благодаря вашему комментарию я попробовал TrueSTUDIO, FreeRTOS Task Aware debugger работает в нём тоже. Мне понравилось!

      Я написал статью, чтобы люди, которые самостоятельно решатся настроить eclipse, потратили меньше времени. (Это моя философия для написания статей — экономить время чужой жизни)

      Будем считать, что эта статья — подготовка к тому, что в какой-то момент все IDE станут платными.
        0
        Очень странный подход: не посмотрев то, что предлагает производитель чипов, начинать делать свое. И в результате получить то же самое.
        0
        Неужели весь мир ARM ограничен продуктами ST? Даже если меня брать, то за последние годы я работал с NXP (LPC, MKW, RT1052), SiLabs (EFM32), Nordic (nRF51822), Atmel (ATSAMC21). Как их впихнуть в продавшийся ST Atollic?
          0
          Конкретно в данном случае проект генерируется в CubeMX, и его нельзя использовать для других ARM микроконтроллеров. Так что зачем нужна вся еботня с Eclipse, если есть Atollic?
        +1
        Было бы неплохо добавить описание для устанавливаемых пакетов. Зачем нужны chocolatey, jdk8, nodeюjs и xpm?
          +1
          Добавил.
            0
            Спасибо, стало гораздо лучше. Необязательно устанавливать JDK, для запуска Eclipse достаточно JRE.
          0
          А в чем смысл перепрошивать ST-Link на J-Link?
            0
            FreeRTOS Task Aware debugger не работает на ST-Link + в eclipse отладка FreeRTOS с J-Link мне показалась более дружелюбной.
            +1
            Жуть какая-то. Особенно прекрасен node.js и аж два пакетных менеджера.
              0
              Можно и без них, но тогда придётся скачивать компилятор, систему сборки и отладчик вручную, а потом прописывать к ним пути. Согласен с вами, жуть)
                0
                Да уж, эклипс постарался, все для пользователей.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое