GenaSPB 11 6 февраля Опубликовано 6 февраля · Жалоба Сорри я на mfpu хотел обратить внтмание Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 6 февраля Опубликовано 6 февраля (изменено) · Жалоба 6 часов назад, GenaSPB сказал: Сорри я на mfpu хотел обратить внтмание Да все уже разобрался, версия тут не причем, просто в эклипсине куча всяких полей забита всяким мусором по умолчанию, почистил и заработало, другое дело, что PNG с неон-ускорением в либах не было, только jpeg, но как уже выяснил, аппаратный все-таки лучше... Если у кого есть ссылки на легкопортируемый png-neon декодер, буду признателен... Изменено 6 февраля пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 6 февраля Опубликовано 6 февраля (изменено) · Жалоба 41 minutes ago, mantech said: Да все уже разобрался, версия тут не причем, просто в эклипсине куча всяких полей забита всяким мусором по умолчанию, почистил и заработало, Вот именно по этой причине не использую в своих проектах всякие IDE, эклипсы и прочий хлам, снижающий прозрачность режимов построения проекта. Для простых проектов использую батники, для сложных - make-файлы. И каждый ключик компиляции и линковки ставлю осознанно, без лишнего. Для редактирования кода Notepad++. Изменено 6 февраля пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasilius 1 6 февраля Опубликовано 6 февраля · Жалоба 2 минуты назад, repstosw сказал: Вот именно по этой причине не использую в своих проектах всякие IDE, эклипсы и прочий хлам, снижающий прозрачность режимов построения проекта. Для простых проектов использую батники, для сложных - make-файлы. И каждый ключик компиляции и линковки ставлю осознанно, без лишнего. Для редактирования кода Notepad++. только это не всегда возможно.... например с XTENSA.... там черт голову сломает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 6 февраля Опубликовано 6 февраля (изменено) · Жалоба 2 часа назад, repstosw сказал: ля простых проектов использую батники, для сложных - make-файлы. И каждый ключик компиляции и линковки ставлю осознанно, без лишнего. Это не удобно, в поиске ошибок где смотреть "выплев" компилятора? Как оттуда переходить к строке с ошибкой? Добавить новый файл или каталог опять ковырятся в батниках... Не защищаю всякие эклипсы и пр, ИАР был куда удобнее, там минимум настроек, но все только по-делу... ЗЫ. Кстати, смотрел что у вас в командной строке, там куча всяких непонятных параметров, почти как в эклипсе у меня, все выкинул, оставил только вот это "arm-none-eabi-gcc -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4" бинарник стал на 30кб меньше остальное не изменилось и стали норм инлайны неона компилироваться... 2 часа назад, repstosw сказал: Для редактирования кода Notepad++. Я подобное использовал только когда делал проги для АВРок на ассемблере, это было в конце 90х)) был dos-navigator и его редактор с подсветкой синтаксиса, после машинных кодов, а-ля Радио-86РК это было просто фантастикой, но после ИАРа я в такое больше "не играю")))))) Изменено 6 февраля пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 6 февраля Опубликовано 6 февраля (изменено) · Жалоба 2 hours ago, vasilius said: олько это не всегда возможно.... например с XTENSA.... там черт голову сломает А нужно свои либы писать. Или хотя-бы портировать чужое и осмысливать. Мой код под Xtensa компилируется обычным батником. Либы - тоже. 52 minutes ago, mantech said: Это не удобно, в поиске ошибок где смотреть "выплев" компилятора? Как оттуда переходить к строке с ошибкой? Добавить новый файл или каталог опять ковырятся в батниках... Не защищаю всякие эклипсы и пр, ИАР был куда удобнее, там минимум настроек, но все только по-делу... Не испытываю таких трудностей. Выставляю режим - остановить компиляцию после первой ошибки. Описание ошибки + строка/столбец - достаточно, чтобы её устранить и перейти к следующему исправлению ошибки. 52 minutes ago, mantech said: бинарник стал на 30кб меньше остальное не изменилось и стали норм инлайны неона компилироваться... На любой непонятный параметр есть RTFM на GCC тулчейн. Если они у меня стояли, значит в моих проектах они были нужны. У меня нет времени заниматься чисткой проектов для других. У вас, как я полагаю, тоже времени не вагон! Изменено 6 февраля пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 6 февраля Опубликовано 6 февраля · Жалоба 8 минут назад, repstosw сказал: У вас, как я полагаю, тоже времени не вагон! Да, поэтому вот с этим 8 минут назад, repstosw сказал: есть RTFM на GCC тулчейн. связываться особо нет желания. 9 минут назад, repstosw сказал: Выставляю режим - остановить компиляцию после первой ошибки. Описание ошибки + строка/столбец - достаточно, чтобы её устранить и перейти к следующему исправлению ошибки. Это все надо делать вручную, в эклипсе можно просто шелкнуть по ошибке и попадаешь в строку исходника, мелочь, а приятно)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasilius 1 6 февраля Опубликовано 6 февраля · Жалоба 3 часа назад, repstosw сказал: А нужно свои либы писать. Или хотя-бы портировать чужое и осмысливать. Мой код под Xtensa компилируется обычным батником. Либы - тоже. Зачем все писать самому? Я нашел(купил) оригинальный пакет конфига от олвинера для hifi4. Получил лицензию на xplorer. Есть смысл использовать реальный тулчейн, со всеми плюшками... да - сложно и не все понятно, но... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 6 февраля Опубликовано 6 февраля (изменено) · Жалоба 14 минут назад, vasilius сказал: Получил лицензию на xplorer. Это разве аллвиннер дает, а не экстенза или каденс? 15 минут назад, vasilius сказал: да - сложно и не все понятно, но... Если это официально, там разве нет каких-либо готовых примеров? Изменено 6 февраля пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasilius 1 6 февраля Опубликовано 6 февраля (изменено) · Жалоба 30 минут назад, mantech сказал: Это разве аллвиннер дает, а не экстенза или каденс? Если это официально, там разве нет каких-либо готовых примеров? там две проблемы. Хтенса это нечто универсальное в своей поставке по-умолчанию. Дальше там смысл в конфигах под определенный проц. У олвинера есть свой конфиг именно с настройками под его hifi4 (на самом деле их там три вида). Тоесть среда XTENSA даже с лицензией без этого конфига - нафиг не упала - толку от нее ноль. Вот лицензия для XTENSA - это вторая проблема. Если есть конфиг от производителя - то уже можно пытаться компилить. Сама XTENSA это по сути тот же gcc\clang, который сделан так, чтобы грузить данные с конфига. Там у них есть же их TIE. Тоесть могут быть процы где можно программировать\задавать инструкции... но в данном сабже это все лишнее.. Конфиги эти тоже есть под линукс и винду.... у меня линуховый, но я вроде его заставил работать под винду.... Странность в том, что моя лицензия для XTENSA в линухе не работает, а в винде - работает. ХЗ - почему. Еще забавно - это то как получается выходной ELF. Его в BIN не получается просто сделать через xt-objcopy %S% -O binary -R .noinit -R .bss -R .vram -R .heap "test.elf" "test.bin" - получается кусок нулец на 4 Мб внутри но смотря сорцы линуха - там они сами потрошат этот эльф и выдирают секцию.... Да.. по-идее там можно XTENSA обойти - там есть файл - с которым можно собрать свой gcc - есть свой конфиг для сборки gcc. По-идее он будет принимать те-же параметры как и родной, но уже без лицензий всяких... Там есть возможность использовать call0, но везде используется windowed Короче - пока вопросов больше, чем ответов - разбираюсь... Изменено 6 февраля пользователем vasilius Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 6 февраля Опубликовано 6 февраля · Жалоба 11 минут назад, vasilius сказал: Короче - пока вопросов больше, чем ответов - разбираюсь... Там разве не через постоянно подключенный инет с сервера все разрешения выдаются? Без подключения работать не будет. 13 минут назад, vasilius сказал: Хтенса это нечто универсальное в своей поставке по-умолчанию. Дальше там смысл в конфигах под определенный проц Ну да, это конструктор, "кубики" складывает конкретный производитель. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasilius 1 6 февраля Опубликовано 6 февраля · Жалоба 2 минуты назад, mantech сказал: Там разве не через постоянно подключенный инет с сервера все разрешения выдаются? Без подключения работать не будет. Ну да, это конструктор, "кубики" складывает конкретный производитель. есть два вида работы с лицензией - или файл - или сервак... вот "кубики" это и есть конфиг производителя... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasilius 1 6 февраля Опубликовано 6 февраля · Жалоба В 02.10.2023 в 09:48, repstosw сказал: Скачал этот тулчейн: xtensa-esp32s3-elf-12.2.0_20230208-i686-w64-mingw32.zip Он легко гуглится. Там же и для Линукса есть. Проверил. Результаты впечатлили: кроме floating point он ещё может переключать ABI. По умолчанию там Windowed, но я поставил Call0. Но слинковать им не выйдет. И полностью откомпилять HiFi4 не получится (не видит некоторые регистры/инструкции для HiFi4). Поэтому сделал смешанную компиляцию: арифметику скомпилил xtensa-esp32s3-elf , а остальное xtensa-hifi4-elf. Тестирование провел на таком коде: float ttt(float a,float b,float c,float d) { float e; e=a+b; e-=c; e*=c; e+=(a*b)+c; return e; } int main(void) { AVS_CNT0_REG=0; float z=0; for(u32 i=0;i<100000;i++)z+=ttt(0.5F,0.123F,0.25F,0.1F); printf("result: %f, delay: %d us\n",z,AVS_CNT0_REG/6); while(1); return 0; } Листинг функции ttt() с компилятора xtensa-esp32s3-elf-gcc - кроме FPU регистров даже присутствуют инструкции madd, что меня очень сильно радует. Код функции вышел крохотным: ttt: wfr f1, a4 wfr f3, a3 sub.s f0, f3, f1 wfr f2, a2 mov.s f4, f1 madd.s f4, f2, f3 add.s f0, f0, f2 madd.s f4, f1, f0 rfr a2, f4 ret.n Совсем иная картина с "родным" тулчейном xtensa-hifi4-elf-gcc: Показать контент ttt: addi sp, sp, -32 s32i.n a14, sp, 16 mov.n a14, a3 s32i.n a13, sp, 20 mov.n a3, a4 mov.n a13, a2 mov.n a2, a14 s32i.n a0, sp, 28 s32i.n a12, sp, 24 s32i.n a15, sp, 12 mov.n a12, a4 call0 __subsf3 mov.n a3, a13 call0 __addsf3 mov.n a3, a2 mov.n a2, a12 call0 __mulsf3 mov.n a15, a2 mov.n a3, a14 mov.n a2, a13 call0 __mulsf3 mov.n a3, a12 call0 __addsf3 mov.n a3, a15 call0 __addsf3 l32i.n a0, sp, 28 l32i.n a12, sp, 24 l32i.n a13, sp, 20 l32i.n a14, sp, 16 l32i.n a15, sp, 12 addi sp, sp, 32 ret.n Результаты очевидны. Хардовая плавучка: Софтовая - почти в 10 раз медленее: Надо как-то наложить на HiFi4 оверлей возможности FPU 🙂 вот так откомпилил родной компилер эту ф-цию 004001e0 <ttt>: 4001e0: 004136 entry a1, 32 4001e3: df77c7e44080150670013f { ae_mov aed3, aed0; nop; ae_mov aed0, aed2; add.s aed5, aed0, aed1 } 4001ee: f17bc7cc94e3141670151f { nop; nop; madd.s aed0, aed3, aed1; sub.s aed4, aed5, aed2 } 4001f9: 4a4020 madd.s aed0, aed2, aed4 4001fc: f01d retw.n 004001fe <ttt+0x1e>: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 7 февраля Опубликовано 7 февраля · Жалоба 9 часов назад, vasilius сказал: вот так откомпилил Это я так понимаю vliw ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasilius 1 7 февраля Опубликовано 7 февраля (изменено) · Жалоба 43 минуты назад, mantech сказал: Это я так понимаю vliw ? ну типа да - 4 за раз, пустое забивается nop-ами Изменено 7 февраля пользователем vasilius Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться