|
GCC ARM - не имплементируются функции SIN, COS, arm-none-eabi |
|
|
|
Oct 1 2017, 07:34
|

Местный
  
Группа: Участник
Сообщений: 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, как решить проблему?
|
|
|
|
|
 |
Ответов
(30 - 44)
|
Oct 1 2017, 12:53
|

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

|
Цитата(mantech @ Oct 1 2017, 12:46)  1) То-то у меня сейчас проект под ИАР для кортекса А9, без привязки к конкретному процу. Просто отличие в том, что с привязкой там все параметры стартапа и линкера проставляются автоматом. 2) А как вы думали, почему за коммерческий софт просят не хилые бабки? В последнее время - совсем не хилые?? Есть куча времени и нервов - добро пожаловать в мир бесплатного софта, ищем бубен и начинаем плясать  1) Как бы не фанат ИАРа. Мне бы Keil  Но в v.4 он не поддерживает Cortex-A7. Версия 5 у меня не идет (потому что ХРюн и 32 бита, ставить анальные зонды - блевисты 7,8, ,... нет желания). 2) Коммерческий софт лечится таблЭтками
|
|
|
|
|
Oct 2 2017, 13:36
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(__inline__ @ Oct 1 2017, 15:53)  ставить анальные зонды - блевисты 7,8, ,... нет желания). Недавно на всех своих компах поставил вин 10 x64, заранее купил на ебеи три ключа (5$ за один), в итоге ось получилась официальная, никаких вопросов и таблеток  Теперь все софтины работают как надо, особенно те, которые не хотели заводится на старой вин 7 х64. Вот думаю прикупить ключи для вин-офиса (5..10$) ... Короче, привыкаю к официальному платному софту. Не подкопаться
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Oct 2 2017, 14:20
|

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

|
Поставил ARM DS-5 из дебрей интернета, так оказалось их ARM-compiler не имеет bare-metal таргета и пукает от некорректной лицензии. В том же ИДЕ (он же Эклипс) есть опция GCC bare metal, сравнил выхлоп с первым тулчейном - результат один-в-одни, а Эклипс упростил сперва настройку проекта - флаги компиляции и встроенный make. В итоге, после длительного ознакомления с флагами компилятора, линковщика, многократных экспериментов и просмотра листинга на асме, получил что хотел. Ну и скрипт для линковщика написал, теперь всё линкуется как надо и куда надо, даже филлинг освоил (заливка оставшегося места нулевыми символами для получения объема прошивки ровно 16 кБ). В целом GCC ARM неплох, как оказалось больше возможностей подёргать ключи оптимизации. Пример: Код -march=armv7-a -mfpu=vfpv4 -mfloat-abi=hard -nostdinc -O3 -Wall -fomit-frame-pointer -fforce-addr -falign-jumps=4 -fgcse -std=c99 -marm -mlittle-endian -fpic -mtune=cortex-a7 --specs=nosys.specs -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -nostdlib -nostartfiles -ffreestanding -fno-math-errno -fno-common -fno-builtin -ffreestanding -fno-strict-aliasing -mno-thumb-interwork -fno-stack-protector -fno-toplevel-reorder -Wstrict-prototypes -Wno-format-nonliteral -Wno-format-security -Wextra -Wno-unused-result -Wno-main
-T "test0.ld" -gc-sections -Wl,-N -fomit-frame-pointer -fforce-addr -falign-jumps=4 -fgcse -std=c99 -marm -mlittle-endian -fpic -mtune=cortex-a7 --specs=nosys.specs -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -nostdlib -nostartfiles -ffreestanding -fno-math-errno -fno-common -fno-builtin -ffreestanding -fno-strict-aliasing -mno-thumb-interwork -fno-stack-protector -fno-toplevel-reorder -Wstrict-prototypes -Wno-format-nonliteral -Wno-format-security -Wextra -Wno-unused-result -Wno-main Ну а на счёт блевисты, я имел ввиду, что она несанкционированно стучит и из неё сочится во все щели. Если в ХР как-то можно ещё заделать дыры, то в блевистах это практически невозможно. И вообще для меня это хобби, а не производственный процесс с получением выгоды, как тут некоторые поняли.
|
|
|
|
|
Oct 2 2017, 15:45
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(mantech @ Oct 2 2017, 18:29)  В конторе хочешь не хочешь, а придется покупать. Конторы начинает чесаться лишь тогда, когда установленный там "левый" софт начинает стучать своему разработчику ... вот беготня начинается! Боссы готовы до кучи покупать даже необязательные плагины Наблюдал такое однажды.... переживать начинают даже уборщицы Как говорится "пока жареный петух не клюнет" Цитата хрюша самая оптимальная для разработчика... ... архаичного софта  Но любой современный софт требует современного железа и соотв. ось, а с этим уже ничего не поделать (( Помню, хрюшу переставлял на своих компах стабильно раз в полгода-год. Семерка прожила несколько лет. Посмотрим, как поведет себя десятка ...
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|