![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, аналог apt-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)