Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

FPU в STM32F4
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=16388
Страница 1 от 1

Автор:  Реконструктор [ Вто Мар 05, 2019 10:49 am ]
Заглавие:  FPU в STM32F4

Дали поддръжката на FPU-то от GCC е автоматична, в момента, в който декларирам нещо като float? С други думи, ако напиша някъде
Код:
float a, b, c;
c=a*b;

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

Автор:  TheWizard [ Вто Мар 05, 2019 11:53 am ]
Заглавие:  Re: FPU в STM32F4

не съм много запознат с ST, но по принцип "баенето" е в старт-ъпа на процесора и съответно дефиниране на Foat ABI & Float Type .... -mfloat-abi=softfp -mfpu=vfp

Автор:  Цецо [ Вто Мар 05, 2019 12:49 pm ]
Заглавие:  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-то за аритметика.

Автор:  miro_atc [ Вто Мар 05, 2019 1:38 pm ]
Заглавие:  Re: FPU в STM32F4

Опциите на GCC общо взето указват какви инструкции *може* да се ползват и евентуално abi-то за допълнителни типове и начина на подаването им като параметри.
GCC обаче не се занимава с математиките на ниско ниво. Това е работа на стандартните библиотеки (ако не са забранени през опциите). Има различни версии на стандартните библиотеки, обикновено се ползва newlib, но и той също има версии и настройки. Така че какво точно ще ти се сервира зависи от това как е сглобен конкретния тулчейн.
Сега не знам дали си ги пооправили, но АРМ нямат никакъв съпорт и старите версии на newlib и изобщо GCC бяха на плачевно ниво. За разлика от MIPS например. Аз затова съм си изключил стандартните библиотеки тотално и не ги следя.
Във всеки случай най-чисто е просто да провериш какво ти генерира като код ;-)

Автор:  gicho [ Вто Мар 05, 2019 2:55 pm ]
Заглавие:  Re: FPU в STM32F4

Леко около темата - виж Atollic TrueStudio - безплатен е и откъм настройки на проект, опции и т.н. е лесен за ползване.

Автор:  Реконструктор [ Вто Мар 05, 2019 3:57 pm ]
Заглавие:  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 4:09 pm ]
Заглавие:  Re: FPU в STM32F4

Нямам идея, в ония време пари за 387/487 нямах :).

Автор:  bobihot [ Вто Мар 05, 2019 10:59 pm ]
Заглавие:  Re: FPU в STM32F4

Цецо написа:
Нямам идея, в ония време пари за 387/487 нямах :).

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

Страница 1 от 1 Часовете са според зоната UTC + 1 час [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/