В первой обзорной статье о Fedora Electronic Lab 12 я описал некоторые возможности системы, ее ориентацию на разработчиков электронных устройств. В настоящей публикации будет описан процесс разработки и отладки программного обеспечения в IDE Eclipse CDT под операционной системой Linux( FEL 12 ).

Итак, за отправную точку берем только что установленную операционную систему Fedora Electronic Lab 12 и программное обеспечение Sourcery G++.

Выберем на рабочем столе FEL 12 пункт меню «Приложения -> Программирование -> Eclipse ».

При запуске Eclipse укажем рабочее пространство в домашней папке пользователя. В качестве примера будем использовать уже знакомый нам проект от Olimex для микроконтроллера STM32( Cortex-M3 ) под названием «Blinking LED project for GCC + Eclipse + OpenOCD»( скачать ).

Разработка программ в Eclipse под Linux идентична этому процессу в Windows.

Выполним импорт проекта через «File -> Import…», далее «General -> Existing Project into Workspace».



Теперь нажимаем на клавишу «Finish» и видим открытый проект stm_h103.

В правом верхнем углу экрана необходимо переключить перспективу на C/C++ perspective, поскольку набор доступных перспектив здесь достаточно велик.



На закладке «Make Targets» добавим основные цели «all» и «clean».

Если закладка «Make Targets» по каким-либо причинам не окажется в рабочем пространстве, то добавить ее туда можно через пункт меню «Window -> Show View -> Make Targets».

Сначала настроим способ сборки проекта, как обычно уберем галочку «Build Automatically» в меню «Project» и откроем окно «Properties» для нашего проекта. Выберем в настройках пункт «GNU Elf Parser» и нажмем «Apply».



Теперь выполним двойной клик на цели «all» в закладке «Make Targets» для сборки проекта.

Посмотреть результат сборки можно в закладке «Console».



Проблем с компиляцией проекта для микроконтроллеров AVR также не должно возникнуть, поскольку компилятор avr-gcc установлен в системе «с коробки».

Настало время подключить JTAG адаптер и проверить работу программы в железе.

Сначала проверим версию установленного в системе OpenOCD, для этого в терминале нужно запустить команду

$openocd -v

На что получим номер версии openocd 0.2.0. Версия программы не самая свежая, но сборкой новой версии в рамках этой статьи мы заниматься не станем.

Следующим шагом для нас будет установка драйвера для адаптера FTDI JTAG.

У нас есть выбор из двух вариантов. Первый — установить родной драйвер под Linux от FTDI, и второй — установить альтернативный драйвер с открытым исходным кодом libftdi.

Останавливаемся на первом варианте.

Скачиваем архив с драйвером libftd2xx0.4.16.tar.gz ( скачать ) и распаковываем его.

Далее копируем файл динамической библиотеки libftd2xx.so.0.4.16 в каталог /usr/local/lib

$cp libftd2xx.so.0.4.16 /usr/local/lib/

Создаем символьную ссылку libftd2xx.so на библиотечный файл в том же каталоге

$ln -s /usr/local/lib/libftd2xx.so.0.4.16 /usr/lib/libftd2xx.so

Также необходимо скопировать заголовочные файлы ftd2xx.h и WinTypes.h в директорию /usr/include.

Откроем файл ld.so.conf и добавим каталог поиска динамически подсоединяемых библиотек /usr/local/lib

$vi /etc/ld.so.conf

В открывшемся текстовом редакторе «VIM» нажимаем на клавишу «Insert» и входим в режим редактирования, добавляем строку /usr/local/lib, потом нажимаем клавишу «Esc» для входа в режим команд и вводим команду выхода с сохранением «:x».

Чуть было не забыл — все эти действия нужно выполнять , находясь в режиме учетной записи «root», иначе система просто не позволит Вам сохранить изменения в конфигурационных файлах

$su

Пароль: *******

После добавления нового пути поиска библиотек необходимо запустить ldconfig

#ldconfig

Теперь добавим в файл fstab новую строчку

#vi /etc/fstab

Входим в режим редактирования в редакторе «VIM» и дописываем в конец файла строку

none /proc/bus/usb usbfs defaults, devmode=0666 0 0

Сохраняем результат редактирования и выходим ( «Esc» «:x» ).

Выполним команду mount для монтирования нашей новой файловой системы

#mount -a

Скопируем в каталог /etc/share/openocd/scripts/interface наш конфигурационный файл ftdi_jtag.cfg

interface ft2232

ft2232_device_desc «USB <-> Serial Cable A»

ft2232_layout usbjtag

ft2232_vid_pid 0x0403 0x6010

Теперь можно подсоединить целевое устройство( я использую в качестве такового плату STM32F103-HB ) и запустить openocd.

#openocd -f interface/ftdi_jtag.cfg -f target/stm32.cfg

Осталось проделать аналогичные описанным в статье «Запуск отладки в Eclipse» настройки Eclipse для осуществления отладки программы.

Исполняемый файл openocd находиться в каталоге /usr/bin

Могут возникнуть проблемы при запуске openocd из-под пользовательской учетной записи. Поэтому лучше выполнять всю работу в Eclipse под учетной записью «root» , или же запускать openocd в отдельном окне терминала под учетной записью «root».

И вот, наконец-то, долгожданный запуск отладки в Eclipse под Linux( FEL 12 ), выглядит почти так же, как и в Windows

Viewed 13849 times by 3738 viewers

Last modified: 06/02/2020

Author

Comments

Происходит затык где-то в районе этой операции —

Выполним импорт проекта через «File -> Import…», далее «General -> Existing Project into Workspace». /

Поясните, пожалуйста, необходимо ли перед импортом
создать в Workspace папку или проект и скопировать туда
файлы проекта ?
Пробовал разные варианты последовательности копирования и создания проектов — натыкаюсь на то, что последующие действия описанные в статье оказываются недоступны.
Поясните поподробнее куда и когда копировать и импортировать

Термин «рабочее пространство» в Eclipse означает каталог , в котором хранятся проекты.
Проект представляет собой каталог, в котором находится файл проекта и все остальные исходные файлы,
относящиеся к этому проекту.
Для того, чтобы Eclipse «увидил» проект, уровень вложенности должен быть равен двум
( каталог рабочего пространства, в нем подкаталоги проектов с проектными файлами ),
открывается сразу все рабочее пространство, то есть все проекты, каталоги которых
находятся в рабочем пространстве.
Допустим в качестве рабочего пространства используется каталог workspace.
Скачанный проект( запакованный каталог проекта) достаточно извлечь из архива
и скопировать в каталог workspace. После этого в Eclipse необходимо выполнить
Import->General->Existing Project. Если же у Вас есть набор исходных файлов вместе с Makefile,
то поместите их в один каталог( неважно где он будет находится, только не в рабочем пространстве ).
После этого выполните в Eclipse Import->General->File System, в результате этот каталог будет
скопирован в рабочее пространство и откроется в виде Eclipse-проекта.
Названия каталогов и названия проектов желательно делать одинаковыми.

    Для импортируемого проекта с существующим маке файлом перед импорто Файлово

    Пожалуйста, поподробнее про импорт проекта с существующим make файлом.
    Перед импортом FileSystem нужно создать новый проект? Если нужно, то какого типа? Eclipse предлагает четыре варианта, а последний опять раскрывается…(и повторяет первые три или они чем-то отличаются?)

      Пожалуйста, поподробнее про импорт проекта с существующим make файлом.

      Сначала создаем новый проект : File -> New — > Project… -> General -> Project -> Next -> «Project name» -> Finish
      Выполняем импорт существующей файловой системы :
      File -> Import… -> File System -> Next -> Browse -> Ставим галочку напротив название импортируемого каталога .
      В графе «Info folder» выбираем имя недавно созданного проекта -> Finish.
      Все! Новый проект появиться в окне проводника проектов

В скачанном архиве нет файла STM32F_usb_cfg.h и наверное соответствующего ему .с тоже/

В скачанном архиве нет файла STM32F_usb_cfg.h и наверное соответствующего ему .с тоже/

О каком архиве идет речь?

На который ссылается статья:
В качестве примера будем использовать уже знакомый нам проект от Olimex для микроконтроллера STM32( Cortex-M3 ) под названием «Blinking LED project for GCC + Eclipse + OpenOCD»( скачать ).
/

Вот первоисточник OpenOCD + Eclipse STM32 project.
Файла STM32F_usb_cfg.h там тоже нет, похоже, что OLIMEX сильно не заморачивался, выкладывая примеры для своих плат.

Comments are closed.