Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Eclipse + GCC для ARM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Страницы: 1, 2, 3, 4, 5, 6
sleo2000
Всем хороши коммерческие версии типа Keil, IAR, ... кроме цены. А "лекарство" выходит частенько с опозданием на год и более. Да и отладчики (JTAG) у них не самые дешевые.
Сейчас многие начинают советовать GCC на платформе Eclipce с OpenOCD дебагером, который поддерживает от wiggler-а до Segger-а - кому что по карману.
Да, GCC уступает немного коммерческим компиляторам по скорости и плотности кода, на у ARM-ов и памяти и скорости для большинства задач - с запасом.
Одна беда - при всем разнообразии подобных пакетов нет ни одного, чтобы поставил - и сразу заработало...
Может кто-то уже прошел через эти тернии? Вопрос не праздный...
DASM
Баян
http://electronix.ru/forum/index.php?act=S...ighlite=eclipse
МТЛинк за $70 не по карману ?
sleo2000
Цитата(DASM @ Oct 24 2007, 02:59) *
Баян
http://electronix.ru/forum/index.php?act=S...ighlite=eclipse
МТЛинк за $70 не по карману ?


Я купил уже от OLIMEX ARM-JTAG и ARM-JTAG-Tiny - по документации они как раз под такую среду и заточены. Но после Keil здесь - как в дремучем лесу... ни загрузка, ни отладка не работает - только компилить простой пример пока получилось.
Puzan
Я использую Eclipse+GCC+OOCD+самосборное подобие Wiggler'a. Проблем нет (кроме одного всем известного глюка с вызовом функций из обработчика прерываний в ARM-моде). Всё собирал вручную.
Забыл сказать, что работаю в линуксе.
KEIL и IAR не пробовал (точнее пробовал, но как-то не пошло. непривычно).
Для AVR и MSP тоже использовал Эклипс+GCC, а для TMS320 - Эклипс+техасовский компилятор, который был жестоко выдран (собственно там ничего жестокого нет smile.gif ) из из CCS, и который запускался через wine (кстати, прекрасно работал). Единственный минус - не нашел, как сделать отладку TMS-а из линукса.
Для Linux/x86 естественно тоже использую Эклипс+GCC. Его-же использую и для написания скриптов на Ruby/Python/Perl (иногда нужно).
Таким вот образом обеспечил себе обнообразие среды разработки.
Leen
2 Puzan: не могли бы вы выложить рекомендации по настройке среды с нуля, а то я начал копать эту тему с той же целью - ободнообразить среды разработки. Правда, в цигвине. Пока знаю только как собирать гцц и утилиты. А вот интеграция эклипса с компилерами, да еще и разными, с дебагерами - это темный лес, терра инкогнита. Версии софта максимально свежие. И еще: мне не нужно знать, где взять "готовую сборку", чтоб, дескать, не мучаться. Хочу понять, как все это хозяйство друг к другу прикручивать.
Вы используете только внутрисхемный отладчик, или есть возможность симулировать (в т.ч. и периферию)?
klen
1. Устанавливаете Sun JRE 6u3 (тоесть самый свежий)
2. качаете Eclipse
3. обновляете Eclipse
4. удаляете в Eclipse плагин CDT если он есть
5. качаете плагин embeddedCDT c www.zylin.com и ставите его(там все написано как)
5. запускаете и проверяете.
6. настраиваете в тулсах OpenOCD, в отладке arm-elf-gdb(тут главное загрузочный скрипт)
7. наслаждаетесь

я работаю так под Масдаем XP и под Ubuntu 6.10 64bit
Abo
Цитата(klen @ Oct 25 2007, 09:37) *
4. удаляете в Eclipse плагин CDT если он есть
5. качаете плагин embeddedCDT c www.zylin.com и ставите его(там все написано как)


2 klen:
Если удалить CDT, то софт для Win и Linux уже нельзя будет собирать?
Leen
Цитата(klen @ Oct 25 2007, 16:37) *
6. настраиваете в тулсах OpenOCD, в отладке arm-elf-gdb(тут главное загрузочный скрипт)

Вот с этим и предстоит, похоже, разбираться в основном. Есть куча док по каким-то тулзам. А не помешало бы и наличие howto по всем (или хотя бы многим) аспектам настройки среды выполнения программных проектов. Заодно, пр наличии такого мана больше новичков потянется к опенсорсу. А то когда я начинал (с год назад), посмотрел на клипсу, пощупал - не работает. А кейл завелся сразу. И так у многих.
Выкладываю здесь нашу переписку со sleo2000:
Цитата
Цитата
Цитата

Пока поставил cygwin и учусь собирать бинутилы (ассемблер, линкер + еще немного) и собсно гцц под свои нужды. Насчет эклипса пока сильно не копал. Конечная цель моих изысканий - создать для себя (и написать хотя бы простенький howto по теме) среду разработки для процессоров с ядром арм и i386, чтобы можно было писать и микрокод, и настраивающе-тестирующие проги для ЭВМ в одной оболочке. Ну и чтоб дяди в сером не слишком приставали Может, получится объединить усилия? А то информации и в самом деле очень мало, даже на английском... Приходится перерывать кучи манов и форумов. Эффект пока мизерный.
С уважением, leen.

МЫ копаем эту тему вдвоем. На простых примерах собрать проект для LPC под этой средой (все вместе с ECLIPCE) вроде получается - осталось самое главное: научиться через JTAG грузить код в микропроцессор и отлаживать его там.
Тоже хотим сделать свой HowTo. Материалов для чайников много, но для тонкой настройки проектов придется штудировать отдельно описания всех компонентов и выбирать самое важное.
А причина примерно та же - чтобы не платить тысячи баксов за рабочее место, но при этом оставаться чистым перед законом.

Отлично, тогда, надо это все делать. У меня раньше не было опыта в разработке таких вещей. Но, по-моему, для начала надо поставить и согласовать цели и написать список TODO.
Я думаю, ко мне присоединится пара моих друзей, озадаченных этой проблемой - через некоторое время.
Цель - уже писал - создание бесплатной рабочей среды на основе открытых программ под различные адра (пока арм и ix86, затем неплохо покопать авр и мсп430), создание мануала по созданию этой среды. Среда должна обеспечивать выполнение следующих задач:
- создание проектов под конкретные чипы (не под абстрактрое арм7 ядро, а именно под кристалл - со своими стартапами, картами памяти и заголовочными файлами);
- редактирование исходников;
- контроль версий ПО (предлагаю опираться на SVN, как на более свежую по сравнению с CVS разработку);
- сборку проектов;
- отладку в симуляторе (по возможности с поддержкой периферии, хотя не факт, что это так необходимо) и на плате в режиме эмуляции;
- прошивку готовых изделий;
Задачи:
1 определить необходимые модули;
2 научиться собирать и ставить необхоодимые модули;
3 и далее - пока теряется в тумане.

Если будет желание помочь, дельные мысли - просим.
Пока что все в самом начале.
Сергей Борщ
Цитата(Leen @ Oct 25 2007, 11:52) *
Вот с этим и предстоит, похоже, разбираться в основном. Есть куча док по каким-то тулзам. А не помешало бы и наличие howto по всем (или хотя бы многим) аспектам настройки среды выполнения программных проектов.
На Yagarto есть документация по прикручиванию Open OCD. Самой железки пока нет, поэтому не пробовал. Но выглядит документация довольно неплохо.
sleo2000
Цитата(Сергей Борщ @ Oct 25 2007, 13:44) *
На Yagarto есть документация по прикручиванию Open OCD. Самой железки пока нет, поэтому не пробовал. Но выглядит документация довольно неплохо.


Документация то есть, причем по стилю - хуже, чем для чайников. Объем огромадный, но в основном за счет всех окон всех инсталяторов biggrin.gif

Готовые сборки есть, и не одна - у меня есть Yagarto, Olimex, Amontec... Но пока эффект плачевный: все поставлено и запущено точно по ДОК-е, пример компилится (под LPC21xx), но даже при заливке сгенерированного HEX файла проверенным загрузчиком от Philips в чипе не работает...

При всей своей привлекательности этот инструмент уже многих, вероятно, заставил отвернуться. Мы вдвоем копаемся уже вторую неделю, но пока без явного положительного эффекта. А те же коммерческие среды (с ARM я работал под KEIL и IAR, для AVR есть шикарная pascale-образная среда у немцев со встроенной на уровне компилятора реально работающей многозадачностью и шикарными библиотеками под любую периферию) - так вот, эти среды дают практический выход на второй - третий день после первого запуска.

При всем моем уважении к концепции Open Source сегодня не уверен, что это дешевле - если я провожусь с установкой, настройкой и освоением месяц, то дешевле купить последнюю версию того же RealView или IAR... причем вместе с реально работающим JTAG отладчиком.

Если же общими усилиями удастся что-то сделать РЕАЛЬНО работающее даже в руках новичка - это будет реабилитацией Open Source.
Готов еще некоторое время посвятить этому мероприятию. И даже пописать итоговый мануал.

P.S. под unix - овыми платформами не работал и не смогу - есть определенные ограничения, поэтому речь с моей стороны только о "форточках".
Terminator
Немного offtopic
Есть проект в eclipse, вроде всё работает, но почему-то eclipse упорно отказывается ходить по "Open Definition" на некоторые функции. Не на все, а только на некоторые.
Кто сталкивался с таким поведением?

И ещё вопрос, есть ли для eclipse модуль для автоматического выравнивания кода? По типу как в vim, indent.
axle
Цитата(sleo2000 @ Oct 25 2007, 19:54) *
Готовые сборки есть, и не одна - у меня есть Yagarto, Olimex, Amontec... Но пока эффект плачевный: все поставлено и запущено точно по ДОК-е, пример компилится (под LPC21xx), но даже при заливке сгенерированного HEX файла проверенным загрузчиком от Philips в чипе не работает...

Вы говорите об отладчике, компиляторе, линкере или вашей программе? Что не работает?

С отладчиком согласен, нужно повозится чтобы запустить. Но что может не работать в компиляторе?
Я пользуюсь arm-elf-gcc давно, сначала под XP, потом перешел на Linux. С компиляцией и сборкой проблем никаких.
Посмотрите примеры тут: http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/ . Должны отлично работать, я лично многие пробовал.

Может зададите вопрос поконкретнее? Какая задача и на каком этапе не работает?
etoja
В GCC некорректно работает обработчик прерывания IRQ.
Для быстрой разработки программ используйте KEIL,
а для профессиональной работы - компилятор Green Hills.
Оба есть в местных закромах, так что на счёт цен не надо смешить народ.
Terminator
Цитата(etoja @ Oct 26 2007, 10:38) *
В GCC некорректно работает обработчик прерывания IRQ.

В чём заключается некорректность?
etoja
Вот обсуждение этого вопроса. Проблеме уже больше двух лет и никто её не решает, поскольку за GNU проекты никто не отвечает.
axle
Цитата(etoja @ Oct 26 2007, 10:38) *
Оба есть в местных закромах, так что на счёт цен не надо смешить народ.

Зачем подбиваете людей воровать? Они может новую жизнь начинают. biggrin.gif
etoja
Будем реалистами. Китайцы бульдозерами утрамбовывают диски с западной музыкой, а диски и сайты для разработчиков никто не трогает. Откуда берутся крякнутые дистрибутивы по 300...600 мегабайт? Пароходом из америки?
Terminator
Цитата(etoja @ Oct 26 2007, 11:45) *
Вот обсуждение этого вопроса. Проблеме уже больше двух лет и никто её не решает, поскольку за GNU проекты никто не отвечает.

А зачем вложение в PDF?

Я не сталкивался с такой проблемой. Все обработчики объявлены naked и использую
Код
portENTER_SWITCHING_ISR()
portEXIT_SWITCHING_ISR()

Проект под FreeRTOS
Leen
Цитата(etoja @ Oct 26 2007, 14:38) *
В GCC некорректно работает обработчик прерывания IRQ.

До какой версии? Еще не проверял, но это было в версии 4.1.2, сейчас стабильная 4.2.2, в работе 4.3.
Цитата(etoja @ Oct 26 2007, 14:38) *
Для быстрой разработки программ используйте KEIL, а для профессиональной работы - компилятор Green Hills.
Оба есть в местных закромах, так что на счёт цен не надо смешить народ.

Ага. Так вот. Мы не собираемся смешить народ. Мы хотим научиться использовать именно _бесплатную_ среду (оболочка, асм+компилер+линкер, симулятор, интерфейс эмулятора, кой можно собрать на коленке, и кой будет работать и в вынь, и в линь - на FT2232), а не _ворованную_, как это есть сейчас. И попытаемся помочь другим таким же щепетильным. Мне, например, это не нравится. Потому и баламучу тему.
2 sleo2000: предлагаю работать на свежих утилитах.
Мои версии:
binutils-2.18
gcc-4.2.2
gdb-6.7
eclipse в понедельник обновлю до 3.3.1, пока 3.3.0
ve-1.2M3
эти два пока не обновлялись - на хомсайте валяются эти версии:
zylincdt4.0-20070830
embeddedcdt4.0-20070830
Еще что-то на работе было, не помню.

ява 6.2, вышла 6.3.
Можно обновить, но тоже в понедельник - там за трафик не ругаются.
Что еще надо - добавляй.
xelax
Цитата(etoja @ Oct 26 2007, 07:38) *
В GCC некорректно работает обработчик прерывания IRQ.
Для быстрой разработки программ используйте KEIL,
а для профессиональной работы - компилятор Green Hills.
Оба есть в местных закромах, так что на счёт цен не надо смешить народ.


А если заказчик требует щепетильности при использовании ПО и соблюдению всех лицензий twak.gif ...
Так что ворованное не прокатит.
Пока что связке gcc+eclipse+gdb не вижу альтернативу. Да и переход с iar на эту связку прошёл довольно безболезненно, благодаря James Lynch и его докам.

З.Ы. ещё гигантский плюс в том, что в одной IDE проекты для разных платформ можно реализовывать.
До этого приходилось два iarа держать на компе для arm и для avr.
Puzan
Цитата
2 Puzan: не могли бы вы выложить рекомендации по настройке среды с нуля

В принципе ничего сложного нет. Компилируем binutils, gcc (с опцией --without-headers, нужен для того, чтобы им скомпилить newlib), newlib и снова gcc (уже полностью, с поддержкой newlib). При этом ставим необходимые опции для целевой платформы (для ARM это --target=arm-elf --enable-interwork --enable-multilib).
Всё, можно компилировать программки.

Чтобы компилятор не использовал инициализацию от newlib (например crt0), в опциях линкера ставим -nostartfiles -nostdlib и пишем свой инициализирующий код. Чтобы при этом использовать функции из newlib, добавляем с список объектных файлов libc.a.
Вот как сделал я (кусок Makefile'a):
Код
CFLAGS  = $(FLAGS) -mcpu=$(MCU) -mtune=$(MCU) -march=$(CPUARCH) $(DEBUG) $(THUMB_IW) \
          -Wall -std=gnu99 -O$(OPTLEVEL) $(INCLUDES)
LDFLAGS = -nostartfiles -nostdlib -T lpc2148_rom.ld
LIBGCC  = `$(CC) $(CFLAGS) $(THUMB) -print-libgcc-file-name`
LIBDIR  = /opt/armgcc/arm-elf/lib/`$(CC) $(CFLAGS) -print-multi-directory`
LIBC    = $(LIBDIR)/libc.a

...

$(ELF)    : $(OBJS) $(OBJS32) $(OBJSAS)
        @echo $(MSG_LINKING) $@
        $(LD) -Map $(MAP) --cref $(LDFLAGS) -o $@ $(OBJALL) $(LIBGCC) $(LIBC)
        @echo $(MSG_SIZE)
        $(OBJSIZE) $@

$(OBJS)   : %.o : %.c
        @echo $(MSG_COMPILING) $<
        $(CC) -c $(CFLAGS) $(THUMB) -o $@ $<
...


а вообще, в интернете масса примеров и готовых тулчейнов, в которых можно посмотреть, как это делается.

Эклипс настраивается, как и на системный gcc. Все-таки gcc - он и в африке gcc.

Использую и отладчик (OpenOCD) и симулятор (skyeye), правда для nxp21xx переферию он не эмулирует, по этому применение довольно ограниченное.

Кстати, Zylin Embedded CDT не использовал. Надо попробовать.


А вообще, говорят, что gcc во многих случаях делает более быстрый и компактный код, чем keil или iar.
Я сам не проверял, но вот люди, типа проверили: ftp://www.raisonance.com/STR7/Benchmark/A...C-Benchmark.pdf (обсуждалось когда-то на этом форуме).
etoja
Вопрос к LEEN:

Печатные платы вы чем разводите? Сколько заплатили за САПР?
На каждого пользователя лицензия есть или на всех инженеров одна?
Микрософт офис на вашем компьютере тоже официально куплен?
IgorKossak
etoja, тема называется:
Цитата
Eclipce + GCC для ARM, Среда разработки для ARM, причем бесплатная...

Давайте не будем от неё отклоняться.
Если хотите поднять обсуждение лицензионной чистоты софта, создайте другую тему.
zltigo
Цитата(Puzan @ Oct 26 2007, 13:22) *
но вот люди, типа проверили...

Дела давно минувших дней. Давайте оставим и отсутствие RVCT (явно "намеряли" они там такого, что и возразить на требование ARM убрать сии "результаты" и возразить было нечего ), и минималистичные упоминания о методике и вообще всю эту проверку на их совести. Проверять нужно исключительно самому, со знанием дела, и на свежих релизах компиляторов.
Puzan
Цитата(etoja @ Oct 26 2007, 17:44) *
Вопрос к LEEN:

Печатные платы вы чем разводите? Сколько заплатили за САПР?
На каждого пользователя лицензия есть или на всех инженеров одна?
Микрософт офис на вашем компьютере тоже официально куплен?


Хоть вопрос и не мне (к тому-же и оффтоп), но тоже хочется ответить. Мы в нашей организации платы разводим в KiCAD'е, который GPL, и соответственно денег не стоит. Когда есть свободное время, посильно участвуем в разработке - это наш вклад.
Микрософт офис тоже не используем - для него давно есть замена в лице OpenOffice, который давно уже в большинстве случаем обогнал MSOffice и по функционалу и по удобству.
А вместо Windows используем Linux, что тоже дешевле wink.gif


Цитата(zltigo @ Oct 26 2007, 22:24) *
Дела давно минувших дней. Давайте оставим и отсутствие RVCT (явно "намеряли" они там такого, что и возразить на требование ARM убрать сии "результаты" и возразить было нечего ), и минималистичные упоминания о методике и вообще всю эту проверку на их совести. Проверять нужно исключительно самому, со знанием дела, и на свежих релизах компиляторов.


Тестировал ли кто нибудь (желательно непредвзято) GCC vs RVCT на более-менее комплексных тестах? Интересно узнать результат.
zltigo
Цитата(Puzan @ Oct 27 2007, 09:31) *
Тестировал ли кто нибудь (желательно непредвзято) GCC vs RVCT на более-менее комплексных тестах?

Тесты "комплексные" не проводил, но по личным наблюдениям на текущем этапе троица RVCT-IAR5.10-GCC мало отличима друг от друга. RVCT и IAR очень близки и компилируют с переменным успехом, ну а GCC чуть отстает.
klen
Цитата(zltigo @ Oct 27 2007, 10:53) *
Тесты "комплексные" не проводил, но по личным наблюдениям на текущем этапе троица RVCT-IAR5.10-GCC мало отличима друг от друга. RVCT и IAR очень близки и компилируют с переменным успехом, ну а GCC чуть отстает.

с какими библами???
если уж говорить именно про компиллеры то нада писать нада именно тест-програмку, в которой все РУЧКАМИ написано, чтоб небыло внешних библовых (кто их знает какией у они у вас) вызовов которые повлияют на результат.
а "комплексные" тесты к компиллеру никаких отношений не имели с роду, к среде разработки ДА!!!
zltigo
Цитата(klen @ Oct 27 2007, 11:54) *
с какими библами???

Естественно БЕЗ чего-либо библиотечного в подвергавшихся исследованию местах.
Цитата
а "комплексные" тесты к компиллеру никаких отношений не имели с роду, к среде разработки ДА!!!

Ну перегибать палку не надо - в "С" слишком много на библиотеках, дабы не обращать на это внимание и расуждать о "чистом". С библиотеками ситуация будет похуже для GCC, поскольку при всем их многообразии я, кажется, не наблюдал для GCC библиотек заточенных под ARM и частично писанных на ASM. В коммерческом RVCT это имеется издавна и на тестах с использованием библиотечных он на моей памяти всегда всех делал, иногда очень smile.gif. Для версии 5.10 IAR ситуация с производительностью некоторых библиотечных функций резко изменилать (например, ранее тормозной мемсpy() начал на некоторых массивах обгонять "самодельный" писанный на ASM и вылизанный ) - налицо безвариантная замена чисто сишной портируемой библионечной функции на специализированную. Кстати, для IAR начиная с 5.10 GNU библиотеки, как родные smile.gif. И binutils в комплекте.
Сергей Борщ
Не стал создавать новую ветку.
Вопрос такой - а какой симулятор ARM колеги посоветуют для прикручивания к eclipse для работы под виндовсом? Поиск вывел меня на SkyEye, но насколько я понял, он требует cygwin, а хотелось бы обойтись без cygwin.
sleo2000
Цитата(Puzan @ Oct 26 2007, 14:22) *
.....

а вообще, в интернете масса примеров и готовых тулчейнов, в которых можно посмотреть, как это делается.

Эклипс настраивается, как и на системный gcc. Все-таки gcc - он и в африке gcc.

Использую и отладчик (OpenOCD) и симулятор (skyeye), правда для nxp21xx переферию он не эмулирует, по этому применение довольно ограниченное.

Кстати, Zylin Embedded CDT не использовал. Надо попробовать.
А вообще, говорят, что gcc во многих случаях делает более быстрый и компактный код, чем keil или iar.
Я сам не проверял, но вот люди, типа проверили: ftp://www.raisonance.com/STR7/Benchmark/A...C-Benchmark.pdf (обсуждалось когда-то на этом форуме).



Если все так просто - может все-таки поделитесь опытом? Мои мучения с LPC продолжаются. Я не поленился и купил от Olimex плату на SAM7, по известной в Инете PDF-ке все сделал - и все замечательно работает! А на LPC упорно не хочет - может потому, что такой доки нет...
Уже три недели курочим примеры, которые есть в сети, но никакого положительного результата.
Но раз с Atmel-ом работает - значит может работать!
Могу скинуть для анализа ошибок все, что надо от настроек проекта и среды (сейчас установил все сравнительно свежее, под Eclipse 3.3)
Puzan
Цитата(sleo2000 @ Nov 9 2007, 16:02) *
Если все так просто - может все-таки поделитесь опытом? Мои мучения с LPC продолжаются...


ОК. Тогда давайте по порядку. Что делаете, что работает, что не работает? Может ошибки какие выводит?
ZiB
Всем, привет!

Скачал документ "http://www.atmel.com/dyn/resources/prod_documents/atmel_tutorial_source.zip",
далее делал все по инструкции,
скачал
URL http://www.atmel.com/dyn/resources/prod_do...ISP%20v1.10.exe
URL http://www.yagarto.de/download/yagarto/yag....6_20070901.exe
URL http://www.yagarto.de/download/openocd/ope...-setup-rc01.exe
URL http://www.yagarto.de/download/yagarto/yag...70303-setup.exe
URL http://www.yagarto.de/download/yagarto/yag...70909-setup.exe

вообщем все что написано было все проделал и все сошлось как должно, но вот последный этап не прошел, точнее этап компиляции проекта.
выдается одно предупреждение и одна ошибка

Severity and Description Path Resource Location Creation Time Id
Error launching external scanner info generator (gcc -E -P -v -dD D:/@ Denis/ARM_Yagarto_Projects/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c)
demo_at91sam7_blink_flash Unknown 1194790250765 12


Severity and Description Path Resource Location Creation Time Id
make: *** [blinker.o] Error 127 demo_at91sam7_blink_flash line 0 1194790250687 11

Подскажите в чем может быть дело?
xelax
Цитата(ZiB @ Nov 11 2007, 17:23) *
Severity and Description Path Resource Location Creation Time Id
Error launching external scanner info generator (gcc -E -P -v -dD D:/@ Denis/ARM_Yagarto_Projects/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c)
demo_at91sam7_blink_flash Unknown 1194790250765 12
Severity and Description Path Resource Location Creation Time Id
make: *** [blinker.o] Error 127 demo_at91sam7_blink_flash line 0 1194790250687 11

Подскажите в чем может быть дело?


так вроде не gcc, а arm-elf-gcc. Посмотрите, в настройках проекта, компилятор по умолчанию gcc устанавливается. Его необходимо заменить на arm-elf-gcc.
dch
Цитата(DASM @ Oct 24 2007, 01:59) *
Баян
http://electronix.ru/forum/index.php?act=S...ighlite=eclipse
МТЛинк за $70 не по карману ?

ссылка битая

Цитата(klen @ Oct 25 2007, 08:37) *
1. Устанавливаете Sun JRE 6u3 (тоесть самый свежий)
2. качаете Eclipse
3. обновляете Eclipse
4. удаляете в Eclipse плагин CDT если он есть
5. качаете плагин embeddedCDT c www.zylin.com и ставите его(там все написано как)
5. запускаете и проверяете.
6. настраиваете в тулсах OpenOCD, в отладке arm-elf-gdb(тут главное загрузочный скрипт)
7. наслаждаетесь

я работаю так под Масдаем XP и под Ubuntu 6.10 64bit

откуда это все качается, просветите плиз.
Leen
Цитата(dch @ Nov 14 2007, 12:30) *
ссылка битая

Это ссылка на поиск по форуму с ключевым словом eclipse, судя по act=search & highlite=eclipse.
Цитата
откуда это все качается, просветите плиз.

Sun JRE 6u3 - c сайта Sun
Eclipse - c сайта Eclipse
Все, что не находится - спрашивается сначала у поисковиков, как внутреннего по форуму, так и внешних, типа гугля.
sleo2000
Цитата(Puzan @ Nov 10 2007, 20:55) *
ОК. Тогда давайте по порядку. Что делаете, что работает, что не работает? Может ошибки какие выводит?


На сегодняшний день ситуация такая: с простым демо-примером все разобрались - компилится, грузится, отлаживается. Даже по следам написали ДОК-у на русском. Можем поделиться этим комплектом (работаем с Olimex JTAG).
Теперь возникли проблемы с подключением библиотек. Коммерческие среды делают это практически автоматом, а тут в одном makefile можно заблудиться.
Нужен просто пример подключения стандартных библиотек (stdio, stdlib, string), чтобы проект компилился... Сам пример (main) может ничего и не содержать, кроме пары обращений к библиотеке (например, sprintf(), memset(), ...)
Leen
Так все ж стандартно...
main.c
Код
#include <stdio.h>

при вызове компилера (во флагах в макефайле или напрямую в ком. строке)
-I "путь к заголовку".
Если надо влинковать библиотеки
-L "путь к библиотекам"
Про эти флаги очень подробно расписано в мане по гцц, ближе к концу.
PS: выложи, пожалуйста.
Puzan
Цитата(sleo2000 @ Nov 14 2007, 17:31) *
Теперь возникли проблемы с подключением библиотек. Коммерческие среды делают это практически автоматом, а тут в одном makefile можно заблудиться.
Нужен просто пример подключения стандартных библиотек (stdio, stdlib, string), чтобы проект компилился... Сам пример (main) может ничего и не содержать, кроме пары обращений к библиотеке (например, sprintf(), memset(), ...)


Покажите ваш паспорт makefile.

А вообще, я не рекомендую использовать printf/sprintf из стандартной библиотеки. Очень уж он там громоздкий. Напишите свой или возьмите готовый. В сети много вариантов валяется.
sleo2000
Цитата(Leen @ Nov 15 2007, 02:03) *
Так все ж стандартно...
main.c
Код
#include <stdio.h>

при вызове компилера (во флагах в макефайле или напрямую в ком. строке)
-I "путь к заголовку".
Если надо влинковать библиотеки
-L "путь к библиотекам"
Про эти флаги очень подробно расписано в мане по гцц, ближе к концу.
PS: выложи, пожалуйста.


1. По поводу библиотек. Их 8 пар (!) - то есть 16 штук одноименных (например. 16 штук libc.a) - методом перебора ничего не достигли, то не нравится несовместимость по little-big endian (по этому признаку, как понял, они поделены на две группы по 8 штук). Дальше внутри группы то не нравится реализация floating point - ругается на несовместимость аппаратной и программной реализаций (хотя в LPC2138 аппаратной реализации нет). Структура директорий GCC при установке Eclipse - стандартная. Так из какой директории брать библиотеки?

2. "Выложить пожалуйста" - имеется в виду доку с примером? - если подскажете, как положить на форуме, то выложу все не таясь... По крайней мере, программы для LPC213x-LPC214x без системных (GCC) библиотек работают и отлаживаются уже без проблем.

ВОЗНИКЛА СЛЕДУЮЩАЯ БЕДА! Два дня пытаюсь сделать простейший пример на С++ под Eclipse - он упорно делает проект, в котором сам делает makefile, назначает старт программы с адреса 0x8000, и никакие манипуляции с настройками не могут этого изменить.
Задача у меня простая: написать простейшую программу с примитивнейшим объектом (классом) типа LED, который будет мигать, и заставить ее работать в плате LPC-P2138.

У кого-то есть возможность помочь? Чувствуется, что среда умеет многое, но как ее все заставить сделать это? и под моим управлением... Если получится - готов для остальных тоже описать все в виде учебника...
Leen
Покажи конфиг gcc. И сколько их у тебя?
У меня libc.a 3 штуки - одна для i686 (/lib), две для армов в арм и тумб режимах, /usr/arm-elf/lib и /usr/arm-elf/lib/thumb.
Вот конфиг gcc и arm-elf-gcc
Код
C:\>gcc -v
Using built-in specs.
Target: i686-pc-cygwin
Configured with: ../gcc-4.2.2/configure --prefix=/usr --exec-prefix=/usr --sysco
nfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --inf
odir=/usr/share/info --enable-languages=c,c++ --enable-nls --without-included-ge
ttext -without-x --with-system-zlib --enable-threads=posix --disable-win32-regis
try --enable-hash-synchronization --enable-libstdcxx-debug
Thread model: posix
gcc version 4.2.2

C:\>arm-elf-gcc -v
Using built-in specs.
Target: arm-elf
Configured with: ../gcc-4.2.2/configure --prefix=/usr --exec-prefix=/usr --libdi
r=/usr/lib --libexecdir=/usr/lib --target=arm-elf --disable-nls --enable-interwo
rk --enable-multilib --with-newlib --with-headers=../newlib-1.15.0/newlib/libc/i
nclude
Thread model: single
gcc version 4.2.2
Компилил все в /tmp, распаковав архивы и создав рядом папки с теми же именами с припиской -build (gcc-4.2.2, gcc-4.2.2-build, gcc-4.2.2-build-arm-elf). Оттуда ставил. Компилил под cygwin.
P.S. тут хотя бы с си разобраться...
axle
Зачем вы изобретаете велосипед??? Вы makefile с нуля пишете что ли? Возьмите готовый пример, запустите и потом уже изменяйте под ваши нужды. Адреса с примерами приводили уже много раз: http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/ . Это один из многих. Остальные спросите у Google.

Цитата(sleo2000 @ Nov 15 2007, 21:51) *
1. По поводу библиотек. Их 8 пар (!) - то есть 16 штук одноименных (например. 16 штук libc.a) - методом перебора ничего не достигли, то не нравится несовместимость по little-big endian (по этому признаку, как понял, они поделены на две группы по 8 штук). Дальше внутри группы то не нравится реализация floating point - ругается на несовместимость аппаратной и программной реализаций (хотя в LPC2138 аппаратной реализации нет). Структура директорий GCC при установке Eclipse - стандартная. Так из какой директории брать библиотеки?

Ваш компилятор собран с опцией --enable-multilib, что для arm является обычным делом. Поэтому у вас много разновидностей одной и той же библиотеки (например для arm/thumb, little/big-endian, hardfloat/softfloat и т.д.). Линкер сам выбирает какую библиотеку подключать в зависимости от опций, которые вы задаете (-mthumb, -mthumb-interwork, -mfpu=vfp и т.д.). Путь к библиотеке задавать не надо!!! (если конечно у вас не специфическая задача). Для подключения библиотеки libc нужно указать опцию линкера -lc, для libm укажите -lm и т.д.

Цитата(sleo2000 @ Nov 15 2007, 21:51) *
ВОЗНИКЛА СЛЕДУЮЩАЯ БЕДА! Два дня пытаюсь сделать простейший пример на С++ под Eclipse - он упорно делает проект, в котором сам делает makefile, назначает старт программы с адреса 0x8000, и никакие манипуляции с настройками не могут этого изменить.
Задача у меня простая: написать простейшую программу с примитивнейшим объектом (классом) типа LED, который будет мигать, и заставить ее работать в плате LPC-P2138.

У кого-то есть возможность помочь? Чувствуется, что среда умеет многое, но как ее все заставить сделать это? и под моим управлением... Если получится - готов для остальных тоже описать все в виде учебника...

У вас интернет есть или нет??? http://www.yagarto.de/howto/yagarto2/index.html
На всякий случай еще текстом: При создании проекта нужно выбирать "Makefile project"->"Other toolchain". Тогда Eclipse не будет создавать за вас makefile, а будет ожидать что его создадите вы.
Paramedic
Пытаюсь под Ubuntu 7.04 настроить связку Eclipse + OpenOCD + GDB + Wiggler + AT91RM9200. Всё качал из http://mikestirling.co.uk/drupal/?q=node/2 . При попытке отладить простой проектик возникают проблемы - при выполнении загрузки вижу такое сообщение:
putpkt: write failed: Broken pipe.
Бинарник при этом генерится работоспособный.
В основном ориентируюсь на документ "Using Open Source Tools for AT91SAM7S Cross Development", но там всё расписано для SAM7 и под винду.
Если кто-нибудь пробовал настраивать эту связку, поделитесь плз. тестовым проектиком.
Puzan
Цитата(sleo2000 @ Nov 15 2007, 18:51) *
1. По поводу библиотек. Их 8 пар (!) - то есть 16 штук одноименных (например. 16 штук libc.a) - методом перебора ничего не достигли, то не нравится несовместимость по little-big endian (по этому признаку, как понял, они поделены на две группы по 8 штук). Дальше внутри группы то не нравится реализация floating point - ругается на несовместимость аппаратной и программной реализаций (хотя в LPC2138 аппаратной реализации нет). Структура директорий GCC при установке Eclipse - стандартная. Так из какой директории брать библиотеки?


Обычно компилятор и newlib собраны с опцией multilib и interwork, это для того, чтобы можно было компилить в ARM, THUMB и ARM+THUMB одновременно. По этому есть несколько версий libc и libgcc, которые нужно выбрать в зависимости от флагов компиляции. Это можно автоматизировать (как сделал я). Кусок makefile'а:
Код
LIBGCC  = `$(CC) $(CFLAGS) -print-libgcc-file-name`
LIBDIR  = /opt/armgcc/arm-elf/lib/`$(CC) $(CFLAGS) -print-multi-directory`
LIBC    = $(LIBDIR)/libc.a

где $(CC) = arm-elf-gcc
и подставляем линкеру $(LIBGCC) $(LIBC)

Почему так? Я использую опцию -nostdlib.


Цитата(Paramedic @ Nov 16 2007, 10:05) *
Пытаюсь под Ubuntu 7.04 настроить связку Eclipse + OpenOCD + GDB + Wiggler + AT91RM9200. При попытке отладить простой проектик возникают проблемы - при выполнении загрузки вижу такое сообщение:
putpkt: write failed: Broken pipe.


А кто выводит это сообщение? OpenOCD, GDB или Eclipse?
axle
Цитата(Puzan @ Nov 16 2007, 13:25) *
Это можно автоматизировать (как сделал я). Кусок makefile'а:
Код
LIBGCC  = `$(CC) $(CFLAGS) -print-libgcc-file-name`
LIBDIR  = /opt/armgcc/arm-elf/lib/`$(CC) $(CFLAGS) -print-multi-directory`
LIBC    = $(LIBDIR)/libc.a

где $(CC) = arm-elf-gcc
и подставляем линкеру $(LIBGCC) $(LIBC)


Если бы вы использовали arm-elf-gcc для сборки, а не arm-elf-ld все было бы гораздо проще.
Он бы сам в зависимости от флагов выбирал необходимую библиотеку.
Paramedic
Цитата(Puzan @ Nov 16 2007, 10:25) *
А кто выводит это сообщение? OpenOCD, GDB или Eclipse?

Судя по всему gdb выводит в консоли eclipse при исполнении команды load.
Puzan
Цитата(axle @ Nov 16 2007, 11:08) *
Если бы вы использовали arm-elf-gcc для сборки, а не arm-elf-ld все было бы гораздо проще.
Он бы сам в зависимости от флагов выбирал необходимую библиотеку.


Внимательней читайте. У меня стоит опция -nostdlib.


Цитата(Paramedic @ Nov 16 2007, 11:12) *
Судя по всему gdb выводит в консоли eclipse при исполнении команды load.


А openocd запущен? Находит устройство? Порт правильный слушает?
Paramedic
Цитата(Puzan @ Nov 16 2007, 13:23) *
А openocd запущен? Находит устройство? Порт правильный слушает?

Да, даже ресет на таргет проходит. Порт parport 0. Я поэтому и прошу какой-нить простенький примерчик, может дело в make-файле, опциях компиляции...
Puzan
Цитата(Paramedic @ Nov 16 2007, 13:26) *
Да, даже ресет на таргет проходит. Порт parport 0. Я поэтому и прошу какой-нить простенький примерчик, может дело в make-файле, опциях компиляции...


А причем тут makefile. Если собирается, значит должно что-то работать. Посмотри дизассемблер. Может быть с расположением что-то попутал (в смысле линкуешь для flash, а запускаешь в ram)?
Paramedic
Цитата(Puzan @ Nov 16 2007, 13:52) *
А причем тут makefile.

Думаю может не хватать отладочной информации... Хотя опцию -g включил и оптимизация на нуле.

Цитата(Puzan @ Nov 16 2007, 13:52) *
Посмотри дизассемблер. Может быть с расположением что-то попутал (в смысле линкуешь для flash, а запускаешь в ram)?

Скрипт линкера брал готовый, может в нём и косяк, но он вроде простой и адреса указаны правильные:
MEMORY {
ram : ORIGIN = 0x200000, LENGTH = 0x4000
}
axle
Цитата(Puzan @ Nov 16 2007, 16:23) *
Внимательней читайте. У меня стоит опция -nostdlib.

У меня тоже! smile.gif
-nostdlib не значит, что надо путь к библиотекам указывать.
Просто стандартные библиотеки не будут подключаться по умочанию.
Что бы их использовать, нужно непосредственно указывать в опциях:
-lc -lm -lgcc и т.д.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.