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

 
 
> Сборка 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
 
Start new topic
Ответов
Krom
сообщение May 15 2008, 15:12
Сообщение #2


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

Группа: Свой
Сообщений: 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, 19:47
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 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
Сообщение #4


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

Группа: Свой
Сообщений: 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   Сборка GNU toolchains, может кто подсказать?   May 13 2008, 09:05
- - Andy Great   Дык Вы загляньте в Makefile после ./configure. Там...   May 13 2008, 09:13
- - amw   Цитата(Krom @ May 13 2008, 12:05) Озадачи...   May 13 2008, 09:18
|- - Krom   Цитата(amw @ May 13 2008, 13:18) Вот тут ...   May 13 2008, 09:50
|- - amw   Цитата(Krom @ May 13 2008, 12:50) Спасибо...   May 13 2008, 10:00
- - Krom   Ok. Буду дальше разбираться. А какие проблемы в gc...   May 13 2008, 10:10
|- - amw   Цитата(Krom @ May 13 2008, 13:10) Ok. Буд...   May 13 2008, 10:21
- - Krom   Судя по тому, что поддержка ARMv7 появилась только...   May 14 2008, 06:03
- - Andy Great   Возьмите CodeSourcery уже скомпилированный.   May 14 2008, 06:38
- - Krom   Такие вот дела: binutils, gcc и newlib в принципе ...   May 14 2008, 14:00
|- - amw   Цитата(Krom @ May 14 2008, 17:00) Если же...   May 15 2008, 07:30
|- - Krom   Цитата(amw @ May 15 2008, 11:30) А newlib...   May 15 2008, 12:34
|- - klen   Цитата(Krom @ May 15 2008, 16:34) По идее...   May 15 2008, 14:47
- - zltigo   Цитата(Krom @ May 13 2008, 11:05) Озадачи...   May 14 2008, 14:23
- - Andy Great   klen делает дистрибутивы, так что, похоже, дружит.   May 15 2008, 08:39
|- - amw   Цитата(Krom @ May 15 2008, 18:12) Все исх...   May 15 2008, 18:29
- - klen   Все прально не собираецца! не должен нада под...   May 15 2008, 19:28
- - Krom   Огромное всем спасибо, счас буду пробовать, ежели ...   May 16 2008, 06:03
|- - Andy Great   Цитата(Krom @ May 16 2008, 09:03) -#MULTI...   May 16 2008, 07:27
|- - amw   Цитата(Krom @ May 16 2008, 09:03) А расши...   May 16 2008, 07:53
|- - klen   Цитата(amw @ May 16 2008, 11:53) Может па...   May 16 2008, 09:10
|- - amw   Цитата(klen @ May 16 2008, 12:10) 2amw: ...   May 16 2008, 11:20
|- - Krom   Цитата(amw @ May 16 2008, 15:20) тогда ap...   May 16 2008, 11:59
|- - amw   Цитата(Krom @ May 16 2008, 14:59) установ...   May 16 2008, 12:10
|- - Krom   Цитата(amw @ May 16 2008, 16:10) Для рабо...   May 16 2008, 12:34
- - Krom   Итак, промежуточные результаты. С помощью шаманско...   May 16 2008, 09:51
- - Cyber_RAT   * sys-libs/libtermcap-compat Homepage: ...   May 16 2008, 10:31
- - Krom   да библиотека есть, как ее только подсунуть... и к...   May 16 2008, 11:08
- - amw   Нашел вот это http://www.nabble.com/arm-elf-thumb-...   May 16 2008, 13:12
- - Krom   А примера makefile для STM32 под рукой ни у кого н...   May 16 2008, 13:42
|- - amw   Цитата(Krom @ May 16 2008, 16:42) А приме...   May 16 2008, 13:53
- - Krom   Всем привет! Снова вопросы Никак не могу прик...   May 19 2008, 11:53
- - Leen   Ну вообще-то subclipse.tigris.org - это плагин sub...   May 19 2008, 12:05
|- - Krom   Цитата(Leen @ May 19 2008, 16:05) Ну вооб...   May 19 2008, 12:28
- - Leen   Я делал так: - собрал свой тулчейн (binutils/gcc/g...   May 19 2008, 21:37
|- - Krom   Цитата(Leen @ May 20 2008, 01:37) - распа...   May 20 2008, 07:44
|- - Krom   Цитата(Leen @ May 20 2008, 01:37) - а дал...   May 20 2008, 10:33
|- - Leen   Цитата(Krom @ May 20 2008, 21:33) 1. Уста...   May 20 2008, 11:12
|- - Krom   Цитата(Leen @ May 20 2008, 15:12) о том, ...   May 20 2008, 12:03
|- - Leen   Цитата(Krom @ May 20 2008, 22:46) А где э...   May 20 2008, 12:09
- - Krom   На самом деле все просто: там же, где определяются...   May 21 2008, 11:57
- - Krom   C тулчейном и средой в принципе разобрался. Застря...   May 26 2008, 11:07
- - Andy Great   Код.fpu softfpa Может так?   May 26 2008, 13:26
|- - Krom   Цитата(Andy Great @ May 26 2008, 17:26) К...   May 26 2008, 13:30
- - COMA   Добрый день, никто не пробовал собирать GNU tool...   Oct 22 2008, 07:07
|- - klen   Цитата(COMA @ Oct 22 2008, 11:07) Добрый ...   Oct 23 2008, 17:57
- - COMA   Можно поподробнее? Почему не понравилось? Просто ...   Oct 24 2008, 03:59
|- - klen   Цитата(COMA @ Oct 24 2008, 06:59) Можно п...   Nov 17 2008, 19:08
- - COMA   Спасибо за ответ.   Nov 18 2008, 05:00


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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 10:33
Рейтинг@Mail.ru


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