Warning: touch() [function.touch]: Unable to create file /home/starterkit/starterkit.ru/html/error.log because Permission denied in /home/starterkit/starterkit.ru/html/errorhandler.php on line 51
Как прикрутить компилятор для ARM к Eclipse? - S3E - AT91SAM9XXXXX - SK - Форум - starterkit.ru
Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9XXXXX-S3E
Как прикрутить компилятор для ARM к Eclipse?
vadim1997a
Добавлено 07.06.2010 13:10
0
Сообщение: 1
vadim1997a
5

Пункты: 2600
Регистрация: 01.06.2010
Просветите начинающего. Хочется иметь полноценную IDE, всё-таки какой путь к заголовочным файлам, которые использует компилятор с диска поставки?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 07.06.2010 13:22 Сообщение: 2
sasamy
4.70

Пункты: 76853
Регистрация: 14.08.2009
Спуститься к концу Подняться к началу
Персональная информация
vadim1997a
Добавлено 07.06.2010 13:50 Сообщение: 3
vadim1997a
5

Пункты: 2600
Регистрация: 01.06.2010
Самое интересное, что эклипс собирает бинарники, которые на плате выполняются... Но откуда надо брать хедеры? (По умолчанию у него прописано /usr/local/include и /usr/include)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 07.06.2010 13:53 Сообщение: 4
sasamy
4.70

Пункты: 76853
Регистрация: 14.08.2009
Хидеры в составе тулчейна - с ними собрана библиотека libc, их он и использует. Смотрите в sysroot своего тулчейна.
Спуститься к концу Подняться к началу
Персональная информация
vadim1997a
Добавлено 07.06.2010 14:08 Сообщение: 5
vadim1997a
5

Пункты: 2600
Регистрация: 01.06.2010
/usr/local/cross-gcc/arm-2007q1/arm-none-linux-gnueabi/libc/usr/include

или

/usr/include ? Сам компилятор (его бинарник) валяется в /usr/local/cross-gcc/arm-2007q1/bin
Спуститься к концу Подняться к началу
Персональная информация
vadim1997a
Добавлено 19.07.2010 11:00 Сообщение: 6
vadim1997a
5

Пункты: 2600
Регистрация: 01.06.2010
Отвечу сам себе. Заодно может кому пригодится. В линуксе я новичок, мой неподготовленный мозг не выдержал и часовой работы с консольной версией GDB. Укачало. Всё-таки начинать писать и отлаживать проги для линукса проще и удобнее в IDE нежели из-под терминала (один GDB чего стоит). Итак, чтобы получить нормальную интегрированную среду разработки я сделал следущее:
1. Поставил свежую Ubuntu 10.04
2. Сходил на сайт eclipse.org и выкачал Eclipse IDE for C/C++ Developers, (79 MB) http://www.eclipse.org/downloads/packages/release/galileo/sr2
3. Распаковал эклипс в удобное место на винт. Запустил его.
4. В появившемся окошке указал папку куда складывать мои проекты.
5. Создал новый проект. File->New->C project-> Makefile project->Empty Project. Придумал креативное имя project1. Нажал кнопку Next. Затем Finish.
6. Прикрыл вкладку Welcome. Увидел свежесозданный проект project1.
7. С диска, который шёл в комплекте с платой распаковал содержимое архива SK-AT91SAM9-S3/SK-AT91SAM9XE512-S3E/Linux/arm-2007q1-10-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.gz в папку /usr/local/cross-gcc
8. Во вкладке Project Explorer выделил проект project1. В меню Project->Properties->Builders нажал кнопочку New, назвал ARM_BUILDER, указал бинарный файл сишного компилятора (/usr/local/cross-gcc/arm-2007q1/arm-none-linux-gnueabi/bin/gcc). Затем нажал Project->Properties->C/C++ General->Path and Symbols. Во вкладке Includes указал путь к заголовочным файлам. Пути по умолчанию потёр и заменил на /usr/local/cross-gcc/arm-2007q1/arm-none-linux-gnueabi/libc/usr/include.
9. Средствами Эклипса создал файлик main.c а-ля "hello world", написал Makefile. В мэйкфайле указывал ключ -g для добавления в выходной бинарник информации для отладчика GDB.
10. В пункте Project->Properties->Run/Debug Settings создал новую конфигурацию для отладки. Назвал её ioport_gdb_server, на вкладке Main указал отлаживаемый бинарник myproject, на вкладке Debugger - бинарник отладчика (/usr/local/cross-gcc/arm-2007q1/bin/arm-none-linux-gnueabi-gdb), там же указал, что GDB будет работать совместно с GDB сервером на плате, указал способ отладки - по сети, IP адрес (у меня 10.0.0.232), порт (23456).
11. Закинул GDB сервер на отлаживаемую плату из папки с Buildroot 6.8 в плату в папку /mnt/nand/gdbserver.
12. Написал скрипт copy_to_starterkit, копирующий свежесобранный бинарник моего приложения на плату в папку /mnt/nand:
#!/bin/bash
ftp -vnd "10.0.0.232" <<++
user "root" "123456"
cd /mnt/nand/
lcd [путь-к-бинарнику my_project]
put ./myproject
bye
13. И скрипт start_remote_debug, запускающий GDB сервер совместно с моим приложением:
#!/bin/bash
telnet "10.0.0.232" <<++
cd /mnt/nand
chmod 777 myproject
./gdbserver/gdbserver 10.0.0.232:23456 ./myproject
14. Оба скрипта прицепил к кнопке External Tools через выпадающее меню.
15. Нажимая кнопки Build, запуская скрипты copy_to_starterkit, start_remote_debug собираем своё приложение, копируем его в плату, запускаем отладку.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 19.07.2010 11:17 Сообщение: 7
Pavel Ivanchenko
Admin
4.39

Пункты: 91348
Регистрация: 24.03.2009
Пол: Мужчина
Cпасибо за участие!
Надо будет в "стантартную поставку" виртуальной машины это хозяйство включить ...
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 19.07.2010 13:57 Редактировалось 19.07.2010 13:59 Сообщение: 8
Pavel Ivanchenko
Admin
4.39

Пункты: 91348
Регистрация: 24.03.2009
Пол: Мужчина
Давайте причешем нестыковки.
Упражняюсь на SK-iMX233.
Выполнил шаги до п.9, показалось странной фраза "написал Makefile", я думал, раз уж указали путь до компилятора (хотя не понятно почему префикс тулчайна нигде не указали), неужели он сам не может его генерить.
makefile создавать не стал (как то это не спортивно, самому его каждый раз создавать, наверняка что то предусмотрено), попробовал собрать проект, первым делом система сгенерировала makefile (в поддиректории Debug) и попыталась собрать проект, тут же ругнулась, что не может найти ld, ну а после (видимо как следствие) "gcc: no input files"
Т.е. наверняка правильнее будет, где то прописать префикс (с полным путем) тулчайна, как это делается во всех makefile.
Спуститься к концу Подняться к началу
Персональная информация
vadim1997a
Добавлено 19.07.2010 15:07 Сообщение: 9
vadim1997a
5

Пункты: 2600
Регистрация: 01.06.2010
Мне, честно говоря, показалось надёжнее написать Makefile самому и создать именно Makefile project. Во всяком случае, в своём мэйкфайле я не запутаюсь. А то, фиг знает, что этот эклипс там сам нагенерит... Это я как чайник вам заявляю...
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 19.07.2010 16:06 Сообщение: 10
Pavel Ivanchenko
Admin
4.39

Пункты: 91348
Регистрация: 24.03.2009
Пол: Мужчина
Да уж, там черт ногу сломит, в настройках проекта, с час тыкался пытался его научить тулчайн правильно использовать - так и не понял, где и что настроить.
Решил пойти Вашим путем (отключил генерацию мейкфайла), взял старый мейкфайл:
Код
#CC=arm-none-linux-gnueabi-gcc
#CXX=arm-none-linux-gnueabi-g++
#LD=arm-none-linux-gnueabi-ld
CC=/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc
CXX=/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-g++
LD=/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld

#LDFLAGS=-L/usr/local/cross-gcc/arm-2007q1/arm-linux/arm-linux/lib -static -s
LDFLAGS=-L/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/arm-none-linux-gnueabi/sysroot/lib -static -s

export CC
export CXX
export LD
export LDFLAGS

EXEC = hello
OBJS = hello.o

all: $(EXEC)
$(EXEC): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS$(LDLIBS_$@))
romfs:
$(ROMFSINST) /bin/$(EXEC)
clean:
-rm -f $(EXEC) *.elf *.gdb *.o
В консоли собирается без проблем, а в эклипсе получается:
Цитата
**** Build of configuration Debug for project Hello_world ****

make all
/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc -L/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/arm-none-linux-gnueabi/sysroot/lib -static -s -o hello hello.o
/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/lib/gcc/arm-none-linux-gnueabi/4.1.2/../../../../arm-none-linux-gnueabi/bin/ld: hello.o: Relocations in generic ELF (EM: 3)
/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/lib/gcc/arm-none-linux-gnueabi/4.1.2/../../../../arm-none-linux-gnueabi/bin/ld: hello.o: Relocations in generic ELF (EM: 3)
/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/lib/gcc/arm-none-linux-gnueabi/4.1.2/../../../../arm-none-linux-gnueabi/bin/ld: hello.o: Relocations in generic ELF (EM: 3)
/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/lib/gcc/arm-none-linux-gnueabi/4.1.2/../../../../arm-none-linux-gnueabi/bin/ld: hello.o: Relocations in generic ELF (EM: 3)
/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/lib/gcc/arm-none-linux-gnueabi/4.1.2/../../../../arm-none-linux-gnueabi/bin/ld: hello.o: Relocations in generic ELF (EM: 3)
hello.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [hello] Error 1
Что то я слабо понимаю, что он пытается сделать ...
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9XXXXX-S3E