Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросы по Eclipse, CDT, Zylin embedded CDT
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
_Артём_
Цитата(Метценгерштейн @ Nov 11 2012, 22:42) *
Почему при создании проекта и написании кода горит вопросик напротив инклуда?
скрин


Наведите мышкой на "вопросик" и он подскажет что не так.
Скорей всего не знает где эти инклуды.

Цитата(Метценгерштейн @ Nov 11 2012, 22:42) *
можно еще раз объяснить, зачем нужен плагин для АВР, например. Почему не достаточно тулчейна?

Тулчейна скорей всего достаточно.
Для АВР я не пробовал Eclipse настраивать, делал для АРМ. Если проект makefile project, то eclipse всё что нужно находит (или почти всё). Plugin даёт возможность настраивать проект через интерфейс Eclipse и может ещё что-то бесполезное умеет. Наверное с АВР как-то также.

Метценгерштейн
делал AVR Cross Target Application.
Т.о. полагал, что maikfilr он создаст автоматом.

вопросик- неразрешенное включение пишет.
Где его там разрешать надо?
_Артём_
Несколько вопросов по Eclipse.

1. Можно ли поставить на Helios C/C++ GDB Hardware Debugging plugin вместо Zylin-а? Вроде GDB Hardware Debugging plugin отладка комфортней.
2. Почему-то C/C++ GDB Hardware Debugging plugin нельзя на вкладке Variables выбрать для просмотра глобальные переменные. Куда они делись?
3. Как настроить редактор, чтобы при нажатии на Ctrl+Rigth (млм Left) курсор переходил на следующее слово, а не на следующий "слог"?
Метценгерштейн
а у нас надо вручную добавлять инклуды в эклипсу что-ли?

Разобрался. Глючило что-то у меня.
Метценгерштейн
как правильно из Эклипсы AVReal вызывать?
в external tools какие аргументы задавать, если файлы лежат в ../release

${project_loc:/release/out.hex} ${project_loc:/release/out.ee.hex}

так корректно?
_Артём_
Цитата(Метценгерштейн @ Nov 17 2012, 22:51) *
как правильно из Эклипсы AVReal вызывать?
в external tools какие аргументы задавать, если файлы лежат в ../release

${project_loc:/release/out.hex} ${project_loc:/release/out.ee.hex}

так корректно?


Использую для программирования не AVReal, но думааю без разницы.

На вкладке Exrnal tool configuration создана launch configuration у которой
1) в поле location - путь к exe-файлу прошивальщика
2) в поле Arguments -
-v -f "${workspace_loc:/${project_name}/exe/${project_name}.bin}"
PS. Bin файл лежит по такому пути - proj_name/exe/proj_name.bin
Метценгерштейн
А что за ключи -v -f ?
А почему у Вас папка exe есть? Она автоматом создалась? У меня release только есть.
Чем в данном случае отличается
workspace_loc:
от
project_loc:
?
_Артём_
Цитата(Метценгерштейн @ Nov 18 2012, 04:37) *
А что за ключи -v -f ?

Эти ключи от моего программатора, к AVReal не имеют отношения.

Цитата(Метценгерштейн @ Nov 18 2012, 04:37) *
А почему у Вас папка exe есть? Она автоматом создалась?

Это я сам создал. У меня там bin-файл.


Метценгерштейн
вот рабочая строчка для АВРеала
${project_loc}\release\out.hex ${project_loc}\release\out.ee.hex
swisst
Установлено Eclipse Juno CDT+ArmPlugin+Zylin Embedded CDT, компилятор CodeSourcery G++

подскажите, есть ли возможность пошагать по программе без аппартного отладчика ? если да - ткните плз какие команды прописать во вкладдке Commands lkz Embedded GDB
Метценгерштейн
Вопрос- если у меня внешний компилятор- WinAVR, подключаемый make file, который говорит, где компилятор и что делать с ним.
Зачем нужен плагин АВР?
Ведь Эклипса- только как редактор кода выступает.
AHTOXA
Ну, значит не нуженsm.gif
(Я вообще не понимаю, зачем нужны эти плагины. От них только путаница и глюки. ИМХО конечно.)
_Pasha
Цитата(AHTOXA @ Dec 2 2012, 15:00) *
зачем нужны эти плагины. От них только путаница и глюки. ИМХО конечно.)

А я все-таки хочу с плагином чтоб было!
Вопрос такой:
как-то наступил на
строчка в link.ld
Код
INCLUDE "memory.ld"

Только под CDT выдает ошибку
Код
cannot open linker script file memory.ld: No such file or directory

Ну, разок плюнул и забыл. Но проблема-то осталась. Пути поиска не помогают. Что ему надоть?
AHTOXA
Вот тут плагины как раз не при чёмsm.gif
Нужно указывать путь относительно makefile. То есть, что-то типа
Код
INCLUDE "scripts/memory.ld"

_Pasha
Цитата(AHTOXA @ Dec 6 2012, 13:01) *
Вот тут плагины как раз не при чёмsm.gif

Я бы не спрашивал, если б в C::B такое не прокатывало без вопросов. Т.е. структура каталогов такая, что скрипты берутся из другого проекта, чтобы писанины/копипастинга было поменьше.
AHTOXA
Да тут IDE вообще не при чём. Это проблема линкера. Дело в том, что если ему указан какой-то путь к .ld (типа path/to/file.ld), то инклюды, прописанные в этом скрипте, он ищет не рядом со скриптом, а в текущем каталоге.
Что касаемо хранения скриптов в одном месте - могу посоветовать использовать ссылки. Я тоже над этим размышлял, но пока ещё не дозрелsm.gif
AHTOXA
Нашёл!
Надо просто добавить в ком. строку линкера -Lpath/to/script.
_Pasha
Цитата(AHTOXA @ Dec 6 2012, 19:31) *
Нашёл!
Надо просто добавить в ком. строку линкера -Lpath/to/script.

Гран мерси, як кажуть в Одесi sm.gif
Вообще из виду ушло...
AHTOXA
Цитата(_Pasha @ Dec 6 2012, 22:17) *
Вообще из виду ушло...

Это всё из-за плагинов. Они мешают видеть сутьsm.gif
imiron13
Зависает индексация в Eclipse Juno (все сломалось после крэша при отключении питания во время работы). После перезагрузки Eclipse, компа задание индексации не пропадает, продолжает висеть: прогресс 0%, загрузка ЦП - 100%. Отмена задания через красную кнопочку не срабатывает, пишет: cancel requested, но продолжает висеть.

Нажмите для просмотра прикрепленного файла

в .metadata\.log следующее сообщение:
!ENTRY org.eclipse.core.jobs 2 2 2012-12-17 21:15:46.471
!MESSAGE Job found still running after platform shutdown. Jobs should be canceled by the plugin that scheduled them during shutdown: org.eclipse.cdt.internal.core.pdom.PDOMManager$4

Может кто-нибудь знает, каким способом можно завершить эту несчастную индексацию?

___
Оопс... разобрался. Просто удалил текст из исходника на котором спотыкался индексер.
Метценгерштейн
подскажите, переставил винду- сделал импорт проекта, куча ошибок на все подряд. Похоже, библиотеки не подцепились. Как их добавить проекту? И почему так произошло?

изменил при импорте на AVR GCC Tolchain- пропали ошибки. Это я подключил к проекту тот самый плагин АВР?

почему-то не могу прошить АВРеалом из эклипсы.
${project_loc}\release\out.hex ${project_loc}\release\out.ee.hex
и при добавлении проекта заново- настройки external tools пропадают

разобрался тут- оказывается, нужно стоять именно в проект эксплорере. Если фокус на файле- то ругается. Вот такой у эклипса глюк.
Метценгерштейн
не могу создать проект новый как
C/C++ project, Makefile project, other toolchain.

что ему не так?

разобрался- надо на галочку тыкать, чтобы открылась папка целиком вся. Не привык еще к ней.
Метценгерштейн
очередная непонятка)

проект компилится нормально, но при заливке в кристалл- не работает и все. Даже лед не зажечь никак. Хотя ни одной ошибки при компиляции. Программатор ни при чем тут. Другие файлы он нормально прошивает.
кто что подсказать может?
AHTOXA
"Makefile project, other toolchain"? Покажите makefile, и скрипт линкера, если используется свой.
Метценгерштейн
да, свой make
http://files.mail.ru/NUXARQ

скачайте, плз от сюда.
_Артём_
Цитата(Метценгерштейн @ Dec 28 2012, 21:17) *
Даже лед не зажечь никак.

Возможно лед не горит потому что порт на выход не настроен, или лед нитуда подключен.
Попробуйте в AVRStudio в симуляторе запустить.
Метценгерштейн
светодиод подпаян к PD3. Другим кодом он прошивается и работает.
вот настройки моего проекта
Код
    PORTD = (0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(0<<1)|(0<<0);            // все ноги в 0
    DDRD =(1<<7)|(1<<6)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0);              // все ноги на вывод


как видим, PD3 на выход настроен.
что-то еще тут
_Артём_
Цитата(Метценгерштейн @ Dec 28 2012, 23:18) *
как видим, PD3 на выход настроен.
что-то еще тут

Ну, убедили...да.

Открываем out.map, задаём в поиск __low_level_init и смотрим адрес где оно расположено. Где?

Или так меняем программу:
Код
void main (void) {
    __low_level_init();
    sei();

Горит? Если да - то это глюк компилятора, не иначе.

Метценгерштейн
да! Заработало!
так что это было?
вставил строку
__low_level_init();
сразу после открытия ф-ии main()
_Артём_
Цитата(Метценгерштейн @ Dec 28 2012, 23:37) *
да! Заработало!

Не совсем - __low_level_init запустилась не сразу после ресета. Наверное

Цитата(Метценгерштейн @ Dec 28 2012, 23:37) *
так что это было?

Если не ошибаюсь, __low_level_init - это в Иаре. А в GCC должно быть что-то
__attribute__ ((section ("какая-то секция"))); // init номер какой-то
Метценгерштейн
хорошо, а принудительно можно вызывать
__low_level_init
сразу из main();
или это не корректно?

и сразу еще вопрос- хочу тут же в эклипсе писать crotex M3- эклипс только Гелиос подходит? Не старшие?

Цитата:
Так как ARM Plugin поддерживает Eclipse версии не старше, чем Helios (3.6.x), то её и поставим с официального сайта, взяв самую свежую версию на данный момент — 3.6.2 (Helios SR2).
_Артём_
Цитата(Метценгерштейн @ Dec 29 2012, 00:02) *
хорошо, а принудительно можно вызывать
__low_level_init
сразу из main();
или это не корректно?

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

Цитата(Метценгерштейн @ Dec 29 2012, 00:02) *
и сразу еще вопрос- хочу тут же в эклипсе писать crotex M3- эклипс только Гелиос подходит? Не старшие?

Чтобы писать любой редактор подходит, какой нравится.

Цитата(Метценгерштейн @ Dec 29 2012, 00:02) *
Так как ARM Plugin поддерживает Eclipse версии не старше

Это плагин для настройки проекта? Имхо, довольно неудобная штука, не наглядно как-то.
Makefile проще.
IgorKossak
Цитата(Метценгерштейн @ Dec 29 2012, 00:02) *
Так как ARM Plugin поддерживает Eclipse версии не старше, чем Helios (3.6.x), то её и поставим с официального сайта, взяв самую свежую версию на данный момент — 3.6.2 (Helios SR2).

На данный момент самая свежая версия Juno SR1, а если Вы энтузиаст, то Kepler M4.
С обеими работает.
Метценгерштейн
Я уже сам запутался в этих плагинах)
Понял только одно, что eclipse вызывает внешний компилятор, который и нужно установить.
Я хочу использовать внешний makefile. Мне плагин тогда не нужен?

почему ругается на синтакс эррор
ISR (TIMER1_COMPA_vect)
?

как в проекте добавить данные по
Project->Propertities->C/C++ Build->Discovery Options
чтобы их каждый раз заново не прописывать? Типа как в ИАРе- открыл воркспейс- и все подтянулось само уже.
_Артём_
Цитата(Метценгерштейн @ Dec 29 2012, 01:31) *
Понял только одно, что eclipse вызывает внешний компилятор, который и нужно установить.
Я хочу использовать внешний makefile. Мне плагин тогда не нужен?

Этот нет.

Цитата(Метценгерштейн @ Dec 29 2012, 01:31) *
почему ругается на синтакс эррор
ISR (TIMER1_COMPA_vect)
?

видимо не хватает нужного хидера где определён макрос ISR.
Он может быть где-то тут

c:\Program Files\Atmel\AVR Tools\AVR Toolchain\avr\include\avr\interrupt.h

Цитата(Метценгерштейн @ Dec 29 2012, 01:31) *
Project->Propertities->C/C++ Build->Discovery Options
чтобы их каждый раз заново не прописывать? Типа как в ИАРе- открыл воркспейс- и все подтянулось само уже.

Что значит "заново" и "само"? Хотя конечно тема Discovery Options довольно неисчепаема-таки...
AHTOXA
Цитата(Метценгерштейн @ Dec 29 2012, 05:31) *
Я уже сам запутался в этих плагинах)
Понял только одно, что eclipse вызывает внешний компилятор, который и нужно установить.
Я хочу использовать внешний makefile. Мне плагин тогда не нужен?

Да, тогда не нужен плагин. В этом случае весь процесс сборки полностью контролируется мейкфайлом.
Цитата(Метценгерштейн @ Dec 29 2012, 05:31) *
как в проекте добавить данные по
Project->Propertities->C/C++ Build->Discovery Options
чтобы их каждый раз заново не прописывать?

Тут выше по теме всё подробно объяснено.
Метценгерштейн
Цитата(AHTOXA @ Dec 29 2012, 12:17) *
Тут выше по теме всё подробно объяснено.

так и так и делаю. Только после того как закрыл проект(Delete). Открываю его заново, приходится дисковери заново прописывать - оно теряется. Или не все понял корректно?
IgorKossak
Цитата(Метценгерштейн @ Dec 29 2012, 10:53) *
Только после того как закрыл проект(Delete). Открываю его заново, приходится дисковери заново прописывать - оно теряется. Или не все понял корректно?

Проект закрывается не по Delete, а по Close.
Цитата
... Типа как в ИАРе...

Чем быстрее откажетесь от старых привычек, тем легче будет осваивать Eclipse.
К слову: IAR тоже переходит на Eclipse, пока только для ARM.
Метценгерштейн
Новости про ИАР хорошие) Давно пора их блокнот чем-то заменить уже)

Цитата(_Артём_ @ Dec 29 2012, 04:41) *
видимо не хватает нужного хидера где определён макрос ISR.
Он может быть где-то тут
c:\Program Files\Atmel\AVR Tools\AVR Toolchain\avr\include\avr\interrupt.h


есть там такое
Код
#ifdef __cplusplus
#  define ISR(vector, ...)            \
    extern "C" void vector (void) __attribute__ ((signal,__INTR_ATTRS)) __VA_ARGS__; \
    void vector (void)
#else
#  define ISR(vector, ...)            \
    void vector (void) __attribute__ ((signal,__INTR_ATTRS)) __VA_ARGS__; \
    void vector (void)
#endif


только все компилится нормально, даже прерывания работают. А ошибка синтактическая выдаётся
на строку
ISR (TIMER1_COMPA_vect)
_Артём_
Цитата(IgorKossak @ Dec 29 2012, 11:55) *
Проект закрывается не по Delete, а по Close.

А если надо, например, открыть другую версию того же проекта? Close не поможет. Нужно Delete сделать.

Цитата(Метценгерштейн @ Dec 29 2012, 10:53) *
риходится дисковери заново прописывать - оно теряется

Где вы дискавери прописываета? Дискавери у вас используется как отладчик или программатор?

Цитата(Метценгерштейн @ Dec 29 2012, 12:59) *
только все компилится нормально, даже прерывания работают. А ошибка синтактическая выдаётся
на строку
ISR (TIMER1_COMPA_vect)

Если ошибка выдаётся, то значит проект не собирается. Что вы тогда зашиваете?
Метценгерштейн
ошибка типа варнинг. т.е. не критическая.

дискавери описываю как тут
хотелось бы, чтобы при открытии проекта, или кто прислал мне проект, то все настройки подтягивались к нему- внешний make или другое что. Но подтягивались Это в принципе возможно?
_Артём_
Цитата(Метценгерштейн @ Dec 29 2012, 14:38) *
ошибка типа варнинг. т.е. не критическая.

Текст приведите что ли.


Цитата(Метценгерштейн @ Dec 29 2012, 14:38) *
дискавери описываю как хотелось бы, чтобы при открытии проекта, или кто прислал мне проект, то все настройки подтягивались к нему- внешний make или другое что. Но подтягивались

Прочитал у дискавери и почему подумал что вы про stm32-discovery. sm.gif
Index - Rebuild не помогает?
Метценгерштейн
вот варнинг


про Index - Rebuild попробую- спасибо

не найти про GCC как периферию описывать корректно, типа __low_level_init ИАРа- кто подскажет?

потерял ссылку по настройке Eclipse под STM32- человек внешний make прикручивает. Не могу теперь найти ее.
может кто знает? Там говорится, что есть два способа, но мы будем пользоваться вторым- прикручивать внешний make файл... как-то так.
_Артём_
Цитата(Метценгерштейн @ Dec 29 2012, 15:53) *
не найти про GCC как периферию описывать корректно, типа __low_level_init ИАРа- кто подскажет?

Вам периферию или вызов функций до main?
Периферия МК описана в хидерах для конкретного МК. Достаточно написать что-то типа такого
Код
#include <avr/io.h>
#include <avr/interrupt.h>

и в makefile указать тип МК.
Насчёт вызова функций :
Код
#include <avr/io.h>

void my_init_portb (void) __attribute__ ((naked)) \
    __attribute__ ((section (".init3")));

void my_init_portb (void)
{
        PORTB = 0xff;
        DDRB = 0xff;
}

Этот пример можно найти по такому пути (если у вас Виндовс)
Пуск - Программы - Atmel AVR Tools - AVR Toolchain - AVR-libc manual HTML - User Manual - Using Sections in C Code

Цитата(Метценгерштейн @ Dec 29 2012, 15:53) *
потерял ссылку по настройке Eclipse под STM32- человек внешний make прикручивает.

А что конкретно не прикручивается?

Цитата(Метценгерштейн @ Dec 29 2012, 15:53) *
Там говорится, что есть два способа, но мы будем пользоваться вторым- прикручивать внешний make файл... как-то так.

Какой первый способ интересно?


Цитата(Метценгерштейн @ Dec 29 2012, 15:53) *
вот варнинг

По поводу варнинга. Эклипс какой-то cs-make найти не может. Где-то он у вас зачем-то прописан.
Открыл ваш проект (с прошлой страницы) всё собралось. У вас не собирается или что?
Метценгерштейн
cs-make - это к АРМу проекту. У меня варнинг на АВР проекте. Там на скрине видно. У меня тоже АВР проект собирается нормально.

Да просто хотелось бы пошагово описание как чего куда приделывать- а то тут
все сделал, а как эклипсе путь до компилятора показать, похоже, упущено. Вот эта ошибка cs-make и вылезает. Могу ошибаться.

Первый способ там был обычный, как и на робокрафте.

насчет инициализации- там в примерах просто делается ф-я перед main();
а в начале main() она вызывается
ioinit ();

в общем- то и всё. У нас так же получается.
_Артём_
Цитата(Метценгерштейн @ Dec 29 2012, 17:03) *
cs-make - это к АРМу проекту. У меня варнинг на АВР проекте. Там на скрине видно. У меня тоже АВР проект собирается нормально.

Это понятно что cs-make для АРМа. Зачем он у вас к АВР вылазит? Не инача где-то прописан.


Цитата(Метценгерштейн @ Dec 29 2012, 17:03) *
Да просто хотелось бы пошагово описание как чего куда приделывать- а то тут
все сделал, а как эклипсе путь до компилятора показать, похоже, упущено. Вот эта ошибка cs-make и вылезает. Могу ошибаться.

Есть способ попроще, но уже устаревший - тут.

Нажмите для просмотра прикрепленного файла
Пример проекта: Нажмите для просмотра прикрепленного файла
Более-менее отображает что нужно. Хотя тип авр приходится указывать.

Как бы ещё Jtag к эклипсе подключить?

Цитата(Метценгерштейн @ Dec 29 2012, 17:03) *
насчет инициализации- там в примерах просто делается ф-я перед main();
а в начале main() она вызывается

Нет, она вызывается через пару десятков тактов после ресета. А до main-а очередь может дойти через несколько тысяч тактов, если глобальных переменных много. Есть разница.
Метценгерштейн


в свой проект вставил Вашу инициализацию- все работает и прошивается. Однако, варнинг висит...
маке файл старый свой использовал.

Ваш проект заменил описание дисковери options как Сергей Борщ описывал, тоже все работает, и так же висит этот же варнинг.

Еще заметил, что проект подцепил, все используемые имена из библиотек красные- не увидел их. Обновить (F5) не получилось. Только после закрытия и открытия заново эклипса, все пришло в нормальный вид- краснота прошла.
Как еще можно с этим бороться?
_Артём_
Ошибочка у меня:
Код
-mmcu=atmega8

Нужно добавлять не compiler invocation command (тaм только avr-gcc), а в
compiler invocation arguments:

Код
-mmcu=atmega8 -E -P -v -dD ${plugin_state_location}/${specs_file}

Так вроде работает
Метценгерштейн
Цитата(_Артём_ @ Dec 30 2012, 00:24) *
Код
-mmcu=atmega8 -E -P -v -dD ${plugin_state_location}/${specs_file}

Так вроде работает

так а зачем тут проц указывать? Он указывается в make файле. Этого хватает.
_Артём_
Цитата(Метценгерштейн @ Dec 30 2012, 10:29) *
так а зачем тут проц указывать? Он указывается в make файле. Этого хватает.

Так у вас тип МК из makefile? И регистры с типами все эклипс подсказывает? Тогда выложте проект посмотреть.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.