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

 
 
 
Reply to this topicStart new topic
> Сборка тулчейна для vfpv2
Grizzzly
сообщение Jun 21 2017, 14:51
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Собираю тулчейн на 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).

В чем может быть проблема?
Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 21 2017, 14:57
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



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

Зачем? Готовых нет разве?
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Jun 21 2017, 15:51
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Цитата(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, всё собралось. Видимо, какой-то баг был.
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Jun 21 2017, 17:42
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



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

Код
../../../../../../../src/newlib-2.1.0/newlib/libc/syscalls/syslseek.c:11:1: sorry, unimplemented: Thumb-1 hard-float VFP ABI
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Jun 21 2017, 19:26
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Перешел с 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.
Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 22 2017, 10:12
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



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

А вот это не оно?
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Jun 22 2017, 10:47
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Цитата(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.
Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 22 2017, 11:09
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(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.
Вроде бы они публикуют свои рецепты сборки. Можно их попробовать. А потом подкрутить в нужную сторону.
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Jun 22 2017, 18:29
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Цитата(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
Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 22 2017, 18:41
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



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

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

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

 


RSS Текстовая версия Сейчас: 16th April 2024 - 16:50
Рейтинг@Mail.ru


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