Отговори на тема  [ 8 мнения ] 
FPU в STM32F4 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 11:32 am
Мнения: 7878
Местоположение: София
Мнение FPU в STM32F4
Дали поддръжката на FPU-то от GCC е автоматична, в момента, в който декларирам нещо като float? С други думи, ако напиша някъде
Код:
float a, b, c;
c=a*b;

ще бъде ли свършено от FPU-то или трябва нещо допълнително да му се бае?


Вто Мар 05, 2019 10:49 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4671
Мнение Re: FPU в STM32F4
не съм много запознат с ST, но по принцип "баенето" е в старт-ъпа на процесора и съответно дефиниране на Foat ABI & Float Type .... -mfloat-abi=softfp -mfpu=vfp

_________________
main[-1u]={1};


Вто Мар 05, 2019 11:53 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 8:22 am
Мнения: 15501
Местоположение: София
Мнение Re: FPU в STM32F4
Реконструктор написа:
Дали поддръжката на FPU-то от GCC е автоматична, в момента, в който декларирам нещо като float? С други думи, ако напиша някъде
Код:
float a, b, c;
c=a*b;

ще бъде ли свършено от FPU-то или трябва нещо допълнително да му се бае?


Де да беше толкова просто. Много зависи от средата / компилатора и ОС-а (ако има такъв).

На компилатора трябва изрично да му кажеш с ключове, че искаш да ползваш FPU инструкции. При мен примерно (GCC) е нещо от сорта:

-mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant

Ако имаш прекомпилиран код/библиотеки, то те трябва също да са прекомпилирани за FPU подръжка.

Това е лесното.

Сложното е, че в кода трябва да се съобразяваш с FPU-то. Например при прекъсвания/таск суитч трябва да му пазиш контекста. Ако имаш ОС, той би трябвало от някъде да може да се включва на такъв режим.

И да имаш предвид, че на С трябва изрично да му указваш константите като float. Например "3.14f". Пропуснеш ли "f", ще ти я шибне double и пак няма да ползва FPU-то за аритметика.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Мар 05, 2019 12:49 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: FPU в STM32F4
Опциите на GCC общо взето указват какви инструкции *може* да се ползват и евентуално abi-то за допълнителни типове и начина на подаването им като параметри.
GCC обаче не се занимава с математиките на ниско ниво. Това е работа на стандартните библиотеки (ако не са забранени през опциите). Има различни версии на стандартните библиотеки, обикновено се ползва newlib, но и той също има версии и настройки. Така че какво точно ще ти се сервира зависи от това как е сглобен конкретния тулчейн.
Сега не знам дали си ги пооправили, но АРМ нямат никакъв съпорт и старите версии на newlib и изобщо GCC бяха на плачевно ниво. За разлика от MIPS например. Аз затова съм си изключил стандартните библиотеки тотално и не ги следя.
Във всеки случай най-чисто е просто да провериш какво ти генерира като код ;-)


Вто Мар 05, 2019 1:38 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: FPU в STM32F4
Леко около темата - виж Atollic TrueStudio - безплатен е и откъм настройки на проект, опции и т.н. е лесен за ползване.


Вто Мар 05, 2019 2:55 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 11:32 am
Мнения: 7878
Местоположение: София
Мнение Re: FPU в STM32F4
Цецо написа:
Реконструктор написа:
Дали поддръжката на FPU-то от GCC е автоматична, в момента, в който декларирам нещо като float? С други думи, ако напиша някъде
Код:
float a, b, c;
c=a*b;

ще бъде ли свършено от FPU-то или трябва нещо допълнително да му се бае?


Де да беше толкова просто. Много зависи от средата / компилатора и ОС-а (ако има такъв).

На компилатора трябва изрично да му кажеш с ключове, че искаш да ползваш FPU инструкции. При мен примерно (GCC) е нещо от сорта:

-mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant

Ако имаш прекомпилиран код/библиотеки, то те трябва също да са прекомпилирани за FPU подръжка.

Това е лесното.

Сложното е, че в кода трябва да се съобразяваш с FPU-то. Например при прекъсвания/таск суитч трябва да му пазиш контекста. Ако имаш ОС, той би трябвало от някъде да може да се включва на такъв режим.

И да имаш предвид, че на С трябва изрично да му указваш константите като float. Например "3.14f". Пропуснеш ли "f", ще ти я шибне double и пак няма да ползва FPU-то за аритметика.


Тоест, искаш да кажеш, че е реализирано като x86/x87, копроцесора си е съвсем отделно нещо със собствени инструкции и ако ти трябва да сметнеш нещо, му предаваш флоу-а и контрола и после той като свърши се връща в изходната точка?


Вто Мар 05, 2019 3:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 8:22 am
Мнения: 15501
Местоположение: София
Мнение Re: FPU в STM32F4
Нямам идея, в ония време пари за 387/487 нямах :).

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Мар 05, 2019 4:09 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Фев 13, 2013 2:35 pm
Мнения: 1748
Мнение Re: FPU в STM32F4
Цецо написа:
Нямам идея, в ония време пари за 387/487 нямах :).

487 беше вграден в 486ДХ


Вто Мар 05, 2019 10:59 pm
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 8 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни