реклама на сайте
подробности

 
 
19 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Eclipse + GCC для ARM, Среда разработки для ARM, причем бесплатная...
sleo2000
сообщение Oct 23 2007, 22:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 23-10-07
Из: Москва
Пользователь №: 31 665



Всем хороши коммерческие версии типа Keil, IAR, ... кроме цены. А "лекарство" выходит частенько с опозданием на год и более. Да и отладчики (JTAG) у них не самые дешевые.
Сейчас многие начинают советовать GCC на платформе Eclipce с OpenOCD дебагером, который поддерживает от wiggler-а до Segger-а - кому что по карману.
Да, GCC уступает немного коммерческим компиляторам по скорости и плотности кода, на у ARM-ов и памяти и скорости для большинства задач - с запасом.
Одна беда - при всем разнообразии подобных пакетов нет ни одного, чтобы поставил - и сразу заработало...
Может кто-то уже прошел через эти тернии? Вопрос не праздный...


--------------------
Sleo
Go to the top of the page
 
+Quote Post
DASM
сообщение Oct 23 2007, 22:59
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Баян
http://electronix.ru/forum/index.php?act=S...ighlite=eclipse
МТЛинк за $70 не по карману ?
Go to the top of the page
 
+Quote Post
sleo2000
сообщение Oct 23 2007, 23:51
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 23-10-07
Из: Москва
Пользователь №: 31 665



Цитата(DASM @ Oct 24 2007, 02:59) *
Баян
http://electronix.ru/forum/index.php?act=S...ighlite=eclipse
МТЛинк за $70 не по карману ?


Я купил уже от OLIMEX ARM-JTAG и ARM-JTAG-Tiny - по документации они как раз под такую среду и заточены. Но после Keil здесь - как в дремучем лесу... ни загрузка, ни отладка не работает - только компилить простой пример пока получилось.


--------------------
Sleo
Go to the top of the page
 
+Quote Post
Puzan
сообщение Oct 24 2007, 13:15
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295



Я использую Eclipse+GCC+OOCD+самосборное подобие Wiggler'a. Проблем нет (кроме одного всем известного глюка с вызовом функций из обработчика прерываний в ARM-моде). Всё собирал вручную.
Забыл сказать, что работаю в линуксе.
KEIL и IAR не пробовал (точнее пробовал, но как-то не пошло. непривычно).
Для AVR и MSP тоже использовал Эклипс+GCC, а для TMS320 - Эклипс+техасовский компилятор, который был жестоко выдран (собственно там ничего жестокого нет smile.gif ) из из CCS, и который запускался через wine (кстати, прекрасно работал). Единственный минус - не нашел, как сделать отладку TMS-а из линукса.
Для Linux/x86 естественно тоже использую Эклипс+GCC. Его-же использую и для написания скриптов на Ruby/Python/Perl (иногда нужно).
Таким вот образом обеспечил себе обнообразие среды разработки.
Go to the top of the page
 
+Quote Post
Leen
сообщение Oct 24 2007, 22:49
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343



2 Puzan: не могли бы вы выложить рекомендации по настройке среды с нуля, а то я начал копать эту тему с той же целью - ободнообразить среды разработки. Правда, в цигвине. Пока знаю только как собирать гцц и утилиты. А вот интеграция эклипса с компилерами, да еще и разными, с дебагерами - это темный лес, терра инкогнита. Версии софта максимально свежие. И еще: мне не нужно знать, где взять "готовую сборку", чтоб, дескать, не мучаться. Хочу понять, как все это хозяйство друг к другу прикручивать.
Вы используете только внутрисхемный отладчик, или есть возможность симулировать (в т.ч. и периферию)?
Go to the top of the page
 
+Quote Post
klen
сообщение Oct 25 2007, 05:37
Сообщение #6


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



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
Go to the top of the page
 
+Quote Post
Abo
сообщение Oct 25 2007, 06:32
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 9-01-06
Пользователь №: 12 967



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


2 klen:
Если удалить CDT, то софт для Win и Linux уже нельзя будет собирать?
Go to the top of the page
 
+Quote Post
Leen
сообщение Oct 25 2007, 08:52
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343



Цитата(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 и далее - пока теряется в тумане.

Если будет желание помочь, дельные мысли - просим.
Пока что все в самом начале.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 25 2007, 09:44
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
sleo2000
сообщение Oct 25 2007, 12:54
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 23-10-07
Из: Москва
Пользователь №: 31 665



Цитата(Сергей Борщ @ 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 - овыми платформами не работал и не смогу - есть определенные ограничения, поэтому речь с моей стороны только о "форточках".


--------------------
Sleo
Go to the top of the page
 
+Quote Post
Terminator
сообщение Oct 26 2007, 02:45
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382



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

И ещё вопрос, есть ли для eclipse модуль для автоматического выравнивания кода? По типу как в vim, indent.
Go to the top of the page
 
+Quote Post
axle
сообщение Oct 26 2007, 03:27
Сообщение #12


Частый гость
**

Группа: Новичок
Сообщений: 81
Регистрация: 19-04-07
Пользователь №: 27 167



Цитата(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/ . Должны отлично работать, я лично многие пробовал.

Может зададите вопрос поконкретнее? Какая задача и на каком этапе не работает?
Go to the top of the page
 
+Quote Post
etoja
сообщение Oct 26 2007, 03:38
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



В GCC некорректно работает обработчик прерывания IRQ.
Для быстрой разработки программ используйте KEIL,
а для профессиональной работы - компилятор Green Hills.
Оба есть в местных закромах, так что на счёт цен не надо смешить народ.
Go to the top of the page
 
+Quote Post
Terminator
сообщение Oct 26 2007, 04:34
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382



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

В чём заключается некорректность?
Go to the top of the page
 
+Quote Post
etoja
сообщение Oct 26 2007, 04:45
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Вот обсуждение этого вопроса. Проблеме уже больше двух лет и никто её не решает, поскольку за GNU проекты никто не отвечает.
Прикрепленные файлы
Прикрепленный файл  patchIRQ.zip ( 170.89 килобайт ) Кол-во скачиваний: 556
 
Go to the top of the page
 
+Quote Post
axle
сообщение Oct 26 2007, 05:47
Сообщение #16


Частый гость
**

Группа: Новичок
Сообщений: 81
Регистрация: 19-04-07
Пользователь №: 27 167



Цитата(etoja @ Oct 26 2007, 10:38) *
Оба есть в местных закромах, так что на счёт цен не надо смешить народ.

Зачем подбиваете людей воровать? Они может новую жизнь начинают. biggrin.gif
Go to the top of the page
 
+Quote Post
etoja
сообщение Oct 26 2007, 05:58
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Будем реалистами. Китайцы бульдозерами утрамбовывают диски с западной музыкой, а диски и сайты для разработчиков никто не трогает. Откуда берутся крякнутые дистрибутивы по 300...600 мегабайт? Пароходом из америки?
Go to the top of the page
 
+Quote Post
Terminator
сообщение Oct 26 2007, 06:32
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382



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

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

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

Проект под FreeRTOS
Go to the top of the page
 
+Quote Post
Leen
сообщение Oct 26 2007, 08:24
Сообщение #19


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343



Цитата(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.
Можно обновить, но тоже в понедельник - там за трафик не ругаются.
Что еще надо - добавляй.
Go to the top of the page
 
+Quote Post
xelax
сообщение Oct 26 2007, 09:26
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



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


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

З.Ы. ещё гигантский плюс в том, что в одной IDE проекты для разных платформ можно реализовывать.
До этого приходилось два iarа держать на компе для arm и для avr.
Go to the top of the page
 
+Quote Post
Puzan
сообщение Oct 26 2007, 10:22
Сообщение #21


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295



Цитата
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 (обсуждалось когда-то на этом форуме).
Go to the top of the page
 
+Quote Post
etoja
сообщение Oct 26 2007, 13:44
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Вопрос к LEEN:

Печатные платы вы чем разводите? Сколько заплатили за САПР?
На каждого пользователя лицензия есть или на всех инженеров одна?
Микрософт офис на вашем компьютере тоже официально куплен?
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 26 2007, 17:58
Сообщение #23


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



etoja, тема называется:
Цитата
Eclipce + GCC для ARM, Среда разработки для ARM, причем бесплатная...

Давайте не будем от неё отклоняться.
Если хотите поднять обсуждение лицензионной чистоты софта, создайте другую тему.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 26 2007, 18:24
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Puzan @ Oct 26 2007, 13:22) *
но вот люди, типа проверили...

Дела давно минувших дней. Давайте оставим и отсутствие RVCT (явно "намеряли" они там такого, что и возразить на требование ARM убрать сии "результаты" и возразить было нечего ), и минималистичные упоминания о методике и вообще всю эту проверку на их совести. Проверять нужно исключительно самому, со знанием дела, и на свежих релизах компиляторов.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Puzan
сообщение Oct 27 2007, 06:31
Сообщение #25


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295



Цитата(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 на более-менее комплексных тестах? Интересно узнать результат.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 27 2007, 06:53
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



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

Тесты "комплексные" не проводил, но по личным наблюдениям на текущем этапе троица RVCT-IAR5.10-GCC мало отличима друг от друга. RVCT и IAR очень близки и компилируют с переменным успехом, ну а GCC чуть отстает.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
klen
сообщение Oct 27 2007, 08:54
Сообщение #27


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



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

с какими библами???
если уж говорить именно про компиллеры то нада писать нада именно тест-програмку, в которой все РУЧКАМИ написано, чтоб небыло внешних библовых (кто их знает какией у они у вас) вызовов которые повлияют на результат.
а "комплексные" тесты к компиллеру никаких отношений не имели с роду, к среде разработки ДА!!!
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 27 2007, 10:19
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(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 в комплекте.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 1 2007, 09:43
Сообщение #29


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Не стал создавать новую ветку.
Вопрос такой - а какой симулятор ARM колеги посоветуют для прикручивания к eclipse для работы под виндовсом? Поиск вывел меня на SkyEye, но насколько я понял, он требует cygwin, а хотелось бы обойтись без cygwin.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
sleo2000
сообщение Nov 9 2007, 13:02
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 23-10-07
Из: Москва
Пользователь №: 31 665



Цитата(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)


--------------------
Sleo
Go to the top of the page
 
+Quote Post
Puzan
сообщение Nov 10 2007, 16:55
Сообщение #31


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295



Цитата(sleo2000 @ Nov 9 2007, 16:02) *
Если все так просто - может все-таки поделитесь опытом? Мои мучения с LPC продолжаются...


ОК. Тогда давайте по порядку. Что делаете, что работает, что не работает? Может ошибки какие выводит?
Go to the top of the page
 
+Quote Post
ZiB
сообщение Nov 11 2007, 14:23
Сообщение #32


Частый гость
**

Группа: Свой
Сообщений: 122
Регистрация: 26-07-05
Из: Россия, Томск
Пользователь №: 7 109



Всем, привет!

Скачал документ "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

Подскажите в чем может быть дело?
Go to the top of the page
 
+Quote Post
xelax
сообщение Nov 12 2007, 06:46
Сообщение #33


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Цитата(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.
Go to the top of the page
 
+Quote Post
dch
сообщение Nov 14 2007, 02:30
Сообщение #34


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Цитата(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

откуда это все качается, просветите плиз.
Go to the top of the page
 
+Quote Post
Leen
сообщение Nov 14 2007, 02:54
Сообщение #35


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343



Цитата(dch @ Nov 14 2007, 12:30) *
ссылка битая

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

Sun JRE 6u3 - c сайта Sun
Eclipse - c сайта Eclipse
Все, что не находится - спрашивается сначала у поисковиков, как внутреннего по форуму, так и внешних, типа гугля.
Go to the top of the page
 
+Quote Post
sleo2000
сообщение Nov 14 2007, 14:31
Сообщение #36


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 23-10-07
Из: Москва
Пользователь №: 31 665



Цитата(Puzan @ Nov 10 2007, 20:55) *
ОК. Тогда давайте по порядку. Что делаете, что работает, что не работает? Может ошибки какие выводит?


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


--------------------
Sleo
Go to the top of the page
 
+Quote Post
Leen
сообщение Nov 14 2007, 22:03
Сообщение #37


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343



Так все ж стандартно...
main.c
Код
#include <stdio.h>

при вызове компилера (во флагах в макефайле или напрямую в ком. строке)
-I "путь к заголовку".
Если надо влинковать библиотеки
-L "путь к библиотекам"
Про эти флаги очень подробно расписано в мане по гцц, ближе к концу.
PS: выложи, пожалуйста.
Go to the top of the page
 
+Quote Post
Puzan
сообщение Nov 15 2007, 08:07
Сообщение #38


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295



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


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

А вообще, я не рекомендую использовать printf/sprintf из стандартной библиотеки. Очень уж он там громоздкий. Напишите свой или возьмите готовый. В сети много вариантов валяется.
Go to the top of the page
 
+Quote Post
sleo2000
сообщение Nov 15 2007, 15:51
Сообщение #39


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 23-10-07
Из: Москва
Пользователь №: 31 665



Цитата(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.

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


--------------------
Sleo
Go to the top of the page
 
+Quote Post
Leen
сообщение Nov 15 2007, 22:42
Сообщение #40


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343



Покажи конфиг 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. тут хотя бы с си разобраться...
Go to the top of the page
 
+Quote Post
axle
сообщение Nov 16 2007, 04:26
Сообщение #41


Частый гость
**

Группа: Новичок
Сообщений: 81
Регистрация: 19-04-07
Пользователь №: 27 167



Зачем вы изобретаете велосипед??? Вы 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, а будет ожидать что его создадите вы.
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Nov 16 2007, 07:05
Сообщение #42


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



Пытаюсь под 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 и под винду.
Если кто-нибудь пробовал настраивать эту связку, поделитесь плз. тестовым проектиком.
Go to the top of the page
 
+Quote Post
Puzan
сообщение Nov 16 2007, 07:25
Сообщение #43


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295



Цитата(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?
Go to the top of the page
 
+Quote Post
axle
сообщение Nov 16 2007, 08:08
Сообщение #44


Частый гость
**

Группа: Новичок
Сообщений: 81
Регистрация: 19-04-07
Пользователь №: 27 167



Цитата(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 все было бы гораздо проще.
Он бы сам в зависимости от флагов выбирал необходимую библиотеку.
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Nov 16 2007, 08:12
Сообщение #45


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



Цитата(Puzan @ Nov 16 2007, 10:25) *
А кто выводит это сообщение? OpenOCD, GDB или Eclipse?

Судя по всему gdb выводит в консоли eclipse при исполнении команды load.
Go to the top of the page
 
+Quote Post
Puzan
сообщение Nov 16 2007, 10:23
Сообщение #46


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295



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


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


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


А openocd запущен? Находит устройство? Порт правильный слушает?
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Nov 16 2007, 10:26
Сообщение #47


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



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

Да, даже ресет на таргет проходит. Порт parport 0. Я поэтому и прошу какой-нить простенький примерчик, может дело в make-файле, опциях компиляции...
Go to the top of the page
 
+Quote Post
Puzan
сообщение Nov 16 2007, 10:52
Сообщение #48


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295



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


А причем тут makefile. Если собирается, значит должно что-то работать. Посмотри дизассемблер. Может быть с расположением что-то попутал (в смысле линкуешь для flash, а запускаешь в ram)?
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Nov 16 2007, 10:59
Сообщение #49


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



Цитата(Puzan @ Nov 16 2007, 13:52) *
А причем тут makefile.

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

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

Скрипт линкера брал готовый, может в нём и косяк, но он вроде простой и адреса указаны правильные:
MEMORY {
ram : ORIGIN = 0x200000, LENGTH = 0x4000
}
Go to the top of the page
 
+Quote Post
axle
сообщение Nov 16 2007, 11:09
Сообщение #50


Частый гость
**

Группа: Новичок
Сообщений: 81
Регистрация: 19-04-07
Пользователь №: 27 167



Цитата(Puzan @ Nov 16 2007, 16:23) *
Внимательней читайте. У меня стоит опция -nostdlib.

У меня тоже! smile.gif
-nostdlib не значит, что надо путь к библиотекам указывать.
Просто стандартные библиотеки не будут подключаться по умочанию.
Что бы их использовать, нужно непосредственно указывать в опциях:
-lc -lm -lgcc и т.д.
Go to the top of the page
 
+Quote Post
Puzan
сообщение Nov 16 2007, 11:30
Сообщение #51


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295



Цитата(Paramedic @ Nov 16 2007, 13:59) *
Думаю может не хватать отладочной информации... Хотя опцию -g включил и оптимизация на нуле.
Скрипт линкера брал готовый, может в нём и косяк, но он вроде простой и адреса указаны правильные:
MEMORY {
ram : ORIGIN = 0x200000, LENGTH = 0x4000
}


Отладочная информация по-любому не причем. В мап-файл посмотри, правильно он память распределил, или нет.
Варианта остается два: конфиг openocd и хардварная проблема, типа JTAGSEL неправильно установил, или банально не контачит.



Цитата(axle @ Nov 16 2007, 14:09) *
У меня тоже! smile.gif
-nostdlib не значит, что надо путь к библиотекам указывать.
Просто стандартные библиотеки не будут подключаться по умочанию.
Что бы их использовать, нужно непосредственно указывать в опциях:
-lc -lm -lgcc и т.д.


Не работает laughing.gif
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Nov 16 2007, 11:32
Сообщение #52


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



Цитата(Puzan @ Nov 16 2007, 14:30) *
или банально не контачит.

Это исключено - под виндой в ИАР всё работает...
Go to the top of the page
 
+Quote Post
Puzan
сообщение Nov 16 2007, 12:03
Сообщение #53


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295



Цитата(Paramedic @ Nov 16 2007, 14:32) *
Это исключено - под виндой в ИАР всё работает...


Хм... А покажи конфиг для openocd. Где брал его?
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Nov 16 2007, 12:39
Сообщение #54


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



Цитата(Puzan @ Nov 16 2007, 15:03) *
Хм... А покажи конфиг для openocd. Где брал его?


Вот:

-----------------------------------------------------------------------------------------
#daemon configuration
telnet_port 4444
gdb_port 3333

#interface
interface parport

parport_port 0
#parport_port 0x378

parport_cable wiggler
jtag_speed 0
jtag_nsrst_delay 200

jtag_ntrst_delay 200

#use combined on interfaces or targets that can't set TRST/SRST separately
reset_config trst_and_srst srst_pulls_trst
#reset_config trst_and_srst

#jtag scan chain
#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
jtag_device 4 0x1 0xf 0xe

#target configuration
daemon_startup reset
#target arm7tdmi <reset mode> <chainpos> <endianness> <variant>
target arm920t little run_and_init 0 arm920t
#target_script 0 reset h2294_init.script
working_area 0 0x200000 0x4000 backup
run_and_halt_time 0 30
-----------------------------------------------------------------------------------------

Переделывал конфиг заточенный под SAM7...

Цитата(Puzan @ Nov 16 2007, 14:30) *
...JTAGSEL неправильно установил...

А это где устанавливать надо?
Go to the top of the page
 
+Quote Post
sleo2000
сообщение Nov 16 2007, 15:56
Сообщение #55


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 23-10-07
Из: Москва
Пользователь №: 31 665



Цитата(axle @ Nov 16 2007, 14:09) *
У меня тоже! smile.gif
-nostdlib не значит, что надо путь к библиотекам указывать.
Просто стандартные библиотеки не будут подключаться по умочанию.
Что бы их использовать, нужно непосредственно указывать в опциях:
-lc -lm -lgcc и т.д.


1. ПО МОЕМУ ВОПРОСУ О ЛИНКОВКЕ БИБЛИОТЕК - всем, кто ответил что-то - спасибо, в поенедельник покопаемся. Хотя мутного много - слишком отвыкли от командной строки smile.gif

2. По поводу работающего мини-проекта с подробным описанием и копией проекта для прямого импорта в Eclipse (для LPC2138/214) - в понедельник все выложу вместе с описанием на русском и в теме выложу ссылку на архив.


--------------------
Sleo
Go to the top of the page
 
+Quote Post
KA_ru
сообщение Nov 16 2007, 16:20
Сообщение #56


Профессионал
*****

Группа: Свой
Сообщений: 1 424
Регистрация: 4-10-04
Из: Berlin
Пользователь №: 775



Какой сборкой пользоваться.
всего нашёл три штуки.
http://www.macraigor.com
http://www.yagarto.de
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/

Есть родной Вигглер.
Или они все хороши?
Go to the top of the page
 
+Quote Post
sleo2000
сообщение Nov 16 2007, 18:27
Сообщение #57


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 23-10-07
Из: Москва
Пользователь №: 31 665



ПРОБУЮ ВЫЛОЖИТЬ АРХИВ С РАБОТАЮЩИМ ПРИМЕРОМ ПОД ECLIPSE ДЛЯ LPC-2138/48

Прикрепленный файл  Demo_2138.zip ( 1.22 мегабайт ) Кол-во скачиваний: 285


Цитата(KA_ru @ Nov 16 2007, 19:20) *
Какой сборкой пользоваться.
всего нашёл три штуки.
http://www.macraigor.com
http://www.yagarto.de
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/

Есть родной Вигглер.
Или они все хороши?


Пользуюсь yagarto - были рекомендации от немцев. И обновляется чаще, чем остальные. На самом деле есть сборка от Olimex - старая, от Amontec - тоже более старая, чем Yagarto.


--------------------
Sleo
Go to the top of the page
 
+Quote Post
вася пупкин блин
сообщение Nov 30 2007, 14:31
Сообщение #58





Группа: Новичок
Сообщений: 3
Регистрация: 29-11-07
Пользователь №: 32 806



Так, стыковать все это чудо с ходу не удалось sad.gif
Будем копать, надеюсь люди здесь добрые и отзывчивые smile.gif
1. Соответсвтенно поставил eclipse (куча разных вариаций)
2. Есть программатор JTAG от MT-Likn
3. Компилить все получается elf файл имею
Ну а теперь собственно вопросы:
openocd и JLinkGDBServer - это два аналога - использовать надо либо то либо другое? я правильно понимаю?
Через что лучше стыковать? (JLinkGDBServer крякнутый есть)
по-русски кто нить может написать как создать проект чтобы дебагер заработал? или надо выкладывать какие сообщения об ошибках выкидывает?
настраиваю как показано http://www.yagarto.de/howto/jlink/index.html
Go to the top of the page
 
+Quote Post
вася пупкин блин
сообщение Dec 1 2007, 17:21
Сообщение #59





Группа: Новичок
Сообщений: 3
Регистрация: 29-11-07
Пользователь №: 32 806



Эй! ну что - все всё наладили и ушли с форума?? sad.gif а как же там все там обещали мануал по русски? все дела ... да ... че-то как-то глухо sad.gif
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Dec 1 2007, 19:54
Сообщение #60


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(вася пупкин блин @ Dec 1 2007, 19:21) *
Эй! ну что - все всё наладили и ушли с форума?? sad.gif а как же там все там обещали мануал по русски? все дела ... да ... че-то как-то глухо sad.gif

Позволю себе заметить, что Вы не на базаре и не на телесистемах.
Не следует свою активность на форуме проявлять подобным образом.
Go to the top of the page
 
+Quote Post
123730
сообщение Dec 20 2007, 18:48
Сообщение #61





Группа: Новичок
Сообщений: 10
Регистрация: 20-12-07
Пользователь №: 33 477



Здесь было рассмотрено уже это но у мя не получилось. Плиз выложите пример с минимумом "лишних" деталей:

Возник такой трабл. Програмлю под ARM контроллеры. Использую гнушный софт. Каким макаром подключать стандартные библиотеки к проге?
У меня получается компилить файл который содержит вызов функций стандартной библиотеки, но при линковке объектных файлов возникает ошибка: undefened reference на вызываемую стандартную функцию.


Желателен пример рабочей проги, которая инклудит, например, stdio.h, и вызывает в main функцию sprintf. Плюс еще какой-нить модуль .c с минимальным количеством кода. Плюс make файл который компилит и линкует эти два модуля:

main.c:

#include <stdio.h>

int main(void)
{
char *Line[5];
sprintf(Line,"%02d",50);//даст варнинг ну ниче

return Return_num();
}
=========================
notmain.c:

int Return_num(void)
{
return 5;
}

PS: Вот лог сборки моей рабочей программы со всеми ключами и версиями прог. В той проге смысл тот же примерно (вызов sprintf в main.c). Обратите внимание, что компиляция всех файлов проходит, трабл только в линковке. Что я не так делаю?

make -k -f makefile_rom all
rm -f out/*.d out/*.o out/*.lst out/*.map out/*.out out/*.bin
===================================================================
arm-elf-gcc (GCC) 4.1.1 (WinARM)
Copyright © 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

===================================================================
GNU assembler 060606 20060606
Copyright 2005 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License. This program has absolutely no warranty.
This assembler was configured for a target of `arm-elf'.
===================================================================
GNU ld version 060606 20060606
Copyright 2005 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License. This program has absolutely no warranty.
===================================================================

arm-elf-as -Wa -amhls=out/crt.lst -ahls -mapcs-32 source/crt.s -o out/crt.o
arm-elf-gcc -c -MD -O0 source/adc.c -o out/adc.o
arm-elf-gcc -c -MD -O0 source/int.c -o out/int.o
source/int.c: In function 'AIC_ConfInt':
source/int.c:14: warning: assignment makes integer from pointer without a cast
arm-elf-gcc -c -MD -O0 source/Keyboard.c -o out/Keyboard.o
arm-elf-gcc -c -MD -O0 source/lowlevelinit.c -o out/lowlevelinit.o
arm-elf-gcc -c -MD -O0 source/main.c -o out/main.o
arm-elf-ld -T./link/at91sam7s256_flash.ld -Map=out/mit.map out/crt.o out/adc.o out/int.o out/Keyboard.o out/lowlevelinit.o out/main.o -o out/mit.out
out/main.o: In function `main':
main.c:(.text+0x8b0): undefined reference to `sprintf'
make: *** [out/mit.out] Error 1
arm-elf-gcc out/crt.o out/adc.o out/int.o out/Keyboard.o out/lowlevelinit.o out/main.o -mcpu=arm7tdmi -nostartfiles -T./link/at91sam7s256_flash.ld -Wl,--no-warn-mismatch -o out/mit.elf
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(freer.o): In function `_malloc_trim_r':
mallocr.c:(.text+0x48): undefined reference to `_sbrk_r'
mallocr.c:(.text+0x64): undefined reference to `_sbrk_r'
mallocr.c:(.text+0x84): undefined reference to `_sbrk_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(makebuf.o): In function `__smakebuf':
makebuf.c:(.text+0x3c): undefined reference to `_fstat_r'
makebuf.c:(.text+0x110): undefined reference to `isatty'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(mallocr.o): In function `_malloc_r':
mallocr.c:(.text+0x424): undefined reference to `_sbrk_r'
mallocr.c:(.text+0x4cc): undefined reference to `_sbrk_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(stdio.o): In function `__sclose':
stdio.c:(.text+0xc): undefined reference to `_close_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(stdio.o): In function `__sseek':
stdio.c:(.text+0x30): undefined reference to `_lseek_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(stdio.o): In function `__swrite':
stdio.c:(.text+0x84): undefined reference to `_lseek_r'
stdio.c:(.text+0xac): undefined reference to `_write_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(stdio.o): In function `__sread':
stdio.c:(.text+0xd0): undefined reference to `_read_r'
collect2: ld returned 1 exit status
make: *** [out/mit.elf] Error 1
make: Target `all' not remade because of errors.
Go to the top of the page
 
+Quote Post
v_shamaev
сообщение Dec 20 2007, 20:53
Сообщение #62


Местный
***

Группа: Свой
Сообщений: 304
Регистрация: 5-07-04
Из: г. Москва
Пользователь №: 259



Цитата(123730 @ Dec 20 2007, 21:48) *
.....


./link/at91sam7s256_flash.ld - на этот файл взглянуть можно?


--------------------
Водку пьянствовать и безобразия нарушать!!!
Go to the top of the page
 
+Quote Post
123730
сообщение Dec 20 2007, 21:31
Сообщение #63





Группа: Новичок
Сообщений: 10
Регистрация: 20-12-07
Пользователь №: 33 477



Да конешн), файлег был стырен с каково-то примера:


/* identify the Entry Point (_vec_reset is defined in file crt.s) */
ENTRY(_vec_reset)

/* specify the LPC2106 memory areas */
MEMORY
{
flash : ORIGIN = 0, LENGTH = 256K /* FLASH EPROM */
ram : ORIGIN = 0x00200000, LENGTH = 64K /* static RAM area */
}


/* define a global symbol _stack_end (see analysis in annotation above) */
_stack_end = 0x2FFFFC;

/* now define the output sections */
SECTIONS
{
. = 0; /* set location counter to address zero */

.text : /* collect all sections that should go into FLASH after startup */
{
*(.text) /* all .text sections (code) */
*(.rodata) /* all .rodata sections (constants, strings, etc.) */
*(.rodata*) /* all .rodata* sections (constants, strings, etc.) */
*(.glue_7) /* all .glue_7 sections (no idea what these are) */
*(.glue_7t) /* all .glue_7t sections (no idea what these are) */
_etext = .; /* define a global symbol _etext just after the last code byte */
} >flash /* put all the above into FLASH */

.data : /* collect all initialized .data sections that go into RAM */
{
_data = .; /* create a global symbol marking the start of the .data section */
*(.data) /* all .data sections */
_edata = .; /* define a global symbol marking the end of the .data section */
} >ram AT >flash /* put all the above into RAM (but load the LMA copy into FLASH) */

.bss : /* collect all uninitialized .bss sections that go into RAM */
{
_bss_start = .; /* define a global symbol marking the start of the .bss section */
*(.bss) /* all .bss sections */
} >ram /* put all the above in RAM (it will be cleared in the startup code */

. = ALIGN(4); /* advance location counter to the next 32-bit boundary */
_bss_end = . ; /* define a global symbol marking the end of the .bss section */
}
_end = .; /* define a global symbol marking the end of application RAM */

Я пробовал флаги -lc lgcc и по типу этого. Вопщим я многа перепробывал. В какой то момент он просил размещать секции имена которых в моей проге нет. я так подумал они в библиотеке. размещал, но итог нулевой. Всеж прошу выложить пример мелкой проги, которую я привожу выше с минимальным количеством лишнего. Я б тогда наверн примонтировал в свою

Сообщение отредактировал 123730 - Dec 20 2007, 21:28
Go to the top of the page
 
+Quote Post
axle
сообщение Dec 21 2007, 08:56
Сообщение #64


Частый гость
**

Группа: Новичок
Сообщений: 81
Регистрация: 19-04-07
Пользователь №: 27 167



Цитата(123730 @ Dec 21 2007, 00:48) *
Здесь было рассмотрено уже это но у мя не получилось. Плиз выложите пример с минимумом "лишних" деталей:


Для того чтобы использовать функции типа printf, sprintf и т.д. необходимо написать функции "system calls" специфичные для твоей платформы. Именно на их отсутсвие компилятор и ругается (_sbrk_r, _write_r и т.д.).

Как это сделать а заодно и рабочий пример смотри сюда:
http://www.siwawi.arubi.uni-kl.de/avr_proj...ects/#gcc_stdio
Go to the top of the page
 
+Quote Post
123730
сообщение Dec 26 2007, 16:25
Сообщение #65





Группа: Новичок
Сообщений: 10
Регистрация: 20-12-07
Пользователь №: 33 477



Стырил я syscalls.c, serials.h, serials.c с рабочего примера, который шел с WinARM. Пример называется at91sam7s64_Hello, сунул в свой проект:

arm-elf-as -Wa -amhls=out/Cstartup.lst -ahls -mapcs-32 source/Cstartup.s -o out/Cstartup.o
arm-elf-gcc -c -MD -O0 source/adc.c -o out/adc.o
arm-elf-gcc -c -MD -O0 source/Cstartup_SAM7.c -o out/Cstartup_SAM7.o
arm-elf-gcc -c -MD -O0 source/int.c -o out/int.o
arm-elf-gcc -c -MD -O0 source/Keyboard.c -o out/Keyboard.o
arm-elf-gcc -c -MD -O0 source/main.c -o out/main.o
arm-elf-gcc -c -MD -O0 source/serial.c -o out/serial.o
arm-elf-gcc -c -MD -O0 source/syscalls.c -o out/syscalls.o
arm-elf-gcc -c -MD -O0 source/timers.c -o out/timers.o
arm-elf-ld -TAT91SAM7S64-ROM.ld -Map=out/mit.map -lc out/Cstartup.o out/adc.o out/Cstartup_SAM7.o out/int.o out/Keyboard.o out/main.o out/serial.o out/syscalls.o out/timers.o -o out/mit.out
out/main.o: In function `main':
main.c:(.text+0x7c8): undefined reference to `iprintf'
make: *** [out/mit.out] Error 1

хобанца а вот так получилось)):

arm-elf-as -Wa -amhls=out/Cstartup.lst -ahls -mapcs-32 source/Cstartup.s -o out/Cstartup.o
arm-elf-gcc -c -MD -O0 source/adc.c -o out/adc.o
arm-elf-gcc -c -MD -O0 source/Cstartup_SAM7.c -o out/Cstartup_SAM7.o
arm-elf-gcc -c -MD -O0 source/int.c -o out/int.o
arm-elf-gcc -c -MD -O0 source/Keyboard.c -o out/Keyboard.o
arm-elf-gcc -c -MD -O0 source/main.c -o out/main.o
arm-elf-gcc -c -MD -O0 source/serial.c -o out/serial.o
arm-elf-gcc -c -MD -O0 source/syscalls.c -o out/syscalls.o
arm-elf-gcc -c -MD -O0 source/timers.c -o out/timers.o
arm-elf-gcc -Wl,-TAT91SAM7S64-ROM.ld,-Map=out/mit.map,--cref -lc -lm -lc -lgcc out/Cstartup.o out/adc.o out/Cstartup_SAM7.o out/int.o out/Keyboard.o out/main.o out/serial.o out/syscalls.o out/timers.o -o out/mit.out
arm-elf-objcopy --output-target=binary out/mit.out out/mit.bin
arm-elf-gcc out/Cstartup.o out/adc.o out/Cstartup_SAM7.o out/int.o out/Keyboard.o out/main.o out/serial.o out/syscalls.o out/timers.o -mcpu=arm7tdmi -nostartfiles -TAT91SAM7S64-ROM.ld -Wl,--no-warn-mismatch -o out/mit.elf
arm-elf-size out/mit.out
text data bss dec hex filename
20336 2176 100 22612 5854 out/mit.out


Только исходник вырос на 17 кБ crying.gif
Go to the top of the page
 
+Quote Post
gte
сообщение Mar 17 2008, 17:27
Сообщение #66


Гуру
******

Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613



Может ли кто поделиться или подсказать где поискать пример проекта для LPC2368,
Среда Eclipce + GCC для ARM + OpenOCD (Amontec sdk4arm) + MT-LINK.
Среду вроде бы настроил, простой проект на 2294 компилируется. Теперь бы перейти на LPC2368 :-).
Поиск в интернете и по конференциям пока безуспешен.
Go to the top of the page
 
+Quote Post
Hz!
сообщение Mar 18 2008, 16:16
Сообщение #67


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-05-06
Из: Минск
Пользователь №: 16 792



Цитата(gte @ Mar 17 2008, 19:27) *
Может ли кто поделиться или подсказать где поискать пример проекта для LPC2368,
Среда Eclipce + GCC для ARM + OpenOCD (Amontec sdk4arm) + MT-LINK.
Среду вроде бы настроил, простой проект на 2294 компилируется. Теперь бы перейти на LPC2368 :-).
Поиск в интернете и по конференциям пока безуспешен.

В демо на FreeRTOS есть то, что вам нужно.
Go to the top of the page
 
+Quote Post
Doka
сообщение Dec 31 2008, 07:36
Сообщение #68


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



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


ой, какая интересная информация...
пока что застрял на сборке второго прохода GCC.
следую согласно инструкции http://www.eluaproject.net/en/Building_GCC_for_ARM
первый проход перед сборкой newlib (шаг 2):
Код
./configure --target=arm-elf --prefix=$TOOLPATH --enable-interwork --enable-multilib --enable-languages="c,c++" --with-newlib --without-headers --disable-shared--with-gnu-as --with-gnu-ld


второй проход - шаг 4: вот тут-то и неясно - почему они не переконфигурят make перед сборкой???
и какие опции нужно задавать для этого??
надо ли указывать дислокацию этой newlib или достаточно сделать ей "make install" ?!


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
alx2
сообщение Dec 31 2008, 10:44
Сообщение #69


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(Doka @ Dec 31 2008, 12:36) *
следую согласно инструкции http://www.eluaproject.net/en/Building_GCC_for_ARM
первый проход перед сборкой newlib (шаг 2):
Код
./configure --target=arm-elf --prefix=$TOOLPATH --enable-interwork --enable-multilib --enable-languages="c,c++" --with-newlib --without-headers --disable-shared--with-gnu-as --with-gnu-ld
Просмотрел эту инструкцию, и не понял, в чем глубинный смысл столь хитрых манипуляций (установки gcc в два приема). Какие это дает преимущества перед сборкой gcc вместе с newlib в один прием?


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
Doka
сообщение Dec 31 2008, 14:06
Сообщение #70


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



alx2

очевидно из требования сборки newlib target-версией компилятора

или вы про:
"Некоторые компиляторы (GCC) поддерживают внутренние версии множества функций Стандартной библиотеки языка Си; то есть, реализации функций записываются в компилируемый объектный модуль, а программа вызывает внутренние версии вместо функций общей библиотеки Си.Это уменьшает накладные расходы при вызове функции, особенно если вызов функции заменяется встроенными вариантами, и разрешается использование других форм оптимизации (если компилятор поддерживает управление характеристиками внутренних вариантов)"
?

http://ru.wikipedia.org/wiki/%D0%A1%D1%82%....BE.D1.80.D0.B0


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
alx2
сообщение Jan 1 2009, 16:24
Сообщение #71


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(Doka @ Dec 31 2008, 19:06) *
очевидно из требования сборки newlib target-версией компилятора
Не понял. Можно подробнее? А чем же еще newlib может собираться? Не host-же версией!

Или спрошу по-другому. Я всегда просто помещал в исходники gcc симлинк на newlib и делал make && make install. Это неправильно?

Цитата(Doka @ Dec 31 2008, 19:06) *
или вы про:
"Некоторые компиляторы (GCC) поддерживают внутренние версии множества функций
Нет, об этом вообще по-моему речи не было...

Сообщение отредактировал alx2 - Jan 1 2009, 16:29


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
dch
сообщение Jan 2 2009, 03:10
Сообщение #72


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Цитата(DASM @ Oct 24 2007, 01:59) *

кстати у меня эта ссылка не работает - выдает страничку ошибки

Цитата(etoja @ Oct 26 2007, 07:45) *
поскольку за GNU проекты никто не отвечает.

они опубликованы, точно также за коммерческие продукты никто не несет ответсвенности, хоть один раз была какая либо компенсация за подвисание ос.
Go to the top of the page
 
+Quote Post
Doka
сообщение Apr 8 2009, 09:45
Сообщение #73


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



Цитата(alx2 @ Jan 1 2009, 20:24) *
Или спрошу по-другому. Я всегда просто помещал в исходники gcc симлинк на newlib и делал make && make install. Это неправильно?



1) судя по описанию http://www.eluaproject.net/en/Building_GCC_for_ARM , второй проход необходим для сборки библиотек (libgcc.a и прочих), которым для неё необходим newlib.

сейчас столкнулся с такой проблемой. делаю всё по вышеописанной ссылке, при втором проходе libgcc.a собираетсЯ, но не инсталлируется((
т.е. присутствует в директории из которой ведётся сборка (build-arm-elf/gcc/libgcc.a ), но при make install почему-то не копируется
в дистрибутиве нету тулчейна для ARM, но вот для AVR (для сравнения - с АRM картина идентична) картина такая:

дистрибутивный тулчейн AVR
Код
$ ll /usr/lib/gcc/avr/4.1.2/
drwxr-xr-x 2 root root    4096 2008-01-04 19:30 avr3
drwxr-xr-x 2 root root    4096 2008-01-04 19:30 avr4
drwxr-xr-x 2 root root    4096 2008-01-04 19:30 avr5
drwxr-xr-x 2 root root    4096 2008-01-04 19:30 include
-rw-r--r-- 1 root root 1512932 2007-05-23 13:05 libgcc.a
-rw-r--r-- 1 root root  199534 2007-05-23 13:05 libgcov.a

$ ll /usr/lib/gcc/avr/4.1.2/avr5
-rw-r--r-- 1 root root 1509392 2007-05-23 13:05 libgcc.a
-rw-r--r-- 1 root root  199534 2007-05-23 13:05 libgcov.a


тулчейн AVR ручной сборки:
Код
$ ll /usr/local/avr-4.3.3/avr/lib
drwxr-xr-x 2 root root   4096 2009-04-07 17:12 avr3
drwxr-xr-x 2 root root   4096 2009-04-07 17:12 avr4
drwxr-xr-x 2 root root   4096 2009-04-07 17:12 avr5
drwxr-xr-x 2 root root   4096 2009-04-07 17:04 ldscripts
-rw-r--r-- 2 root root 802476 2009-04-07 17:12 libc.a
-rw-r--r-- 2 root root 802476 2009-04-07 17:12 libg.a
-rw-r--r-- 1 root root 320392 2009-04-07 17:12 libm.a
-rwxr-xr-x 1 root root  25358 2009-04-07 17:12 libnosys.a

$ ll /usr/local/avr-4.3.3/avr/lib/avr5
-rw-r--r-- 2 root root 789240 2009-04-07 17:12 libc.a
-rw-r--r-- 2 root root 789240 2009-04-07 17:12 libg.a
-rw-r--r-- 1 root root 313024 2009-04-07 17:12 libm.a
-rwxr-xr-x 1 root root  25358 2009-04-07 17:12 libnosys.a


2) в опция makefile многих проектов для ARM вижу " -lgcc -lnewlib" - т.е. должна быть еще и бибилиотека с символьными именем newlib ??


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
alx2
сообщение Apr 9 2009, 10:52
Сообщение #74


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(Doka @ Apr 8 2009, 14:45) *
1) судя по описанию http://www.eluaproject.net/en/Building_GCC_for_ARM , второй проход необходим для сборки библиотек (libgcc.a и прочих), которым для неё необходим newlib.
Видимо, описание неверное, ибо выше мной описанным способом однократный make без проблем собирает и libgcc, и прочие необходимые библиотеки.

Цитата(Doka @ Apr 8 2009, 14:45) *
2) в опция makefile многих проектов для ARM вижу " -lgcc -lnewlib" - т.е. должна быть еще и бибилиотека с символьными именем newlib ??
Если речь идет о редхатовском newlib, то newlib - это общее название проекта. А результатом его сборки являются стандартные библиотеки libc и libm. О библиотеке libnewlib я никогда не слышал.


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
Doka
сообщение Apr 10 2009, 09:52
Сообщение #75


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



Цитата(alx2 @ Jan 1 2009, 20:24) *
Или спрошу по-другому. Я всегда просто помещал в исходники gcc симлинк на newlib и делал make && make install. Это неправильно?

Цитата(alx2 @ Apr 9 2009, 14:52) *
Видимо, описание неверное, ибо выше мной описанным способом однократный make без проблем собирает и libgcc, и прочие необходимые библиотеки.


хорошо. хочу прояснить для себя 2 вопроса:
1) почему в использованном мною способе сборки libgcc.a собирается, но не инсталлируется в соответствующую директорию

2) не могу понять почему в большинстве источников, описывающих сборку тулчейна для ARM, используется двухпроходная сборка GCC. даже в том, который сходен с вашим. обратите внимание - первая итерация уже с хидерами:
Код
mkdir gcc-build
cd gcc-build
../gcc-3.4.3/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib --enable-languages=c,c++ --with-newlib --with-headers=../newlib-1.12.0/newlib/libc/include
# Note: this step requires root privileges under Linux to copy the newlib headers into a subdirectory under $PREFIX.
make all-gcc
make install-gcc

Прикрепленный файл  Getting.Started.with.LPC2000.using.GCC.pdf ( 357.22 килобайт ) Кол-во скачиваний: 1649


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
klen
сообщение Apr 10 2009, 14:26
Сообщение #76


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



1. достаточно одного прохода
2. компиллеру для сборки libgcc не требуется newlib
3. newlib при сборке явлет библу libc.a libm.a .... (СТАНДАРТНЫЕ C - библиотеки) , libgcc - это нестандартная C-библиотека а библиотека компиллера с функциональностью поддержки целевой платформы,

пример ARM
реализация оперции ((float)int) или float * float - суть есть libgcc (зависит от набора инструкций)
реализация функций open(..) printf(...) exp() log() - суть libc - СТОАНДАРТ на runtime C, не зависит от целевой платформы, последние две отдеделы в libm - тоже часть стандарта.

есть один момент. для встраиваемых систем для оптимизации часто реализации libc (будьто newlib, glibc, или наверняка можно найти чтото типа ZOPAlibc.. ) имеют порты под конкретный процессор (набор инструкций) и написаны на асме ане на C.
Go to the top of the page
 
+Quote Post
alx2
сообщение Apr 13 2009, 10:33
Сообщение #77


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(Doka @ Apr 10 2009, 14:52) *
хорошо. хочу прояснить для себя 2 вопроса:
1) почему в использованном мною способе сборки libgcc.a собирается, но не инсталлируется в соответствующую директорию
Рискну высказать предположение: потому что способ неправильный. Раз в документе, описывающем этот способ, уже нашли неверное утверждение, не удивлюсь, если там и инструкция по сборке окажется неверной.

Цитата(Doka @ Apr 10 2009, 14:52) *
2) не могу понять почему в большинстве источников, описывающих сборку тулчейна для ARM, используется двухпроходная сборка GCC.
Вот и я не могу...


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
Doka
сообщение Apr 13 2009, 20:05
Сообщение #78


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



всё.......я сдаюсь.............

где взять правильный скрипт для сборки ARM-тулчейна?!

libgcc.a собирается, но не инсталлируется. перекопировал "куда надо" вручную...
собираю пример от SAM7S64 под GCC, поставляемый со своими либами (в т.ч. libgcc.a) - пример собирается.
удаляю libgcc.a из примера - линковщик не находит перекопированной в "правильное место" либы..
хорошо.. явно задаю путь к каждой либе - либы находится, но сборка прерывается ошибкой.......
сил никаких уже нет..........................


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
alx2
сообщение Apr 14 2009, 11:03
Сообщение #79


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(Doka @ Apr 14 2009, 01:05) *
где взять правильный скрипт для сборки ARM-тулчейна?!
Где взять, не знаю. Но могу описать, как сборка arm-elf-gcc с newlib-ом происходит у меня.
Код
tar -yxf gcc-core-x.x.x.tar.bz2
tar -yxf gcc-g++-x.x.x.tar.bz2
tar -zxf newlib-x.xx.x.tar.gz
ln -fs newlib-x.xx.x/newlib gcc-x.x.x/newlib
mkdir build
cd build
../gcc-x.x.x/configure --prefix=/usr/local --target=arm-elf --with-gcc --with-gnu-ld --with-gnu-as --enable-languages=c,c++ --disable-nls --with-newlib --enable-newlib-io-long-long
gmake all
gmake install


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
klen
сообщение Apr 15 2009, 05:10
Сообщение #80


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



у меня и того проще конфиг GCC

../../src/gcc/configure ../../src/gcc/configure --prefix=/kgp_arm --target=arm-elf --host=i686-pc-mingw32 --build=i686-pc-mingw32 --disable-nls --disable-shared --disable-threads --disable-libssp --disable-libmudflap --disable-libgomp --enable-interwork --enable-multilib --with-newlib --with-headers=../../src/newlib/newlib/libc/include --with-float=soft --enable-languages=c -v
Go to the top of the page
 
+Quote Post
011119xx
сообщение Feb 28 2010, 14:34
Сообщение #81


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Пытаюсь запустить Эклипс. Пользуюсь документом Using Open Source Tools for AT91SAM7S Cross Development revision C. Дошел до запуска демо-проекта demo_at91sam7_blink_flash. Все проходит как описано за исключением того, что после импортирования проекта происходит его компиляция и во вкладке Problems выдается сообщение о наличии 2 ошибок и 1 предупреждения:
1 ошибка -> error: no memory region specified for loadable section `.eh_frame' line 0 C/C++ Problem
2 ошибка -> make: *** [main.out] Error 1 line 0 C/C++ Problem

предупреждение -> Error launching external scanner info generator (gcc -E -P -v -dD C:/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c)

Помогите разобраться! В чем проблема?

Сообщение отредактировал 011119xx - Feb 28 2010, 14:35
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Feb 28 2010, 19:49
Сообщение #82


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Проект не плюсовый? Вываливай...
Код
/DISCARD/ :
    {
        *(.eh_frame_hdr)
        *(.eh_frame)
    }

(это в файле .cmd - скрипт линкера)

Когда дойдёте до запуска программатора, поделитесь исправленными файлами .cfg от opencd.

Сообщение отредактировал Genadi Zawidowski - Feb 28 2010, 19:51
Go to the top of the page
 
+Quote Post
011119xx
сообщение Mar 1 2010, 17:41
Сообщение #83


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Извините, но мне не понятно что делать. То что это надо добавить в файл .cmd понятно, а куда конкретно - нет.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Mar 1 2010, 19:34
Сообщение #84


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(011119xx @ Mar 1 2010, 22:41) *
Извините, но мне не понятно что делать. То что это надо добавить в файл .cmd понятно, а куда конкретно - нет.


Куда-нибудь в конец, перед последней скобкой:
Код
SECTIONS
{
    .text :
    {

......

/DISCARD/ :
    {
        *(.eh_frame_hdr)
        *(.eh_frame)
    }
}

Что касается warning-а, то это Project - Options - C/C++ Build - Discovery options, и там либо снять птичку "Automate discovery...", либо выбрать "GCC per project scanner info profile" и заменить в строке "compiler invocation command" "gcc" на "arm-gcc" или что там у вас.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
011119xx
сообщение Mar 2 2010, 16:26
Сообщение #85


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Спасибо. Это помогло.
Go to the top of the page
 
+Quote Post
USTAL
сообщение May 14 2010, 02:50
Сообщение #86





Группа: Новичок
Сообщений: 1
Регистрация: 14-05-10
Пользователь №: 57 253



Всё.... Имел я ввиду этот Eclipse CDT для ARM вместе с YAGARTO, Cygwin и иже с ними. Столько времени потратил только для того чтобы убедиться что другие были правы в том что не нужно связываться. Из своих наблюдений смело могу заключить что вся эта конструкция нопоминает оную из кубиков разного размера и неправильной формы, благодаря чему получается что любая посторойка обречена на развал, а если и простоит какое-то время то развалиться при следующей попытке использования. Отсюда же следует маловероятность повторить то что уже сделано (и скорее всего развалилось).
Чем сложнее задумання конструкция, тем, в корне убическом, меньше шансов на успех. Потому на интернете и нет упоминаний о проектах отличных от Demo примеров.
Дальше примеров дела идут, видимо, только в исключительных случаях.
Имеете желание улететь с работы – Eclipse вам в руки.
Это же надо такое предложить:
Сначала поучите как составить makefile, потом linker script, потом попудрите мозги над опциями компилятора и вообще над тем как его прикрутить к Eclipse. Прикрутили ? Замечательно – теперь ещё библиотеки надо. А какие? А кто его знает – надо ещё несколько дней потрахтить чтобы выяснить.
Ещё каки-то файлы конфигураций по любому поводу, по разным правилам.
Для одного дебаггера один хаос, для другого другой.
И ещё интересно – инженер поддержки из NXP, котрый несколько часов ведёт занятия и лабораторную работу по NXP Expresso ( Eclipse с Code Red) , при вопросе - “ Ну, хорошо, с вашими Evaluation PCBs дебагить можно. А как симулировать? “ , бодро, со знанием дела отвечает –“ Хороший Вопрос! Не могу на него ответить, но узнаю обязательно!”
Так как тогда продвигаться дальше, если не-у-кого получить быстрый и вразумительный ответ?
И так неделями – и на работе и дома. Так и не вник.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 14 2010, 05:39
Сообщение #87


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(USTAL @ May 14 2010, 05:50) *
Дальше примеров дела идут, видимо, только в исключительных случаях.
Имеете желание улететь с работы – Eclipse вам в руки.
Как говорится - плохому танцору... Делать что-то не читая документации - прямой путь к вашему результату.

P.S. Если вы начинаете общение на форуме с такого "вброса говна на вентилятор" - маловероятно, что вы что-то серьезное представляете из себя как специалист и ваш результат закономерен.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
klen
сообщение May 14 2010, 06:44
Сообщение #88


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(USTAL @ May 14 2010, 06:50) *
Имеете желание улететь с работы – Eclipse вам в руки.


мдя, однако мнение.
для тех кто еще сомневается - повторю слова из изветной рекламмы "- USTAL, ты так и не научился их готовить..."
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение May 14 2010, 06:51
Сообщение #89


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



YAGARTO + Cygwin - это же надо было додуматься!
А вот мне Eclipse нравится всё больше. Уже много проектов в ней собрал и много народу на неё подсадил, все довольны. Наверное я мазохист wink.gif
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 14 2010, 07:47
Сообщение #90


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(IgorKossak @ May 14 2010, 12:51) *
А вот мне Eclipse нравится всё больше.


+1:)

ЗЫ. Сдаётся мне, что этот CodeRed только сбивает с толку людей. Потому что создаёт обманчивое впечатление, что есть готовое решение типа IAR, а на самом деле разбираться всё равно во всём приходится самому.
Честно говоря, не понимаю, кто покупает это.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ZiB
сообщение May 16 2010, 06:45
Сообщение #91


Частый гость
**

Группа: Свой
Сообщений: 122
Регистрация: 26-07-05
Из: Россия, Томск
Пользователь №: 7 109



Всем, привет!
Подскажите пожалуйста по Eclipse.
Где в свойствах проекта можно задать определения (define)
что бы их можно было использовать в майкфайле?
Я пробовал задать в настройках проекта
С\C++ General -> Path and Symbols -> Symbols
в проекте их видно, но как их использовать в майкфайле я не понял.
Go to the top of the page
 
+Quote Post
klen
сообщение May 16 2010, 08:20
Сообщение #92


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(ZiB @ May 16 2010, 10:45) *
Всем, привет!
Подскажите пожалуйста по Eclipse.
Где в свойствах проекта можно задать определения (define)
что бы их можно было использовать в майкфайле?
Я пробовал задать в настройках проекта
С\C++ General -> Path and Symbols -> Symbols
в проекте их видно, но как их использовать в майкфайле я не понял.


а сразу без костылей в макефайле прописать не канает?
по простому не интересно, нада как можно сдожне...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 16 2010, 09:11
Сообщение #93


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(klen @ May 16 2010, 14:20) *
а сразу без костылей в макефайле прописать не канает?


Эт вы зря, вопрос правильный. Сейчас приходится прописывать дефайны в двух местах - в мейкфайле (для компилятора), и в настройках проекта (для эклипса). Если бы можно было как-то заставить эклипсу передавать дефайны мейку, или лучше наоборот, импортировать дефайны из мейкфайла, - было бы здорово. Потому я присоединяюсь к вопросу.

Цитата(ZiB @ May 16 2010, 12:45) *
С\C++ General -> Path and Symbols -> Symbols
в проекте их видно, но как их использовать в майкфайле я не понял.


Как я уже написал, я не знаю способа сделать это. Но знаю пути обхода smile.gif :
  1. Прописать дефайн и там и там (неудобно);
  2. Прописать дефайн в каком-нибудь *.h-файле, который включается повсеместно.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ZiB
сообщение May 16 2010, 10:06
Сообщение #94


Частый гость
**

Группа: Свой
Сообщений: 122
Регистрация: 26-07-05
Из: Россия, Томск
Пользователь №: 7 109



Конечно это не сильная проблема, на данный момент один заголовочник для конфига.
Просто попробовал CodeRed, и заметил в нем этот момент. Т.е. при создании записи в
С\C++ General -> Path and Symbols -> Symbols
она автоматом появляется в опциях компиляции c ключем -D
возможно там сам тулчейн рулит...
Go to the top of the page
 
+Quote Post
klen
сообщение May 17 2010, 08:03
Сообщение #95


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



а зачем эклипсу вообще знать чтото - мой личный подход таков что эклипс не должен знать ничего, будь то компиляция или испечение пирогов - маке включит печку с тестом. я воспринимаю как своеобразный редактор который редактирует ЧТОТО - тоесть все и всегда.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 17 2010, 08:18
Сообщение #96


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Ну банальный пример:
Код
#ifndef STM32F10X_CL
    RCC->CFGR &= (uint32_t)0xF8FF0000;
#else
    RCC->CFGR &= (uint32_t)0xF0FF0000;
#endif

если эклипса знает, определён ли STM32F10X_CL, то он неактивный код подкрасит сереньким. И навигация по коду (функциям/дефайнам), та что по Ctrl+Click работает правильно, выбирая нужный вариант.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 17 2010, 08:24
Сообщение #97


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(klen @ May 17 2010, 11:03) *
а зачем эклипсу вообще знать чтото
Он умеет подсвечивать активные ветки #ifdef #endif. Внутри таких условий могут быть подключены какие-то дополнительные заголовочные файлы, в которых он может искать объявления - так что штука полезная. Надо подумать - не может ли здесь помочь Project->C/C++ Build->Discovery options вот там если в Compiler invocation command указать make а в Compiler invocation arguments - info. А в makefile прописать цель info - вызов компилятора с ключами $(CFLAGS) -E -P -v -dD ${plugin_state_location}/${specs_file}


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ZiB
сообщение May 17 2010, 09:52
Сообщение #98


Частый гость
**

Группа: Свой
Сообщений: 122
Регистрация: 26-07-05
Из: Россия, Томск
Пользователь №: 7 109



Попробовал указать в
Compiler invocation command
имя компилятора arm-gcc
дефайны из вывода компиляции прописались, но вот беда если убрать их, то они не исчезают sad.gif как бы сделать что бы при каждой компиляции обновлялись...
Go to the top of the page
 
+Quote Post
011119xx
сообщение Jun 11 2010, 16:04
Сообщение #99


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



При компиляции проекта получаю следующее:

**** Build of configuration Default for project yamppod ****

make all

-------- begin (mode: ROM_RUN) --------
arm-elf-gcc (GCC) 4.4.2
Copyright © 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Linking: main.elf
arm-elf-gcc -mthumb -mcpu=arm7tdmi -mthumb-interwork -I. -gdwarf-2 -DROM_RUN -DVECTORS_IN_RAM -Os -Wall -Wcast-align -Wimplicit -Wparentheses -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wshadow -Wunused -Wa,-adhlns=startup_SAM7S.lst -funsigned-char -funsigned-bitfields -fshort-enums -fgnu89-inline -MD -MP -MF .dep/main.elf.d startup_SAM7S.o interrupt_routines.o abort.o interrupt_utils.o time.o usb_irq.o usb_drv.o usb_std.o usb_dsc.o usb_bot.o usb_lun.o usb_sbc_func.o serial.o rprintf.o delay.o spi.o glcd.o vs1033.o sdcard.o fat.o twi.o eeprom.o event.o power.o menu.o graphics.o player.o id3.o browser.o adjust.o playlist.o ds1337.o main.o --output main.elf -nostartfiles -Wl,-Map=main.map,--cref -lc -lm -lc -lgcc -TAT91SAM7S256-ROM.ld
c:/program files/yagarto/bin/../lib/gcc/arm-elf/4.4.2/../../../../arm-elf/lib/thumb/interwork\libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
C:\msys\1.0\home\yagarto\newlib-build\arm-elf\thumb\interwork\newlib\libc\reent/../../../../../../../newlib-1.18.0/newlib/libc/reent/sbrkr.c:60: undefined reference to `_sbrk'
collect2: ld returned 1 exit status
make: *** [main.elf] Error 1

Что это может означать?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 11 2010, 21:07
Сообщение #100


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(011119xx @ Jun 11 2010, 22:04) *
undefined reference to `_sbrk'
Что это может означать?

Это означает, что какая-то из ваших функций использует динамическое распределение памяти. Обычно этим занимается (s)printf smile.gif
Соответственно, чтобы это исправить, надо либо найти виновную функцию и убрать, либо написать минимальный набор системных вызовов для newlib, например, как описано в этом сообщении.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

19 страниц V   1 2 3 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 14:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.02882 секунд с 7
ELECTRONIX ©2004-2016