Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Eclipse + GCC + HAL
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Wasserati
Здравствуйте.
Собрал среду для STM по следующей статье: http://www.carminenoviello.com/en/2014/12/...2nucleo-part-1/
Для пробы сгенерировал в QubeMX простой проект - мигалку, который нормально собрался и заработал.
Проблемы возникли при попытке собрать проект с USB, сгенерированый в том же QubeMX.
Eclipse в упор не видит часть функций для работы с USB, и выдает ошибки undefined reference to..., хотя #include для заголовочного файла с ними есть.
Нажмите для просмотра прикрепленного файла
Если использовать комбинации CTRL+C, CTRL+V (заменить функцию на саму себя), то ошибка исчезает, но только до попытки компиляции, после которой ошибка опять появляется.
Нажмите для просмотра прикрепленного файла
Еще одна странность в том, что есть функции, которые ошибок не вызывают, но при этом находятся в том же файле, что и ошибочные.
Нажмите для просмотра прикрепленного файла
Обе функции со скриншота находятся в одном файле.

В чем здесь проблема? И как можно ее исправить?
Непомнящий Евгений
Цитата(Wasserati @ Feb 20 2016, 13:27) *
В чем здесь проблема? И как можно ее исправить?


Парсеру эклипса для работы нужны пути к инклюдам и некоторые "системные" макросы. Все это указывается в свойствах проекта, "preprocessor include paths ...". Эклипс умеет получать эти данные из разных источников с помощью т.наз. провайдеров. Или же их можно вбить вручную.

update
А, у вас это ошибки билда? А как собираете? Смотрите параметры сборки, скорее всего те же пути к инклюдам кривые
Aaron
сам с USB не работал, но подключение USB стека вроде требует соответствующих дефайнов. посмотрите, дефайны/тела функций не находятся под веткой #ifdef? соответственно, может у вас не хватает такой штуки? Наподобие как для StdPeriphLib ключик -DUSE_STDPERIPH_DRIVER...
выделяете функцию, ctrl+alt+g - поиск по тексту всех исходников, где функция встречается...
Wasserati
Спасибо всем за ответы.
Причину ошибок я нашел. Нужно было добавить путь к .c файлам USB драйвера.
Нажмите для просмотра прикрепленного файла
AleksBak
Добрый день!
Это мой первый пост тут (хотя и в 2006-м тоже был тут зарегистрирован, но потом благополучно потерял пароль и почта указанная при рег. недоступна стала).
Прошу не пинать. sm.gif
Я поступил так (ARM-ы стал изучать месяца 3 назад, а до этого лет 20 сижу на др. контроллерах):
1. Написал на Шарпе небольшую прожку. которая конвертируем проект под среду TrueStudio, а потом и проект под SW4STM32 в "чистый" проект для Eclipse (MARS установил). Причем все достаточно нормально конвертировалось т.к. разбирался долго и досконально со всеми нюансами в xml-файлах .cproject и project);
2. Почему-то не захотел вначале использовать нормально среду от Ac6 (OpenSTM32). Очевидно все-таки хотел "чистую" эклипсу использовать.
3. Совершенно случайно обнаружил, что вышеуказанная среда SW4STM32 еще есть в виде плагина к эклипсе. Установил в свой MARS этот плагин и все! Теперь пишу в эклипсе, но используя пока что этот плагин при создании/портировании проектов (хотя также могу создать "чистый" проект под GCC в своей эклипсе).
В результате имеем современную среду и с норм. редактором и пр. Я вот до сих пор не пойму за что такие бешенные (!) деньги просят за Keil и IAR. В ихних убожеских (реально таких!) редакторах невозможно что-то большое писать и долго причем. Даже бесплатно и то не хочется пользоваться этими средами. Может и потому что за время работы с др. контроллерами (не ARM) я уже привык к норм. редактору, подсветки кода, поиску и пр. и пр.? А как только стал изучать ARM-ы, то в шок меня ввели эти IAR с Keil-ом, а другие люди уже просто привыкли к ним? Не знаю. Вообщем вот так.
k000858
Цитата(AleksBak @ Mar 2 2016, 08:11) *
Добрый день!

так же юзаю эклипс с этим плагином
единственное, что напрягает: эклипс иногда пишет ошибки (не находит макросы и тд), однако компилятор собирает без ошибок
AleksBak
Правой кнопкой по названию проекта в дереве проекта (т.е. вызов контекстного меню для этого проекта тут) и Index -> Freshen All Files. Т.е. заново переиндексацию проекта вызываем.
А Вы уже обновлялись недавно (до 1.7 версии)?
k000858
Цитата(AleksBak @ Mar 2 2016, 10:51) *
Правой кнопкой по названию проекта в дереве проекта (т.е. вызов контекстного меню для этого проекта тут) и Index -> Freshen All Files. Т.е. заново переиндексацию проекта вызываем.
А Вы уже обновлялись недавно (до 1.7 версии)?

эта операция не помогает

да, плагин 1.7, эклипс 4.5.2
MrYuran
Цитата(AleksBak @ Mar 2 2016, 08:11) *
2. Почему-то не захотел вначале использовать нормально среду от Ac6 (OpenSTM32). Очевидно все-таки хотел "чистую" эклипсу использовать.

Да уж куда чистее-то?
По сравнению с кококсом и трустудио просто кристально чистая клипса.

А "чистый" проект GCC в любой системе делается очень просто - makefile based project.
AleksBak
Цитата(MrYuran @ Mar 3 2016, 11:07) *
Да уж куда чистее-то?...
А "чистый" проект GCC в любой системе делается очень просто - makefile based project.

Да. Не так выразился. (насчет чистее или нет) Похоже именно более новый MARS привлек и еще какие-то личные интересы. Тоже используете среду (или может плагин) да? Вот makefile у Вас - значит команда в консоли эклипсы утилите сборки проекта, а вот based project - это типа такого дефайн-выражения? Пока не копал глубоко и новичок пока что я. Эти "дефаны" (т.е. встроенные команды эклипсы) где-то описаны...
В хелпе эклипсы надо бы посмотреть мне... Я из команд для консоли только "monitor reset halt" использую периодически. А вот насчет этого "monitor reset halt" тоже осмелюсь спросить - Вы не в курсе, если Вы знаете про команды консоли эклипсы, как "прикрутить" эту команду
к какому-нибудь hot key? Про сделать кнопку вряд ли и не стоит спрашивать мне, а вот как-то сделать в виде "горячей" клавишы наверняка возможно же это? Спасибо.
Aaron
А кто-нибудь проводил исследования - как эти плагины и среды дружат с миландровскими кортексами? Почему уже изначально в названии идёт упоминание stm32?..
Сам прогаю под миландры сейчас, от stm32 отошёл давно. Юзаю чистый eclipse + openocd без всяких плагинов...
AleksBak
Цитата(Aaron @ Mar 15 2016, 17:55) *
...Почему уже изначально в названии идёт упоминание stm32?..

Там, насколько я понял, просто настроена отладка с ст-линком под openocd. Т.е. чтобы работала и в Debug конфигурации показывала нужные окна и пр. Еще используются обычные arm-non-eabi тулчейны, но введены небольшие упрощения/изменения в настройках. Все "заточено" под стм32. В самой "чистой" эклипсе этот плагин можно отдельно использовать (создавать проекты с ним/разбираться с готовыми проектами), а можно использовать и др. плагины - например GCC Cross Compiler и пр. Т.е. скорее всего Ваши плагины под миландровские процессоры тоже будут спокойно "уживаться" вместе в эклипсе. Если конечно знать меру наверно и не переборщить с общим кол-вом этих плагинов имхо.
x893
Цитата(AleksBak @ Mar 2 2016, 08:11) *
Я вот до сих пор не пойму за что такие бешенные (!) деньги просят за Keil и IAR. В ихних убожеских (реально таких!) редакторах невозможно что-то большое писать и долго причем. Даже бесплатно и то не хочется пользоваться этими средами. Может и потому что за время работы с др. контроллерами (не ARM) я уже привык к норм. редактору, подсветки кода, поиску и пр. и пр.? А как только стал изучать ARM-ы, то в шок меня ввели эти IAR с Keil-ом, а другие люди уже просто привыкли к ним? Не знаю. Вообщем вот так.

Это приходит со временем.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.