Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сборка тулчейна для vfpv2
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Grizzzly
Собираю тулчейн на 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).

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

Зачем? Готовых нет разве?
Grizzzly
Цитата(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
А сейчас ошибки при сборке newlib:

Код
../../../../../../../src/newlib-2.1.0/newlib/libc/syscalls/syslseek.c:11:1: sorry, unimplemented: Thumb-1 hard-float VFP ABI
Grizzzly
Перешел с 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
Цитата(Grizzzly @ Jun 21 2017, 18:51) *
Для big-endian и hard float нет sad.gif

А вот это не оно?
Grizzzly
Цитата(scifi @ Jun 22 2017, 13:12) *
А вот это не оно?


armeb-none-eabi

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

Виноват, не сказал сразу, что нужен bare-metal.
scifi
Цитата(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
Цитата(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. Только сейчас прочитал любопытную новость, появившуюся днем: https://www.opennet.ru/opennews/art.shtml?num=46745
scifi
Цитата(Grizzzly @ Jun 22 2017, 21:29) *
Вообще занятное дело - само собрать тулчейн. Даже понравилось. На работе проект исторически идет в big endian, поэтому приходится собирать самому.

Хорошо, что интересно. Но на launchpad релизы проходят некое тестирование, как они утверждают. Плюс народ сообщает о багах, они фиксятся и т.д. А если самому собирать - с этим как-то сложнее.
Но если вариантов нет - тогда да.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.