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



image


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

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

Установка


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

Eclipse IDE for C/C++ Developers
Скачиваем eclipse, распаковываем, копируем в C:/eclipse
chocolatey
Chocolatey — пакетный менеджер для Windows, аналог apk 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. xFFFF
    /#19809298

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

    Тот же самый Eclipse, только уже настроен для работы. Открывает проекты CubeMX без танцев с бубном.

    • fatescreen
      /#19810374

      Благодаря вашему комментарию я попробовал TrueSTUDIO, FreeRTOS Task Aware debugger работает в нём тоже. Мне понравилось!

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

      Будем считать, что эта статья — подготовка к тому, что в какой-то момент все IDE станут платными.

      • Shamrel
        /#19811170

        Очень странный подход: не посмотрев то, что предлагает производитель чипов, начинать делать свое. И в результате получить то же самое.

    • Polaris99
      /#19813510

      Неужели весь мир ARM ограничен продуктами ST? Даже если меня брать, то за последние годы я работал с NXP (LPC, MKW, RT1052), SiLabs (EFM32), Nordic (nRF51822), Atmel (ATSAMC21). Как их впихнуть в продавшийся ST Atollic?

      • xFFFF
        /#19817180

        Конкретно в данном случае проект генерируется в CubeMX, и его нельзя использовать для других ARM микроконтроллеров. Так что зачем нужна вся еботня с Eclipse, если есть Atollic?

  2. u_235
    /#19809898

    Было бы неплохо добавить описание для устанавливаемых пакетов. Зачем нужны chocolatey, jdk8, nodeюjs и xpm?

    • fatescreen
      /#19809902

      Хорошо, сейчас добавлю.

      • u_235
        /#19810836

        Спасибо, стало гораздо лучше. Необязательно устанавливать JDK, для запуска Eclipse достаточно JRE.

  3. masb
    /#19810628

    А в чем смысл перепрошивать ST-Link на J-Link?

    • fatescreen
      /#19810694

      FreeRTOS Task Aware debugger не работает на ST-Link + в eclipse отладка FreeRTOS с J-Link мне показалась более дружелюбной.

  4. Sap_ru
    /#19810850

    Жуть какая-то. Особенно прекрасен node.js и аж два пакетных менеджера.

    • fatescreen
      /#19812870

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

    • Polaris99
      /#19813910

      Да уж, эклипс постарался, все для пользователей.