Перейти к содержанию
    

Если все так просто - может все-таки поделитесь опытом? Мои мучения с LPC продолжаются...

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Баян

http://electronix.ru/forum/index.php?act=S...ighlite=eclipse

МТЛинк за $70 не по карману ?

ссылка битая

 

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

откуда это все качается, просветите плиз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ссылка битая

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

откуда это все качается, просветите плиз.

Sun JRE 6u3 - c сайта Sun

Eclipse - c сайта Eclipse

Все, что не находится - спрашивается сначала у поисковиков, как внутреннего по форуму, так и внешних, типа гугля.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

На сегодняшний день ситуация такая: с простым демо-примером все разобрались - компилится, грузится, отлаживается. Даже по следам написали ДОК-у на русском. Можем поделиться этим комплектом (работаем с Olimex JTAG).

Теперь возникли проблемы с подключением библиотек. Коммерческие среды делают это практически автоматом, а тут в одном makefile можно заблудиться.

Нужен просто пример подключения стандартных библиотек (stdio, stdlib, string), чтобы проект компилился... Сам пример (main) может ничего и не содержать, кроме пары обращений к библиотеке (например, sprintf(), memset(), ...)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так все ж стандартно...

main.c

#include <stdio.h>

при вызове компилера (во флагах в макефайле или напрямую в ком. строке)

-I "путь к заголовку".

Если надо влинковать библиотеки

-L "путь к библиотекам"

Про эти флаги очень подробно расписано в мане по гцц, ближе к концу.

PS: выложи, пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теперь возникли проблемы с подключением библиотек. Коммерческие среды делают это практически автоматом, а тут в одном makefile можно заблудиться.

Нужен просто пример подключения стандартных библиотек (stdio, stdlib, string), чтобы проект компилился... Сам пример (main) может ничего и не содержать, кроме пары обращений к библиотеке (например, sprintf(), memset(), ...)

 

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

 

А вообще, я не рекомендую использовать printf/sprintf из стандартной библиотеки. Очень уж он там громоздкий. Напишите свой или возьмите готовый. В сети много вариантов валяется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так все ж стандартно...

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.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Покажи конфиг 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. тут хотя бы с си разобраться...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем вы изобретаете велосипед??? Вы makefile с нуля пишете что ли? Возьмите готовый пример, запустите и потом уже изменяйте под ваши нужды. Адреса с примерами приводили уже много раз: http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/ . Это один из многих. Остальные спросите у Google.

 

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 и т.д.

 

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

Задача у меня простая: написать простейшую программу с примитивнейшим объектом (классом) типа LED, который будет мигать, и заставить ее работать в плате LPC-P2138.

 

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

У вас интернет есть или нет??? http://www.yagarto.de/howto/yagarto2/index.html

На всякий случай еще текстом: При создании проекта нужно выбирать "Makefile project"->"Other toolchain". Тогда Eclipse не будет создавать за вас makefile, а будет ожидать что его создадите вы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пытаюсь под 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 и под винду.

Если кто-нибудь пробовал настраивать эту связку, поделитесь плз. тестовым проектиком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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.

 

 

Пытаюсь под Ubuntu 7.04 настроить связку Eclipse + OpenOCD + GDB + Wiggler + AT91RM9200. При попытке отладить простой проектик возникают проблемы - при выполнении загрузки вижу такое сообщение:

putpkt: write failed: Broken pipe.

 

А кто выводит это сообщение? OpenOCD, GDB или Eclipse?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это можно автоматизировать (как сделал я). Кусок 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 все было бы гораздо проще.

Он бы сам в зависимости от флагов выбирал необходимую библиотеку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А кто выводит это сообщение? OpenOCD, GDB или Eclipse?

Судя по всему gdb выводит в консоли eclipse при исполнении команды load.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...