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

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


Местный
***

Группа: Участник
Сообщений: 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

Сообщений в этой теме
2 страниц V  < 1 2


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 11:06
Рейтинг@Mail.ru


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