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

 
 
> 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  « < 3 4 5 6 7 > »   
Start new topic
Ответов (60 - 74)
mantech
сообщение Oct 3 2017, 08:25
Сообщение #61


Гуру
******

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



Цитата(__inline__ @ Oct 3 2017, 11:21) *
JAVA может быть полезна временно, когда нет порта какого-то приложения на целевой платформе, ну или в случае закрытого кода приложения.
В остальных случаях - JAVA - тормоз.


Вы не учитываете преимущество мультиплатформенного кода, да он более тормозной по сравнению с компилятором, но это не так существенно. Особо тяжелые функции выполняются в маш. кодах, да и не всегда критично быстродействие. Но возможность запустить одно и тоже приложение под принципиально разными осями и процессорами, того стоит..
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Oct 3 2017, 09:15
Сообщение #62


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(__inline__ @ Oct 3 2017, 15:00) *
Ну и разве что в кирпич можно превратить контроллер, если порт настроить на вывод и замкнуть его на питание или землю, думая что порт на вводе (кнопка).
Ну или FUSE сорвать для кварца или SPI-программатора. Но это лечится.

Это уровень мелких микроконтроллеров, на больших можно просто подпалить чип, ошибочно записав левое число по некому адресу, и потом метаться - либо я неправильно что-то делаю, либо чип глючный.

Цитата(__inline__ @ Oct 3 2017, 15:00) *
- и многое другое ЧТО ПРОСТО ОБЯЗАНО БЫТЬ В ДАТАШИТЕ (в Technical Reference)

Угу, и получить эдак 10 томов по 500 страниц каждый. Да они минимум год только писать это будут, а потом каждый месяц выпускать по дополнительному тому "исправлений и дополнений" sm.gif
Go to the top of the page
 
+Quote Post
one_eight_seven
сообщение Oct 3 2017, 09:20
Сообщение #63


Знающий
****

Группа: Участник
Сообщений: 916
Регистрация: 3-10-08
Из: Москва
Пользователь №: 40 664



Цитата
Писателям игрушек для веба это сложно понять, но тут вопрос о программировании на МК.

Тестовая среда и всяческие эмуляторы куда быстрее, приятнее и нагляднее пишутся на каком-нибудь протопыхе (perl) или гвидопыхе (python). Да и куча полезного софта управляется с помощью Tcl. Модели опять же на гвидопыхе с numpy пишутся куда быстрее, чем на C или крестах. Есть, конечно, MATLAB, но он стоит сотни нефти, но есть и альтернативы - SciLab, Octave, Axiom и Sagemath (которая чуть более, чем полностью - Pyhton).

Ну и во всём этом есть одна загвоздка - как правило, те, кто знают Python, perl, Java, знают так же и C. При этом странно, что те, кто знает только C так кичатся своим неприятием других инструментов.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Oct 3 2017, 10:07
Сообщение #64


Местный
***

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



Цитата
Это уровень мелких микроконтроллеров, на больших можно просто подпалить чип, ошибочно записав левое число по некому адресу, и потом метаться - либо я неправильно что-то делаю, либо чип глючный.

Ну а ТП, там же не телепаты сидят - ей-то откуда знать что вы натворили с чипом и какие могут быть последствия?
Ну и как можно спалить чип неверной записью в регистры? (про порты ввода/вывода, фьюзы и ПЛИСы - не рассказывать!)

Цитата
Угу, и получить эдак 10 томов по 500 страниц каждый. Да они минимум год только писать это будут, а потом каждый месяц выпускать по дополнительному тому "исправлений и дополнений

Так из этих 500 страниц каждому понадобятся свои 50 страниц!
Например, для моих применений - видеокодек не нужен, так же как и USB и Эзернет.
Мне надо GPIO, SPI, TF, Video Out, высокая производительность ядра over 1GHz - остальное не важно!
Другим наоборот.
Но никто не заставляет читать все 500 страниц!

Цитата
Ну и во всём этом есть одна загвоздка - как правило, те, кто знают Python, perl, Java, знают так же и C

Это лишь ваше мнение, которое не является правилом - не обобщайте.
Ну и знания одного Си недостаточно для программирования контроллеров. Нужны ещё и базовые знания как работает железо и как его программировать.

Сообщение отредактировал __inline__ - Oct 3 2017, 10:09
Go to the top of the page
 
+Quote Post
one_eight_seven
сообщение Oct 3 2017, 10:14
Сообщение #65


Знающий
****

Группа: Участник
Сообщений: 916
Регистрация: 3-10-08
Из: Москва
Пользователь №: 40 664



Цитата
Это лишь ваше мнение, которое не является правилом - не обобщайте.

Нет. Это мнение не моё, а весьма большого количества людей. Которые, кстати, не судят всех программистов на Си по осилившим только хэллоуворлд, ну или мигание светодиодом, в случае микроконтроллеров. Понятно, что порог входа в пыхоплеяду ниже, чем в Java/C, поэтому, в абсолютном значении monkey-coder'ов среди них, конечно, больше. Но не в процентном.
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Oct 3 2017, 10:37
Сообщение #66


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(__inline__ @ Oct 3 2017, 17:07) *
Так из этих 500 страниц каждому понадобятся свои 50 страниц!
Мне надо GPIO, SPI, TF, Video Out, высокая производительность ядра over 1GHz - остальное не важно!

Хе-хе, попробуйте запустить простейший STM32 прочитав 50 страниц. А в больших чипах взаимосвязей и зависимостей на порядки больше.
Go to the top of the page
 
+Quote Post
_3m
сообщение Oct 3 2017, 10:48
Сообщение #67


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(__inline__ @ Oct 3 2017, 13:07) *
Ну и как можно спалить чип неверной записью в регистры? (про порты ввода/вывода, фьюзы и ПЛИСы - не рассказывать!)

Легко! Пишете неправильное значение в регистр управления питанием и один из ip блоков в чипе подпаливается.
Похоже вы сложных чипов еще не видели.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Oct 3 2017, 10:52
Сообщение #68


Местный
***

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



Цитата(_3m @ Oct 3 2017, 10:48) *
Легко! Пишете неправильное значение в регистр управления питанием и один из ip блоков в чипе подпаливается.
Похоже вы сложных чипов еще не видели.

Ой, да. Забыл добавить сюда управление напряжением питания ядра через ШИМ. Типа как в Блекфинах. biggrin.gif

Ну это ж детский сад, если по этому поводу писать в ТП sm.gif
Go to the top of the page
 
+Quote Post
Obam
сообщение Oct 3 2017, 11:01
Сообщение #69


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата
Ну и как можно спалить чип неверной записью в регистры? (про порты ввода/вывода, фьюзы и ПЛИСы - не рассказывать!)

Можно мои 5 коп добавить? Спасибо (;
Не буду про фьюзы…
Ошибочно отключенный (неверной записью в регистры) JTAG - это всё равно что спаленный чип (;


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Forger
сообщение Oct 3 2017, 11:06
Сообщение #70


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

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



Цитата(Obam @ Oct 3 2017, 14:01) *
Ошибочно отключенный (неверной записью в регистры) JTAG - это всё равно что спаленный чип (;

Если JTAG отключается лишь через прошивку (софтварно), то дело поправимое - нужно лишь подключить к отладчику цепь сброса МК.
А вот если чип залочен необратимо (у STM32 такое возможно), то чип - на помойку.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
__inline__
сообщение Oct 3 2017, 11:10
Сообщение #71


Местный
***

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



Цитата(Forger @ Oct 3 2017, 11:06) *
Если JTAG отключается лишь через прошивку (софтварно), то дело поправимое - нужно лишь подключить к отладчику цепь сброса МК.
А вот если чип залочен необратимо (у STM32 такое возможно), то чип - на помойку.

ЕМНИП отладку у STM32F4xx можно делать через SWD + STM32 ST-LINK Utility
Go to the top of the page
 
+Quote Post
Obam
сообщение Oct 3 2017, 11:31
Сообщение #72


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата(__inline__ @ Oct 3 2017, 15:10) *
ЕМНИП отладку у STM32F4xx можно делать через SWD + STM32 ST-LINK Utility

Дык SWD на выводы JTAGа выведен

Тему в "Средства проектирования" надо по-хорошему

Сообщение отредактировал Obam - Oct 3 2017, 11:35


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Эдди
сообщение Oct 3 2017, 11:52
Сообщение #73


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Цитата(Forger @ Oct 3 2017, 11:23) *
Для "веба" не пишу, но прекрасно их понимаю, и не имею ничего против развития и прогресса.
Если речь про программирование применительно к "бытовым" МК, т.е. под конкретное узкоспециализированное железо, то пока что дальше C/C++ нет смысла соваться. Где возможно, я предпочитаю С++.

Я и под веб нет-нет, да делю что-то (веб-морды для меня более предпочтительны, нежели содомия со standalone GUI), вот там, к сожалению, одним только С не обойтись, приходится еще жабоскрипт использовать и на html разметку делать, но это фигня — один раз помучился, и готово!
Микроконтроллеры — понятное дело, там только чистый С. Я, помучившись с SPL и opencm3 на STM32, понял, что ну его нафиг — эти чужие кривые библиотеки, надо на сниппеты ориентироваться и не долбить себе мозг всякой чушью.
Приложения для связи между компьютером и МК — на чистом С. На нем же клиент-серверные вещи (демоны, логгеры, интерфейсы и т.д., и т.п.).

В общем, С свою актуальность не потеряет еще долго.

Цитата(one_eight_seven @ Oct 3 2017, 12:20) *
Ну и во всём этом есть одна загвоздка - как правило, те, кто знают Python, perl, Java, знают так же и C. При этом странно, что те, кто знает только C так кичатся своим неприятием других инструментов.

Ни разу не встречал тех, кто прекрасно знает одновременно пхытон, перл, жабку и С! Это ж вообще вещи разных классов! Надо быть одновременно и гуманитарием, и технарем, чтобы умудриться все это выучить, а самое главное — понимать!!!

Цитата(HardEgor @ Oct 3 2017, 13:37) *
Хе-хе, попробуйте запустить простейший STM32 прочитав 50 страниц.

Для мигания светодиодом без таймера нужно будет даже меньше прочесть ☺
Все равно, даже если пользоваться чужими библиотеками, надо будет читать даташит по используемой периферии. Но в случае библиотек, нужно еще скудную документацию к ним читать + ковыряться постоянно в исходниках этих библиотек (мало ли что там индусы наговнокодили — встречал я такие приколы)! Так какой смысл тащить лишнее? Лучше самому постепенно накапливать базу сниппетов, а затем по мере необходимости брать уже готовые куски кода.

Сообщение отредактировал Эдди - Oct 3 2017, 11:49
Go to the top of the page
 
+Quote Post
__inline__
сообщение Oct 3 2017, 11:52
Сообщение #74


Местный
***

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



Цитата(HardEgor @ Oct 3 2017, 10:37) *
Хе-хе, попробуйте запустить простейший STM32 прочитав 50 страниц. А в больших чипах взаимосвязей и зависимостей на порядки больше.

Зачем мне простейший, когда совсем недавно портировал кодек MELP800 на STM32F405 ?
Bare Metal, конечно.
Go to the top of the page
 
+Quote Post
Эдди
сообщение Oct 3 2017, 11:54
Сообщение #75


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Цитата(Obam @ Oct 3 2017, 14:01) *
Ошибочно отключенный (неверной записью в регистры) JTAG - это всё равно что спаленный чип (;

Что за ерунда? Я, например, вообще не использую ни JTAG, ни SWD — все STM32 шью через бутлоадер. Это намного удобней, да и не нужно лишних устройств присобачивать; а висящий на UART1 переходник после прошивки используется для отладки.
Go to the top of the page
 
+Quote Post

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

 


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


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