|
|
|
Eclipse + GCC для ARM, Среда разработки для ARM, причем бесплатная... |
|
|
|
Nov 10 2007, 16:55
|
Участник
Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295
|
Цитата(sleo2000 @ Nov 9 2007, 16:02) Если все так просто - может все-таки поделитесь опытом? Мои мучения с LPC продолжаются... ОК. Тогда давайте по порядку. Что делаете, что работает, что не работает? Может ошибки какие выводит?
|
|
|
|
|
Nov 14 2007, 02:54
|
Частый гость
Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343
|
Цитата(dch @ Nov 14 2007, 12:30) ссылка битая Это ссылка на поиск по форуму с ключевым словом eclipse, судя по act=search & highlite=eclipse. Цитата откуда это все качается, просветите плиз. Sun JRE 6u3 - c сайта SunEclipse - c сайта EclipseВсе, что не находится - спрашивается сначала у поисковиков, как внутреннего по форуму, так и внешних, типа гугля.
|
|
|
|
|
Nov 14 2007, 14:31
|
Участник
Группа: Участник
Сообщений: 25
Регистрация: 23-10-07
Из: Москва
Пользователь №: 31 665
|
Цитата(Puzan @ Nov 10 2007, 20:55) ОК. Тогда давайте по порядку. Что делаете, что работает, что не работает? Может ошибки какие выводит? На сегодняшний день ситуация такая: с простым демо-примером все разобрались - компилится, грузится, отлаживается. Даже по следам написали ДОК-у на русском. Можем поделиться этим комплектом (работаем с Olimex JTAG). Теперь возникли проблемы с подключением библиотек. Коммерческие среды делают это практически автоматом, а тут в одном makefile можно заблудиться. Нужен просто пример подключения стандартных библиотек (stdio, stdlib, string), чтобы проект компилился... Сам пример (main) может ничего и не содержать, кроме пары обращений к библиотеке (например, sprintf(), memset(), ...)
--------------------
Sleo
|
|
|
|
|
Nov 14 2007, 22:03
|
Частый гость
Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343
|
Так все ж стандартно... main.c Код #include <stdio.h> при вызове компилера (во флагах в макефайле или напрямую в ком. строке) -I "путь к заголовку". Если надо влинковать библиотеки -L "путь к библиотекам" Про эти флаги очень подробно расписано в мане по гцц, ближе к концу. PS: выложи, пожалуйста.
|
|
|
|
|
Nov 15 2007, 08:07
|
Участник
Группа: Новичок
Сообщений: 30
Регистрация: 16-12-05
Пользователь №: 12 295
|
Цитата(sleo2000 @ Nov 14 2007, 17:31) Теперь возникли проблемы с подключением библиотек. Коммерческие среды делают это практически автоматом, а тут в одном makefile можно заблудиться. Нужен просто пример подключения стандартных библиотек (stdio, stdlib, string), чтобы проект компилился... Сам пример (main) может ничего и не содержать, кроме пары обращений к библиотеке (например, sprintf(), memset(), ...) Покажите ваш паспорт makefile. А вообще, я не рекомендую использовать printf/sprintf из стандартной библиотеки. Очень уж он там громоздкий. Напишите свой или возьмите готовый. В сети много вариантов валяется.
|
|
|
|
|
Nov 15 2007, 15:51
|
Участник
Группа: Участник
Сообщений: 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
|
|
|
|
|
Nov 15 2007, 22:42
|
Частый гость
Группа: Свой
Сообщений: 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. тут хотя бы с си разобраться...
|
|
|
|
|
Nov 16 2007, 04:26
|
Частый гость
Группа: Новичок
Сообщений: 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, а будет ожидать что его создадите вы.
|
|
|
|
|
Nov 16 2007, 07:05
|
Частый гость
Группа: Свой
Сообщений: 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 и под винду. Если кто-нибудь пробовал настраивать эту связку, поделитесь плз. тестовым проектиком.
|
|
|
|
|
Nov 16 2007, 07:25
|
Участник
Группа: Новичок
Сообщений: 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?
|
|
|
|
|
Nov 16 2007, 08:08
|
Частый гость
Группа: Новичок
Сообщений: 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 все было бы гораздо проще. Он бы сам в зависимости от флагов выбирал необходимую библиотеку.
|
|
|
|
|
Nov 16 2007, 08:12
|
Частый гость
Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436
|
Цитата(Puzan @ Nov 16 2007, 10:25) А кто выводит это сообщение? OpenOCD, GDB или Eclipse? Судя по всему gdb выводит в консоли eclipse при исполнении команды load.
|
|
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|