![image](https://snag.gy/Cdw5qh.jpg)
В данной статье будет описано как установить 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 перезапустится.![image](https://snag.gy/WpXz5e.jpg)
Вводим «GNU MCU» в окно поиска.
Нажимаем Install.
Оставляем всё как есть, нажимаем далее, далее, далее. Eclipse перезапустится.
![image](https://snag.gy/WpXz5e.jpg)
MCU Pack
Заходим в Packs, нажимаем Refresh. ![image](https://snag.gy/2CiIev.jpg)
Выбираем установку Pack’а в зависимости от вашего микроконтроллера:![image](https://snag.gy/5vjpwF.jpg)
После этого идём на кухню ставить чайник, процесс обновления не быстрый.
![image](https://snag.gy/2PLvRZ.jpg)
Когда вылезет ошибка, нажимаем Ignore All:![image](https://snag.gy/lsUeWw.jpg)
![image](https://snag.gy/2CiIev.jpg)
Выбираем установку Pack’а в зависимости от вашего микроконтроллера:
![image](https://snag.gy/5vjpwF.jpg)
После этого идём на кухню ставить чайник, процесс обновления не быстрый.
![image](https://snag.gy/2PLvRZ.jpg)
Когда вылезет ошибка, нажимаем Ignore All:
![image](https://snag.gy/lsUeWw.jpg)
CubeMX
Переходим по ссылке, скачиваем и устанавливаем
ST-Link
Переходим по ссылке, скачиваем и устанавливаем
J-Link software
Переходим по ссылке, скачиваем и устанавливаем
Перепрошиваем ST-Link на J-Link
Переходим по ссылке, скачиваем и устанавливаем.
Запускаем STLinkReflash.exe, принимаем соглашения, выбираем [1] – Upgrade to J-Link.
В любой момент можно обратно вернуть ST-Link, выбрав пункт [3] – Restore ST-Link.![image](https://snag.gy/8m9lFR.jpg)
Запускаем STLinkReflash.exe, принимаем соглашения, выбираем [1] – Upgrade to J-Link.
В любой момент можно обратно вернуть ST-Link, выбрав пункт [3] – Restore ST-Link.
![image](https://snag.gy/8m9lFR.jpg)
Стираем память на микроконтроллере
Открываем в пуске J-flash lite, нажимаем ОК![image](https://snag.gy/f3OpIY.jpg)
Выбираем свой микроконтроллер и нажимаем Erase.![image](https://snag.gy/ozmbJ9.jpg)
![image](https://snag.gy/f3OpIY.jpg)
Выбираем свой микроконтроллер и нажимаем Erase.
![image](https://snag.gy/ozmbJ9.jpg)
Создание проекта
В папке с проектами создадим 2 проекта:
C:\projects\armtest_cube
C:\projects\armtest
Создадим проект в CubeMX
Заходим в CubeMX, создаём новый проект.
Включаем FreeRTOS в проект, переключаем USE_TRACE_FACILITY -> ENABLED
![image](https://snag.gy/ryXi84.jpg)
RECORD_STACK_HIGH_ADDRESS -> Enable
![image](https://snag.gy/pYQasI.jpg)
SYS -> Timebase Source выбираем любой ненужный таймер, например TIM7
![image](https://snag.gy/3TbUhn.jpg)
Включаем дополнительные функции по необходимости.
Нажимаем Generate Code.
![image](https://snag.gy/u7MBPK.jpg)
Включаем FreeRTOS в проект, переключаем USE_TRACE_FACILITY -> ENABLED
![image](https://snag.gy/ryXi84.jpg)
RECORD_STACK_HIGH_ADDRESS -> Enable
![image](https://snag.gy/pYQasI.jpg)
SYS -> Timebase Source выбираем любой ненужный таймер, например TIM7
![image](https://snag.gy/3TbUhn.jpg)
Включаем дополнительные функции по необходимости.
Нажимаем Generate Code.
![image](https://snag.gy/u7MBPK.jpg)
Создадим проект в Eclipse
Заходим в Eclipse -> New -> Project…
Выбираем C Project
![image](https://snag.gy/dWTYmf.jpg)
Задаём имя проекта и его расположение, выбираем тип проекта.
![image](https://snag.gy/3IoLzH.jpg)
Самое главное – указать верно ядро, в зависимости от вашего типа микроконтроллера (см. datasheet). Остальные настройки не важны.
![image](https://snag.gy/skpEUy.jpg)
Нажимаем next, next.
Если toolchain не определился автоматически, то указываем его расположение.
Нажимаем Finish.
![image](https://snag.gy/LbHh5o.jpg)
Удаляем всё из дерева проекта:
![image](https://snag.gy/f8OrZt.jpg)
Заходим в папку проекта armtest_cube и копируем всё, кроме .project и .cproject в папку проекта armtest.
![image](https://snag.gy/1s2TVH.jpg)
Обновляем дерево проекта:
![image](https://snag.gy/OJy0s5.jpg)
Заходим в настройки проекта Project -> Properties, выбираем необходимый микроконтроллер.![image](https://snag.gy/ceqB5P.jpg)
Заходим в настройки линкера, удаляем все имеющиеся Script files и добавляем ld файл из дерева проекта.
![image](https://snag.gy/1b4DAP.jpg)
Подключаем библиотеку с поддержкой Floating Point:
![image](https://snag.gy/IqaR9B.jpg)
Выбираем формат выходного файла Motorola S-record
![image](https://snag.gy/wSVgkt.jpg)
Добавляем includ’ы:
![image](https://snag.gy/018JUG.jpg)
Добавляем defin’ы для препроцессора:
![image](https://snag.gy/8nrSXO.jpg)
Переименовываем startup файл «startup_stm32l476xx.s» в «startup_stm32l476xx.S». Иначе в debug’e появляются ошибки.![image](https://snag.gy/bg8VcT.jpg)
Run -> Debug configurations![image](https://snag.gy/Kghldy.jpg)
Выбираем C Project
![image](https://snag.gy/dWTYmf.jpg)
Задаём имя проекта и его расположение, выбираем тип проекта.
![image](https://snag.gy/3IoLzH.jpg)
Самое главное – указать верно ядро, в зависимости от вашего типа микроконтроллера (см. datasheet). Остальные настройки не важны.
![image](https://snag.gy/skpEUy.jpg)
Нажимаем next, next.
Если toolchain не определился автоматически, то указываем его расположение.
Нажимаем Finish.
![image](https://snag.gy/LbHh5o.jpg)
Удаляем всё из дерева проекта:
![image](https://snag.gy/f8OrZt.jpg)
Заходим в папку проекта armtest_cube и копируем всё, кроме .project и .cproject в папку проекта armtest.
![image](https://snag.gy/1s2TVH.jpg)
Обновляем дерево проекта:
![image](https://snag.gy/OJy0s5.jpg)
Заходим в настройки проекта Project -> Properties, выбираем необходимый микроконтроллер.
![image](https://snag.gy/ceqB5P.jpg)
Заходим в настройки линкера, удаляем все имеющиеся Script files и добавляем ld файл из дерева проекта.
![image](https://snag.gy/1b4DAP.jpg)
Подключаем библиотеку с поддержкой Floating Point:
![image](https://snag.gy/IqaR9B.jpg)
Выбираем формат выходного файла Motorola S-record
![image](https://snag.gy/wSVgkt.jpg)
Добавляем includ’ы:
![image](https://snag.gy/018JUG.jpg)
Добавляем defin’ы для препроцессора:
![image](https://snag.gy/8nrSXO.jpg)
Переименовываем startup файл «startup_stm32l476xx.s» в «startup_stm32l476xx.S». Иначе в debug’e появляются ошибки.
![image](https://snag.gy/bg8VcT.jpg)
Run -> Debug configurations
![image](https://snag.gy/Kghldy.jpg)
Установим FreeRTOS debugger plugin
Help -> Install new Software…
![image](https://snag.gy/NmOKJR.jpg)
http://freescale.com/lgfiles/updates/Eclipse/KDS
![image](https://snag.gy/NmOKJR.jpg)
Итог
Включаем Debug, в новом меню FreeRTOS выбираем Task List + Heap Usage.
![image](https://snag.gy/gHmlS4.jpg)
Получаем наглядное отображение загруженности Heap & Stack и прочие плюшки:
![image](https://snag.gy/ASUefj.jpg)
Комментарии (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?