Перейти к содержанию
    

Allwinner T113-s3 уделал HiFi4 DSP. Смеяться или плакать?

6 часов назад, GenaSPB сказал:

Сорри я на mfpu хотел обратить внтмание

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

Если у кого есть ссылки на легкопортируемый png-neon декодер, буду признателен...

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 minutes ago, mantech said:

Да все уже разобрался, версия тут не причем, просто в эклипсине куча всяких полей забита всяким мусором по умолчанию, почистил и заработало,

Вот именно по этой причине не использую в своих проектах всякие IDE, эклипсы и прочий хлам, снижающий прозрачность режимов построения проекта.

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

Для редактирования кода Notepad++.

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 минуты назад, repstosw сказал:

Вот именно по этой причине не использую в своих проектах всякие IDE, эклипсы и прочий хлам, снижающий прозрачность режимов построения проекта.

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

Для редактирования кода Notepad++.

 

только это не всегда возможно.... например с XTENSA.... там черт голову сломает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, repstosw сказал:

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

Это не удобно, в поиске ошибок где смотреть "выплев" компилятора? Как оттуда переходить к строке с ошибкой? Добавить новый файл или каталог опять ковырятся в батниках... Не защищаю всякие эклипсы и пр, ИАР был куда удобнее, там минимум настроек, но все только по-делу...

ЗЫ. Кстати, смотрел что у вас в командной строке, там куча всяких непонятных параметров, почти как в эклипсе у меня, все выкинул, оставил только вот это "arm-none-eabi-gcc -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4" бинарник стал на 30кб меньше остальное не изменилось и стали норм инлайны неона компилироваться...

2 часа назад, repstosw сказал:

Для редактирования кода Notepad++.

Я подобное использовал только когда делал проги для АВРок на ассемблере, это было в конце 90х)) был dos-navigator и его редактор с подсветкой синтаксиса, после машинных кодов, а-ля Радио-86РК это было просто фантастикой, но после ИАРа я в такое больше "не играю"))))))

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, vasilius said:

олько это не всегда возможно.... например с XTENSA.... там черт голову сломает

А нужно свои либы писать.  Или хотя-бы портировать чужое и осмысливать. Мой код под Xtensa компилируется обычным батником.  Либы - тоже.

 

52 minutes ago, mantech said:

Это не удобно, в поиске ошибок где смотреть "выплев" компилятора? Как оттуда переходить к строке с ошибкой? Добавить новый файл или каталог опять ковырятся в батниках... Не защищаю всякие эклипсы и пр, ИАР был куда удобнее, там минимум настроек, но все только по-делу...

Не испытываю таких трудностей.  Выставляю режим - остановить компиляцию после первой ошибки.  Описание ошибки + строка/столбец - достаточно, чтобы её устранить и перейти к следующему исправлению ошибки.

 

52 minutes ago, mantech said:

бинарник стал на 30кб меньше остальное не изменилось и стали норм инлайны неона компилироваться...

На любой непонятный параметр есть RTFM на GCC тулчейн.  Если они у меня стояли, значит в моих проектах они были нужны.  У меня нет времени заниматься чисткой проектов для других.  У вас, как  я полагаю, тоже времени не вагон! :acute:

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, repstosw сказал:

У вас, как  я полагаю, тоже времени не вагон!

Да, поэтому вот с этим

8 минут назад, repstosw сказал:

есть RTFM на GCC тулчейн.

связываться особо нет желания.

9 минут назад, repstosw сказал:

Выставляю режим - остановить компиляцию после первой ошибки.  Описание ошибки + строка/столбец - достаточно, чтобы её устранить и перейти к следующему исправлению ошибки.

Это все надо делать вручную, в эклипсе можно просто шелкнуть по ошибке и попадаешь в строку исходника, мелочь, а приятно))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, repstosw сказал:

А нужно свои либы писать.  Или хотя-бы портировать чужое и осмысливать. Мой код под Xtensa компилируется обычным батником.  Либы - тоже.

Зачем все писать самому? Я нашел(купил) оригинальный пакет конфига от олвинера для hifi4. Получил лицензию на xplorer. 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 минут назад, vasilius сказал:

Получил лицензию на xplorer. 

Это разве аллвиннер дает, а не экстенза или каденс?

15 минут назад, vasilius сказал:

да - сложно и не все понятно, но...

Если это официально, там разве нет каких-либо готовых примеров?

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Короче - пока вопросов больше, чем ответов - разбираюсь...

 

 

 

 

 

 

 

Изменено пользователем vasilius

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 минут назад, vasilius сказал:

Короче - пока вопросов больше, чем ответов - разбираюсь...

Там разве не через постоянно подключенный инет с сервера все разрешения выдаются? Без подключения работать не будет.

13 минут назад, vasilius сказал:

Хтенса это нечто универсальное в своей поставке по-умолчанию. Дальше там смысл в конфигах под определенный проц

Ну да, это конструктор, "кубики" складывает конкретный производитель.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 минуты назад, mantech сказал:

Там разве не через постоянно подключенный инет с сервера все разрешения выдаются? Без подключения работать не будет.

Ну да, это конструктор, "кубики" складывает конкретный производитель.

есть два вида работы с лицензией - или файл - или сервак... 

вот "кубики" это и есть конфиг производителя... 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 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>:
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

43 минуты назад, mantech сказал:

Это я так понимаю vliw ?

ну типа да - 4 за раз, пустое забивается nop-ами

Изменено пользователем vasilius

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...