|
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, как решить проблему?
|
|
|
|
|
 |
Ответов
(45 - 59)
|
Oct 2 2017, 17:42
|

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

|
Цитата(jcxz @ Oct 2 2017, 20:35)  Странная контора, админы которой не знают про файрволл. С самой конторой все в порядке, но админы ... термин "файрволл" им наверняка знаком, но, видать, этим все и ограничивается После этого случая главным "админом" было принято, мягко говоря, странное решение: на ВСЕ компы поставили виртуалки с линухом, из-под которых был возможет выход в инет Виртуалки, естественно, требуют повышенных ресурсов компа, поэтому было принято еще не менее странное решение - добавить в каждый комп ОЗУ до 8Гб... Разумеется, добавка ОЗУ почти никак не отразилась на скорости работы компов, но, благодаря такому "интернету", армия поклонников этих "админов" немного поредела (мягко говоря)
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Oct 2 2017, 19:44
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Forger @ Oct 2 2017, 18:45)  ... архаичного софта sm.gif
Но любой современный софт требует современного железа и соотв. ось, а с этим уже ничего не поделать (( Не совсем, ну хорошо, кортекс А7, А9, можно сказать архаичный, мне хватает, зачем менять то, что хорошо работает, правда? Иногда общаюсь с людьми, говорят, вот надо то обновить, другое... Спрашиваешь, что, плохо работает? Нет, нормально. Тогда зачем обновлять? Просто от нечего делать, видимо...  Цитата(Forger @ Oct 2 2017, 20:42)  После этого случая главным "админом" было принято, мягко говоря, странное решение: на ВСЕ компы поставили виртуалки с линухом, из-под которых был возможет выход в инет cranky.gif Виртуалки, естественно, требуют повышенных ресурсов компа, поэтому было принято еще не менее странное решение - добавить в каждый комп ОЗУ до 8Гб... Ммда, ну и "админы"...
Сообщение отредактировал mantech - Oct 2 2017, 19:45
|
|
|
|
|
Oct 3 2017, 01:29
|

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

|
С удовольствием девелопил бы и на Windows 98, но есть причины, по которым это сделать теперь невозможно: 1) старые компы все ушли в мир инной, а на новый 98-я не устанавливается, просто зависает в середине установки и всё 2) большинство дев-софта не поддерживает 98 винду. 3) геморой с USB-устройствами - на принтер и флешки производители не пишут драйверы. Помню как плевался, когда переходил на XP - это была целая традегия! В то время комп был 800 МГц + XP Home edition со свистоперделками. С появлением более мощных компов и XP Professional edition жить стало по-легче. НО, в XP мне не нравится ограничение доступа к железу, для общения с портами надо писать VXD-драйвер или качать готовый. Например - WinIO, позволяющий писать/читать в любой порт или участок памяти. Это для связи разрабатываемого устройства с компом - COM- LPT- USB- порты. Ну и порезать ХР сложнее чем 98 (отключение, удаление ненужного барахла). А вообще, моё мнение, нормальная винда заканчивается на 98-й, всё что позже - уже почикана виртуальная машина DOS, многое уже просто в нём не сделаешь. Я воспитан в духе традиций - экономить память и оптимизировать по скорости всё, но к сожалению, в ЭПОХУ ГОВНОКОДА, эти достоинства нивелировались и теперь осмеиваются. Ну ещё вспомните 90е - 2000-е, когда господствовали AVR-ки с ПИК-ами, в то время НИКТО НЕ СМЕЛ думать о том, как бы впендюрить ОС в них. А теперь почему-то считается, что разработка под Embeedded должна идти на ОС. Эпоха Говнокода, одним словом... Ну ещё вспомнил, что видел скрипт на Питоне, который мигает лампочками на Raspberry Pi. Это клиника скажу я вам.... ! В анальные закрома уходят Ассемблер и Си, зато привествуется Си Диез и скриптовые языки, ну никак не предназначенные для программирования контроллеров! Довольно весело и тошно одновременно читать на гиктаймсе/хабре выкладки какого-нибудь "админа" с приаттаченным фрагментом говно-кода на питоне, который мигает лампочками на распберри пи  Ого! Зто он "ТРУЪ адмЫн" и "повелитель железа" теперь: - укротил контроллер на 1-2 ГГц и теперь ходит с распальцовкой... По моему мнению, он просто рядовой говнокодер! Я понимаю, что Raspberry Pi и прочие клоны, Оллвиннеры, ИМХы, Ситары - это Application Processors, но это восе не значит, что нельзя на них писать напрямую (bare metal)! Ситуация меняется, когда производители этих Application Processor-ов СОЗНАТЕЛЬНО ПРЯЧУТ ту самую фундаментальную информацию для работы на low level : - как происходит загрузка программ - алгоритмы работы периферии - таблица векторов прерываний Просто на отшибись дают выгрузку регистров с их описанием. И хорошо, что есть Linux, в исходниках которого можно много чего подчерпнуть и ликвидировать пробелы. Но согласитесь, такой подход к "изучению" процессора - весьма нелёгок и неоптимален! Про софт и палево: Про стучание софтом, можно вообще убрать эти ваши интернеты, на машинах разработчика. Сделать отдельную машину с интернетами, изолированную от других. Или фаервол с белым списком.
Сообщение отредактировал __inline__ - Oct 3 2017, 01:55
|
|
|
|
|
Oct 3 2017, 05:58
|

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

|
Цитата(__inline__ @ Oct 3 2017, 04:29)  можно вообще убрать эти ваши интернеты, на машинах разработчика Для архаичных разработок интернет, может быть, и не нужен, но заказчиков такого архаизма уже почти не осталось (разве что кроме отечественных госзаказов, где чем больше возраст микросхеме, тем дороже железо и потому лучше всем)  Однако, в настоящее время без интернета (выхода в мировую сеть) уже невозможно сделать ни одной современной разработки. Цитата Сделать отдельную машину с интернетами, изолированную от других. Полагаю, что у вас в конторе именно так и сделано
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Oct 3 2017, 06:30
|
Гуру
     
Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925

|
Цитата(__inline__ @ Oct 3 2017, 08:29)  С удовольствием девелопил бы и на Windows 98, но есть причины, по которым это сделать теперь невозможно: Используйте reactos или KolibriOSЦитата(__inline__ @ Oct 3 2017, 08:29)  В анальные закрома уходят Ассемблер и Си, зато привествуется Си Диез и скриптовые языки, ну никак не предназначенные для программирования контроллеров! Да ладно вам, никто никуда не уходит, просто массовке стали доступны простые решения, вот и набивают бесполезную массу. В основе-то всё-равно c и asm  Цитата(__inline__ @ Oct 3 2017, 08:29)  Ситуация меняется, когда производители этих Application Processor-ов СОЗНАТЕЛЬНО ПРЯЧУТ ту самую фундаментальную информацию для работы на low level : Проблема в том, что эти процессоры стали настолько сложными, что сами авторы не могут сходу сказать что произойдёт если изменить какой-то регистр настройки - то ли перегреется, то ли "кирпич" получится.... У них техподдержка умрет отвечая на вопросы типа "я тут записал куда-то 0xFFЕ и у меня не работает ЭКРАН, что делать?" Поэтому для конечных пользователей создаются готовые профили настроек, проверенные вдоль и поперек, а избранным дается доступ к их изменению и некоторые описания.
|
|
|
|
|
Oct 3 2017, 07:22
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(__inline__ @ Oct 3 2017, 04:29)  С удовольствием девелопил бы и на Windows 98, но есть причины, по которым это сделать теперь невозможно:
Ну ещё вспомнил, что видел скрипт на Питоне, который мигает лампочками на Raspberry Pi. Это клиника скажу я вам.... ! В анальные закрома уходят Ассемблер и Си, зато привествуется Си Диез и скриптовые языки, ну никак не предназначенные для программирования контроллеров! Не, вин 98 пусть уже отдыхает в мире ином, ибо кроме прямого доступа к железу от нее толку 0, ибо висла она и глючила не по детски... По поводу писанины под питоном - это еще ерунда, посмотрите все типы извращения, которые предлагают фанатики под вин 10 идиотiot  В ходу виртуальные светодиоды из облачных пулов устройств...
|
|
|
|
|
Oct 3 2017, 07:33
|

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

|
Цитата(mantech @ Oct 3 2017, 10:22)  В ходу виртуальные светодиоды из облачных пулов устройств... Уверен, что точно также хихикали программеры в машинных кодах/асм над С-программерами  Времена не меняются Но время расставило все на свои места - кто из них не успел запрыгнуть в "поезд прогресса", тот и остался в забвении в прошлом на своих архаичных железках. В свое время программеры под голой VS хихикали над сырыми .NET 1.0 и JAVA ... Где теперь те "программеры" ? ... Кто из них до сих пор хихикает, либо уже спились, либо сидят в гос-конторах, поскольку всем остальным они уже бесполезны
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Oct 3 2017, 08:00
|

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

|
Цитата Однако, в настоящее время без интернета (выхода в мировую сеть) уже невозможно сделать ни одной современной разработки. Почему? Кто мешает использовать два компа - один для выкачивания документации, связи с другими разработчиками, второй - на нём софт и разработка. Цитата Используйте reactos или KolibriOS Последнюю даже пробовал устанавливать и работать. Проникся уважением (к ОС и её разработчикам). Была даже идея портировать под KOS свои наработки в виде эмуляторов (сейчас там только NES и GB©), но пока в приоритете - создание своей игровой платформы. Цитата Проблема в том, что эти процессоры стали настолько сложными, что сами авторы не могут сходу сказать что произойдёт если изменить какой-то регистр настройки - то ли перегреется, то ли "кирпич" получится.... У них техподдержка умрет отвечая на вопросы типа "я тут записал куда-то 0xFFЕ и у меня не работает ЭКРАН, что делать?" Техподдержка - это для дятлов. Потому что : - внятного от неё ничего не услышишь - всегда удается разрулить проблему самостоятельно, не дожидаясь запаздалого ответа от ТП - те кто обращается в ТП, практически все дятлы  - ну и в ТП как правило сидят одни ТП  ))) На счёт сложности тоже спорный вопрос. Вот что реально сложного на моей практике выпало - это программирование VGA-регистров видеокарты для установки HiRes разрешений с большой цветностью BPP с нестандартными длиной и шириной кадра с логической шириной кадра отличающейся от физической, с изменением частоты обновления экрана от 80 Гц и выше(до 130 Гц). Гемор ещё тот: программирование более 50 регистров видеокарты. Вот это я понимаю - сложно. А дёргнуть флаги разрешения клоков на тот же SPI, установка частоты ядра-памяти , установка кеширования данных через MMU с прямой трансляцией адресов - это пустяк по сравнению с задачей выше. Ну и разве что в кирпич можно превратить контроллер, если порт настроить на вывод и замкнуть его на питание или землю, думая что порт на вводе (кнопка). Ну или FUSE сорвать для кварца или SPI-программатора. Но это лечится. Цитата Поэтому для конечных пользователей создаются готовые профили настроек, проверенные вдоль и поперек, а избранным дается доступ к их изменению и некоторые описания. Для конечных пользователей - готовые устройства: просим любить и пользоваться. Отладочные платы - для разработчиков, господа в белых воротничках, извольте открыть доки и описать в SDK как программируется весь набор периферии. А то получается: ключевые сотрудники в Китае на гитхабе постят дистры Линукса, описывая в группе Гугл о том что SDK они дать не могут, а дистр Линкса - запросто. Тоесть всё через задницу: хотите SDK - выколупывайте его в Линуксе! А отдельно мы вам его не дадим! Ну и делать нечего, стал разбираться и понял, что в Линуксе всё спрятано в папках по функциональному назначению: - видео - аудио - порты - остальные подистемы.... - и там куча сорцов на железки разных производителей, включая то что нужно. Но разобраться, пропустить через себя и осознать это - нужно времени намного больше, чем время на освоение и осмысление отдельного SDK.  Ну и в интернете под Линукс много чего интересного есть - вплоть до дисассемблированного загрузчика, по тексту которого можно понять: - куда указывает стек - в какой адрес памяти кладётся программа boot0 (spl) - какая периферия задействуется - в каком режиме процессор (супервизор или юзер) - какие байты в хедере загрузчика важны (сигнатура, контрольная сумма, размер) - и многое другое ЧТО ПРОСТО ОБЯЗАНО БЫТЬ В ДАТАШИТЕ (в Technical Reference) Цитата В ходу виртуальные светодиоды из облачных пулов устройств...  как мне тут сказал один знакомый по этому поводу: "... гнойник рано или поздно лопнет ..." Цитата Не, вин 98 пусть уже отдыхает в мире ином, ибо кроме прямого доступа к железу от нее толку 0, ибо висла она и глючила не по детски... Это 95-я глючила, 98-я только вешалась намертво, если что-то забыть важное сделать. Зато в 98-й винде возможно перейти из DOS-программы в нулевое кольцо по такой схеме: DOS => DOS + DPMI => Ring 0. Было удивительно написать такую вещь как while(inp(0x60)!=1){}; и созерцать глобальную заморозку всех задач и ядра винды, пока не будет нажата клавиша Esc  Ну или рисовать точки не в окне приложения, а с самого верхнего левого угла экрана монитора  И это всё через Low Level в ДОС-программе, а не через GDI или Direct Draw !
Сообщение отредактировал __inline__ - Oct 3 2017, 08:08
|
|
|
|
|
Oct 3 2017, 08:01
|

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

|
Цитата(Эдди @ Oct 3 2017, 10:52)  Эти ваши си-диезы, го и прочий шлак до сих пор так шлаком и остался! Ни один вменяемый человек не будет что-нибудь серьезное на этом писать! Не переживайте вы так, учиться никогда не поздно  Сложно другое - начать (сужу по себе)  Цитата А уж ядро ОС только на С и пишется: как 30 лет назад, так и сейчас, и в ближайшие 30 лет! Ну-ну ... видать все только и делают, что пишут ядра ОС. Ведь больше-то заняться нечем
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Oct 3 2017, 08:13
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Forger @ Oct 3 2017, 10:33)  Уверен, что точно также хихикали программеры в машинных кодах/асм над С-программерами  Времена не меняются Но время расставило все на свои места - кто из них не успел запрыгнуть в "поезд прогресса", тот и остался в забвении в прошлом на своих архаичных железках. В свое время программеры под голой VS хихикали над сырыми .NET 1.0 и JAVA ... Где теперь те "программеры" ? ... Кто из них до сих пор хихикает, либо уже спились, либо сидят в гос-конторах, поскольку всем остальным они уже бесполезны  Хихикали или нет - не важно. Есть какой-то уровень, до которого нужно дойти, и быть на нем до тех пор, пока не дойдем до чего-то по-настоящему нового и адекватного, на сегодня - это уровень Си, наиболее универсального средства программирования. "Особо одаренные" могут изобретать что угодно, но большинство адекватных продолжает им пользоваться... JAVA тоже имеет место быть, но только в случае разноплатформенного использования. Для всяких дотнетов тут места нет от слова вообще...
Сообщение отредактировал mantech - Oct 3 2017, 08:14
|
|
|
|
|
Oct 3 2017, 08:14
|

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

|
Цитата(Эдди @ Oct 3 2017, 07:52)  Эти ваши си-диезы, го и прочий шлак до сих пор так шлаком и остался! Ни один вменяемый человек не будет что-нибудь серьезное на этом писать! А уж ядро ОС только на С и пишется: как 30 лет назад, так и сейчас, и в ближайшие 30 лет! Для С++ место только в узкой нише GUI'шного софта и высокоуровневых библиотек, где его плюшки имеют смысл. Всякие пхытоны-перлы так и остались фигней для развлечения. А ассемблер до сих пор используется — но уже как вставки. Писать на чистом ассемблере нецелесообразно из-за его низкоуровневщины, С же — очень высокоуровневый язык, и его за глаза на все случаи жизни хватает. Так я не являюсь сторонником Си Диеза и прочих вещей в нише микроконтроллеров. Они совершенно для других вещей предназначены. А их внедрение популяризуется из-за большого процента "админов" в IT-шной массе. А они как правило, больше скриптовыми языками владеют, на то и расчёт чтоб с них срубить бабки. По части программирования ядер ОС на Си... Много ли Си-компилеров, способные дать чистый бинарник с любого ORG и без затирания регистров? На счёт GCC не уверен, а вот про Open Watcom C слыхал, что можно сделать бинарник без привязки к ОС и clib. Ну и планировщик задач (Tasker) пишится всёравно на Ассемблере, так как нужно очень чисто пушить и попить контекст задач. Ковырял исходники ucos под ARM7 видел как это всё сделано.
|
|
|
|
|
Oct 3 2017, 08:21
|

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

|
Цитата(mantech @ Oct 3 2017, 08:13)  Хихикали или нет - не важно. Есть какой-то уровень, до которого нужно дойти, и быть на нем до тех пор, пока не дойдем до чего-то по-настоящему нового и адекватного, на сегодня - это уровень Си, наиболее универсального средства программирования. "Особо одаренные" могут изобретать что угодно, но большинство адекватных продолжает им пользоваться... JAVA тоже имеет место быть, но только в случае разноплатформенного использования. Для всяких дотнетов тут места нет от слова вообще... Всему своё время и место. Можете называть меня ОЛД-фагом, но я не чураюсь машинных кодов, например в ассемблерных вставках: часто бывает что встроенный ассемблер в Си каких-то инструкций не поддерживает, а оформлять дополнительный сорец с ассемблером лень, машинные коды выручают  На счёт JAVA раз заговорили, упомяну как сделаны Ведроиды: на ARM процессор ставится виртуальная машина ARM + JAVA : => получается двойная эмуляция! Зачем? Учитывая, что есть специальные ARM-ы, с аппаратной поддержкой JAVA (Jazelle вроде бы?). Налицо - говнокодостроение. JAVA может быть полезна временно, когда нет порта какого-то приложения на целевой платформе, ну или в случае закрытого кода приложения. В остальных случаях - JAVA - тормоз.
|
|
|
|
|
Oct 3 2017, 08:23
|

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

|
Цитата(mantech @ Oct 3 2017, 11:16)  Писателям игрушек для веба это сложно понять, но тут вопрос о программировании на МК.  Для "веба" не пишу, но прекрасно их понимаю, и не имею ничего против развития и прогресса. Если речь про программирование применительно к "бытовым" МК, т.е. под конкретное узкоспециализированное железо, то пока что дальше C/C++ нет смысла соваться. Где возможно, я предпочитаю С++. В более серьезных железках как минимум неразумно лишь одним "молотком и ножовкой" делать все, начиная от портирования ОС, заканчивая сложными клиентскими приложениями. Ведь никому адекватному никогда не придёт в голову идея писать приложения для смартфона целиком на asm/С. С другой стороны, существует известная поговорка "каждый дро%%т как хочет"
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|