Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ GNU/OpenSource средства разработки _ Сборка тулчейна для vfpv2

Автор: Grizzzly Jun 21 2017, 14:51

Собираю тулчейн на Calculate Linux для ARMv5, смотрю различные примеры. За основу взял скрипт отсюда: http://electronix.ru/redirect.php?https://github.com/istarc/stm32/blob/master/build-ARM-toolchain/build.sh. Делаю всё по одной команде. Системный компилятор GCC Gentoo 5.4.0-r3 p1.3, pie-0.6.5. Собрал Binutils версии 2.28, а вот bootstrap не собирается из-за ошибки

Код
Unknown fpu used in --with-fpu=vfpv2


Собираю с ключами:
Код
$PREFIX/src/$GCC/configure --target=$TARGET --prefix=$PREFIX --with-arch=armv5te --with-float=hard --with-fpu=vfpv2 --with-mode=arm --with-endian=big --enable-interwork --enable-multilib --with-system-zlib --with-newlib --without-headers --disable-shared --disable-nls --with-gnu-as --with-gnu-ld --enable-languages="c"

Для другой архитектуры, скажем,
Код
--with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16
собирается без проблем (исходники gcc 5.1.0).

В чем может быть проблема?

Автор: scifi Jun 21 2017, 14:57

Цитата(Grizzzly @ Jun 21 2017, 17:51) *
Собираю тулчейн на Calculate Linux для ARMv5

Зачем? Готовых нет разве?

Автор: Grizzzly Jun 21 2017, 15:51

Цитата(scifi @ Jun 21 2017, 17:57) *
Зачем? Готовых нет разве?

Для big-endian и hard float нет sad.gif

В
Код
/gcc-5.1.0/gcc/config/arm/arm-fpus.def
не нашел vfpv2, есть только vfp, vfpv3 и другие...

Скачал исходники от gcc 7.1.0, всё собралось. Видимо, какой-то баг был.

Автор: Grizzzly Jun 21 2017, 17:42

А сейчас ошибки при сборке newlib:

Код
../../../../../../../src/newlib-2.1.0/newlib/libc/syscalls/syslseek.c:11:1: sorry, unimplemented: Thumb-1 hard-float VFP ABI

Автор: Grizzzly Jun 21 2017, 19:26

Перешел с hard на softfp, заменил режим arm на thumb, продвинулся чуть дальше при компиляции newlib, но пока все равно ошибки:


Код
/arm/src/newlib-2.5.0/newlib/libm/machine/arm/ef_sqrt.c: In function '__ieee754_sqrtf':
/arm/src/newlib-2.5.0/newlib/libm/machine/arm/ef_sqrt.c:38:2: error: impossible constraint in 'asm'
  asm ("vsqrt.f32 %0, %1" : "=&w" (result) : "w" (x));
  ^~~
make[9]: *** [Makefile:304: lib_a-ef_sqrt.o] Ошибка 1


UPD.: Уже ночью собрал тулчейн с помощью crosstool-ng 1.2.3 для hard float. Использовал библиотеку newlib-nano. Максимальная версия компилятора 6.3.0 в этой версии. В нем тоже отсутствует vfpv2. Создал баг-репорт на трекере GCC.

Автор: scifi Jun 22 2017, 10:12

Цитата(Grizzzly @ Jun 21 2017, 18:51) *
Для big-endian и hard float нет sad.gif

А вот http://electronix.ru/redirect.php?https://releases.linaro.org/components/toolchain/binaries/7.1-2017.05/armeb-eabi/ не оно?

Автор: Grizzzly Jun 22 2017, 10:47

Цитата(scifi @ Jun 22 2017, 13:12) *
А вот http://electronix.ru/redirect.php?https://releases.linaro.org/components/toolchain/binaries/7.1-2017.05/armeb-eabi/ не оно?


armeb-none-eabi

Toolchains for big-endian, soft-float, 32-bit ARMv7 (and earlier) for bare-metal systems

Виноват, не сказал сразу, что нужен bare-metal.

Автор: scifi Jun 22 2017, 11:09

Цитата(Grizzzly @ Jun 22 2017, 13:47) *
Toolchains for big-endian, soft-float, 32-bit ARMv7 (and earlier) for bare-metal systems

Занятно. Причём имеется Toolchains for big-endian, hard-float, 32-bit ARMv7 (and earlier) for GNU/Linux systems.
Вроде бы они публикуют свои рецепты сборки. Можно их попробовать. А потом подкрутить в нужную сторону.

Автор: Grizzzly Jun 22 2017, 18:29

Цитата(scifi @ Jun 22 2017, 14:09) *
Занятно. Причём имеется Toolchains for big-endian, hard-float, 32-bit ARMv7 (and earlier) for GNU/Linux systems.
Вроде бы они публикуют свои рецепты сборки. Можно их попробовать. А потом подкрутить в нужную сторону.

Меня пока устроил вариант сборки crosstool-ng. Наверное, потом посмотрю на конфиги Linaro и тулчейна GNU ARM Toolchain с Launchpad. У последних как раз hard float, но для little endian.
Вообще занятное дело - само собрать тулчейн. Даже понравилось. На работе проект исторически идет в big endian, поэтому приходится собирать самому.

P.S. С матчами Кубка Конфедереаций закрутился, не отписался днем. На баг-трекере GCC мне ответили про FPU:
Цитата
In that version of gcc it's just "vfp" (we never supported the vfp1).

GCC 8 will recognize vfp2 as an alias (of vfp), but the fpu naming options are
changing much more radically there, so most times you won't need to specify an
FPU at all if you give the target CPU.


Так что у них последнее время (как изменили подход к нумерации версий) как-то всё хаотично развивается.

P.P.S. Только сейчас прочитал любопытную новость, появившуюся днем: http://electronix.ru/redirect.php?https://www.opennet.ru/opennews/art.shtml?num=46745

Автор: scifi Jun 22 2017, 18:41

Цитата(Grizzzly @ Jun 22 2017, 21:29) *
Вообще занятное дело - само собрать тулчейн. Даже понравилось. На работе проект исторически идет в big endian, поэтому приходится собирать самому.

Хорошо, что интересно. Но на launchpad релизы проходят некое тестирование, как они утверждают. Плюс народ сообщает о багах, они фиксятся и т.д. А если самому собирать - с этим как-то сложнее.
Но если вариантов нет - тогда да.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)