Grizzly 0 21 июня, 2017 Опубликовано 21 июня, 2017 · Жалоба Собираю тулчейн на 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 1 21 июня, 2017 Опубликовано 21 июня, 2017 · Жалоба Собираю тулчейн на Calculate Linux для ARMv5 Зачем? Готовых нет разве? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 21 июня, 2017 Опубликовано 21 июня, 2017 · Жалоба Зачем? Готовых нет разве? Для big-endian и hard float нет :( В /gcc-5.1.0/gcc/config/arm/arm-fpus.def не нашел vfpv2, есть только vfp, vfpv3 и другие... Скачал исходники от gcc 7.1.0, всё собралось. Видимо, какой-то баг был. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 21 июня, 2017 Опубликовано 21 июня, 2017 · Жалоба А сейчас ошибки при сборке newlib: ../../../../../../../src/newlib-2.1.0/newlib/libc/syscalls/syslseek.c:11:1: sorry, unimplemented: Thumb-1 hard-float VFP ABI Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 21 июня, 2017 Опубликовано 21 июня, 2017 · Жалоба Перешел с 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 1 22 июня, 2017 Опубликовано 22 июня, 2017 · Жалоба Для big-endian и hard float нет :( А вот это не оно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 22 июня, 2017 Опубликовано 22 июня, 2017 · Жалоба А вот это не оно? armeb-none-eabi Toolchains for big-endian, soft-float, 32-bit ARMv7 (and earlier) for bare-metal systems Виноват, не сказал сразу, что нужен bare-metal. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 22 июня, 2017 Опубликовано 22 июня, 2017 · Жалоба 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. Вроде бы они публикуют свои рецепты сборки. Можно их попробовать. А потом подкрутить в нужную сторону. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 22 июня, 2017 Опубликовано 22 июня, 2017 · Жалоба Занятно. Причём имеется 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 1 22 июня, 2017 Опубликовано 22 июня, 2017 · Жалоба Вообще занятное дело - само собрать тулчейн. Даже понравилось. На работе проект исторически идет в big endian, поэтому приходится собирать самому. Хорошо, что интересно. Но на launchpad релизы проходят некое тестирование, как они утверждают. Плюс народ сообщает о багах, они фиксятся и т.д. А если самому собирать - с этим как-то сложнее. Но если вариантов нет - тогда да. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться