В данной статье будет описано как установить 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 перезапустится.
Вводим «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 и прочие плюшки: