Salamander 2 10 января, 2021 Опубликовано 10 января, 2021 · Жалоба У меня подключен arm_math, файл прикреплен выше. Там два дефайна #define __FPU_PRESENT 1 #define __DSP_PRESENT 1 Это оно? Наверное включен... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 10 января, 2021 Опубликовано 10 января, 2021 · Жалоба 14 минут назад, Salamander сказал: А как это проверить? 43 минуты назад, jcxz сказал: Посмотреть в листинги и убедиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Salamander 2 10 января, 2021 Опубликовано 10 января, 2021 · Жалоба Just now, jcxz said: Посмотреть в листинги и убедиться А можно сформулировать вашу мысль с учетом того, что тема в разделе для начинающих?)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 10 января, 2021 Опубликовано 10 января, 2021 · Жалоба 13 minutes ago, Salamander said: Это оно? Нет, это не оно. Искать что-то вроде -mfloat-abi=hard Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 10 января, 2021 Опубликовано 10 января, 2021 · Жалоба 1 минуту назад, Salamander сказал: А можно сформулировать вашу мысль с учетом того, что тема в разделе для начинающих?)) 1. В свойствах проекта найти где включается формирование листингов. 2. Скомпилировать, найти листинги (.lst-файлы). 3. Просмотреть их на предмет наличия FPU-команд в местах использования float/double. Список FPU-команд можно найти в мануале на ядро (Cortex-M4/M7 и т.п.). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Salamander 2 10 января, 2021 Опубликовано 10 января, 2021 · Жалоба А есть какой-нить регистр, который можно просто прочесть отладчиком и понять, включен FPU или нет? я нарыл некий регистр FPSCR - но что-то отладчик его не видит.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 10 января, 2021 Опубликовано 10 января, 2021 · Жалоба Вне зависимости от включения - ваш компилятор может использовать или нет аппаратуру для расчета Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 10 января, 2021 Опубликовано 10 января, 2021 · Жалоба 2 минуты назад, Salamander сказал: А есть какой-нить регистр, который можно просто прочесть отладчиком и понять, включен FPU или нет? я нарыл некий регистр FPSCR - но что-то отладчик его не видит.... Какая разница - включен FPU или нет, если компилятор скомпилил код без использования аппаратного FPU??? Подумайте хоть немножко... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Salamander 2 10 января, 2021 Опубликовано 10 января, 2021 · Жалоба Нашел еще, что в arm_math должен быть дефайн #define __FPU_USED 1 у меня не было. Добавил - ситуация не улучшилась..... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 10 января, 2021 Опубликовано 10 января, 2021 (изменено) · Жалоба Вот такая хрень: if ((v2[1] - v1[1]) > 0.0) Будет счиьаться в double. Чего просто с "0" не сравнить? Это использовать тоооолько с доработкой напилником. А то тормоза на ровном месте (или с ключами с нарушением стандарта. но зачем автору это?) Изменено 10 января, 2021 пользователем GenaSPB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Salamander 2 10 января, 2021 Опубликовано 10 января, 2021 · Жалоба 4 minutes ago, GenaSPB said: Вот такая хрень: if ((v2[1] - v1[1]) > 0.0) Будет счиьаться в double. Чего просто с "0" не сравнить? Не знаю, правильно ли я вас понял в плане объявления переменных v2 и v1, сделал так double v2[1]; double v1[1]; if ((v2[1] - v1[1]) > 0.0) { RESULT=1; } else RESULT=0; RESULT в единицу не возводится. 14 minutes ago, GenaSPB said: Нет, это не оно. Искать что-то вроде -mfloat-abi=hard Это в compiler control string? Там где у меня текст --c99 --gnu -c --cpu Cortex-M7.fp.sp -g -O0 --apcs=interwork --split_sections -I ../TouchGFX/App -I ../TouchGFX/target/generated -I ../TouchGFX/target -I ../Core/Inc -I ../Drivers/STM32F7xx_HAL_Driver/Inc -I ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I ../Drivers/CMSIS/Include -I ../Drivers/BSP -I ../Drivers/Components/W25Q -I ../Drivers/Components/ft5336 -I ../Middlewares/ST/touchgfx/framework/include/platform/driver/button -I ../Drivers -I ../TouchGFX/gui/include/gui/temperature_screen_screen/graph_widget -I ../TouchGFX/gui/include/gui/common -I ../TouchGFX/gui/include/gui/common -I ../Middlewares/Third_Party/dsp3D/inc -I ../Middlewares/Third_Party/dsp3D/LowLevelTemplate -I ../Drivers/CMSIS/DSP/Include -I ../FATFS/Target -I ../FATFS/App -I ../USB_HOST/App -I ../USB_HOST/Target -I ../Middlewares/Third_Party/FatFs/src -I ../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I ../Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc -I ../middlewares/st/touchgfx/framework/include -I ../touchgfx/generated/fonts/include -I ../touchgfx/generated/gui_generated/include -I ../touchgfx/generated/images/include -I ../touchgfx/generated/texts/include -I ../touchgfx/gui/include -I./RTE/_RUTFT -IC:/Keil_v5/ARM/PACK/ARM/CMSIS/5.6.0/CMSIS/Core/Include -IC:/Keil_v5/ARM/PACK/Keil/STM32F7xx_DFP/2.12.0/Drivers/CMSIS/Device/ST/STM32F7xx/Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F746xx -DUSE_HAL_DRIVER -DSTM32F746xx -o RUTFT\*.o --omf_browse RUTFT\*.crf --depend RUTFT\*.d ??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 10 января, 2021 Опубликовано 10 января, 2021 · Жалоба 4 минуты назад, GenaSPB сказал: Вот такая хрень: if ((v2[1] - v1[1]) > 0.0) Будет счиьаться в double. Чего просто с "0" не сравнить? Глянул. Там такого добра - вагон. Такую "либу" - в мусорку. Если в этой либе такое имеется, а у ТС-а нет аппаратного double, то никакой скорости не видать ему как своих ушей. А какой МК у ТС-а и есть ли там аппаратный double - это надо к гадалке идти (в исходном посте нет, а всю тему шерстить - лень). 4 минуты назад, Salamander сказал: Не знаю, правильно ли я вас понял в плане объявления переменных v2 и v1, сделал так Прочитайте уже наконец что такое float и что такое double! И скачайте и откройте user manual на свой МК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Salamander 2 10 января, 2021 Опубликовано 10 января, 2021 · Жалоба Just now, jcxz said: , то никакой скорости не видать ему как своих ушей. Да мне бы ту скорость, что на видео, ссылку на которую я неоднократно выкладывал. Там все 3 камня с single precision. В том числе и дискавери с F746 У меня STM32F746B А вот мой листинг Пахнет ли в нем FPU? startup_stm32f746xx.lst Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 10 января, 2021 Опубликовано 10 января, 2021 · Жалоба 2 минуты назад, Salamander сказал: Да мне бы ту скорость, что на видео, ссылку на которую я неоднократно выкладывал. Там все 3 камня с single precision. А "0.0" - это double. И аппаратно оно никак не будет выполняться, какие ключи компилятору не суйте. centerPoint[0] = (v1[3] + v2[3] + v3[3]) / 3.0; centerPoint[1] = (v1[4] + v2[4] + v3[4]) / 3.0; centerPoint[2] = (v1[5] + v2[5] + v3[5]) / 3.0; Вот такого гов** там вагон. "Либу" - в мусорку. Или перетряхивать всю и переписывать. Не скомпилится она никак с аппаратным float. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 10 января, 2021 Опубликовано 10 января, 2021 · Жалоба аппаратный double есть только в F767. Неравильно поняли. ПРосто сравнить с 0 а не 0.0 Автор явно испольщовал колючик для трактования всеъ констант как float а не double Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться