Вам надоел MDK KEIL, IAR и миллион различных версий eclipse от каждого vender-а производящего те или иные ЦПУ, тогда тебе сюда. Приветствую тебя уважаемый читатель данной статьи.

Речь пойдет о том, как на стороне Linux поднять необходимые компоненты для старта написания встраиваемого программного обеспечения для микроконтроллеров (mcu) используя для этого openocd, кросскомпилятор для bare metal и qbs (системы сборки от Qt).

Все ниже описанные процедуры протестированы на Ubuntu 17.10.

Особенности qbs:

  • Позволяет собирать проекты для разных платформ в той же командной оболочке (shell);
  • Позволяет параллельно собирать множество конфигураций одного проекта;
  • Предоставляет быстрые инкрементальные сборки;
  • Использует QML-подобный язык;
  • Поддерживается c Qt Creator 2.8;
  • Не привязан к версии Qt, т.е. смена используемой версии Qt не заставляет менять версию инструментария сборки.

Собирает проект qbs очень быстро, особенно когда в проекте множество файлов, процесс сборки в разы быстрее, чем у описанных выше IDE (по мнению автора).

openocd

Установите следующие пакеты:

  • libtool
  • eclipse-cdt-autotools
  • libusb-1.0-0-dev

Установка openocd:

  • git clone http://openocd.zylin.com/openocd
  • git fetch http://openocd.zylin.com/openocd refs/changes/18/3918/16 && git checkout FETCH_HEAD
  • ./bootstrap
  • ./configure —enable-ft2232_ftd2xx
  • make
  • sudo make install

Подключите stm32f746g-disco к ПК, откройте терминал и выполните следующую команду:

openocd -f board/stm32f746g-disco.cfg -c «init» -c «reset init» -c «reset» -c «shutdown»

Вы должны увидеть информацию следующего характера:

При сборке проекта в Qt Creator происходит прошивка внутренней и внешней памяти (важно! openocd должен быть отключен).

Для отладки должен быть выбран debug режим и запущен openocd, для запуска выполните команду в терминале:

openocd -f board/stm32f746g-disco.cfg -c «init» -c «reset init»

arm-none-eabi

Установите arm-none-eabi (кросскомпилятор)

Toolchain-ы делятся на несколько типов или триплетов. Триплет обычно состоит из трёх частей: целевой процессор, вендор и ОС, вендор зачастую опускается.

  • none-eabi — toolchain для компиляции проекта работающего в bare metal;
  • none- или -unknown, после архитектуры — это вендор, но имя может опускаться;
  • eabi — toolchain для компиляции проекта работающего в какой-либо ОС. ABI определитель;
  • gnueabi- означает, что toolchain использует GNU EABI, и соответственно, glibc/eglibc.
  • gnueabihf-  тоже самое, но используется GNU EABI с Hard Float;
  • uclibcgnueabi- или -uclibc- — означает, что компилятор будет генерировать код в GNU EABI, но вместо glibc, будет использоваться uClibc;
  • newlib- обычно пишется не в ABI, а в ОС, такие toolchain-ы тоже, как правило, bare-metal;
  • Если toolchain не для arm-архитектуры, то EABI/ABI, обычно, опускается. И пишется просто -uclibc-, -gnu- или вообще -elf-;
  • eabihf — же самое, что и eabi, но с разницей в реализации ABI вызова функций с плавающей точкой. hf — расшифровывается как hard float;
  • Если в названии toolchain, есть -elf-, -eabi- или -newlib- то это toolchain  вскоре всего для bare-metal;
  • Если в названии toolchain есть -uclibcgnueabi- или -uclibc- — то это toolchain с linux-headers и uClibc;
  • Если в названии toolchain встречается -gnu- или -gnueabi-, то это toolchain с linux-headers и glibc/eglibc;

Данное описание неполное, оно захватывает только область embedded под микроконтроллеры.

Настройка Qt Creator

Предварительно заходим по ссылке и выбираемые Qt Creator для скачивания. После процедуры установки, необходимо сконфигурировать необходимый qt kit для работы, для этого нужно выполнить действия показанные на скриншотах ниже. При сборки проекта Вы должны выбирать kit созданный для сборки под микроконтроллеры.


Вся магия сокрыта в qbs файле. В данном файле описываются все необходимые зависимости, так же данный пример содержит комментарии, благодаря которым Вы с легкостью сможете перейти на qbs.

Базовый шаблон проекта для stm32f746g-disco на qbs в Qt Creator можно скачать по ссылке с guthub или

git clone https://github.com/mcuby/template-qbs-stm32f746g-disco.git

Отправить ответ

Оставьте первый комментарий!

avatar
  Subscribe  
Уведомлять о