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

 
 
> GCC ARM - не имплементируются функции SIN, COS, arm-none-eabi
__inline__
сообщение Oct 1 2017, 07:34
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Здравствуйте.

Скачал и поставил, затем ребутнул (для переменных окружения) GCC-тулчейн: gcc-arm-none-eabi-6-2017-q2-update-win32.exe

Затем написал программу тект ниже:

Код
#include <math.h>

float a=1.2F;
float b=3.21F;
float c=0.0F;

void main(void)
{
c=sin(a+b);
b=cos(a+c);
}


Построил бинарник и все необходимые файлы командами:
Код
arm-none-eabi-gcc -std=c99 -march=armv7-a -mfloat-abi=hard -mfpu=vfpv4 -c fpu.c -o fpu.elf -lm
arm-none-eabi-objdump -D fpu.elf > fpu.asm
arm-none-eabi-objcopy -O binary fpu.elf fpu.bin


При просмотре листинга видно, что функции sin( ) и cos( ) НЕ ИМПЛЕМЕНТИРОВАЛИСЬ, вместо них стоит переход:
Код
18:    e3403000     movt    r3, #0
  1c:    edd37a00     vldr    s15, [r3]
  20:    ee777a27     vadd.f32    s15, s14, s15
  24:    eef70ae7     vcvt.f64.f32    d16, s15
  28:    eeb00b60     vmov.f64    d0, d16
  2c:    ebfffffe     bl    0 <sin> ----------------------------- !!! нет вызова
  30:    eef00b40     vmov.f64    d16, d0
  34:    eef77be0     vcvt.f32.f64    s15, d16
  38:    e3003000     movw    r3, #0
  3c:    e3403000     movt    r3, #0
  40:    edc37a00     vstr    s15, [r3]
  44:    e3003000     movw    r3, #0
  48:    e3403000     movt    r3, #0
  4c:    ed937a00     vldr    s14, [r3]
  50:    e3003000     movw    r3, #0
  54:    e3403000     movt    r3, #0
  58:    edd37a00     vldr    s15, [r3]
  5c:    ee777a27     vadd.f32    s15, s14, s15
  60:    eef70ae7     vcvt.f64.f32    d16, s15
  64:    eeb00b60     vmov.f64    d0, d16
  68:    ebfffffe     bl    0 <cos> ----------------------------- !!! нет вызова


Других тулчейнов нет, пробовал soft-fpu, ничего не меняется, функции из math.h не имплементируются вообще!

Залез в папки тулчейна, так там libm.a несколько штук:

...\GCCARM\arm-none-eabi\lib\libm.a
...\GCCARM\arm-none-eabi\lib\thumb\libm.a
...\GCCARM\arm-none-eabi\lib\thumb\v7-ar\libm.a
...\GCCARM\arm-none-eabi\lib\thumb\v7-ar\fpv3\hard\libm.a
...\GCCARM\arm-none-eabi\lib\hard\libm.a

У меня нет слов, одни эмоции (касаемо GCC тулчейна)!

Помогите плиз, нужен хардварный синус/косинус для ядра Cortex-A7, VFPv4 или NEON - для floating point, как решить проблему?
Go to the top of the page
 
+Quote Post
8 страниц V  < 1 2 3 4 > »   
Start new topic
Ответов (15 - 29)
__inline__
сообщение Oct 1 2017, 09:49
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



скачал gcc-linaro-6.3.1-2017.05-i686_arm-eabi.tar.xz - в бинарниках эльфы, а не эхе.
Нету там под маздай ничего....
Go to the top of the page
 
+Quote Post
scifi
сообщение Oct 1 2017, 09:52
Сообщение #17


Гуру
******

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



Цитата(__inline__ @ Oct 1 2017, 12:49) *
скачал gcc-linaro-6.3.1-2017.05-i686_arm-eabi.tar.xz - в бинарниках эльфы, а не эхе.
Нету там под маздай ничего....

А если вот это:
gcc-linaro-6.3.1-2017.05-i686-mingw32_arm-eabi.tar.xz
Ну блин, нельзя же так cranky.gif
Go to the top of the page
 
+Quote Post
__inline__
сообщение Oct 1 2017, 09:59
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Цитата(scifi @ Oct 1 2017, 09:49) *
Короче, сделайте свой синус, кто же мешает? Подсунуть свою функцию вместо библиотечной - дело нехитрое, ЕМНИП.

Я с вами согласен, но ломается сам кайф от использования ЯВУ. И GCC тут - явный чемпион (по обломам).

И программа с 0x8000 пошла, а не с 0. И куча лажи прошилось:
init, exit, register_fini, __do_global_dtors_aux,.......... - и куча всего ненужного! А хотелось только sin/cos из libm.a !!!
GCC поддерживает вырезание ненужного кода/данных?


Цитата(scifi @ Oct 1 2017, 09:52) *
А если вот это:
gcc-linaro-6.3.1-2017.05-i686-mingw32_arm-eabi.tar.xz
Ну блин, нельзя же так cranky.gif

Я это понял как компилятор для сборки ARM- и MINGW- приложений... Под Линуксом... Качаю сейчас его, посмотрим.

Это я тупой или линуксоиды слишком умные? Почему когда соприкасаешься с GCC, то он кроме негативных реакций ничего не вызываeт?

ARM GCC, что и Кокос(cookox) - дерьмо полнейшее. Последний умер, правда.

Сообщение отредактировал __inline__ - Oct 1 2017, 09:56
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 1 2017, 10:00
Сообщение #19


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



А с каких пор в этих процессорах хардварный синус с косинусом появился?

Для оптимизации имеющегося: для вычислений с одинарной точностью (float) есть функции sinf и cosf. Еще поможет -fno-math-errno. Это обязательтное условие для инлайна sqrtf.

В моем случае выглядит вот так (синусы-косинусы таблицами):

arm-none-eabi-gcc -c -mcpu=cortex-a9 -march=armv7-a -mfloat-abi=hard -mfpu=neon -ftree-vectorize -fno-math-errno -funroll-loops -fgraphite-identity -ffunction-sections -fdata-sections -ffat-lto-objects -Ofast -flto -gdwarf-2 -fomit-frame-pointer -Wa
ll -Wstrict-prototypes -DNDEBUG=1 -DCPUSTYLE_R7S721=1 -DCPUSTYLE_R7S721020=1 -MD -MP -MF ./dep/bandfilters.o.d -I.. -I../rza1x_inc -I.. ../bandfilters.c -o bandfilters.o

Сообщение отредактировал Genadi Zawidowski - Oct 1 2017, 10:04
Go to the top of the page
 
+Quote Post
__inline__
сообщение Oct 1 2017, 10:03
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Цитата(Genadi Zawidowski @ Oct 1 2017, 10:00) *
А с каких пор в этих процессорах хардварный синус с косинусом появился?

Для оптимизации имеющегося: для вычислений с одинарной точностью (float) есть функции sinf и cosf. Еще поможет -fno-math-errno.

В моем случае выглядит вот так (синусы-косинусы таблицами):

arm-none-eabi-gcc -c -mcpu=cortex-a9 -march=armv7-a -mfloat-abi=hard -mfpu=neon -ftree-vectorize -fno-math-errno -funroll-loops -fgraphite-identity -ffunction-sections -fdata-sections -ffat-lto-objects -Ofast -flto -gdwarf-2 -fomit-frame-pointer -Wa
ll -Wstrict-prototypes -DNDEBUG=1 -DCPUSTYLE_R7S721=1 -DCPUSTYLE_R7S721020=1 -MD -MP -MF ./dep/bandfilters.o.d -I.. -I../rza1x_inc -I.. ../bandfilters.c -o bandfilters.o


За ключи - спасибо! sm.gif Попробую! А про f в конце в курсе.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 1 2017, 10:09
Сообщение #21


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(__inline__ @ Oct 1 2017, 13:03) *
За ключи - спасибо! sm.gif Попробую! А про f в конце в курсе.


Про "в курсе" из кусков кода видно небыло.
Вот скрипты из моего проекта. тулчейн отсюда.

Сообщение отредактировал Genadi Zawidowski - Oct 1 2017, 10:15
Прикрепленные файлы
Прикрепленный файл  r7s721020_spi.zip ( 3.41 килобайт ) Кол-во скачиваний: 5
 
Go to the top of the page
 
+Quote Post
__inline__
сообщение Oct 1 2017, 10:14
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Цитата(Genadi Zawidowski @ Oct 1 2017, 10:09) *
Про "в курсе" из кусков кода видно небыло.
Вот скрипты из моего проекта.


Ещё раз - спасибо! Кстати, тот GCC что я скачал - не имеет утилиты make, как я буду по макам собирать - это загадка, сдела сейчас батник, но для больших программ так не годится.

Больше всего меня убивает, что когда возишься с GNU, то пляска с докачкой дополнительных утилит и обвесами патчей - гарантирована!
Такого нет ни в одной другой среде программирования, даже OpenWatcom по сравнению с GCC - это как небо и земля
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 1 2017, 10:22
Сообщение #23


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



мэйк у меня от Atmel-овского тулчейна есть... можно yagarto-всктм yagarto-tools-20121018-setup.exe воспользоваться (правда тут http://www.yagarto.org/ или тут http://www.emb4fun.de/ я его уже не нашел).

Про make.exe от Атмела:

Atmel AVR 8-bit and 32-bit Toolchain 3.4.2 - Windows
http://www.atmel.com/images/avr-toolchain-...2.win32.x86.exe

Для обеспечения работы под x64 версиями Windows 8.x, Windows 10 скачать
http://www.madwizard.org/download/electron...1.0-vista64.zip
И разархивировать msys-1.0.dll в тот же каталог, где находится make.exe
Или взять данный файл (или целиком пакет) с download page проекта MinGW - Minimalist GNU for Windows
http://sourceforge.net/projects/mingw

Сообщение отредактировал Genadi Zawidowski - Oct 1 2017, 10:26
Прикрепленные файлы
Прикрепленный файл  yagarto_tools_20121018_setup.rar ( 1.15 мегабайт ) Кол-во скачиваний: 6
 
Go to the top of the page
 
+Quote Post
__inline__
сообщение Oct 1 2017, 10:23
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Цитата(Genadi Zawidowski @ Oct 1 2017, 10:09) *
Вот скрипты из моего проекта. тулчейн отсюда.

У меня такой же тулчейн, последняя версия
Go to the top of the page
 
+Quote Post
scifi
сообщение Oct 1 2017, 10:26
Сообщение #25


Гуру
******

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



Цитата(__inline__ @ Oct 1 2017, 13:14) *
Кстати, тот GCC что я скачал - не имеет утилиты make, как я буду по макам собирать - это загадка, сдела сейчас батник, но для больших программ так не годится.

Можно скачать отсюда.
Цитата(__inline__ @ Oct 1 2017, 13:14) *
Больше всего меня убивает, что когда возишься с GNU, то пляска с докачкой дополнительных утилит и обвесами патчей - гарантирована!

Это потому, что не под линухом. Там всё уже есть. И звените.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Oct 1 2017, 10:31
Сообщение #26


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Цитата(Genadi Zawidowski @ Oct 1 2017, 10:22) *
мэйк у меня от Atmel-овского тулчейна есть... можно yagarto-всктм yagarto-tools-20121018-setup.exe воспользоваться (правда тут http://www.yagarto.org/ или тут http://www.emb4fun.de/ я его уже не нашел).

Про make.exe от Атмела:

Atmel AVR 8-bit and 32-bit Toolchain 3.4.2 - Windows
http://www.atmel.com/images/avr-toolchain-...2.win32.x86.exe

Для обеспечения работы под x64 версиями Windows 8.x, Windows 10 скачать
http://www.madwizard.org/download/electron...1.0-vista64.zip
И разархивировать msys-1.0.dll в тот же каталог, где находится make.exe
Или взять данный файл (или целиком пакет) с download page проекта MinGW - Minimalist GNU for Windows
http://sourceforge.net/projects/mingw


Никогда не думал, что make от других тулчейнов может подойти.
Ранее качал mingw для win32 - сборка от MAMEspirits - впечатления самые приятные - засунули даже Netwide Assembler и кучу библиотек.
А вот в стандартном тулчейне mingw много чего не хватало, пришлось выкачивать почти пол-интернета, чтобы портировать.
Но это была платформа Win32, сейчас вот с АРМ-ами надо разобраться

Цитата(scifi @ Oct 1 2017, 10:26) *
Можно скачать отсюда.
Это потому, что не под линухом. Там всё уже есть. И звените.

Под Линуксом та же фигня. Чтоб собрать загрузчик для Allwinner - нужно кучу патчей накладывать, прежде чем получить заветный бинарник под нужный процессор и под нужный источник загрузки(SPI, SD, FEL).
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 1 2017, 10:33
Сообщение #27


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата
Затем написал программу тект ниже

С хорошей оптимизацией (те ключи что в моем проекте) такая программа заоптимизируется в ничто.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 1 2017, 11:59
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(__inline__ @ Oct 1 2017, 14:34) *
При просмотре листинга видно, что функции sin( ) и cos( ) НЕ ИМПЛЕМЕНТИРОВАЛИСЬ, вместо них стоит переход:
...
У меня нет слов, одни эмоции (касаемо GCC тулчейна)!

Эмоции надеюсь радостные?
Не очень понятно - что Вас озадачило? Такая "программа" на выходе компилятора должна дать просто return.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Oct 1 2017, 12:42
Сообщение #29


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Цитата(jcxz @ Oct 1 2017, 11:59) *
Эмоции надеюсь радостные?
Не очень понятно - что Вас озадачило? Такая "программа" на выходе компилятора должна дать просто return.

Ну так подскажите, что неправильно, а не издевайтесь тут!
Go to the top of the page
 
+Quote Post
mantech
сообщение Oct 1 2017, 12:46
Сообщение #30


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(__inline__ @ Oct 1 2017, 12:18) *
Мешает отсутствие альтернативы. С удовольствием писал бы в Keil ARM MDK, но там нет Coretex-A7 без привязки к контроллеру.


Да ладно? biggrin.gif

То-то у меня сейчас проект под ИАР для кортекса А9, без привязки к конкретному процу. Просто отличие в том, что с привязкой там все параметры стартапа и линкера проставляются автоматом.

Цитата(__inline__ @ Oct 1 2017, 13:14) *
Больше всего меня убивает, что когда возишься с GNU, то пляска с докачкой дополнительных утилит и обвесами патчей - гарантирована!
Такого нет ни в одной другой среде программирования, даже OpenWatcom по сравнению с GCC - это как небо и земля


А как вы думали, почему за коммерческий софт просят не хилые бабки? В последнее время - совсем не хилые??
Есть куча времени и нервов - добро пожаловать в мир бесплатного софта, ищем бубен и начинаем плясать biggrin.gif
Go to the top of the page
 
+Quote Post

8 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:49
Рейтинг@Mail.ru


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