В данной статье будет описано как установить 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 от имени администратора и выполнеяем:
Открываем 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 от имени администратора и выполнеяем:
Открываем PowerShell.exe от имени администратора и выполнеяем:
cinst -y jdk8
Node.js
Node.js содержит пакетный менеджер npm, необходимый для установки xpm.
Открываем PowerShell.exe от имени администратора и выполнеяем:
Открываем PowerShell.exe от имени администратора и выполнеяем:
cinst -y nodejs
xpm
Xpm — менеджер пакетов xPack, позволит быстро установить необходимые утилиты для eclipse тремя строчками в командной строке.
Перезапускаем PowerShell.exe от имени администратора и выполнеяем:
Перезапускаем 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 перезапустится.
Вводим «GNU MCU» в окно поиска.
Нажимаем Install.
Оставляем всё как есть, нажимаем далее, далее, далее. Eclipse перезапустится.
MCU Pack
Заходим в Packs, нажимаем Refresh.
Выбираем установку Pack’а в зависимости от вашего микроконтроллера:
После этого идём на кухню ставить чайник, процесс обновления не быстрый.
Когда вылезет ошибка, нажимаем Ignore All:
Выбираем установку Pack’а в зависимости от вашего микроконтроллера:
После этого идём на кухню ставить чайник, процесс обновления не быстрый.
Когда вылезет ошибка, нажимаем Ignore All:
CubeMX
Переходим по ссылке, скачиваем и устанавливаем
ST-Link
Переходим по ссылке, скачиваем и устанавливаем
J-Link software
Переходим по ссылке, скачиваем и устанавливаем
Перепрошиваем ST-Link на J-Link
Переходим по ссылке, скачиваем и устанавливаем.
Запускаем STLinkReflash.exe, принимаем соглашения, выбираем [1] – Upgrade to J-Link.
В любой момент можно обратно вернуть ST-Link, выбрав пункт [3] – Restore ST-Link.
Запускаем STLinkReflash.exe, принимаем соглашения, выбираем [1] – Upgrade to J-Link.
В любой момент можно обратно вернуть ST-Link, выбрав пункт [3] – Restore ST-Link.
Стираем память на микроконтроллере
Открываем в пуске J-flash lite, нажимаем ОК
Выбираем свой микроконтроллер и нажимаем Erase.
Выбираем свой микроконтроллер и нажимаем Erase.
Создание проекта
В папке с проектами создадим 2 проекта:
C:\projects\armtest_cube
C:\projects\armtest
Создадим проект в CubeMX
Заходим в CubeMX, создаём новый проект.
Включаем FreeRTOS в проект, переключаем USE_TRACE_FACILITY -> ENABLED
RECORD_STACK_HIGH_ADDRESS -> Enable
SYS -> Timebase Source выбираем любой ненужный таймер, например TIM7
Включаем дополнительные функции по необходимости.
Нажимаем Generate Code.
Включаем FreeRTOS в проект, переключаем USE_TRACE_FACILITY -> ENABLED
RECORD_STACK_HIGH_ADDRESS -> Enable
SYS -> Timebase Source выбираем любой ненужный таймер, например TIM7
Включаем дополнительные функции по необходимости.
Нажимаем Generate Code.
Создадим проект в Eclipse
Заходим в Eclipse -> New -> Project…
Выбираем C Project
Задаём имя проекта и его расположение, выбираем тип проекта.
Самое главное – указать верно ядро, в зависимости от вашего типа микроконтроллера (см. datasheet). Остальные настройки не важны.
Нажимаем next, next.
Если toolchain не определился автоматически, то указываем его расположение.
Нажимаем Finish.
Удаляем всё из дерева проекта:
Заходим в папку проекта armtest_cube и копируем всё, кроме .project и .cproject в папку проекта armtest.
Обновляем дерево проекта:
Заходим в настройки проекта Project -> Properties, выбираем необходимый микроконтроллер.
Заходим в настройки линкера, удаляем все имеющиеся Script files и добавляем ld файл из дерева проекта.
Подключаем библиотеку с поддержкой Floating Point:
Выбираем формат выходного файла Motorola S-record
Добавляем includ’ы:
Добавляем defin’ы для препроцессора:
Переименовываем startup файл «startup_stm32l476xx.s» в «startup_stm32l476xx.S». Иначе в debug’e появляются ошибки.
Run -> Debug configurations
Выбираем C Project
Задаём имя проекта и его расположение, выбираем тип проекта.
Самое главное – указать верно ядро, в зависимости от вашего типа микроконтроллера (см. datasheet). Остальные настройки не важны.
Нажимаем next, next.
Если toolchain не определился автоматически, то указываем его расположение.
Нажимаем Finish.
Удаляем всё из дерева проекта:
Заходим в папку проекта armtest_cube и копируем всё, кроме .project и .cproject в папку проекта armtest.
Обновляем дерево проекта:
Заходим в настройки проекта Project -> Properties, выбираем необходимый микроконтроллер.
Заходим в настройки линкера, удаляем все имеющиеся Script files и добавляем ld файл из дерева проекта.
Подключаем библиотеку с поддержкой Floating Point:
Выбираем формат выходного файла Motorola S-record
Добавляем includ’ы:
Добавляем defin’ы для препроцессора:
Переименовываем startup файл «startup_stm32l476xx.s» в «startup_stm32l476xx.S». Иначе в debug’e появляются ошибки.
Run -> Debug configurations
Установим FreeRTOS debugger plugin
Help -> Install new Software…
http://freescale.com/lgfiles/updates/Eclipse/KDS
Итог
Включаем Debug, в новом меню FreeRTOS выбираем Task List + Heap Usage.
Получаем наглядное отображение загруженности Heap & Stack и прочие плюшки:
Комментарии (13)
u_235
26.02.2019 19:14Было бы неплохо добавить описание для устанавливаемых пакетов. Зачем нужны chocolatey, jdk8, nodeюjs и xpm?
fatescreen Автор
26.02.2019 19:16Хорошо, сейчас добавлю.
u_235
27.02.2019 00:08Спасибо, стало гораздо лучше. Необязательно устанавливать JDK, для запуска Eclipse достаточно JRE.
masb
26.02.2019 22:30А в чем смысл перепрошивать ST-Link на J-Link?
fatescreen Автор
26.02.2019 22:56FreeRTOS Task Aware debugger не работает на ST-Link + в eclipse отладка FreeRTOS с J-Link мне показалась более дружелюбной.
Sap_ru
27.02.2019 00:12Жуть какая-то. Особенно прекрасен node.js и аж два пакетных менеджера.
fatescreen Автор
27.02.2019 12:44Можно и без них, но тогда придётся скачивать компилятор, систему сборки и отладчик вручную, а потом прописывать к ним пути. Согласен с вами, жуть)
xFFFF
А почему просто не использовать Atollic TrueSTUDIO for STM32?
Тот же самый Eclipse, только уже настроен для работы. Открывает проекты CubeMX без танцев с бубном.
fatescreen Автор
Благодаря вашему комментарию я попробовал TrueSTUDIO, FreeRTOS Task Aware debugger работает в нём тоже. Мне понравилось!
Я написал статью, чтобы люди, которые самостоятельно решатся настроить eclipse, потратили меньше времени. (Это моя философия для написания статей — экономить время чужой жизни)
Будем считать, что эта статья — подготовка к тому, что в какой-то момент все IDE станут платными.
Shamrel
Очень странный подход: не посмотрев то, что предлагает производитель чипов, начинать делать свое. И в результате получить то же самое.
Polaris99
Неужели весь мир ARM ограничен продуктами ST? Даже если меня брать, то за последние годы я работал с NXP (LPC, MKW, RT1052), SiLabs (EFM32), Nordic (nRF51822), Atmel (ATSAMC21). Как их впихнуть в продавшийся ST Atollic?
xFFFF
Конкретно в данном случае проект генерируется в CubeMX, и его нельзя использовать для других ARM микроконтроллеров. Так что зачем нужна вся еботня с Eclipse, если есть Atollic?