Перейти к содержанию

    

Сборка тулчейна для vfpv2

Собираю тулчейн на Calculate Linux для ARMv5, смотрю различные примеры. За основу взял скрипт отсюда: https://github.com/istarc/stm32/blob/master...lchain/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).

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Собираю тулчейн на Calculate Linux для ARMv5

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Зачем? Готовых нет разве?

Для big-endian и hard float нет :(

 

В

/gcc-5.1.0/gcc/config/arm/arm-fpus.def

не нашел vfpv2, есть только vfp, vfpv3 и другие...

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Перешел с 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
А вот это не оно?

 

armeb-none-eabi

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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.

Вроде бы они публикуют свои рецепты сборки. Можно их попробовать. А потом подкрутить в нужную сторону.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Занятно. Причём имеется 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. Только сейчас прочитал любопытную новость, появившуюся днем: https://www.opennet.ru/opennews/art.shtml?num=46745

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Вообще занятное дело - само собрать тулчейн. Даже понравилось. На работе проект исторически идет в big endian, поэтому приходится собирать самому.

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

Но если вариантов нет - тогда да.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация