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

 
 
> Сборка GNU toolchains, может кто подсказать?
Krom
сообщение May 13 2008, 09:05
Сообщение #1


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Озадачился я самостоятельной сборкой gnu toolchains.

В Линуксе я мягко говоря новичок, поэтому пару недель ушло на поиск и усвоение информации про
что и как делать. Использую дистрибутив Debian Etch 4.0r1, в нем присутствуют свои заморочки,
но в принципе разобрался. Много чего почерпнул на этом форуме, но осталось пару непоняток.
Прошу знающих людей разъяснить, в свою очередь обязуюсь написать подробный манул по сборке,
потому как проити через такое оно конечно и полезно в плане навыков, но времени и нервов на
это уходит масса.

Итак, вопросы.
1. По сборке binutils вопросов нет, разобрался.
2. Далее рекомендуется собрать gcc c опцией --without-headers, потом с помощью собранного gcc
собрать newlib, и уже потом пересобрать gcc заново. Вот здесь я и застопорился. После
двухдневных плясок с бубном gcc-4.3 я собрал:

/usr/local/arm/src/build/gcc-4.3/src/configure --prefix=/usr/local/arm --target=arm-elf --disable-nls
--disable-werror --enable-threads --disable-shared --disable-win32-registry --enable-languages=c
--enable-interwork --enable-multlib --with-float=soft --disable-libssp --with-newlib --without-headers
make
make install

а вот как с его помощью собрать newlib? Пробовал конфигурировать так:

CC=arm-elf-gcc ./configure --target=arm-elf --prefix=/usr/local/arm --enable-interwork --enable-multlib

так ругаецца, говорит, что указанный компиллятор не может создавать исполняемые файлы sad.gif.
Оно вроде бы как и понятно,собран с опцией --target=arm-elf, то есть будет генерировать файлы elf,
но тогда как надо? И нужен ли вообще этот этап?

Таким вот макаром

./configure --target=arm-elf --prefix=/usr/local/arm --enable-interwork --enable-multlib

нормально конфигурится и затем собирается. Но это я так понимаю с помощью системного gcc. Может,
так и надо?
Go to the top of the page
 
+Quote Post
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 51)
Andy Great
сообщение May 13 2008, 09:13
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Дык Вы загляньте в Makefile после ./configure. Там написано какой компилер прописывается.
Go to the top of the page
 
+Quote Post
amw
сообщение May 13 2008, 09:18
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Krom @ May 13 2008, 12:05) *
Озадачился я самостоятельной сборкой gnu toolchains.

В Линуксе я мягко говоря новичок, поэтому пару недель ушло на поиск и усвоение информации про
что и как делать. Использую дистрибутив Debian Etch 4.0r1, в нем присутствуют свои заморочки,
но в принципе разобрался. Много чего почерпнул на этом форуме, но осталось пару непоняток.
Прошу знающих людей разъяснить, в свою очередь обязуюсь написать подробный манул по сборке,
потому как проити через такое оно конечно и полезно в плане навыков, но времени и нервов на
это уходит масса.

Вот тут http://electronix.ru/forum/index.php?showt...mp;#entry409582 я выкладывал набор скриптов и патчей для сборки. Я делал ӕто под Debian/Lenny amd64 но не вижу причин, почему бы ӕто не работало в Etch.
Цитата
Итак, вопросы.
1. По сборке binutils вопросов нет, разобрался.
2. Далее рекомендуется собрать gcc c опцией --without-headers, потом с помощью собранного gcc
собрать newlib, и уже потом пересобрать gcc заново. Вот здесь я и застопорился. После
двухдневных плясок с бубном gcc-4.3 я собрал:

Пока могу посоветовать gcc-4.2. С версией 4.3 еще не все в порядке в смысле ARM.
Цитата
/usr/local/arm/src/build/gcc-4.3/src/configure --prefix=/usr/local/arm --target=arm-elf --disable-nls
--disable-werror --enable-threads --disable-shared --disable-win32-registry --enable-languages=c
--enable-interwork --enable-multlib --with-float=soft --disable-libssp --with-newlib --without-headers
make
make install

а вот как с его помощью собрать newlib? Пробовал конфигурировать так:

CC=arm-elf-gcc ./configure --target=arm-elf --prefix=/usr/local/arm --enable-interwork --enable-multlib

так ругаецца, говорит, что указанный компиллятор не может создавать исполняемые файлы sad.gif.
Оно вроде бы как и понятно,собран с опцией --target=arm-elf, то есть будет генерировать файлы elf,
но тогда как надо? И нужен ли вообще этот этап?

По моим наблюдениям - не обязательно в случае arm-elf. Но в общем случае gcc должен "знать" libc и потому во всех случаях настоятельно рекомендуется компилить gcc дважды. Кроме того, если захотите C++ то почти без вариантов.
Цитата
Таким вот макаром

./configure --target=arm-elf --prefix=/usr/local/arm --enable-interwork --enable-multlib

нормально конфигурится и затем собирается. Но это я так понимаю с помощью системного gcc. Может,
так и надо?

Есть такая проблема. Оно пытается пртотестиь на наличие либы, для чего пытается линковать, а newlib еще нет и потому нет ни одного crt0.o. Смотрите там в патчах.

Сообщение отредактировал amw - May 13 2008, 09:22


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 13 2008, 09:50
Сообщение #4


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Цитата(amw @ May 13 2008, 13:18) *
Вот тут http://electronix.ru/forum/index.php?showt...mp;#entry409582 я выкладывал набор скриптов и патчей для сборки. Я делал ӕто под Debian/Lenny amd64 но не вижу причин, почему бы ӕто не работало в Etch.


Спасибо, посмотрю обязательно. Насчет патчей - все исходники я брал из репозитария Дебиан,
там тоже есть какие-то патчи. Указанные Вами патчи все равно надо ставить?

По скриптам: в tools.sh видно, что после binutils собирается промежуточная версия gcc с помощью скрипта gcc_bare.sh, а затем скриптом newlib.sh собираются newlibы. Я посмотрел этот скрипт, и нигде не увидел, где задается, каким gcc они собираются. Ткните носом если не сложно smile.gif

Да, и вопрос - исходники можно таки брать из репозитария Дебиана?
Go to the top of the page
 
+Quote Post
amw
сообщение May 13 2008, 10:00
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Krom @ May 13 2008, 12:50) *
Спасибо, посмотрю обязательно. Насчет патчей - все исходники я брал из репозитария Дебиан,
там тоже есть какие-то патчи. Указанные Вами патчи все равно надо ставить?

Я всегда беру исходники toolchain с gnu.org
http://ftp.gnu.org/gnu/binutils/
http://ftp.gnu.org/gnu/gcc/
http://ftp.gnu.org/gnu/glibc/
http://ftp.gnu.org/gnu/gdb/
ftp://sources.redhat.com/pub/glibc/releases
http://sourceware.org/newlib/
http://sourceware.org/insight/

Мое любимое зеркало smile.gif
ftp://ftp.heanet.ie/mirrors/ftp.gnu.org/gnu/

Цитата
По скриптам: в tools.sh видно, что после binutils собирается промежуточная версия gcc с помощью скрипта gcc_bare.sh, а затем скриптом newlib.sh собираются newlibы. Я посмотрел этот скрипт, и нигде не увидел, где задается, каким gcc они собираются. Ткните носом если не сложно smile.gif

Ну так в архиве есть папка scripts. Там все и прописано. В tools.sh в начале общие и управляющие переменные.
Обратите внимание на
Код
BINUTILS=0
GCC_BARE=0
NEWLIB=0
GCC=0
GDB=0
INSIGHT=1

Где зачение = 1 тулса собирается, 0 - нет. Ӕто для пошаговой сборки. Сначала я собираю одну тулсу. Пока не соберется правильно, потом 1 перемещаю на следующую тулсу и так пока не соберу все. Потом если надо пересобрать все, везде ставлю 1 и собираю все подряд.
Цитата
Да, и вопрос - исходники можно таки брать из репозитария Дебиана?

См. выше.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 13 2008, 10:10
Сообщение #6


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Ok. Буду дальше разбираться. А какие проблемы в gcc-4.3 в части ARM?
Go to the top of the page
 
+Quote Post
amw
сообщение May 13 2008, 10:21
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Krom @ May 13 2008, 13:10) *
Ok. Буду дальше разбираться. А какие проблемы в gcc-4.3 в части ARM?

Видел в списке рассылки arm.linux.org.uk.
Глюки кодогенератора ARM. Code inconsistency в некоторых случаях. Возможно уже исправили, точно не знаю. Знаю только одно - ARM не является первым в списке продвижения компилера по версиям, потому сначала появляется x86 и его вылизывают в основной ветке, а ARM идет отдельной веткой и несколько запаздывает с включением патчей в основную ветку. В принципе новейший GCC способен генрировать код для любой поддерживаемой архитектуры, но как говорится не всегда он может ӕто делать "в корпусе". Посмотрите на http://gcc.gnu.org/gcc-4.3/ архив списка рассылки и инфу о сатусе и еще в списке рассылки arm.linux.org.uk.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 14 2008, 06:03
Сообщение #8


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Судя по тому, что поддержка ARMv7 появилась только в этой версии

* Compiler and Library support for Thumb-2 and the ARMv7 architecture has been added.

выбора у меня нет, мне с Cortex M3 надо работать. Так что ничего не поделаешь.
Go to the top of the page
 
+Quote Post
Andy Great
сообщение May 14 2008, 06:38
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Возьмите CodeSourcery уже скомпилированный.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 14 2008, 14:00
Сообщение #10


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Такие вот дела: binutils, gcc и newlib в принципе собрал. Но не совсем так, как хотелось бы sad.gif.
Дело вот чем. Если в файле t-arm-elf перед сборкой откомментировать(я имею в виду--снять символ комментария) только следующие строки:

MULTILIB_OPTIONS += mlittle-endian/mbig-endian
MULTILIB_DIRNAMES += le be
MULTILIB_MATCHES += mbig-endian=mbe mlittle-endian=mle

MULTILIB_OPTIONS += mhard-float/msoft-float
MULTILIB_DIRNAMES += fpu soft
MULTILIB_EXCEPTIONS += *mthumb/*mhard-float*

MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork
MULTILIB_DIRNAMES += normal interwork


то newlib впоследстии собирается без проблем.

Если же вдобавок к ним откомментировать еще и следующие строки
MULTILIB_OPTIONS += march=armv7
MULTILIB_DIRNAMES += thumb2
MULTILIB_EXCEPTIONS += march=armv7* marm/*march=armv7*
#MULTILIB_MATCHES += march?armv7=march?armv7-a
#MULTILIB_MATCHES += march?armv7=march?armv7-r
#MULTILIB_MATCHES += march?armv7=march?armv7-m
#MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8
#MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4
MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3

то при сборке newlib выдает следующую ошибку:

make[9]: Entering directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/libc/machine/arm'
arm-elf-gcc -B/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/ -isystem /usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/targ-include -isystem /usr/local/arm/src/build/newlib-1.16.0/src/newlib/libc/include -B/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/libgloss/arm -L/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/libgloss/libnosys -L/usr/local/arm/src/build/newlib-1.16.0/src/libgloss/arm -mthumb -march=armv7 -O2 -DNO_FLOATING_POINT -DARM_RDI_MONITOR -fno-builtin -mthumb -march=armv7 -c -o lib_a-setjmp.o `test -f 'setjmp.S' || echo '../../../../../../.././src/newlib/libc/machine/arm/'`setjmp.S
../../../../../../.././src/newlib/libc/machine/arm/setjmp.S: Assembler messages:
../../../../../../.././src/newlib/libc/machine/arm/setjmp.S:123: Error: SP not allowed in register list -- `stmea a1!,{v1-v7,fp,ip,sp,lr}'
../../../../../../.././src/newlib/libc/machine/arm/setjmp.S:145: Error: SP not allowed in register list -- `ldmfd a1!,{v1-v7,fp,ip,sp,lr}'
make[9]: *** [lib_a-setjmp.o] Ошибка 1
make[9]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/libc/machine/arm'
make[8]: *** [all-recursive] Ошибка 1
make[8]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/libc/machine'
make[7]: *** [all-recursive] Ошибка 1
make[7]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/libc'
make[6]: *** [all-recursive] Ошибка 1
make[6]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib'
make[5]: *** [all] Ошибка 2
make[5]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib'
make[4]: *** [multi-do] Ошибка 1
make[4]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/newlib'
make[3]: *** [all-multi] Ошибка 2
make[3]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/newlib'
make[2]: *** [all] Ошибка 2
make[2]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/newlib'
make[1]: *** [all-target-newlib] Ошибка 2
make[1]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0'
make: *** [all] Ошибка 2
krom-nix:/usr/local/arm/src/build/newlib-1.16.0#


Что за фигня? Сырые newlib? Или еще надо чего-то надо включить? Я использовал newlib-1.16.0-2 из репозитария Дебиан. Может, патчи уже какие были?
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 14 2008, 14:23
Сообщение #11


Гуру
******

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



Цитата(Krom @ May 13 2008, 11:05) *
Озадачился я самостоятельной сборкой gnu toolchains.

Moderator:
Просьба правильно выбирать раздел для постов. Тема перенесена.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
amw
сообщение May 15 2008, 07:30
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Krom @ May 14 2008, 17:00) *
Если же вдобавок к ним откомментировать еще и следующие строки
[i]MULTILIB_OPTIONS += march=armv7
MULTILIB_DIRNAMES += thumb2

А newlib уже дружит с Cortex-ами?


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Andy Great
сообщение May 15 2008, 08:39
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



klen делает дистрибутивы, так что, похоже, дружит.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 15 2008, 12:34
Сообщение #14


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Цитата(amw @ May 15 2008, 11:30) *
А newlib уже дружит с Cortex-ами?

По идее дружит, только вот собираться никак не хочет sad.gif Пляски с бубном продолжаются...
Go to the top of the page
 
+Quote Post
klen
сообщение May 15 2008, 14:47
Сообщение #15


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

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



Цитата(Krom @ May 15 2008, 16:34) *
По идее дружит, только вот собираться никак не хочет sad.gif Пляски с бубном продолжаются...


ниче страшного, попляшем и перестанем!
в чем пролема? пошагово соберем!
Go to the top of the page
 
+Quote Post
Krom
сообщение May 15 2008, 15:12
Сообщение #16


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



О, на вас вся надежда! help.gif
Повторюсь немного:
1. Собрал binutils. Вроде как без проблем.
2. Собираю gcc. Eсли в t-arm-elf раскомментировать строки (я правда не знаю еще, необходимо ли это, но так как работать будет нужно сэтой архитектурой, решил что нужно)
MULTILIB_OPTIONS += march=armv7
MULTILIB_DIRNAMES += thumb2
MULTILIB_EXCEPTIONS += march=armv7* marm/*march=armv7*
MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3

то newlib потом отказываются собираться с ошибкой:

../../../../../../.././src/newlib/libc/machine/arm/setjmp.S: Assembler messages:
../../../../../../.././src/newlib/libc/machine/arm/setjmp.S:123: Error: SP not allowed in register list -- `stmea a1!,{v1-v7,fp,ip,sp,lr}'
../../../../../../.././src/newlib/libc/machine/arm/setjmp.S:145: Error: SP not allowed in register list -- `ldmfd a1!,{v1-v7,fp,ip,sp,lr}'
make[9]: *** [lib_a-setjmp.o] Ошибка 1
make[9]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/libc/machine/arm'
make[8]: *** [all-recursive] Ошибка 1
make[8]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/libc/machine'
make[7]: *** [all-recursive] Ошибка 1
make[7]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/libc'
make[6]: *** [all-recursive] Ошибка 1
make[6]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib'
make[5]: *** [all] Ошибка 2
make[5]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib'
make[4]: *** [multi-do] Ошибка 1
make[4]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/newlib'
make[3]: *** [all-multi] Ошибка 2
make[3]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/newlib'
make[2]: *** [all] Ошибка 2
make[2]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/newlib'
make[1]: *** [all-target-newlib] Ошибка 2
make[1]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0'
make: *** [all] Ошибка 2

если те строки оставить закомментаренными, собираются нормально sad.gif. Косяк я так понимаю в libc, создаваемой при сборке gcc-4.3.1, но как с этим боротся - нихт ферштеен sad.gif
Все исходники с патчами брал из репозитария Дебиан.
Может, подробнее расписать, с какими опциями собирал?
Go to the top of the page
 
+Quote Post
amw
сообщение May 15 2008, 18:29
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Krom @ May 15 2008, 18:12) *
Все исходники с патчами брал из репозитария Дебиан.

Тут у меня крамольная мысл появилась smile.gif
Если все с и в Дебиан, то может вот это поможет?
http://buildd.emdebian.org/
Это не совсем то, что нужно, но мало ли.
Правда сам я не пробовал.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
klen
сообщение May 15 2008, 19:28
Сообщение #18


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

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



Все прально не собираецца! не должен

нада подправить ручками код функций setjmp longjmp :

Код
/* --------------------------------------------------------------------
                 int setjmp (jmp_buf);
   -------------------------------------------------------------------- */
    
    FUNC_START setjmp

    /* сохраняем по разному в armv4 и armv7  */
#ifdef __thumb2__
    stmea        a1!, { v1-v7, fp, ip, lr }
            /* сохраняем указатель стека, и тд */
    str        sp, [a1],#+4    
#else
    stmea        a1!, { v1-v7, fp, ip, sp, lr }
#endif
    
#if 0    /* Simulator does not cope with FP instructions yet.  */
#ifndef __SOFTFP__
    /* Save the floating point registers.  */
    sfmea        f4, 4, [a1]
#endif
#endif        
    /* When setting up the jump buffer return 0.  */
    mov        a1, #0

    FUNC_END setjmp
    
/* --------------------------------------------------------------------
        volatile void longjmp (jmp_buf, int);
   -------------------------------------------------------------------- */
    
    FUNC_START longjmp

    /* If we have stack extension code it ought to be handled here.  */
    
    /* Restore the registers, retrieving the state when setjmp() was called.  */
#ifdef __thumb2__
    ldmfd        a1!, { v1-v7, fp, ip, lr }
    ldr        sp, [a1],#+4
#else
    ldmfd        a1!, { v1-v7, fp, ip, sp, lr }
#endif
    
#if 0    /* Simulator does not cope with FP instructions yet.  */
#ifndef __SOFTFP__
    /* Restore floating point registers as well.  */
    lfmfd        f4, 4, [a1]
#endif
#endif    
    /* Put the return value into the integer result register.
       But if it is zero then return 1 instead.  */    
    movs        a1, a2
#ifdef __thumb2__
    it        eq
#endif
    moveq        a1, #1
Go to the top of the page
 
+Quote Post
amw
сообщение May 15 2008, 19:47
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Krom @ May 15 2008, 18:12) *
MULTILIB_OPTIONS += march=armv7
MULTILIB_DIRNAMES += thumb2
MULTILIB_EXCEPTIONS += march=armv7* marm/*march=armv7*
MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3

то newlib потом отказываются собираться с ошибкой:

../../../../../../.././src/newlib/libc/machine/arm/setjmp.S: Assembler messages:
../../../../../../.././src/newlib/libc/machine/arm/setjmp.S:123: Error: SP not allowed in register list -- `stmea a1!,{v1-v7,fp,ip,sp,lr}'

Педварительное вскрытие показало что
1. Файл newlib/libc/machine/arm/setjmp.S содержит строку
Код
    /* Save all the callee-preserved registers into the jump buffer.  */
    stmea        a1!, { v1-v7, fp, ip, sp, lr }

Видно, что это не генерируемая, просто набранная "в лоб" срока и от архитектуры эта строка не зависит.
2. DDI0405B_arm_v7m_architecture_app_level_reference_manual.pdf
Цитата
STM{IA|EA}<c><q> <Rn>{!}, <registers>
where:
<c><q> See Standard assembler syntax fields on page A6-7.
<Rn> Specifies the base register. This register is allowed to be the SP.
! Causes the instruction to write a modified value back to <Rn>. If ! is omitted, the instruction
does not change <Rn>.
<registers>
Is a list of one or more registers, separated by commas and surrounded by { and }. It specifies
the set of registers to be stored. The registers are stored with the lowest-numbered register
to the lowest memory address, through to the highest-numbered register to the highest
memory address.
Encoding T2 does not support a list containing only one register. If an STMIA instruction with
just one register <Rt> in the list is assembled to Thumb and encoding T1 is not available, it
is assembled to the equivalent STR<c><q> <Rt>,[<Rn>]{,#-4} instruction.
The SP and PC cannot be in the list.

То биш на cortex-m3 SP не может быть в списке сохраняемых регистров.

Однако этот файл не, а точнее эта команда, записана в чистом виде а не генерируется, или иным способом (не)зависит от конкретной архитектуры.
А должна зависеть, по моему.

Вывод - нужно обращаться за разъяснениями в http://sourceware.org/newlib/

2klen: У Вас действительно это компилится и работает для cortex? Можно подробней про процесс сборки?

Я пробовал на
binutils-2.18
gcc-core-4.3.0
nelib-1.16.0
Все взято с gnu.org и sourceware.org/newlib/
Скрипт и патчи прилагаю.

Сообщение отредактировал amw - May 15 2008, 19:48
Прикрепленные файлы
Прикрепленный файл  tools.zip ( 4.1 килобайт ) Кол-во скачиваний: 36
 


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
klen
сообщение May 16 2008, 04:52
Сообщение #20


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

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



извиняюсь - забыл укаать, ессесено функции лежат в конце файла
newlib/libc/machine/arm/setjmp.S

все компилируется.
тестировалось 2 способами
1. купили мы с другом тамагочи на STM32 - заливали туда - работало вроде.
2. гонял под софт-симулятором-отладчиком на CrossWorks-тоже работало юез подозрений.

я это сделал месяцев 7 назад и всем объявил - ну поробуйте на реальных задачах. Ну с тех пор все мои сборки кортех м3 поддерживают. я думал что вопросов просто нет по этому поводу.

КСТАТЕ, БРАТЬЯ КЛУБНИ!!
ЭТО Я ВАС ДОЛЖЕН СПРАШИВАТЬ -РАБОТАЕТ ТУЛЧЕЙН ИЛИ НЕТ!!
я ж не имею всего железа и все глюки не обнаружу даже тестированием.
я тока на реальных довольно сложных вычислительных задачах проверюю всею инфраструктуру средств разработки (всключая и сам микросхем) толко для LPC2103 LPC2148 Mega48/88/168/323/64/128 Cirrus EP9312. Кстате надеюсь в контексте разговора mips64 в тихую освоить.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 16 2008, 06:03
Сообщение #21


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Огромное всем спасибо, счас буду пробовать, ежели что - не обессудьте, опять приставать буду smile.gif
Железа у меня до фига всякого, правда все для ARM7 и Cortex M3, закончим со сборкой начнем тестить.
О, сразу вопрос - а insight для чего нужно и нужно ли вообще? Если нужно, с какими опциями собирать?
Смотрел,в сборках у уважаемого klen эти библиотеки отсутствуют...

Цитата(amw @ May 15 2008, 23:47) *
Скрипт и патчи прилагаю.

А расшифруйте мне, плиз, значение следующих строк из патча gcc-cortex.diff
-#MULTILIB_OPTIONS += march=armv7
-#MULTILIB_DIRNAMES += thumb2
-#MULTILIB_EXCEPTIONS += march=armv7* marm/*march=armv7*
+MULTILIB_OPTIONS += march=armv7
+MULTILIB_DIRNAMES += thumb2

В принципе строчка с "+" вначале понятна, а что значит -#MULTILIB_OPTIONS += march=armv7?
Удалить строку?
Сорри за чаниковские вопросы, но в Линуксе я пока чайник и есть. Но учусь smile.gif

emdebian я смотрел, но там какой-то совсем уж debian-way способ сборки, по которому, как мне кажется, и проконсультироваться-то будет не у кого. Позже будем разбираться.
Go to the top of the page
 
+Quote Post
Andy Great
сообщение May 16 2008, 07:27
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Цитата(Krom @ May 16 2008, 09:03) *
-#MULTILIB_OPTIONS += march=armv7
-#MULTILIB_DIRNAMES += thumb2
-#MULTILIB_EXCEPTIONS += march=armv7* marm/*march=armv7*
+MULTILIB_OPTIONS += march=armv7
+MULTILIB_DIRNAMES += thumb2

В принципе строчка с "+" вначале понятна, а что значит -#MULTILIB_OPTIONS += march=armv7?
Удалить строку?

Не обращайте внимания - патчи генерятся автоматом, из диффов. Ниже она же добавляется.

ЗЫ: Пардон, не доглядел. Строки так раскомментариваются.
Go to the top of the page
 
+Quote Post
amw
сообщение May 16 2008, 07:53
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Krom @ May 16 2008, 09:03) *
А расшифруйте мне, плиз, значение следующих строк из патча gcc-cortex.diff
-#MULTILIB_OPTIONS += march=armv7
-#MULTILIB_DIRNAMES += thumb2
-#MULTILIB_EXCEPTIONS += march=armv7* marm/*march=armv7*
+MULTILIB_OPTIONS += march=armv7
+MULTILIB_DIRNAMES += thumb2

Патчи генеряться программой diff и накладываются программой patch.
В результате работы diff получаем файл, в котором указано как из старого сделать новое.
Строки помеченные минусом впереди означают что их нужно удалить из старого, а помеченные плюсом - добавить в старое. И после такого удаления и добавления получается новое.
Для изменяемых строк (удаляемых и добавляемых) diff добавляет в начале минус или плюс, для неизменных - пробел.
При накладывании патча программой patch она по неизменяемым строкам и доп инфе начинающейся с @ находит в старом нужное место, те строки, которые помечены минусом удаляет, а те что плюсом - добавляет. И пробелы и минусы и плюсы не вносятся в результирующий файл.

2klen: Ну так вот тестирование и началось smile.gif
Так все таки не ясно как у Вас newlib собралось и действительно ли его сборка поддерживает cortex. Мож тута какя собака порылась smile.gif. У меня в этом setjmp.S тоже ошибка и она естественна, потому как процессор не поддерживает такой операции, а в newlib сие не проверяется. Может патч какой был специфический?


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
klen
сообщение May 16 2008, 09:10
Сообщение #24


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

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



Цитата(amw @ May 16 2008, 11:53) *
Может патч какой был специфический?


да небыло никакого пача.
1. несобрался setjmp.s
2. грусно...
3. смотру код - ага! видно где ошибка.
4. читаю доку на Cortex M3 и вижу что SP нада запихывать иным от armv4
способом
5. правим файл - добавляем "иной способ" - ветка под дефайном __thumb2
5. собираем ... о! собралось!!!
6. компилирием код и шъем - смотрим (у меня ВРОДЕБЫ РАБОТАЛО на STM Primer - рекламный тамагочи от STM c STM32)
7. Дополнительно симулируем код в симуляторе

2amw: ну и как, работает?
Go to the top of the page
 
+Quote Post
Krom
сообщение May 16 2008, 09:51
Сообщение #25


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Итак, промежуточные результаты.
С помощью шаманского бубна, такой-то матери, и, главное, с вашей помощью beer.gif
на текущий момент удалось собрать:
binutils-2.18.1 (2.18.50 не захотели собираться, ну и фиг с ними пока)
gcc-4.3.1
newlib-1.16.0 (только с помощью ручной правки, предложенной klen)

Застопорился на сборке gdb-6.8. Собираю с опциями
--prefix=/usr/local/arm --target=arm-elf --enable-interwork --enable-multlib

при сборке выдает следующую ошибку:
\configure: error: no termcap library found
make[1]: *** [configure-gdb] Ошибка 1
make[1]: Leaving directory `/usr/local/arm/src/build/gdb-6.8'
make: *** [all] Ошибка 2


Чего это он? Попробовал поиском, действительно - нет такой библиотеки, тока win32-termcap.c. Это оно?

Пока попробую собрать 6.7. Попробовал. Результат тот же. Что за termcap такая? Где ее взять? help.gif
Go to the top of the page
 
+Quote Post
Cyber_RAT
сообщение May 16 2008, 10:31
Сообщение #26


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

Группа: Свой
Сообщений: 162
Регистрация: 7-12-07
Из: Могилев
Пользователь №: 33 064



* sys-libs/libtermcap-compat
Homepage: http://www.catb.org/~esr/terminfo/
Description: Compatibility package for old termcap-based programs
может этой библиотечки не хватает?
Go to the top of the page
 
+Quote Post
Krom
сообщение May 16 2008, 11:08
Сообщение #27


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



да библиотека есть, как ее только подсунуть... и куда...
Собираться она не хочет, требует altgcc.
Скачанный бинарный пакет с этой библиотекой тоже не устанавливается из-за зависимостей. Наверное, должен быть другой путь, люди же (/me посматривает в сторону более опытных товарищей smile.gif ) как-то собирают
Go to the top of the page
 
+Quote Post
amw
сообщение May 16 2008, 11:20
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(klen @ May 16 2008, 12:10) *
2amw: ну и как, работает?

Нет. Этого оказалось недостаточно.
Код
arm-elf-gcc -B/home/amw/devel/ARM/arm-elf-cortex/tools/build/newlib/arm-elf/newlib/ -isystem /home/amw/devel/ARM/arm-elf-cortex/tools/build/newlib/arm-elf/newlib/targ-include -isystem /home/amw/devel/ARM/arm-elf-cortex/tools/src/newlib-1.16.0/newlib/libc/include -B/home/amw/devel/ARM/arm-elf-cortex/tools/build/newlib/arm-elf/libgloss/arm -L/home/amw/devel/ARM/arm-elf-cortex/tools/build/newlib/arm-elf/libgloss/libnosys -L/home/amw/devel/ARM/arm-elf-cortex/tools/src/newlib-1.16.0/libgloss/arm -O2 -g -g -O2   -I. -I/home/amw/devel/ARM/arm-elf-cortex/tools/src/newlib-1.16.0/libgloss/arm/.. -O2 -g -g -O2    -mthumb -march=armv7 -c /home/amw/devel/ARM/arm-elf-cortex/tools/src/newlib-1.16.0/libgloss/arm/crt0.S
/home/amw/devel/ARM/arm-elf-cortex/tools/src/newlib-1.16.0/libgloss/arm/crt0.S: Assembler messages:
/home/amw/devel/ARM/arm-elf-cortex/tools/src/newlib-1.16.0/libgloss/arm/crt0.S:85: Error: thumb conditional instrunction not in IT block
/home/amw/devel/ARM/arm-elf-cortex/tools/src/newlib-1.16.0/libgloss/arm/crt0.S:91: Error: selected processor does not support requested special purpose register %x -- `mrs r2,CPSR'
/home/amw/devel/ARM/arm-elf-cortex/tools/src/newlib-1.16.0/libgloss/arm/crt0.S:94: Error: Thumb encoding does not support an immediate here -- `msr CPSR_c,#0xD1'
/home/amw/devel/ARM/arm-elf-cortex/tools/src/newlib-1.16.0/libgloss/arm/crt0.S:99: Error: Thumb encoding does not support an immediate here -- `msr CPSR_c,#0xD7'
/home/amw/devel/ARM/arm-elf-cortex/tools/src/newlib-1.16.0/libgloss/arm/crt0.S:103: Error: Thumb encoding does not support an immediate here -- `msr CPSR_c,#0xDB'
/home/amw/devel/ARM/arm-elf-cortex/tools/src/newlib-1.16.0/libgloss/arm/crt0.S:107: Error: Thumb encoding does not support an immediate here -- `msr CPSR_c,#0xD2'
/home/amw/devel/ARM/arm-elf-cortex/tools/src/newlib-1.16.0/libgloss/arm/crt0.S:111: Error: Thumb encoding does not support an immediate here -- `msr CPSR_c,#0xD3'
/home/amw/devel/ARM/arm-elf-cortex/tools/src/newlib-1.16.0/libgloss/arm/crt0.S:118: Error: Thumb load/store multiple does not support {reglist}^ -- `ldmdb r3,{sp}^'
/home/amw/devel/ARM/arm-elf-cortex/tools/src/newlib-1.16.0/libgloss/arm/crt0.S:121: Error: selected processor does not support requested special purpose register -- `msr CPSR_c,r2'
make[5]: *** [crt0.o] Помилка 1

На счет работает - нескажу, нет кортекса. А вот перекомпилить это могем smile.gif. Правда пока безуспешно.

Цитата(Krom @ May 16 2008, 14:08) *
да библиотека есть, как ее только подсунуть... и куда...
Собираться она не хочет, требует altgcc.
Скачанный бинарный пакет с этой библиотекой тоже не устанавливается из-за зависимостей. Наверное, должен быть другой путь, люди же (/me посматривает в сторону более опытных товарищей smile.gif ) как-то собирают

Это в дебиан?
тогда
apt-get install ncurses


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 16 2008, 11:59
Сообщение #29


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Цитата(amw @ May 16 2008, 15:20) *
тогда
apt-get install ncurses


установка libncurses5-dev помогла.

То есть на текущий момент собрано практически все. Сегодня буду прикручивать к Эклипсу, ну а потом пробовать на железке - у меня STM3210B-EVAL (это в первую очередь пойдет), STR710-EVAL и LPC2468 OEM Boad. Бум тестить smile.gif.

Мануал, как и обещал, за мной. Думаю, лишним на форуме не будет.

Да, еще вопрос. insight - нужны будут при работе в Eclipse-GDB-...?
Если да, то как их собирать?
Go to the top of the page
 
+Quote Post
amw
сообщение May 16 2008, 12:10
Сообщение #30


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Krom @ May 16 2008, 14:59) *
установка libncurses5-dev помогла.

То есть на текущий момент собрано практически все. Сегодня буду прикручивать к Эклипсу, ну а потом пробовать на железке - у меня STM3210B-EVAL (это в первую очередь пойдет), STR710-EVAL и LPC2468 OEM Boad. Бум тестить smile.gif.

Мануал, как и обещал, за мной. Думаю, лишним на форуме не будет.

Да, еще вопрос. insight - нужны будут при работе в Eclipse-GDB-...?
Если да, то как их собирать?

insight это как бы "графический gdb". Для работы с eclipse он не нужен. Для eclipse нужен какраз gdb.
После сборки insight появится его собственный arm-elf-gdb. Хотя по чесному он не его собственный, а пропатченный и включенный в insight "просто" gdb.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 16 2008, 12:34
Сообщение #31


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Цитата(amw @ May 16 2008, 16:10) *
Для работы с eclipse он не нужен. Для eclipse нужен какраз gdb.

Спасибо, понял. Это радует, а то бы еще на них день-два потратить пришлось.
Go to the top of the page
 
+Quote Post
amw
сообщение May 16 2008, 13:12
Сообщение #32


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Нашел вот это
http://www.nabble.com/arm-elf-thumb-2-issu...td16732137.html
Будем проверять.

Это не роверял.
Но взял исходник с CVS. Собралось.
Есть мультилиб на thumb2.
Проверить не могу - нет cortex. Есть инфа, что тут еще не все в порядке.
http://sourceware.org/cgi-bin/cvsweb.cgi/s...0.S?cvsroot=src
Как бы его проверить.
Патчей на этот исходник не накладывал, компилил тем же скриптом, что и приводил выше только без патчей.

Сообщение отредактировал amw - May 16 2008, 13:13


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 16 2008, 13:42
Сообщение #33


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



А примера makefile для STM32 под рукой ни у кого нет случаем? Или простенького тестового примерчика. Железка есть, я бы проверил.
Go to the top of the page
 
+Quote Post
amw
сообщение May 16 2008, 13:53
Сообщение #34


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Krom @ May 16 2008, 16:42) *
А примера makefile для STM32 под рукой ни у кого нет случаем? Или простенького тестового примерчика. Железка есть, я бы проверил.

Примера нет. Но насколько я могу судить нужно указать -mthumb2 -mcpu=cortex-m3.
А собственно пример по идее за Вами smile.gif.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 19 2008, 11:53
Сообщение #35


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Всем привет! Снова вопросы sad.gif
Никак не могу прикрутить к Элипсу Zylin CDT.
На сайте http://www.zylin.com/embeddedcdt.html ссылка в 3м пункте неактивна, если перейти по ней вручную, возвращает на исходную страницу:

Download & installation
1. Install Eclipse 3.3 or newer. We recommend the Eclipse Classic 3.x package
http://www.eclipse.org
2. Eclipse CDT 4.x or newer
http://www.eclipse.org/cdt
3. Install Zylin-embedded CDT using, the update site
http://www.zylin.com/zylincdt

If you are unfamiliar with Eclipse update sites, Subclipse provides helpful instructions. page:
http://subclipse.tigris.org/install.html

Выполняю инструкции по сcылке http://subclipse.tigris.org/install.html - собственно Zylin CDT (или все-таки embedded-cdt?) найти не могу. Я конечно понимаю, что туплю с жуткой силой, но все-таки...
Пните, плиз в нужном направлении, или где чего почитать подскажите...
Go to the top of the page
 
+Quote Post
Leen
сообщение May 19 2008, 12:05
Сообщение #36


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

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



Ну вообще-то subclipse.tigris.org - это плагин subversion, а никак не zylin или embedded cdt:).
Мдя... Короче, они выложили апдейт прямо на указанный адрес...
Его нельзя скачать, а потом тупо распаковать.
Надо делать так: Eclipse->help->Soft updates->find & install.
В появившемся диалоге: установить новые, след: добавляем урл зилина (http://www.zylin.com/zylincdt), если его не было, финиш...
Приплыли, блин: Zylin Embedded CDT (4.2.1) requires feature "org.eclipse.cdt (4.0.1.200709241202)", or later version.... Короче, обновляться, обновляться и еще раз обновляться...
Могу выложить зилин цдт версии zylincdt4.0-20070830 (100 к), правда к нему идет еще и embeddedcdt4.0-20070830 (21 М)....
PS: кстати, давеча обсуждали косяк зилина 4.1.17, так что советую посмотреть на bug fix, если найдете. Меня пока старый устраивает, менять буду все разом smile.gif

Сообщение отредактировал Leen - May 19 2008, 12:14
Go to the top of the page
 
+Quote Post
Krom
сообщение May 19 2008, 12:28
Сообщение #37


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Цитата(Leen @ May 19 2008, 16:05) *
Ну вообще-то subclipse.tigris.org - это плагин subversion, а никак не zylin или embedded cdt:).

Да это-то я понял... Я имел в виду, как после того, как проставили subversion, проставить собсно zylin cdt. Сорри, что сразу вопросы не формулирую точно - пух тополиный полетел, аллергия бьет с жуткой силой, сижу как в тумане sad.gif
И зачем он собственно нужен? Чтоб arm-elf подключить?

Я бы даже еще упростил вопрос: как все-же прикрутить свой тулчейн к эклипсу? Перечитал скудный эклипсовский хэлп по непомню уже какому разу, облазил все менюшки... Linux GCC и хоть ты тресни...
Может, я эклипс не тот проставил? Я сейчас ковыряюсь с Eclipse IDE for C/C++ Developers...
Или ищу не там?
Go to the top of the page
 
+Quote Post
Leen
сообщение May 19 2008, 21:37
Сообщение #38


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

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



Я делал так:
- собрал свой тулчейн (binutils/gcc/gdb для arm-elf), можно не собирать, а взять, благо, уважаемый klen компилит;
- распаковал eclipse с плагинами: embedded cdt, zylin cdt, subclipse; (вроде все) - распаковал в смысле я качал не инсталлеры, а зипы, а потом ручками все копировал. Делов-то вывести линк и привязать к нему хоткей smile.gif.
- запретил родной цдт (он разрешен по дефолту), разрешил эмбеддед, они внешне не различаются ничем, кроме версии; сделать это можно меню help->software update->manage configuration. Открывается окно, в нем перечислено все, что есть из активных (разрешенных) плагинов. Третья слева наверху кнопка - show disabled features. Ну а там, запрещаем один Eclipse C/C++ development tool, разрешаем второй.
- а дальше все решается через настройку проекта.
Должен быть прописан путь до /bin тулчейна;
В проекте на вкладке project properties->c/c++ build->tool settings->settings прописываем gcc assembler arm-elf-as, gcc compiler arm-elf-gcc -mcpu=arm7tdmi (сразу говорим, какое у нас ядро), gcc linker arm-elf-gcc; на вкладке build artifact меняем расширение exe - elf, из binary parsers я оставил только gnu elf parser. Этот пункт неплохо описан в атмеловском мануале, я где-то раньше давал в этой теме ссылку.
После этого простейшая printf("hello") у меня скомпилилась.
Дебаг.
Тут собсно и начинаются отличия родного цдт от эмбедного.
Только вот у мну глюк - не добавляется ни одна отладочная конфигурация, кроме отладки эклипс, но надо-то не оно.... Так что пока помочь не могу. Такое уже было, как-то справился, а как - не запомнил sad.gif. Короче, если вечером глюк уйдет спать - продолжу.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 20 2008, 07:44
Сообщение #39


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Цитата(Leen @ May 20 2008, 01:37) *
- распаковал eclipse с плагинами: embedded cdt, zylin cdt, subclipse; (вроде все) - распаковал в смысле я качал не инсталлеры, а зипы, а потом ручками все копировал. Делов-то вывести линк и привязать к нему хоткей smile.gif.

В этом-то и дело! smile.gif Не могу получить embedded cdt, zylin cdt.
Subclipse проставил по инструкции на www.zylin.com, далее как я понимаю откуда-то (откуда? на zylin.com нифига не нашел, откуда) надо получить перечисленные сабжи через Help->Software Updates->Find and Instal. Но где искать - не могу разобраться sad.gif

Блин, торможу не по детски... Все оказалось настолько просто, что проще некуда sad.gif Мну стыдно sad.gif
Help->Software Updates->Find and Install, выбираем Search for new features for install, жмем кнопку Next,
далее кнопку New Remote Site, в поле Name вводим типа Zylin CDT, в поле URL строку http://www.zylin.com/zylincdt и все.

Тока вот embedded-cdt там нету. Только Zylin Embedded CDT 4.2.1
Go to the top of the page
 
+Quote Post
Krom
сообщение May 20 2008, 10:33
Сообщение #40


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Цитата(Leen @ May 20 2008, 01:37) *
- а дальше все решается через настройку проекта.
Должен быть прописан путь до /bin тулчейна;
В проекте на вкладке project properties->c/c++ build->tool settings->settings прописываем gcc assembler arm-elf-as, gcc compiler arm-elf-gcc -mcpu=arm7tdmi (сразу говорим, какое у нас ядро), gcc linker arm-elf-gcc; на вкладке build artifact меняем расширение exe - elf, из binary parsers я оставил только gnu elf parser. Этот пункт неплохо описан в атмеловском мануале, я где-то раньше давал в этой теме ссылку.
После этого простейшая printf("hello") у меня скомпилилась.

Вот этого никак не могу найти sad.gif. Все описанное выше проделал: тулчейн собран, эклипс установлен, Zylin Embedded CDT 4.2.1 скачан и установлен, Eclipse C/C++ Developvent Tools SDK отключен, дальше - глухо.
1. Устанавливаю перспективу C/C++ (пробовал и Debug - результат тот же)
2. Создаю новый проект (С Project) - в Toolchains только Linux GCC. Не, если убрать галку ... supported on the platform появляются и другие, но Цигвин и МинГВ - не наш случай. Ладно, забиваем на все, выбираем Linux GCC, вводим имя проекта.
3. В следующем окне предлагаются две конфигурации - Debug и Release. Жмем кнопку Advanced и в следующем окне в Properties for Test2 вроде как есть Tool Chain Editor, но по кнопке Select Tools предлагается все что угодно, только не то, что мне надо (Цигвины, МакТулс и прочее), где можно было бы указать путь к моему тулчейну - ни фига не вижу crying.gif
Но в тех же Properties есть пункт Settings, вот там похожие настройки есть. Для GCC C Compiler задаю путь /usr/local/arm/arm-elf/bin/gcc - задается, а вот для линкера и асма не хочет. Оно по умолчанию их будет брать из той же директории, что компилер? И вообще, там ли я копаю?
Все нашел, правда пришлось переставить эклипс и Zylin CDT. Почему первый раз так сглючило так и не понял, но там было подвисание Эклипса при отключении стандартного CDT, возможно в этом все дело.
Go to the top of the page
 
+Quote Post
Leen
сообщение May 20 2008, 11:12
Сообщение #41


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

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



Цитата(Krom @ May 20 2008, 21:33) *
1. Устанавливаю перспективу C/C++ (пробовал и Debug - результат тот же)
Ну дык... Перспективы - это просто сохраненный набор окошек, расположенный удобным для выполнения той или иной задачи. Например, В С/С++ перспективе, окно кода подольше и по центру, в дебаге - поменьше и слева, а в перспективе просмотра SVn его и ваще нет - а нафик оно там?

Цитата
3. В следующем окне предлагаются две конфигурации - Debug и Release. Жмем кнопку Advanced и в следующем окне в Properties for Test2 вроде как есть Tool Chain Editor, но по кнопке Select Tools предлагается все что угодно, только не то, что мне надо (Цигвины, МакТулс и прочее), где можно было бы указать путь к моему тулчейну - ни фига не вижу crying.gif
Странно, у меня есть следующие платформы:
- Solaris GCC;
- MinGW GCC;
- Cygwin (собсна, активен) GCC;
- Linux GCC;
- MacOSX GCC;
Цитата
Но в тех же Properties есть пункт Settings, вот там похожие настройки есть.
Именно там и устанавливаются имена ассемблера, компилера и линкера.
Цитата
Для GCC C Compiler задаю путь /usr/local/arm/arm-elf/bin/gcc - задается, а вот для линкера и асма не хочет. Оно по умолчанию их будет брать из той же директории, что компилер? И вообще, там ли я копаю?
А накой так извращаться??? Путь до исполняемых файлов тулчейна должен быть по определению в системной переменной PATH, иначе имхо будут глюки. Возможно, что эклипс не хочет брать пути - это оно и есть - не нужны они среде. Среда просто вызывает
Код
arm-elf-gcc -c main.c -o main.o
и остальное ее не волнует - о том, где кто лежит, ось должна думать. Вот.
Да, кстати, неверно, наверно, что Вы пытаетесь накормить эклипс файлами из $(prefix)/arm-elf/bin. Путь должен быть до $(prefix)/bin - там лежат arm-elf-as, arm-elf-gcc и тд, т.е. то, что нужно для сборки именно этой цели.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 20 2008, 12:03
Сообщение #42


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Цитата(Leen @ May 20 2008, 15:12) *
о том, где кто лежит, ось должна думать. Вот. ...
Путь до исполняемых файлов тулчейна должен быть по определению в системной переменной PATH

А где эту переменную задавать? Хотя, я уже догадался, где - в параметре Directories.

Цитата(Leen @ May 20 2008, 15:12) *
Да, кстати, неверно, наверно, что Вы пытаетесь накормить эклипс файлами из $(prefix)/arm-elf/bin. Путь должен быть до $(prefix)/bin - там лежат arm-elf-as, arm-elf-gcc и тд, т.е. то, что нужно для сборки именно этой цели.

Зависит от сборки. Я собирал в /usr/local/arm. Я так думаю, это связано и с путями до исполняемых файлов. Но я нашел, как это решать. Там есть параметр Directories, в нем и задается путь к директорию с исполняемыми файлами.

Не, нифига. Лезет гад в /usr/bin/sh
Ладно, сегодня надо убегать, завтра буду дальше копать
Go to the top of the page
 
+Quote Post
Leen
сообщение May 20 2008, 12:09
Сообщение #43


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

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



Цитата(Krom @ May 20 2008, 22:46) *
А где эту переменную задавать?
Ээээ, в линухе - не помню sad.gif А вообще, это - _системная_ переменная. Соответственно, задавать ее надо не в эклипсе. Хотя тоже вариант, наверно...
Цитата
Зависит от сборки. Я собирал в /usr/local/arm.
Не, не зависит... В Вашем случае префикс как раз /usr/local/arm. Зачем создается папка $(prefix)/arm-elf/bin и в нее кладутся исполняемые без так называемого program-prefix (arm-elf- в данном случае) - as, ld, gcc и пр., могут объяснить корифеи, если спросите. Вообще же лучше пользоваться утилами с програм-префиксом, сваленными в одну папку $(prefix)/bin - там могут лежать (и спокойно лежат, не мешая друг другу - у меня и у других) наборы для разных камней. Мой цигвин откомпилен для армов и х86, подумываю присоединить еще и авровый набор. Вдруг понадобится. И все это в /usr/bin. И в виндовом пути до всех компилеров одна строчка - c:\cygwin\bin. А уже в проектах указываю просто gcc или arm-elf-gcc по мере необходимости.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 21 2008, 11:57
Сообщение #44


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



На самом деле все просто: там же, где определяются GCC и прочее, есть пунктик Enviroment, вот там создаем новую переменную PATH и прописываем все нужные пути.
Счас вот собрал OpenOCD, как разберусь, напишу кратенькие мануальчеги по результатам.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 26 2008, 11:07
Сообщение #45


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



C тулчейном и средой в принципе разобрался. Застрял на примере.
При сборке выдает следующее:
Invoking: GCC C Linker
arm-elf-gcc -o"cortex-m3-test.elf" ./cortexm3_macro.o ./main.o ./stm32f10x_flash.o ./stm32f10x_gpio.o ./stm32f10x_it.o ./stm32f10x_lib.o ./stm32f10x_nvic.o ./stm32f10x_rcc.o
/usr/local/arm/lib/gcc/arm-elf/4.3.1/../../../../arm-elf/bin/ld: ERROR: ./cortexm3_macro.o uses hardware FP, whereas cortex-m3-test.elf uses software FP
/usr/local/arm/lib/gcc/arm-elf/4.3.1/../../../../arm-elf/bin/ld: failed to merge target specific data of file ./cortexm3_macro.o
/usr/local/arm/lib/gcc/arm-elf/4.3.1/../../../../arm-elf/bin/ld: ./main.o(main): warning: interworking not enabled.
first occurrence: /usr/local/arm/lib/gcc/arm-elf/4.3.1/../../../../arm-elf/lib/crt0.o: arm call to thumb
collect2: ld returned 1 exit status
make: *** [cortex-m3-test.elf] Ошибка 1


В асм-файле cortexm3_macro.s имеем следующую строку:
.cpu cortex-m3
.fpu softvfp
.syntax unified
.thumb


Чего там писать-то, чтоб не ругалось? Перерыл весь инет, перебробовал кучу вариантов, не могу ладу дать sad.gif. Если закоментарить эту строчку, то результат тот же sad.gif
Go to the top of the page
 
+Quote Post
Andy Great
сообщение May 26 2008, 13:26
Сообщение #46


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Код
.fpu softfpa
Может так?
Go to the top of the page
 
+Quote Post
Krom
сообщение May 26 2008, 13:30
Сообщение #47


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

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Цитата(Andy Great @ May 26 2008, 17:26) *
Код
.fpu softfpa
Может так?

Спасибо, именно так. А что в .gdbinit должно быть для Кортекса?
Go to the top of the page
 
+Quote Post
COMA
сообщение Oct 22 2008, 07:07
Сообщение #48


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Добрый день,

никто не пробовал собирать GNU toolchains для ARM под cygwin?
Go to the top of the page
 
+Quote Post
klen
сообщение Oct 23 2008, 17:57
Сообщение #49


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

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



Цитата(COMA @ Oct 22 2008, 11:07) *
Добрый день,

никто не пробовал собирать GNU toolchains для ARM под cygwin?


пробывал - собирается, тока мне не понравилось
Go to the top of the page
 
+Quote Post
COMA
сообщение Oct 24 2008, 03:59
Сообщение #50


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Можно поподробнее? Почему не понравилось?

Просто стоит задача собрать toolchains для работы с ecos, а ecos требуется cygwin.

P.S. Попробовал собрать , на GCC выскакивает ошибка:

Цитата
checking for correct version of gmp.h... yes
checking for correct version of mpfr.h... no
configure: error: Building GCC requires GMP 4.1+ and MPFR 2.3.0+.
Try the --with-gmp and/or --with-mpfr options to specify their locations.
Copies of these libraries' source code can be found at their respective
hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/.
See also http://gcc.gnu.org/install/prerequisites.html for additional info.
If you obtained GMP and/or MPFR from a vendor distribution package, make
sure that you have installed both the libraries and the header files.
They may be located in separate packages.


Получается GCC требует GMP и MPFR ?
Go to the top of the page
 
+Quote Post
klen
сообщение Nov 17 2008, 19:08
Сообщение #51


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

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



Цитата(COMA @ Oct 24 2008, 06:59) *
Можно поподробнее? Почему не понравилось?

Просто стоит задача собрать toolchains для работы с ecos, а ecos требуется cygwin.

P.S. Попробовал собрать , на GCC выскакивает ошибка:
Получается GCC требует GMP и MPFR ?



я здесь уже говорил.. непонравилось потому что пути в отладке сохраняются в формате цугвина, и это исключает использование некотрых IDE.

GCC требует библиотек GMP и MPFR, они легко собираются тем чем Вы пытиаетесь собрать GCC
Go to the top of the page
 
+Quote Post
COMA
сообщение Nov 18 2008, 05:00
Сообщение #52


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Спасибо за ответ.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 12:01
Рейтинг@Mail.ru


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